Merge tag 'dt-5.16' of git://git.kernel.org/pub/scm/linux/kernel/git/soc/soc
authorLinus Torvalds <torvalds@linux-foundation.org>
Wed, 3 Nov 2021 23:56:03 +0000 (16:56 -0700)
committerLinus Torvalds <torvalds@linux-foundation.org>
Wed, 3 Nov 2021 23:56:03 +0000 (16:56 -0700)
Pull ARM SoC DT updates from Arnd Bergmann:
 "This is a rather large update for the ARM devicetree files, after a
  few quieter releases, with 775 total commits and 47 branches pulled
  into this one.

  There are 5 new SoC types plus some minor variations, and a total of
  60 new machines, so I'm limiting the summary to the main noteworthy
  items:

   - Apple M1 gain support for PCI and pinctrl, getting a bit closer to
     a usable system out of the box.

   - Qualcomm gains support for Snapdragon 690 (aka SM6350) as well as
     SM7225, 11 new smartphones, and three additional Chromebooks, and
     improvements all over the place.

   - Samsung gains support for ExynosAutov9, an automotive version of
     their smartphone SoC, but otherwise no major changes.

   - Microchip adds the SAMA5D29 SoC in the SAMA5 family, and a number
     of improvements for the recently added SAMA7 family. The LAN966 SoC
     that was added in the platform code does not have dts files yet.
     Two board files are added for the older at91sam9g20 SoC

   - Aspeed supports two additional server boards using their AST2600 as
     BMC, and improves support for qemu models

   - Rockchip RK3566/RK3688 gets added, along with six new development
     boards using RK3328/RK3399/RK3566, and one Chromebook tablet.

   - Two NAS boxes are added using the ARMv4 based Gemini platform

   - One new board is added to the Intel Arria SoC FPGA family

   - Marvell adds one network switch based on Armada 381 and the new
     MOCHAbin 7040 development board

   - NXP adds support for the S32G2 automotive SoC, two imx6 based ebook
     readers, and three additional development boards, which is notably
     less than their usual additions, but they also gain improvements to
     their many existing boards

   - STmicroelectronics adds their stm32mp13 SoC family along with a
     reference board

   - Renesas adds new versions of their R-Car Gen3 SoCs and many updates
     for their older generations

   - Broadcom adds support for a number of Cisco Meraki wireless
     controllers, along with two new boards and other updates for
     BCM53xx/BCM47xx networking SoCs and the Raspberry Pi boards

   - Mediatek improves support for the MT81xx SoCs used in Chromebooks
     as well as the MT76xx networking SoCs

   - NVIDIA adds a number of cleanups and additional support for more
     hardware on the already supported machines

   - TI K3 adds support for three new boards along with cleanups

   - Toshiba adds one board for the Visconti family

   - Xilinx adds five new ZynqMP based machines

   - Amlogic support is added for the Radxa Zero and two Jethub home
     automation controllers, along with changes to other machines

   - Rob Herring continues his work on fixing dtc warnings all over the
     tree.

   - Minor updates for TI OMAP, Mstar, Allwinner/sunxi, Hisilicon,
     Ux500, Unisoc"

* tag 'dt-5.16' of git://git.kernel.org/pub/scm/linux/kernel/git/soc/soc: (720 commits)
  arm64: dts: apple: j274: Expose PCI node for the Ethernet MAC address
  arm64: dts: apple: t8103: Add root port interrupt routing
  arm64: dts: apple: t8103: Add PCIe DARTs
  arm64: apple: Add PCIe node
  arm64: apple: Add pinctrl nodes
  ARM: dts: arm: Update ICST clock nodes 'reg' and node names
  ARM: dts: arm: Update register-bit-led nodes 'reg' and node names
  arm64: dts: exynos: add chipid node for exynosautov9 SoC
  ARM: dts: qcom: fix typo in IPQ8064 thermal-sensor node
  Revert "arm64: dts: qcom: msm8916-asus-z00l: Add sensors"
  arm64: dts: qcom: ipq6018: Remove unused 'iface_clk' property from dma-controller node
  arm64: dts: qcom: ipq6018: Remove unused 'qcom,config-pipe-trust-reg' property
  arm64: dts: qcom: sm8350: Add CPU topology and idle-states
  arm64: dts: qcom: Drop unneeded extra device-specific includes
  arm64: dts: qcom: msm8916: Drop standalone smem node
  arm64: dts: qcom: Fix node name of rpm-msg-ram device nodes
  arm64: dts: qcom: msm8916-asus-z00l: Add sensors
  arm64: dts: qcom: msm8916-asus-z00l: Add SDCard
  arm64: dts: qcom: msm8916-asus-z00l: Add touchscreen
  arm64: dts: qcom: sdm845-oneplus: remove devinfo-size from ramoops node
  ...

706 files changed:
.mailmap
Documentation/devicetree/bindings/arm/amlogic.yaml
Documentation/devicetree/bindings/arm/atmel-at91.yaml
Documentation/devicetree/bindings/arm/bcm/bcm2835.yaml
Documentation/devicetree/bindings/arm/bcm/brcm,nsp.yaml
Documentation/devicetree/bindings/arm/cpus.yaml
Documentation/devicetree/bindings/arm/fsl.yaml
Documentation/devicetree/bindings/arm/mediatek.yaml
Documentation/devicetree/bindings/arm/mediatek/mediatek,mmsys.yaml
Documentation/devicetree/bindings/arm/qcom.yaml
Documentation/devicetree/bindings/arm/renesas.yaml
Documentation/devicetree/bindings/arm/rockchip.yaml
Documentation/devicetree/bindings/arm/rockchip/pmu.yaml
Documentation/devicetree/bindings/arm/samsung/samsung-boards.yaml
Documentation/devicetree/bindings/arm/sprd/sprd.yaml
Documentation/devicetree/bindings/arm/stm32/stm32.yaml
Documentation/devicetree/bindings/arm/sunxi/allwinner,sun4i-a10-mbus.yaml
Documentation/devicetree/bindings/arm/sunxi/allwinner,sun6i-a31-cpuconfig.yaml [new file with mode: 0644]
Documentation/devicetree/bindings/arm/sunxi/allwinner,sun9i-a80-prcm.yaml [new file with mode: 0644]
Documentation/devicetree/bindings/arm/ti/k3.yaml
Documentation/devicetree/bindings/arm/toshiba.yaml
Documentation/devicetree/bindings/arm/xilinx.yaml
Documentation/devicetree/bindings/display/brcm,bcm2835-dsi0.yaml
Documentation/devicetree/bindings/display/brcm,bcm2835-hdmi.yaml
Documentation/devicetree/bindings/display/brcm,bcm2835-v3d.yaml
Documentation/devicetree/bindings/display/brcm,bcm2835-vec.yaml
Documentation/devicetree/bindings/display/mediatek/mediatek,dsi.txt
Documentation/devicetree/bindings/gpu/host1x/nvidia,tegra210-nvdec.yaml [new file with mode: 0644]
Documentation/devicetree/bindings/memory-controllers/omap-gpmc.txt [deleted file]
Documentation/devicetree/bindings/memory-controllers/ti,gpmc-child.yaml [new file with mode: 0644]
Documentation/devicetree/bindings/memory-controllers/ti,gpmc.yaml [new file with mode: 0644]
Documentation/devicetree/bindings/mtd/gpmc-nand.txt [deleted file]
Documentation/devicetree/bindings/mtd/gpmc-nor.txt [deleted file]
Documentation/devicetree/bindings/mtd/gpmc-onenand.txt [deleted file]
Documentation/devicetree/bindings/mtd/ti,gpmc-nand.yaml [new file with mode: 0644]
Documentation/devicetree/bindings/mtd/ti,gpmc-onenand.yaml [new file with mode: 0644]
Documentation/devicetree/bindings/net/gpmc-eth.txt [deleted file]
Documentation/devicetree/bindings/pci/nvidia,tegra194-pcie.txt
Documentation/devicetree/bindings/serial/fsl,s32-linflexuart.txt [deleted file]
Documentation/devicetree/bindings/serial/fsl,s32-linflexuart.yaml [new file with mode: 0644]
Documentation/devicetree/bindings/soc/imx/fsl,imx8mm-disp-blk-ctrl.yaml [new file with mode: 0644]
Documentation/devicetree/bindings/soc/imx/fsl,imx8mm-vpu-blk-ctrl.yaml [new file with mode: 0644]
Documentation/devicetree/bindings/sound/allwinner,sun4i-a10-i2s.yaml
Documentation/devicetree/bindings/vendor-prefixes.yaml
MAINTAINERS
arch/arm/boot/dts/Makefile
arch/arm/boot/dts/am335x-pocketbeagle.dts
arch/arm/boot/dts/arm-realview-eb.dtsi
arch/arm/boot/dts/arm-realview-pb1176.dts
arch/arm/boot/dts/arm-realview-pb11mp.dts
arch/arm/boot/dts/arm-realview-pbx.dtsi
arch/arm/boot/dts/armada-381-netgear-gs110emx.dts [new file with mode: 0644]
arch/arm/boot/dts/aspeed-bmc-amd-ethanolx.dts
arch/arm/boot/dts/aspeed-bmc-ampere-mtjade.dts
arch/arm/boot/dts/aspeed-bmc-ibm-everest.dts
arch/arm/boot/dts/aspeed-bmc-ibm-rainier.dts
arch/arm/boot/dts/aspeed-bmc-inspur-fp5280g2.dts
arch/arm/boot/dts/aspeed-bmc-inventec-transformers.dts [new file with mode: 0644]
arch/arm/boot/dts/aspeed-bmc-tyan-s7106.dts [new file with mode: 0644]
arch/arm/boot/dts/aspeed-g4.dtsi
arch/arm/boot/dts/aspeed-g5.dtsi
arch/arm/boot/dts/aspeed-g6.dtsi
arch/arm/boot/dts/at91-lmu5000.dts [new file with mode: 0644]
arch/arm/boot/dts/at91-q5xr5.dts [new file with mode: 0644]
arch/arm/boot/dts/at91-sama5d27_som1.dtsi
arch/arm/boot/dts/at91-sama5d27_som1_ek.dts
arch/arm/boot/dts/at91-sama5d27_wlsom1.dtsi
arch/arm/boot/dts/at91-sama5d2_icp.dts
arch/arm/boot/dts/at91-sama7g5ek.dts
arch/arm/boot/dts/at91-tse850-3.dts
arch/arm/boot/dts/at91sam9260.dtsi
arch/arm/boot/dts/axp209.dtsi
arch/arm/boot/dts/axp22x.dtsi
arch/arm/boot/dts/axp81x.dtsi
arch/arm/boot/dts/bcm-nsp-ax.dtsi [new file with mode: 0644]
arch/arm/boot/dts/bcm-nsp.dtsi
arch/arm/boot/dts/bcm2711-rpi-4-b.dts
arch/arm/boot/dts/bcm2711-rpi-cm4-io.dts [new file with mode: 0644]
arch/arm/boot/dts/bcm2711-rpi-cm4.dtsi [new file with mode: 0644]
arch/arm/boot/dts/bcm2835-rpi-zero-w.dts
arch/arm/boot/dts/bcm2837-rpi-3-a-plus.dts
arch/arm/boot/dts/bcm2837-rpi-3-b-plus.dts
arch/arm/boot/dts/bcm2837-rpi-3-b.dts
arch/arm/boot/dts/bcm283x-rpi-wifi-bt.dtsi [new file with mode: 0644]
arch/arm/boot/dts/bcm4708-netgear-r6250.dts
arch/arm/boot/dts/bcm47081-buffalo-wzr-600dhp2.dts
arch/arm/boot/dts/bcm4709-asus-rt-ac87u.dts
arch/arm/boot/dts/bcm4709-buffalo-wxr-1900dhp.dts
arch/arm/boot/dts/bcm4709-linksys-ea9200.dts
arch/arm/boot/dts/bcm4709-netgear-r7000.dts
arch/arm/boot/dts/bcm4709-netgear-r8000.dts
arch/arm/boot/dts/bcm4709-tplink-archer-c9-v1.dts
arch/arm/boot/dts/bcm47094-asus-rt-ac88u.dts [new file with mode: 0644]
arch/arm/boot/dts/bcm47094-dlink-dir-885l.dts
arch/arm/boot/dts/bcm47094-linksys-panamera.dts
arch/arm/boot/dts/bcm47094-luxul-abr-4500.dts
arch/arm/boot/dts/bcm47094-luxul-xbr-4500.dts
arch/arm/boot/dts/bcm47094-luxul-xwc-2000.dts
arch/arm/boot/dts/bcm47189-tenda-ac9.dts
arch/arm/boot/dts/bcm53016-meraki-mr32.dts
arch/arm/boot/dts/bcm5301x.dtsi
arch/arm/boot/dts/bcm53573.dtsi
arch/arm/boot/dts/bcm94708.dts
arch/arm/boot/dts/bcm94709.dts
arch/arm/boot/dts/bcm958522er.dts
arch/arm/boot/dts/bcm958525er.dts
arch/arm/boot/dts/bcm958525xmc.dts
arch/arm/boot/dts/bcm958622hr.dts
arch/arm/boot/dts/bcm958623hr.dts
arch/arm/boot/dts/bcm958625-meraki-alamo.dtsi [new file with mode: 0644]
arch/arm/boot/dts/bcm958625-meraki-kingpin.dtsi [new file with mode: 0644]
arch/arm/boot/dts/bcm958625-meraki-mx64-a0.dts [new file with mode: 0644]
arch/arm/boot/dts/bcm958625-meraki-mx64.dts [new file with mode: 0644]
arch/arm/boot/dts/bcm958625-meraki-mx64w-a0.dts [new file with mode: 0644]
arch/arm/boot/dts/bcm958625-meraki-mx64w.dts [new file with mode: 0644]
arch/arm/boot/dts/bcm958625-meraki-mx65.dts [new file with mode: 0644]
arch/arm/boot/dts/bcm958625-meraki-mx65w.dts [new file with mode: 0644]
arch/arm/boot/dts/bcm958625-meraki-mx6x-common.dtsi [new file with mode: 0644]
arch/arm/boot/dts/bcm958625hr.dts
arch/arm/boot/dts/bcm958625k.dts
arch/arm/boot/dts/bcm988312hr.dts
arch/arm/boot/dts/dra7.dtsi
arch/arm/boot/dts/e60k02.dtsi
arch/arm/boot/dts/e70k02.dtsi [new file with mode: 0644]
arch/arm/boot/dts/emev2-kzm9d.dts
arch/arm/boot/dts/exynos3250-rinato.dts
arch/arm/boot/dts/exynos4210-i9100.dts
arch/arm/boot/dts/exynos4210-origen.dts
arch/arm/boot/dts/exynos4210-trats.dts
arch/arm/boot/dts/exynos4210-universal_c210.dts
arch/arm/boot/dts/exynos4412-i9300.dts
arch/arm/boot/dts/exynos4412-i9305.dts
arch/arm/boot/dts/exynos4412-n710x.dts
arch/arm/boot/dts/exynos4412-origen.dts
arch/arm/boot/dts/exynos4412-p4note-n8010.dts
arch/arm/boot/dts/exynos4412-trats2.dts
arch/arm/boot/dts/exynos5250-arndale.dts
arch/arm/boot/dts/exynos5250-snow-rev5.dts
arch/arm/boot/dts/exynos5250-snow.dts
arch/arm/boot/dts/exynos5250-spring.dts
arch/arm/boot/dts/exynos5250.dtsi
arch/arm/boot/dts/exynos5420-peach-pit.dts
arch/arm/boot/dts/exynos5800-peach-pi.dts
arch/arm/boot/dts/gemini-dlink-dir-685.dts
arch/arm/boot/dts/gemini-ns2502.dts [new file with mode: 0644]
arch/arm/boot/dts/gemini-sl93512r.dts
arch/arm/boot/dts/gemini-sq201.dts
arch/arm/boot/dts/gemini-ssi1328.dts [new file with mode: 0644]
arch/arm/boot/dts/gemini-wbd111.dts
arch/arm/boot/dts/gemini-wbd222.dts
arch/arm/boot/dts/gemini.dtsi
arch/arm/boot/dts/imx6dl-alti6p.dts
arch/arm/boot/dts/imx6dl-b1x5v2.dtsi
arch/arm/boot/dts/imx6dl-prtrvt.dts
arch/arm/boot/dts/imx6dl-skov-revc-lt2.dts
arch/arm/boot/dts/imx6dl-yapp4-common.dtsi
arch/arm/boot/dts/imx6q-skov-revc-lt2.dts
arch/arm/boot/dts/imx6qdl-apalis.dtsi
arch/arm/boot/dts/imx6qdl-phytec-mira.dtsi
arch/arm/boot/dts/imx6qdl-phytec-phycore-som.dtsi
arch/arm/boot/dts/imx6qdl-skov-revc-lt2.dtsi [new file with mode: 0644]
arch/arm/boot/dts/imx6qdl-tqma6.dtsi
arch/arm/boot/dts/imx6qdl.dtsi
arch/arm/boot/dts/imx6qp-prtwd3.dts
arch/arm/boot/dts/imx6qp.dtsi
arch/arm/boot/dts/imx6sl-tolino-vision5.dts [new file with mode: 0644]
arch/arm/boot/dts/imx6sl.dtsi
arch/arm/boot/dts/imx6sll-kobo-librah2o.dts [new file with mode: 0644]
arch/arm/boot/dts/imx6sll.dtsi
arch/arm/boot/dts/imx6sx.dtsi
arch/arm/boot/dts/imx6ul-phytec-phycore-som.dtsi
arch/arm/boot/dts/imx6ul-phytec-segin.dtsi
arch/arm/boot/dts/imx6ull-colibri-emmc-eval-v3.dts [new file with mode: 0644]
arch/arm/boot/dts/imx6ull-colibri-emmc-nonwifi.dtsi [new file with mode: 0644]
arch/arm/boot/dts/imx6ull-colibri.dtsi
arch/arm/boot/dts/imx7-mba7.dtsi
arch/arm/boot/dts/imx7-tqma7.dtsi
arch/arm/boot/dts/imx7d-mba7.dts
arch/arm/boot/dts/imx7d-sdb.dts
arch/arm/boot/dts/imx7d-tqma7.dtsi
arch/arm/boot/dts/imx7d.dtsi
arch/arm/boot/dts/imx7s-mba7.dts
arch/arm/boot/dts/imx7s-tqma7.dtsi
arch/arm/boot/dts/integrator.dtsi
arch/arm/boot/dts/integratorap-im-pd1.dts
arch/arm/boot/dts/integratorap.dts
arch/arm/boot/dts/integratorcp.dts
arch/arm/boot/dts/intel-ixp42x-adi-coyote.dts
arch/arm/boot/dts/intel-ixp42x-arcom-vulcan.dts
arch/arm/boot/dts/intel-ixp42x-dlink-dsm-g600.dts
arch/arm/boot/dts/intel-ixp42x-freecom-fsg-3.dts
arch/arm/boot/dts/intel-ixp42x-gateworks-gw2348.dts
arch/arm/boot/dts/intel-ixp42x-iomega-nas100d.dts
arch/arm/boot/dts/intel-ixp42x-ixdpg425.dts
arch/arm/boot/dts/intel-ixp42x-linksys-nslu2.dts
arch/arm/boot/dts/intel-ixp42x-linksys-wrv54g.dts
arch/arm/boot/dts/intel-ixp42x-netgear-wg302v2.dts
arch/arm/boot/dts/intel-ixp43x-gateworks-gw2358.dts
arch/arm/boot/dts/intel-ixp45x-ixp46x.dtsi
arch/arm/boot/dts/intel-ixp4xx-reference-design.dtsi
arch/arm/boot/dts/intel-ixp4xx.dtsi
arch/arm/boot/dts/iwg20d-q7-common.dtsi
arch/arm/boot/dts/ls1021a-qds.dts
arch/arm/boot/dts/ls1021a-tsn.dts
arch/arm/boot/dts/ls1021a-twr.dts
arch/arm/boot/dts/ls1021a.dtsi
arch/arm/boot/dts/mps2.dtsi
arch/arm/boot/dts/mstar-v7.dtsi
arch/arm/boot/dts/mt7623.dtsi
arch/arm/boot/dts/mt7623a.dtsi
arch/arm/boot/dts/mt7623n-bananapi-bpi-r2.dts
arch/arm/boot/dts/mt7629-rfb.dts
arch/arm/boot/dts/mt7629.dtsi
arch/arm/boot/dts/omap-gpmc-smsc911x.dtsi
arch/arm/boot/dts/omap-gpmc-smsc9221.dtsi
arch/arm/boot/dts/omap-zoom-common.dtsi
arch/arm/boot/dts/omap2430-sdp.dts
arch/arm/boot/dts/omap3-cpu-thermal.dtsi
arch/arm/boot/dts/omap3-devkit8000-common.dtsi
arch/arm/boot/dts/omap3-gta04.dtsi
arch/arm/boot/dts/omap3-gta04a5.dts
arch/arm/boot/dts/omap3-overo-tobiduo-common.dtsi
arch/arm/boot/dts/omap3-sb-t35.dtsi
arch/arm/boot/dts/qcom-apq8026-lg-lenok.dts [new file with mode: 0644]
arch/arm/boot/dts/qcom-apq8060-dragonboard.dts
arch/arm/boot/dts/qcom-apq8064-asus-nexus7-flo.dts
arch/arm/boot/dts/qcom-apq8064-cm-qs600.dts
arch/arm/boot/dts/qcom-apq8064-ifc6410.dts
arch/arm/boot/dts/qcom-apq8064-sony-xperia-yuga.dts
arch/arm/boot/dts/qcom-apq8064.dtsi
arch/arm/boot/dts/qcom-apq8084.dtsi
arch/arm/boot/dts/qcom-ipq4019-ap.dk01.1-c1.dts
arch/arm/boot/dts/qcom-ipq4019-ap.dk01.1.dtsi
arch/arm/boot/dts/qcom-ipq4019-ap.dk04.1-c1.dts
arch/arm/boot/dts/qcom-ipq4019-ap.dk04.1-c3.dts
arch/arm/boot/dts/qcom-ipq4019-ap.dk07.1-c1.dts
arch/arm/boot/dts/qcom-ipq4019-ap.dk07.1-c2.dts
arch/arm/boot/dts/qcom-ipq8064-ap148.dts
arch/arm/boot/dts/qcom-ipq8064-rb3011.dts
arch/arm/boot/dts/qcom-ipq8064.dtsi
arch/arm/boot/dts/qcom-mdm9615-wp8548.dtsi
arch/arm/boot/dts/qcom-mdm9615.dtsi
arch/arm/boot/dts/qcom-msm8226.dtsi
arch/arm/boot/dts/qcom-msm8660-surf.dts
arch/arm/boot/dts/qcom-msm8660.dtsi
arch/arm/boot/dts/qcom-msm8916-samsung-serranove.dts [new file with mode: 0644]
arch/arm/boot/dts/qcom-msm8916-smp.dtsi [new file with mode: 0644]
arch/arm/boot/dts/qcom-msm8960-cdp.dts
arch/arm/boot/dts/qcom-msm8960.dtsi
arch/arm/boot/dts/qcom-msm8974.dtsi
arch/arm/boot/dts/qcom-pm8226.dtsi [new file with mode: 0644]
arch/arm/boot/dts/qcom-pm8841.dtsi
arch/arm/boot/dts/qcom-pm8941.dtsi
arch/arm/boot/dts/qcom-pma8084.dtsi
arch/arm/boot/dts/qcom-sdx55.dtsi
arch/arm/boot/dts/r7s72100-genmai.dts
arch/arm/boot/dts/r7s72100-gr-peach.dts
arch/arm/boot/dts/r7s72100-rskrza1.dts
arch/arm/boot/dts/r7s9210-rza2mevb.dts
arch/arm/boot/dts/r8a73a4-ape6evm.dts
arch/arm/boot/dts/r8a7740-armadillo800eva.dts
arch/arm/boot/dts/r8a7742-iwg21d-q7-dbcm-ca.dts
arch/arm/boot/dts/r8a7742-iwg21d-q7.dts
arch/arm/boot/dts/r8a7743-sk-rzg1m.dts
arch/arm/boot/dts/r8a7745-iwg22d-sodimm.dts
arch/arm/boot/dts/r8a7745-sk-rzg1e.dts
arch/arm/boot/dts/r8a77470-iwg23s-sbc.dts
arch/arm/boot/dts/r8a7778-bockw.dts
arch/arm/boot/dts/r8a7779-marzen.dts
arch/arm/boot/dts/r8a7790-lager.dts
arch/arm/boot/dts/r8a7790-stout.dts
arch/arm/boot/dts/r8a7791-koelsch.dts
arch/arm/boot/dts/r8a7791-porter.dts
arch/arm/boot/dts/r8a7793-gose.dts
arch/arm/boot/dts/r8a7794-alt.dts
arch/arm/boot/dts/r8a7794-silk.dts
arch/arm/boot/dts/rk3036.dtsi
arch/arm/boot/dts/rk3066a-mk808.dts
arch/arm/boot/dts/rk3066a.dtsi
arch/arm/boot/dts/rk3188.dtsi
arch/arm/boot/dts/rk3229.dtsi
arch/arm/boot/dts/rk322x.dtsi
arch/arm/boot/dts/rk3288.dtsi
arch/arm/boot/dts/rv1108.dtsi
arch/arm/boot/dts/s5pv210-fascinate4g.dts
arch/arm/boot/dts/s5pv210-galaxys.dts
arch/arm/boot/dts/sama5d29.dtsi [new file with mode: 0644]
arch/arm/boot/dts/sama7g5.dtsi
arch/arm/boot/dts/sh73a0-kzm9g.dts
arch/arm/boot/dts/socfpga_arria10_mercury_aa1.dts [new file with mode: 0644]
arch/arm/boot/dts/spear1310.dtsi
arch/arm/boot/dts/spear1340.dtsi
arch/arm/boot/dts/ste-ab8500.dtsi
arch/arm/boot/dts/ste-ab8505.dtsi
arch/arm/boot/dts/ste-href.dtsi
arch/arm/boot/dts/ste-snowball.dts
arch/arm/boot/dts/ste-ux500-samsung-codina.dts
arch/arm/boot/dts/ste-ux500-samsung-gavini.dts
arch/arm/boot/dts/ste-ux500-samsung-golden.dts
arch/arm/boot/dts/ste-ux500-samsung-janice.dts
arch/arm/boot/dts/ste-ux500-samsung-kyle.dts
arch/arm/boot/dts/ste-ux500-samsung-skomer.dts
arch/arm/boot/dts/stm32mp13-pinctrl.dtsi [new file with mode: 0644]
arch/arm/boot/dts/stm32mp131.dtsi [new file with mode: 0644]
arch/arm/boot/dts/stm32mp133.dtsi [new file with mode: 0644]
arch/arm/boot/dts/stm32mp135.dtsi [new file with mode: 0644]
arch/arm/boot/dts/stm32mp135f-dk.dts [new file with mode: 0644]
arch/arm/boot/dts/stm32mp13xc.dtsi [new file with mode: 0644]
arch/arm/boot/dts/stm32mp13xf.dtsi [new file with mode: 0644]
arch/arm/boot/dts/stm32mp15-pinctrl.dtsi
arch/arm/boot/dts/stm32mp151.dtsi
arch/arm/boot/dts/stm32mp157c-odyssey.dts
arch/arm/boot/dts/stm32mp15xx-dhcor-som.dtsi
arch/arm/boot/dts/stm32mp15xx-dkx.dtsi
arch/arm/boot/dts/sun4i-a10-olinuxino-lime.dts
arch/arm/boot/dts/sun4i-a10.dtsi
arch/arm/boot/dts/sun5i-a13.dtsi
arch/arm/boot/dts/sun6i-a31.dtsi
arch/arm/boot/dts/sun7i-a20-bananapi.dts
arch/arm/boot/dts/sun7i-a20.dtsi
arch/arm/boot/dts/sun8i-a33.dtsi
arch/arm/boot/dts/sun8i-a83t-tbs-a711.dts
arch/arm/boot/dts/sun8i-a83t.dtsi
arch/arm/boot/dts/sun8i-h3.dtsi
arch/arm/boot/dts/sun8i-r40.dtsi
arch/arm/boot/dts/sun8i-v3-sl631.dtsi
arch/arm/boot/dts/sun9i-a80-cubieboard4.dts
arch/arm/boot/dts/sunxi-libretech-all-h3-it.dtsi
arch/arm/boot/dts/tegra114.dtsi
arch/arm/boot/dts/tegra124.dtsi
arch/arm/boot/dts/tegra20-acer-a500-picasso.dts
arch/arm/boot/dts/tegra20-paz00.dts
arch/arm/boot/dts/tegra20.dtsi
arch/arm/boot/dts/tegra30-asus-nexus7-grouper-common.dtsi
arch/arm/boot/dts/tegra30-ouya.dts
arch/arm/boot/dts/tegra30.dtsi
arch/arm/boot/dts/versatile-ab-ib2.dts
arch/arm/boot/dts/versatile-ab.dts
arch/arm/mach-qcom/Kconfig
arch/arm64/boot/dts/allwinner/axp803.dtsi
arch/arm64/boot/dts/allwinner/sun50i-a100.dtsi
arch/arm64/boot/dts/allwinner/sun50i-a64-cpu-opp.dtsi
arch/arm64/boot/dts/allwinner/sun50i-a64-orangepi-win.dts
arch/arm64/boot/dts/allwinner/sun50i-a64-pinetab.dts
arch/arm64/boot/dts/allwinner/sun50i-a64-teres-i.dts
arch/arm64/boot/dts/allwinner/sun50i-a64.dtsi
arch/arm64/boot/dts/allwinner/sun50i-h5-cpu-opp.dtsi
arch/arm64/boot/dts/allwinner/sun50i-h5-nanopi-r1s-h5.dts
arch/arm64/boot/dts/allwinner/sun50i-h5.dtsi
arch/arm64/boot/dts/allwinner/sun50i-h6-cpu-opp.dtsi
arch/arm64/boot/dts/allwinner/sun50i-h6.dtsi
arch/arm64/boot/dts/amlogic/Makefile
arch/arm64/boot/dts/amlogic/meson-axg-jethome-jethub-j100.dts [new file with mode: 0644]
arch/arm64/boot/dts/amlogic/meson-g12a-radxa-zero.dts [new file with mode: 0644]
arch/arm64/boot/dts/amlogic/meson-g12a-sei510.dts
arch/arm64/boot/dts/amlogic/meson-g12a-u200.dts
arch/arm64/boot/dts/amlogic/meson-g12a-x96-max.dts
arch/arm64/boot/dts/amlogic/meson-g12b-khadas-vim3.dtsi
arch/arm64/boot/dts/amlogic/meson-g12b-odroid-n2.dtsi
arch/arm64/boot/dts/amlogic/meson-g12b-w400.dtsi
arch/arm64/boot/dts/amlogic/meson-gxl-s905w-jethome-jethub-j80.dts [new file with mode: 0644]
arch/arm64/boot/dts/amlogic/meson-gxm-rbox-pro.dts
arch/arm64/boot/dts/amlogic/meson-sm1-bananapi-m5.dts
arch/arm64/boot/dts/amlogic/meson-sm1-khadas-vim3l.dts
arch/arm64/boot/dts/amlogic/meson-sm1-odroid.dtsi
arch/arm64/boot/dts/amlogic/meson-sm1-sei610.dts
arch/arm64/boot/dts/apple/t8103-j274.dts
arch/arm64/boot/dts/apple/t8103.dtsi
arch/arm64/boot/dts/arm/juno-motherboard.dtsi
arch/arm64/boot/dts/broadcom/Makefile
arch/arm64/boot/dts/broadcom/bcm2711-rpi-cm4-io.dts [new file with mode: 0644]
arch/arm64/boot/dts/broadcom/bcm4908/bcm4908.dtsi
arch/arm64/boot/dts/exynos/Makefile
arch/arm64/boot/dts/exynos/exynos5433-bus.dtsi
arch/arm64/boot/dts/exynos/exynos5433-tm2.dts
arch/arm64/boot/dts/exynos/exynos5433-tm2e.dts
arch/arm64/boot/dts/exynos/exynos5433.dtsi
arch/arm64/boot/dts/exynos/exynosautov9-pinctrl.dtsi [new file with mode: 0644]
arch/arm64/boot/dts/exynos/exynosautov9-sadk.dts [new file with mode: 0644]
arch/arm64/boot/dts/exynos/exynosautov9.dtsi [new file with mode: 0644]
arch/arm64/boot/dts/freescale/Makefile
arch/arm64/boot/dts/freescale/fsl-ls1012a-rdb.dts
arch/arm64/boot/dts/freescale/fsl-ls1028a-kontron-sl28-var1.dts
arch/arm64/boot/dts/freescale/fsl-ls1028a-kontron-sl28-var2.dts
arch/arm64/boot/dts/freescale/fsl-ls1028a-kontron-sl28-var4.dts
arch/arm64/boot/dts/freescale/fsl-ls1028a-kontron-sl28.dts
arch/arm64/boot/dts/freescale/fsl-ls1028a-qds.dts
arch/arm64/boot/dts/freescale/fsl-ls1028a-rdb.dts
arch/arm64/boot/dts/freescale/fsl-ls1028a.dtsi
arch/arm64/boot/dts/freescale/fsl-ls1088a.dtsi
arch/arm64/boot/dts/freescale/fsl-ls208xa.dtsi
arch/arm64/boot/dts/freescale/fsl-lx2160a-bluebox3-rev-a.dts [new file with mode: 0644]
arch/arm64/boot/dts/freescale/fsl-lx2160a-bluebox3.dts [new file with mode: 0644]
arch/arm64/boot/dts/freescale/fsl-lx2160a.dtsi
arch/arm64/boot/dts/freescale/imx8mm-kontron-n801x-s.dts
arch/arm64/boot/dts/freescale/imx8mm-kontron-n801x-som.dtsi
arch/arm64/boot/dts/freescale/imx8mm-venice-gw71xx.dtsi
arch/arm64/boot/dts/freescale/imx8mm-venice-gw72xx.dtsi
arch/arm64/boot/dts/freescale/imx8mm-venice-gw73xx.dtsi
arch/arm64/boot/dts/freescale/imx8mm-venice-gw7901.dts
arch/arm64/boot/dts/freescale/imx8mm.dtsi
arch/arm64/boot/dts/freescale/imx8mp.dtsi
arch/arm64/boot/dts/freescale/imx8mq-librem5.dtsi
arch/arm64/boot/dts/freescale/imx8mq-mnt-reform2.dts
arch/arm64/boot/dts/freescale/imx8mq-zii-ultra.dtsi
arch/arm64/boot/dts/freescale/imx8mq.dtsi
arch/arm64/boot/dts/freescale/s32g2.dtsi [new file with mode: 0644]
arch/arm64/boot/dts/freescale/s32g274a-evb.dts [new file with mode: 0644]
arch/arm64/boot/dts/freescale/s32g274a-rdb2.dts [new file with mode: 0644]
arch/arm64/boot/dts/hisilicon/hi3660.dtsi
arch/arm64/boot/dts/hisilicon/hi3670-hikey970.dts
arch/arm64/boot/dts/hisilicon/hi3670.dtsi
arch/arm64/boot/dts/hisilicon/hi6220.dtsi
arch/arm64/boot/dts/hisilicon/hikey970-pmic.dtsi [new file with mode: 0644]
arch/arm64/boot/dts/marvell/Makefile
arch/arm64/boot/dts/marvell/armada-7040-mochabin.dts [new file with mode: 0644]
arch/arm64/boot/dts/mediatek/mt2712e.dtsi
arch/arm64/boot/dts/mediatek/mt6358.dtsi
arch/arm64/boot/dts/mediatek/mt7622-bananapi-bpi-r64.dts
arch/arm64/boot/dts/mediatek/mt7622-rfb1.dts
arch/arm64/boot/dts/mediatek/mt7622.dtsi
arch/arm64/boot/dts/mediatek/mt8173.dtsi
arch/arm64/boot/dts/mediatek/mt8183-kukui-audio-da7219-max98357a.dtsi [new file with mode: 0644]
arch/arm64/boot/dts/mediatek/mt8183-kukui-audio-da7219-rt1015p.dtsi [new file with mode: 0644]
arch/arm64/boot/dts/mediatek/mt8183-kukui-audio-da7219.dtsi [new file with mode: 0644]
arch/arm64/boot/dts/mediatek/mt8183-kukui-audio-max98357a.dtsi [new file with mode: 0644]
arch/arm64/boot/dts/mediatek/mt8183-kukui-audio-rt1015p.dtsi [new file with mode: 0644]
arch/arm64/boot/dts/mediatek/mt8183-kukui-audio-ts3a227e-max98357a.dtsi [new file with mode: 0644]
arch/arm64/boot/dts/mediatek/mt8183-kukui-audio-ts3a227e-rt1015p.dtsi [new file with mode: 0644]
arch/arm64/boot/dts/mediatek/mt8183-kukui-audio-ts3a227e.dtsi [new file with mode: 0644]
arch/arm64/boot/dts/mediatek/mt8183-kukui-jacuzzi-burnet.dts
arch/arm64/boot/dts/mediatek/mt8183-kukui-jacuzzi-damu.dts
arch/arm64/boot/dts/mediatek/mt8183-kukui-jacuzzi-fennel.dtsi
arch/arm64/boot/dts/mediatek/mt8183-kukui-jacuzzi-juniper-sku16.dts
arch/arm64/boot/dts/mediatek/mt8183-kukui-jacuzzi-kappa.dts
arch/arm64/boot/dts/mediatek/mt8183-kukui-jacuzzi-kenzo.dts
arch/arm64/boot/dts/mediatek/mt8183-kukui-jacuzzi-willow-sku0.dts
arch/arm64/boot/dts/mediatek/mt8183-kukui-jacuzzi-willow-sku1.dts
arch/arm64/boot/dts/mediatek/mt8183-kukui-kakadu.dts
arch/arm64/boot/dts/mediatek/mt8183-kukui-kodama.dtsi
arch/arm64/boot/dts/mediatek/mt8183-kukui-krane.dtsi
arch/arm64/boot/dts/mediatek/mt8183-kukui.dtsi
arch/arm64/boot/dts/mediatek/mt8183.dtsi
arch/arm64/boot/dts/mediatek/mt8192.dtsi
arch/arm64/boot/dts/nvidia/tegra132-norrin.dts
arch/arm64/boot/dts/nvidia/tegra132.dtsi
arch/arm64/boot/dts/nvidia/tegra186-p2771-0000.dts
arch/arm64/boot/dts/nvidia/tegra186-p3509-0000+p3636-0001.dts
arch/arm64/boot/dts/nvidia/tegra186.dtsi
arch/arm64/boot/dts/nvidia/tegra194-p2972-0000.dts
arch/arm64/boot/dts/nvidia/tegra194-p3509-0000.dtsi
arch/arm64/boot/dts/nvidia/tegra194.dtsi
arch/arm64/boot/dts/nvidia/tegra210-p2371-2180.dts
arch/arm64/boot/dts/nvidia/tegra210-p3450-0000.dts
arch/arm64/boot/dts/nvidia/tegra210.dtsi
arch/arm64/boot/dts/qcom/Makefile
arch/arm64/boot/dts/qcom/apq8016-sbc.dts
arch/arm64/boot/dts/qcom/apq8016-sbc.dtsi [deleted file]
arch/arm64/boot/dts/qcom/apq8094-sony-xperia-kitakami-karin_windy.dts
arch/arm64/boot/dts/qcom/apq8096-db820c.dts
arch/arm64/boot/dts/qcom/apq8096-db820c.dtsi [deleted file]
arch/arm64/boot/dts/qcom/apq8096-ifc6640.dts
arch/arm64/boot/dts/qcom/ipq6018.dtsi
arch/arm64/boot/dts/qcom/ipq8074-hk01.dts
arch/arm64/boot/dts/qcom/ipq8074.dtsi
arch/arm64/boot/dts/qcom/msm8916-alcatel-idol347.dts
arch/arm64/boot/dts/qcom/msm8916-asus-z00l.dts
arch/arm64/boot/dts/qcom/msm8916-huawei-g7.dts
arch/arm64/boot/dts/qcom/msm8916-longcheer-l8150.dts
arch/arm64/boot/dts/qcom/msm8916-longcheer-l8910.dts
arch/arm64/boot/dts/qcom/msm8916-mtp.dts
arch/arm64/boot/dts/qcom/msm8916-mtp.dtsi [deleted file]
arch/arm64/boot/dts/qcom/msm8916-samsung-a3u-eur.dts
arch/arm64/boot/dts/qcom/msm8916-samsung-a5u-eur.dts
arch/arm64/boot/dts/qcom/msm8916-samsung-serranove.dts [new file with mode: 0644]
arch/arm64/boot/dts/qcom/msm8916-wingtech-wt88047.dts
arch/arm64/boot/dts/qcom/msm8916.dtsi
arch/arm64/boot/dts/qcom/msm8992-bullhead-rev-101.dts
arch/arm64/boot/dts/qcom/msm8992-msft-lumia-octagon-talkman.dts
arch/arm64/boot/dts/qcom/msm8992-xiaomi-libra.dts
arch/arm64/boot/dts/qcom/msm8994-angler-rev-101.dts
arch/arm64/boot/dts/qcom/msm8994-msft-lumia-octagon-cityman.dts
arch/arm64/boot/dts/qcom/msm8994-sony-xperia-kitakami-ivy.dts
arch/arm64/boot/dts/qcom/msm8994-sony-xperia-kitakami-karin.dts
arch/arm64/boot/dts/qcom/msm8994-sony-xperia-kitakami-satsuki.dts
arch/arm64/boot/dts/qcom/msm8994-sony-xperia-kitakami-sumire.dts
arch/arm64/boot/dts/qcom/msm8994-sony-xperia-kitakami-suzuran.dts
arch/arm64/boot/dts/qcom/msm8994.dtsi
arch/arm64/boot/dts/qcom/msm8996-mtp.dts
arch/arm64/boot/dts/qcom/msm8996-mtp.dtsi [deleted file]
arch/arm64/boot/dts/qcom/msm8996-sony-xperia-tone-dora.dts
arch/arm64/boot/dts/qcom/msm8996-sony-xperia-tone-kagura.dts
arch/arm64/boot/dts/qcom/msm8996-sony-xperia-tone-keyaki.dts
arch/arm64/boot/dts/qcom/msm8996-sony-xperia-tone.dtsi
arch/arm64/boot/dts/qcom/msm8996-xiaomi-common.dtsi [new file with mode: 0644]
arch/arm64/boot/dts/qcom/msm8996-xiaomi-gemini.dts [new file with mode: 0644]
arch/arm64/boot/dts/qcom/msm8996-xiaomi-scorpio.dts [new file with mode: 0644]
arch/arm64/boot/dts/qcom/msm8996.dtsi
arch/arm64/boot/dts/qcom/msm8998-asus-novago-tp370ql.dts
arch/arm64/boot/dts/qcom/msm8998-clamshell.dtsi
arch/arm64/boot/dts/qcom/msm8998-fxtec-pro1.dts [new file with mode: 0644]
arch/arm64/boot/dts/qcom/msm8998-hp-envy-x2.dts
arch/arm64/boot/dts/qcom/msm8998-lenovo-miix-630.dts
arch/arm64/boot/dts/qcom/msm8998-mtp.dtsi
arch/arm64/boot/dts/qcom/msm8998-oneplus-cheeseburger.dts
arch/arm64/boot/dts/qcom/msm8998-oneplus-common.dtsi
arch/arm64/boot/dts/qcom/msm8998-oneplus-dumpling.dts
arch/arm64/boot/dts/qcom/msm8998-sony-xperia-yoshino-lilac.dts [new file with mode: 0644]
arch/arm64/boot/dts/qcom/msm8998-sony-xperia-yoshino-maple.dts [new file with mode: 0644]
arch/arm64/boot/dts/qcom/msm8998-sony-xperia-yoshino-poplar.dts [new file with mode: 0644]
arch/arm64/boot/dts/qcom/msm8998-sony-xperia-yoshino.dtsi [new file with mode: 0644]
arch/arm64/boot/dts/qcom/msm8998.dtsi
arch/arm64/boot/dts/qcom/pm6150l.dtsi
arch/arm64/boot/dts/qcom/pm6350.dtsi [new file with mode: 0644]
arch/arm64/boot/dts/qcom/pm660.dtsi
arch/arm64/boot/dts/qcom/pm660l.dtsi
arch/arm64/boot/dts/qcom/pm8916.dtsi
arch/arm64/boot/dts/qcom/pm8994.dtsi
arch/arm64/boot/dts/qcom/pmi8994.dtsi
arch/arm64/boot/dts/qcom/pmi8998.dtsi
arch/arm64/boot/dts/qcom/pmk8350.dtsi
arch/arm64/boot/dts/qcom/qcs404.dtsi
arch/arm64/boot/dts/qcom/qrb5165-rb5.dts
arch/arm64/boot/dts/qcom/sa8155p-adp.dts
arch/arm64/boot/dts/qcom/sc7180-trogdor-coachz-r1.dts
arch/arm64/boot/dts/qcom/sc7180-trogdor-coachz.dtsi
arch/arm64/boot/dts/qcom/sc7180-trogdor-homestar-r2.dts [new file with mode: 0644]
arch/arm64/boot/dts/qcom/sc7180-trogdor-homestar-r3.dts [new file with mode: 0644]
arch/arm64/boot/dts/qcom/sc7180-trogdor-homestar.dtsi [new file with mode: 0644]
arch/arm64/boot/dts/qcom/sc7180-trogdor-lazor.dtsi
arch/arm64/boot/dts/qcom/sc7180-trogdor-lte-sku.dtsi
arch/arm64/boot/dts/qcom/sc7180-trogdor-parade-ps8640.dtsi [new file with mode: 0644]
arch/arm64/boot/dts/qcom/sc7180-trogdor-pompom-r1.dts
arch/arm64/boot/dts/qcom/sc7180-trogdor-pompom-r2.dts
arch/arm64/boot/dts/qcom/sc7180-trogdor-pompom.dtsi
arch/arm64/boot/dts/qcom/sc7180-trogdor-r1.dts
arch/arm64/boot/dts/qcom/sc7180-trogdor-ti-sn65dsi86.dtsi [new file with mode: 0644]
arch/arm64/boot/dts/qcom/sc7180-trogdor.dtsi
arch/arm64/boot/dts/qcom/sc7180.dtsi
arch/arm64/boot/dts/qcom/sc7280-herobrine.dts [new file with mode: 0644]
arch/arm64/boot/dts/qcom/sc7280-herobrine.dtsi [new file with mode: 0644]
arch/arm64/boot/dts/qcom/sc7280-idp.dts
arch/arm64/boot/dts/qcom/sc7280-idp.dtsi
arch/arm64/boot/dts/qcom/sc7280-idp2.dts
arch/arm64/boot/dts/qcom/sc7280.dtsi
arch/arm64/boot/dts/qcom/sdm630-sony-xperia-ganges-kirin.dts
arch/arm64/boot/dts/qcom/sdm630-sony-xperia-nile-discovery.dts
arch/arm64/boot/dts/qcom/sdm630-sony-xperia-nile-pioneer.dts
arch/arm64/boot/dts/qcom/sdm630-sony-xperia-nile-voyager.dts
arch/arm64/boot/dts/qcom/sdm630-sony-xperia-nile.dtsi
arch/arm64/boot/dts/qcom/sdm630.dtsi
arch/arm64/boot/dts/qcom/sdm660-xiaomi-lavender.dts
arch/arm64/boot/dts/qcom/sdm845-cheza.dtsi
arch/arm64/boot/dts/qcom/sdm845-db845c.dts
arch/arm64/boot/dts/qcom/sdm845-mtp.dts
arch/arm64/boot/dts/qcom/sdm845-oneplus-common.dtsi
arch/arm64/boot/dts/qcom/sdm845-oneplus-enchilada.dts
arch/arm64/boot/dts/qcom/sdm845-oneplus-fajita.dts
arch/arm64/boot/dts/qcom/sdm845-xiaomi-beryllium.dts
arch/arm64/boot/dts/qcom/sdm845.dtsi
arch/arm64/boot/dts/qcom/sdm850-lenovo-yoga-c630.dts
arch/arm64/boot/dts/qcom/sm6125-sony-xperia-seine-pdx201.dts
arch/arm64/boot/dts/qcom/sm6125.dtsi
arch/arm64/boot/dts/qcom/sm6350-sony-xperia-lena-pdx213.dts [new file with mode: 0644]
arch/arm64/boot/dts/qcom/sm6350.dtsi [new file with mode: 0644]
arch/arm64/boot/dts/qcom/sm7225-fairphone-fp4.dts [new file with mode: 0644]
arch/arm64/boot/dts/qcom/sm7225.dtsi [new file with mode: 0644]
arch/arm64/boot/dts/qcom/sm8150-hdk.dts
arch/arm64/boot/dts/qcom/sm8150-microsoft-surface-duo.dts
arch/arm64/boot/dts/qcom/sm8150-mtp.dts
arch/arm64/boot/dts/qcom/sm8150-sony-xperia-kumano-bahamut.dts
arch/arm64/boot/dts/qcom/sm8150-sony-xperia-kumano-griffin.dts
arch/arm64/boot/dts/qcom/sm8150.dtsi
arch/arm64/boot/dts/qcom/sm8250-hdk.dts
arch/arm64/boot/dts/qcom/sm8250-mtp.dts
arch/arm64/boot/dts/qcom/sm8250-sony-xperia-edo-pdx203.dts
arch/arm64/boot/dts/qcom/sm8250-sony-xperia-edo-pdx206.dts
arch/arm64/boot/dts/qcom/sm8250.dtsi
arch/arm64/boot/dts/qcom/sm8350-hdk.dts
arch/arm64/boot/dts/qcom/sm8350-mtp.dts
arch/arm64/boot/dts/qcom/sm8350.dtsi
arch/arm64/boot/dts/renesas/Makefile
arch/arm64/boot/dts/renesas/beacon-renesom-som.dtsi
arch/arm64/boot/dts/renesas/cat875.dtsi
arch/arm64/boot/dts/renesas/draak.dtsi [new file with mode: 0644]
arch/arm64/boot/dts/renesas/ebisu.dtsi [new file with mode: 0644]
arch/arm64/boot/dts/renesas/hihope-rzg2-ex.dtsi
arch/arm64/boot/dts/renesas/r8a77961.dtsi
arch/arm64/boot/dts/renesas/r8a77970-eagle.dts
arch/arm64/boot/dts/renesas/r8a77970-v3msk.dts
arch/arm64/boot/dts/renesas/r8a77980-condor.dts
arch/arm64/boot/dts/renesas/r8a77980-v3hsk.dts
arch/arm64/boot/dts/renesas/r8a77990-ebisu.dts
arch/arm64/boot/dts/renesas/r8a77995-draak.dts
arch/arm64/boot/dts/renesas/r8a779a0-falcon-cpu.dtsi
arch/arm64/boot/dts/renesas/r8a779a0-falcon.dts
arch/arm64/boot/dts/renesas/r8a779a0.dtsi
arch/arm64/boot/dts/renesas/r8a779m0.dtsi [new file with mode: 0644]
arch/arm64/boot/dts/renesas/r8a779m1.dtsi
arch/arm64/boot/dts/renesas/r8a779m2.dtsi [new file with mode: 0644]
arch/arm64/boot/dts/renesas/r8a779m3.dtsi
arch/arm64/boot/dts/renesas/r8a779m4.dtsi [new file with mode: 0644]
arch/arm64/boot/dts/renesas/r8a779m5-salvator-xs.dts [new file with mode: 0644]
arch/arm64/boot/dts/renesas/r8a779m5.dtsi [new file with mode: 0644]
arch/arm64/boot/dts/renesas/r8a779m6.dtsi [new file with mode: 0644]
arch/arm64/boot/dts/renesas/r8a779m7.dtsi [new file with mode: 0644]
arch/arm64/boot/dts/renesas/r8a779m8.dtsi [new file with mode: 0644]
arch/arm64/boot/dts/renesas/r9a07g044.dtsi
arch/arm64/boot/dts/renesas/r9a07g044l2-smarc.dts
arch/arm64/boot/dts/renesas/rzg2l-smarc-som.dtsi [new file with mode: 0644]
arch/arm64/boot/dts/renesas/rzg2l-smarc.dtsi
arch/arm64/boot/dts/renesas/salvator-common.dtsi
arch/arm64/boot/dts/renesas/ulcb.dtsi
arch/arm64/boot/dts/rockchip/Makefile
arch/arm64/boot/dts/rockchip/px30-evb.dts
arch/arm64/boot/dts/rockchip/px30.dtsi
arch/arm64/boot/dts/rockchip/rk3308.dtsi
arch/arm64/boot/dts/rockchip/rk3318-a95x-z2.dts
arch/arm64/boot/dts/rockchip/rk3326-odroid-go2.dts
arch/arm64/boot/dts/rockchip/rk3328-roc-pc.dts [new file with mode: 0644]
arch/arm64/boot/dts/rockchip/rk3328-rock64.dts
arch/arm64/boot/dts/rockchip/rk3328.dtsi
arch/arm64/boot/dts/rockchip/rk3368-lion.dtsi
arch/arm64/boot/dts/rockchip/rk3368.dtsi
arch/arm64/boot/dts/rockchip/rk3399-gru-bob.dts
arch/arm64/boot/dts/rockchip/rk3399-gru-chromebook.dtsi
arch/arm64/boot/dts/rockchip/rk3399-gru-kevin.dts
arch/arm64/boot/dts/rockchip/rk3399-gru-scarlet-dumo.dts [new file with mode: 0644]
arch/arm64/boot/dts/rockchip/rk3399-gru-scarlet.dtsi
arch/arm64/boot/dts/rockchip/rk3399-gru.dtsi
arch/arm64/boot/dts/rockchip/rk3399-kobol-helios64.dts
arch/arm64/boot/dts/rockchip/rk3399-op1-opp.dtsi
arch/arm64/boot/dts/rockchip/rk3399-opp.dtsi
arch/arm64/boot/dts/rockchip/rk3399-pinebook-pro.dts
arch/arm64/boot/dts/rockchip/rk3399-roc-pc-plus.dts [new file with mode: 0644]
arch/arm64/boot/dts/rockchip/rk3399-rock-pi-4.dtsi
arch/arm64/boot/dts/rockchip/rk3399-rock-pi-4a-plus.dts [new file with mode: 0644]
arch/arm64/boot/dts/rockchip/rk3399-rock-pi-4b-plus.dts [new file with mode: 0644]
arch/arm64/boot/dts/rockchip/rk3399-rockpro64.dtsi
arch/arm64/boot/dts/rockchip/rk3399.dtsi
arch/arm64/boot/dts/rockchip/rk3566-quartz64-a.dts [new file with mode: 0644]
arch/arm64/boot/dts/rockchip/rk3566.dtsi [new file with mode: 0644]
arch/arm64/boot/dts/rockchip/rk3568-evb1-v10.dts
arch/arm64/boot/dts/rockchip/rk3568-pinctrl.dtsi
arch/arm64/boot/dts/rockchip/rk3568.dtsi
arch/arm64/boot/dts/rockchip/rk356x.dtsi [new file with mode: 0644]
arch/arm64/boot/dts/ti/Makefile
arch/arm64/boot/dts/ti/k3-am64-main.dtsi
arch/arm64/boot/dts/ti/k3-am64-mcu.dtsi
arch/arm64/boot/dts/ti/k3-am64.dtsi
arch/arm64/boot/dts/ti/k3-am642-evm.dts
arch/arm64/boot/dts/ti/k3-am642-sk.dts
arch/arm64/boot/dts/ti/k3-am65-iot2050-common-pg1.dtsi [new file with mode: 0644]
arch/arm64/boot/dts/ti/k3-am65-iot2050-common-pg2.dtsi [new file with mode: 0644]
arch/arm64/boot/dts/ti/k3-am65-iot2050-common.dtsi
arch/arm64/boot/dts/ti/k3-am65-main.dtsi
arch/arm64/boot/dts/ti/k3-am65-wakeup.dtsi
arch/arm64/boot/dts/ti/k3-am65.dtsi
arch/arm64/boot/dts/ti/k3-am6528-iot2050-basic-common.dtsi [new file with mode: 0644]
arch/arm64/boot/dts/ti/k3-am6528-iot2050-basic-pg2.dts [new file with mode: 0644]
arch/arm64/boot/dts/ti/k3-am6528-iot2050-basic.dts
arch/arm64/boot/dts/ti/k3-am654.dtsi
arch/arm64/boot/dts/ti/k3-am6548-iot2050-advanced-common.dtsi [new file with mode: 0644]
arch/arm64/boot/dts/ti/k3-am6548-iot2050-advanced-pg2.dts [new file with mode: 0644]
arch/arm64/boot/dts/ti/k3-am6548-iot2050-advanced.dts
arch/arm64/boot/dts/ti/k3-j7200-common-proc-board.dts
arch/arm64/boot/dts/ti/k3-j7200-main.dtsi
arch/arm64/boot/dts/ti/k3-j7200.dtsi
arch/arm64/boot/dts/ti/k3-j721e-common-proc-board.dts
arch/arm64/boot/dts/ti/k3-j721e-main.dtsi
arch/arm64/boot/dts/ti/k3-j721e-sk.dts [new file with mode: 0644]
arch/arm64/boot/dts/ti/k3-j721e.dtsi
arch/arm64/boot/dts/toshiba/Makefile
arch/arm64/boot/dts/toshiba/tmpv7708-rm-mbrc.dts
arch/arm64/boot/dts/toshiba/tmpv7708-visrobo-vrb.dts [new file with mode: 0644]
arch/arm64/boot/dts/toshiba/tmpv7708-visrobo-vrc.dtsi [new file with mode: 0644]
arch/arm64/boot/dts/toshiba/tmpv7708.dtsi
arch/arm64/boot/dts/xilinx/Makefile
arch/arm64/boot/dts/xilinx/zynqmp-clk-ccf.dtsi
arch/arm64/boot/dts/xilinx/zynqmp-sck-kv-g-revA.dts [new file with mode: 0644]
arch/arm64/boot/dts/xilinx/zynqmp-sck-kv-g-revB.dts [new file with mode: 0644]
arch/arm64/boot/dts/xilinx/zynqmp-sm-k26-revA.dts [new file with mode: 0644]
arch/arm64/boot/dts/xilinx/zynqmp-smk-k26-revA.dts [new file with mode: 0644]
arch/arm64/boot/dts/xilinx/zynqmp-zc1232-revA.dts
arch/arm64/boot/dts/xilinx/zynqmp-zc1254-revA.dts
arch/arm64/boot/dts/xilinx/zynqmp-zc1275-revA.dts
arch/arm64/boot/dts/xilinx/zynqmp-zc1751-xm015-dc1.dts
arch/arm64/boot/dts/xilinx/zynqmp-zc1751-xm016-dc2.dts
arch/arm64/boot/dts/xilinx/zynqmp-zc1751-xm017-dc3.dts
arch/arm64/boot/dts/xilinx/zynqmp-zc1751-xm018-dc4.dts
arch/arm64/boot/dts/xilinx/zynqmp-zc1751-xm019-dc5.dts
arch/arm64/boot/dts/xilinx/zynqmp-zcu100-revC.dts
arch/arm64/boot/dts/xilinx/zynqmp-zcu102-rev1.1.dts [new file with mode: 0644]
arch/arm64/boot/dts/xilinx/zynqmp-zcu102-revA.dts
arch/arm64/boot/dts/xilinx/zynqmp-zcu102-revB.dts
arch/arm64/boot/dts/xilinx/zynqmp-zcu104-revA.dts
arch/arm64/boot/dts/xilinx/zynqmp-zcu104-revC.dts
arch/arm64/boot/dts/xilinx/zynqmp-zcu106-revA.dts
arch/arm64/boot/dts/xilinx/zynqmp-zcu111-revA.dts
arch/arm64/boot/dts/xilinx/zynqmp.dtsi
drivers/watchdog/mtk_wdt.c
include/dt-bindings/power/imx8mm-power.h
include/dt-bindings/reset/mt2712-resets.h [moved from include/dt-bindings/reset-controller/mt2712-resets.h with 100% similarity]
include/dt-bindings/reset/mt8173-resets.h
include/dt-bindings/reset/mt8183-resets.h [moved from include/dt-bindings/reset-controller/mt8183-resets.h with 98% similarity]
include/dt-bindings/reset/mt8192-resets.h [moved from include/dt-bindings/reset-controller/mt8192-resets.h with 100% similarity]

index 298b7a8..9d4fc1f 100644 (file)
--- a/.mailmap
+++ b/.mailmap
@@ -279,6 +279,7 @@ Nicolas Pitre <nico@fluxnic.net> <nicolas.pitre@linaro.org>
 Nicolas Pitre <nico@fluxnic.net> <nico@linaro.org>
 Nicolas Saenz Julienne <nsaenz@kernel.org> <nsaenzjulienne@suse.de>
 Nicolas Saenz Julienne <nsaenz@kernel.org> <nsaenzjulienne@suse.com>
+Niklas Söderlund <niklas.soderlund+renesas@ragnatech.se>
 Oleksij Rempel <linux@rempel-privat.de> <bug-track@fisher-privat.net>
 Oleksij Rempel <linux@rempel-privat.de> <external.Oleksij.Rempel@de.bosch.com>
 Oleksij Rempel <linux@rempel-privat.de> <fixed-term.Oleksij.Rempel@de.bosch.com>
index 6423377..3608173 100644 (file)
@@ -86,6 +86,7 @@ properties:
           - enum:
               - amlogic,p281
               - oranth,tx3-mini
+              - jethome,jethub-j80
           - const: amlogic,s905w
           - const: amlogic,meson-gxl
 
@@ -133,6 +134,7 @@ properties:
         items:
           - enum:
               - amlogic,s400
+              - jethome,jethub-j100
           - const: amlogic,a113d
           - const: amlogic,meson-axg
 
@@ -141,6 +143,7 @@ properties:
           - enum:
               - amediatech,x96-max
               - amlogic,u200
+              - radxa,zero
               - seirobotics,sei510
           - const: amlogic,g12a
 
index aad3517..c612e1f 100644 (file)
@@ -126,6 +126,18 @@ properties:
           - const: atmel,sama5d3
           - const: atmel,sama5
 
+      - description: CalAmp LMU5000 board
+        items:
+          - const: calamp,lmu5000
+          - const: atmel,at91sam9g20
+          - const: atmel,at91sam9
+
+      - description: Exegin Q5xR5 board
+        items:
+          - const: exegin,q5xr5
+          - const: atmel,at91sam9g20
+          - const: atmel,at91sam9
+
       - items:
           - enum:
               - atmel,sama5d31
index 230b80d..5dc4824 100644 (file)
@@ -19,6 +19,7 @@ properties:
         items:
           - enum:
               - raspberrypi,400
+              - raspberrypi,4-compute-module
               - raspberrypi,4-model-b
           - const: brcm,bcm2711
 
index 476bc23..7d184ba 100644 (file)
@@ -22,16 +22,61 @@ properties:
   $nodename:
     const: '/'
   compatible:
-    items:
-      - enum:
-          - brcm,bcm58522
-          - brcm,bcm58525
-          - brcm,bcm58535
-          - brcm,bcm58622
-          - brcm,bcm58623
-          - brcm,bcm58625
-          - brcm,bcm88312
-      - const: brcm,nsp
+    oneOf:
+      - description: BCM58522 based boards
+        items:
+          - enum:
+              - brcm,bcm958522er
+          - const: brcm,bcm58522
+          - const: brcm,nsp
+
+      - description: BCM58525 based boards
+        items:
+          - enum:
+              - brcm,bcm958525er
+              - brcm,bcm958525xmc
+          - const: brcm,bcm58525
+          - const: brcm,nsp
+
+      - description: BCM58535 based boards
+        items:
+          - const: brcm,bcm58535
+          - const: brcm,nsp
+
+      - description: BCM58622 based boards
+        items:
+          - enum:
+              - brcm,bcm958622hr
+          - const: brcm,bcm58622
+          - const: brcm,nsp
+
+      - description: BCM58623 based boards
+        items:
+          - enum:
+              - brcm,bcm958623hr
+          - const: brcm,bcm58623
+          - const: brcm,nsp
+
+      - description: BCM58625 based boards
+        items:
+          - enum:
+              - brcm,bcm958625hr
+              - brcm,bcm958625k
+              - meraki,mx64
+              - meraki,mx64-a0
+              - meraki,mx64w
+              - meraki,mx64w-a0
+              - meraki,mx65
+              - meraki,mx65w
+          - const: brcm,bcm58625
+          - const: brcm,nsp
+
+      - description: BCM88312 based boards
+        items:
+          - enum:
+              - brcm,bcm988312hr
+          - const: brcm,bcm88312
+          - const: brcm,nsp
 
 additionalProperties: true
 
index 35b552c..49bbaf1 100644 (file)
@@ -171,6 +171,8 @@ properties:
       - qcom,kryo385
       - qcom,kryo468
       - qcom,kryo485
+      - qcom,kryo560
+      - qcom,kryo570
       - qcom,kryo685
       - qcom,scorpion
 
index 60f4862..0b595b2 100644 (file)
@@ -235,7 +235,7 @@ properties:
               - technexion,imx6q-pico-pi      # TechNexion i.MX6Q Pico-Pi
               - technologic,imx6q-ts4900
               - technologic,imx6q-ts7970
-              - toradex,apalis_imx6q      # Apalis iMX6 Module
+              - toradex,apalis_imx6q      # Apalis iMX6 Modules
               - udoo,imx6q-udoo           # Udoo i.MX6 Quad Board
               - uniwest,imx6q-evi         # Uniwest Evi
               - variscite,dt6customboard
@@ -314,18 +314,12 @@ properties:
           - const: phytec,imx6q-pfla02    # PHYTEC phyFLEX-i.MX6 Quad
           - const: fsl,imx6q
 
-      - description: i.MX6Q Boards with Toradex Apalis iMX6Q/D Module
+      - description: i.MX6Q Boards with Toradex Apalis iMX6Q/D Modules
         items:
           - enum:
-              - toradex,apalis_imx6q-ixora  # Apalis iMX6Q/D Module on Ixora Carrier Board
-              - toradex,apalis_imx6q-eval   # Apalis iMX6Q/D Module on Apalis Evaluation Board
-          - const: toradex,apalis_imx6q
-          - const: fsl,imx6q
-
-      - description: i.MX6Q Toradex Apalis iMX6Q/D Module on Ixora Carrier Board V1.1
-        items:
-          - const: toradex,apalis_imx6q-ixora-v1.1
-          - const: toradex,apalis_imx6q-ixora
+              - toradex,apalis_imx6q-ixora      # Apalis iMX6Q/D Module on Ixora Carrier Board
+              - toradex,apalis_imx6q-ixora-v1.1 # Apalis iMX6Q/D Module on Ixora V1.1 Carrier Board
+              - toradex,apalis_imx6q-eval       # Apalis iMX6Q/D Module on Apalis Evaluation Board
           - const: toradex,apalis_imx6q
           - const: fsl,imx6q
 
@@ -393,6 +387,8 @@ properties:
               - technexion,imx6dl-pico-pi      # TechNexion i.MX6DL Pico-Pi
               - technologic,imx6dl-ts4900
               - technologic,imx6dl-ts7970
+              - toradex,colibri_imx6dl      # Colibri iMX6 Modules
+              - toradex,colibri_imx6dl-v1_1 # Colibri iMX6 V1.1 Modules
               - udoo,imx6dl-udoo          # Udoo i.MX6 Dual-lite Board
               - vdl,lanmcu                # Van der Laan LANMCU board
               - wand,imx6dl-wandboard     # Wandboard i.MX6 Dual Lite Board
@@ -466,20 +462,18 @@ properties:
           - const: phytec,imx6dl-pfla02   # PHYTEC phyFLEX-i.MX6 Quad
           - const: fsl,imx6dl
 
-      - description: i.MX6DL Toradex Colibri iMX6 Module on Colibri
-                     Evaluation Board V3
+      - description: i.MX6DL Boards with Toradex Colibri iMX6DL/S Modules
         items:
-          - const: toradex,colibri_imx6dl-eval-v3
-          - const: toradex,colibri_imx6dl          # Colibri iMX6 Module
+          - enum:
+              - toradex,colibri_imx6dl-eval-v3      # Colibri iMX6DL/S Module on Colibri Evaluation Board V3
+          - const: toradex,colibri_imx6dl           # Colibri iMX6DL/S Module
           - const: fsl,imx6dl
 
-      - description: i.MX6DL Toradex Colibri iMX6 Module V1.1 on Colibri
-                     Evaluation Board V3
+      - description: i.MX6DL Boards with Toradex Colibri iMX6DL/S V1.1 Modules
         items:
-          - const: toradex,colibri_imx6dl-v1_1-eval-v3
-          - const: toradex,colibri_imx6dl-v1_1     # Colibri iMX6 Module V1.1
-          - const: toradex,colibri_imx6dl-eval-v3
-          - const: toradex,colibri_imx6dl          # Colibri iMX6 Module
+          - enum:
+              - toradex,colibri_imx6dl-v1_1-eval-v3 # Colibri iMX6DL/S V1.1 M. on Colibri Evaluation Board V3
+          - const: toradex,colibri_imx6dl-v1_1      # Colibri iMX6DL/S V1.1 Module
           - const: fsl,imx6dl
 
       - description: i.MX6S DHCOM DRC02 Board
@@ -494,6 +488,7 @@ properties:
               - fsl,imx6sl-evk            # i.MX6 SoloLite EVK Board
               - kobo,tolino-shine2hd
               - kobo,tolino-shine3
+              - kobo,tolino-vision5
               - revotics,imx6sl-warp      # Revotics WaRP Board
           - const: fsl,imx6sl
 
@@ -502,6 +497,7 @@ properties:
           - enum:
               - fsl,imx6sll-evk
               - kobo,clarahd
+              - kobo,librah2o
           - const: fsl,imx6sll
 
       - description: i.MX6SX based Boards
@@ -586,8 +582,9 @@ properties:
               - fsl,imx6ull-14x14-evk     # i.MX6 UltraLiteLite 14x14 EVK Board
               - kontron,imx6ull-n6411-som # Kontron N6411 SOM
               - myir,imx6ull-mys-6ulx-eval # MYiR Tech iMX6ULL Evaluation Board
-              - toradex,colibri-imx6ull-eval      # Colibri iMX6ULL Module on Colibri Eval Board
-              - toradex,colibri-imx6ull-wifi-eval # Colibri iMX6ULL Wi-Fi / BT Module on Colibri Eval Board
+              - toradex,colibri-imx6ull      # Colibri iMX6ULL Modules
+              - toradex,colibri-imx6ull-emmc # Colibri iMX6ULL 1GB (eMMC) Module
+              - toradex,colibri-imx6ull-wifi # Colibri iMX6ULL Wi-Fi / BT Modules
           - const: fsl,imx6ull
 
       - description: i.MX6ULL Armadeus Systems OPOS6ULDev Board
@@ -605,6 +602,27 @@ properties:
           - const: phytec,imx6ull-pcl063  # PHYTEC phyCORE-i.MX 6ULL
           - const: fsl,imx6ull
 
+      - description: i.MX6ULL Boards with Toradex Colibri iMX6ULL Modules
+        items:
+          - enum:
+              - toradex,colibri-imx6ull-eval      # Colibri iMX6ULL Module on Colibri Evaluation Board
+          - const: toradex,colibri-imx6ull        # Colibri iMX6ULL Module
+          - const: fsl,imx6dl
+
+      - description: i.MX6ULL Boards with Toradex Colibri iMX6ULL 1GB (eMMC) Module
+        items:
+          - enum:
+              - toradex,colibri-imx6ull-emmc-eval # Colibri iMX6ULL 1GB (eMMC) M. on Colibri Evaluation Board
+          - const: toradex,colibri-imx6ull-emmc   # Colibri iMX6ULL 1GB (eMMC) Module
+          - const: fsl,imx6dl
+
+      - description: i.MX6ULL Boards with Toradex Colibri iMX6ULL Wi-Fi / BT Modules
+        items:
+          - enum:
+              - toradex,colibri-imx6ull-wifi-eval # Colibri iMX6ULL Wi-Fi / BT M. on Colibri Evaluation Board
+          - const: toradex,colibri-imx6ull-wifi   # Colibri iMX6ULL Wi-Fi / BT Module
+          - const: fsl,imx6dl
+
       - description: Kontron N6411 S Board
         items:
           - const: kontron,imx6ull-n6411-s
@@ -622,6 +640,7 @@ properties:
         items:
           - enum:
               - element14,imx7s-warp      # Element14 Warp i.MX7 Board
+              - toradex,colibri-imx7s     # Colibri iMX7S Module
           - const: fsl,imx7s
 
       - description: i.MX7S Boards with Toradex Colibri iMX7S Module
@@ -653,15 +672,8 @@ properties:
               - technexion,imx7d-pico-hobbit  # TechNexion i.MX7D Pico-Hobbit
               - technexion,imx7d-pico-nymph   # TechNexion i.MX7D Pico-Nymph
               - technexion,imx7d-pico-pi      # TechNexion i.MX7D Pico-Pi
-              - toradex,colibri-imx7d                   # Colibri iMX7 Dual Module
-              - toradex,colibri-imx7d-aster             # Colibri iMX7 Dual Module on Aster Carrier Board
-              - toradex,colibri-imx7d-emmc              # Colibri iMX7 Dual 1GB (eMMC) Module
-              - toradex,colibri-imx7d-emmc-aster        # Colibri iMX7 Dual 1GB (eMMC) Module on
-                                                        #  Aster Carrier Board
-              - toradex,colibri-imx7d-emmc-eval-v3      # Colibri iMX7 Dual 1GB (eMMC) Module on
-                                                        #  Colibri Evaluation Board V3
-              - toradex,colibri-imx7d-eval-v3           # Colibri iMX7 Dual Module on
-                                                        #  Colibri Evaluation Board V3
+              - toradex,colibri-imx7d         # Colibri iMX7D Module
+              - toradex,colibri-imx7d-emmc    # Colibri iMX7D 1GB (eMMC) Module
               - zii,imx7d-rmu2            # ZII RMU2 Board
               - zii,imx7d-rpu2            # ZII RPU2 Board
           - const: fsl,imx7d
@@ -686,12 +698,12 @@ properties:
       - description: i.MX7D Boards with Toradex Colibri i.MX7D Module
         items:
           - enum:
-              - toradex,colibri-imx7d-aster   # Module on Aster Carrier Board
-              - toradex,colibri-imx7d-eval-v3 # Module on Colibri Evaluation Board V3
+              - toradex,colibri-imx7d-aster   # Colibri iMX7D Module on Aster Carrier Board
+              - toradex,colibri-imx7d-eval-v3 # Colibri iMX7D Module on Colibri Evaluation Board V3
           - const: toradex,colibri-imx7d
           - const: fsl,imx7d
 
-      - description: i.MX7D Boards with Toradex Colibri i.MX7D eMMC Module
+      - description: i.MX7D Boards with Toradex Colibri i.MX7D 1GB (eMMC) Module
         items:
           - enum:
               - toradex,colibri-imx7d-emmc-aster    # Module on Aster Carrier Board
@@ -812,10 +824,10 @@ properties:
           - enum:
               - einfochips,imx8qxp-ai_ml  # i.MX8QXP AI_ML Board
               - fsl,imx8qxp-mek           # i.MX8QXP MEK Board
-              - toradex,colibri-imx8x         # Colibri iMX8X Module
+              - toradex,colibri-imx8x     # Colibri iMX8X Modules
           - const: fsl,imx8qxp
 
-      - description: Toradex Colibri i.MX8 Evaluation Board
+      - description: i.MX8QXP Boards with Toradex Coilbri iMX8X Modules
         items:
           - enum:
               - toradex,colibri-imx8x-eval-v3 # Colibri iMX8X Module on Colibri Evaluation Board V3
@@ -847,9 +859,10 @@ properties:
       - description: VF610 based Boards
         items:
           - enum:
+              - fsl,vf610-twr             # VF610 Tower Board
               - lwn,bk4                   # Liebherr BK4 controller
               - phytec,vf610-cosmic       # PHYTEC Cosmic/Cosmic+ Board
-              - fsl,vf610-twr             # VF610 Tower Board
+              - toradex,vf610-colibri_vf61 # Colibri VF61 Modules
           - const: fsl,vf610
 
       - description: Toradex Colibri VF61 Module on Colibri Evaluation Board
@@ -886,6 +899,7 @@ properties:
           - enum:
               - fsl,ls1021a-moxa-uc-8410a
               - fsl,ls1021a-qds
+              - fsl,ls1021a-tsn
               - fsl,ls1021a-twr
           - const: fsl,ls1021a
 
@@ -977,6 +991,8 @@ properties:
       - description: LX2160A based Boards
         items:
           - enum:
+              - fsl,lx2160a-bluebox3
+              - fsl,lx2160a-bluebox3-rev-a
               - fsl,lx2160a-qds
               - fsl,lx2160a-rdb
               - fsl,lx2162a-qds
@@ -990,6 +1006,13 @@ properties:
           - const: solidrun,lx2160a-cex7
           - const: fsl,lx2160a
 
+      - description: S32G2 based Boards
+        items:
+          - enum:
+              - nxp,s32g274a-evb
+              - nxp,s32g274a-rdb2
+          - const: nxp,s32g2
+
       - description: S32V234 based Boards
         items:
           - enum:
index 80a05f6..0fa5549 100644 (file)
@@ -32,6 +32,7 @@ properties:
           - const: mediatek,mt6580
       - items:
           - enum:
+              - fairphone,fp1
               - mundoreader,bq-aquaris5
           - const: mediatek,mt6589
       - items:
index f9ffa5b..763c623 100644 (file)
@@ -43,6 +43,9 @@ properties:
   "#clock-cells":
     const: 1
 
+  '#reset-cells':
+    const: 1
+
 required:
   - compatible
   - reg
@@ -56,4 +59,5 @@ examples:
         compatible = "mediatek,mt8173-mmsys", "syscon";
         reg = <0x14000000 0x1000>;
         #clock-cells = <1>;
+        #reset-cells = <1>;
     };
index 880ddaf..c8808e0 100644 (file)
@@ -25,6 +25,7 @@ description: |
   The 'SoC' element must be one of the following strings:
 
         apq8016
+        apq8026
         apq8074
         apq8084
         apq8096
@@ -44,6 +45,8 @@ description: |
         sdm660
         sdm845
         sdx55
+        sdx65
+        sm7225
         sm8150
         sm8250
         sm8350
@@ -94,6 +97,14 @@ properties:
 
       - items:
           - enum:
+              - lg,lenok
+          - const: qcom,apq8026
+
+      - items:
+          - enum:
+              - asus,nexus7-flo
+              - lg,nexus4-mako
+              - sony,xperia-yuga
               - qcom,apq8064-cm-qs600
               - qcom,apq8064-ifc6410
           - const: qcom,apq8064
@@ -129,6 +140,7 @@ properties:
           - enum:
               - fairphone,fp2
               - lge,hammerhead
+              - samsung,klte
               - sony,xperia-amami
               - sony,xperia-castor
               - sony,xperia-honami
@@ -163,6 +175,7 @@ properties:
 
       - items:
           - enum:
+              - qcom,ipq4019-ap-dk01.1-c1
               - qcom,ipq4019-ap-dk04.1-c3
               - qcom,ipq4019-ap-dk07.1-c1
               - qcom,ipq4019-ap-dk07.1-c2
@@ -208,6 +221,11 @@ properties:
 
       - items:
           - enum:
+              - qcom,sdx65-mtp
+          - const: qcom,sdx65
+
+      - items:
+          - enum:
               - qcom,ipq6018-cp01
               - qcom,ipq6018-cp01-c1
           - const: qcom,ipq6018
@@ -219,6 +237,11 @@ properties:
 
       - items:
           - enum:
+              - fairphone,fp4
+          - const: qcom,sm7225
+
+      - items:
+          - enum:
               - qcom,sm8150-mtp
           - const: qcom,sm8150
 
index 8a11918..5172065 100644 (file)
@@ -255,12 +255,19 @@ properties:
               - enum:
                   - renesas,h3ulcb
                   - renesas,m3ulcb
+                  - renesas,m3nulcb
               - enum:
+                  - renesas,r8a779m0
                   - renesas,r8a779m1
+                  - renesas,r8a779m2
                   - renesas,r8a779m3
+                  - renesas,r8a779m4
+                  - renesas,r8a779m5
+                  - renesas,r8a779m8
               - enum:
                   - renesas,r8a7795
                   - renesas,r8a77961
+                  - renesas,r8a77965
 
       - description: R-Car M3-N (R8A77965)
         items:
@@ -308,6 +315,14 @@ properties:
           - const: renesas,falcon-cpu
           - const: renesas,r8a779a0
 
+      - description: R-Car H3e (R8A779M0)
+        items:
+          - enum:
+              - renesas,h3ulcb      # H3ULCB (R-Car Starter Kit Premier)
+              - renesas,salvator-xs # Salvator-XS (Salvator-X 2nd version)
+          - const: renesas,r8a779m0
+          - const: renesas,r8a7795
+
       - description: R-Car H3e-2G (R8A779M1)
         items:
           - enum:
@@ -316,6 +331,14 @@ properties:
           - const: renesas,r8a779m1
           - const: renesas,r8a7795
 
+      - description: R-Car M3e (R8A779M2)
+        items:
+          - enum:
+              - renesas,m3ulcb      # M3ULCB (R-Car Starter Kit Pro)
+              - renesas,salvator-xs # Salvator-XS (Salvator-X 2nd version)
+          - const: renesas,r8a779m2
+          - const: renesas,r8a77961
+
       - description: R-Car M3e-2G (R8A779M3)
         items:
           - enum:
@@ -324,6 +347,44 @@ properties:
           - const: renesas,r8a779m3
           - const: renesas,r8a77961
 
+      - description: R-Car M3Ne (R8A779M4)
+        items:
+          - enum:
+              - renesas,m3nulcb     # M3NULCB (R-Car Starter Kit Pro)
+              - renesas,salvator-xs # Salvator-XS (Salvator-X 2nd version)
+          - const: renesas,r8a779m4
+          - const: renesas,r8a77965
+
+      - description: R-Car M3Ne-2G (R8A779M5)
+        items:
+          - enum:
+              - renesas,m3nulcb     # M3NULCB (R-Car Starter Kit Pro)
+              - renesas,salvator-xs # Salvator-XS (Salvator-X 2nd version)
+          - const: renesas,r8a779m5
+          - const: renesas,r8a77965
+
+      - description: R-Car E3e (R8A779M6)
+        items:
+          - enum:
+              - renesas,ebisu       # Ebisu
+          - const: renesas,r8a779m6
+          - const: renesas,r8a77990
+
+      - description: R-Car D3e (R8A779M7)
+        items:
+          - enum:
+              - renesas,draak       # Draak
+          - const: renesas,r8a779m7
+          - const: renesas,r8a77995
+
+      - description: R-Car H3Ne (R8A779M8)
+        items:
+          - enum:
+              - renesas,h3ulcb      # H3ULCB (R-Car Starter Kit Premier)
+              - renesas,salvator-xs # Salvator-XS (Salvator-X 2nd version)
+          - const: renesas,r8a779m8
+          - const: renesas,r8a7795
+
       - description: RZ/N1D (R9A06G032)
         items:
           - enum:
index 6546b01..4aed161 100644 (file)
@@ -115,6 +115,11 @@ properties:
           - const: firefly,roc-rk3328-cc
           - const: rockchip,rk3328
 
+      - description: Firefly ROC-RK3328-PC
+        items:
+          - const: firefly,roc-rk3328-pc
+          - const: rockchip,rk3328
+
       - description: Firefly ROC-RK3399-PC
         items:
           - enum:
@@ -122,6 +127,12 @@ properties:
               - firefly,roc-rk3399-pc-mezzanine
           - const: rockchip,rk3399
 
+      - description: Firefly ROC-RK3399-PC-PLUS
+        items:
+          - enum:
+              - firefly,roc-rk3399-pc-plus
+          - const: rockchip,rk3399
+
       - description: FriendlyElec NanoPi R2S
         items:
           - const: friendlyarm,nanopi-r2s
@@ -287,6 +298,34 @@ properties:
           - const: google,veyron
           - const: rockchip,rk3288
 
+      - description: Google Scarlet - Dumo (ASUS Chromebook Tablet CT100)
+        items:
+          - const: google,scarlet-rev15-sku0
+          - const: google,scarlet-rev15
+          - const: google,scarlet-rev14-sku0
+          - const: google,scarlet-rev14
+          - const: google,scarlet-rev13-sku0
+          - const: google,scarlet-rev13
+          - const: google,scarlet-rev12-sku0
+          - const: google,scarlet-rev12
+          - const: google,scarlet-rev11-sku0
+          - const: google,scarlet-rev11
+          - const: google,scarlet-rev10-sku0
+          - const: google,scarlet-rev10
+          - const: google,scarlet-rev9-sku0
+          - const: google,scarlet-rev9
+          - const: google,scarlet-rev8-sku0
+          - const: google,scarlet-rev8
+          - const: google,scarlet-rev7-sku0
+          - const: google,scarlet-rev7
+          - const: google,scarlet-rev6-sku0
+          - const: google,scarlet-rev6
+          - const: google,scarlet-rev5-sku0
+          - const: google,scarlet-rev5
+          - const: google,scarlet
+          - const: google,gru
+          - const: rockchip,rk3399
+
       - description: Google Scarlet - Kingdisplay (Acer Chromebook Tab 10)
         items:
           - const: google,scarlet-rev15-sku7
@@ -455,16 +494,23 @@ properties:
           - const: pine64,rockpro64
           - const: rockchip,rk3399
 
+      - description: Pine64 Quartz64 Model A
+        items:
+          - const: pine64,quartz64-a
+          - const: rockchip,rk3566
+
       - description: Radxa Rock
         items:
           - const: radxa,rock
           - const: rockchip,rk3188
 
-      - description: Radxa ROCK Pi 4A/B/C
+      - description: Radxa ROCK Pi 4A/A+/B/B+/C
         items:
           - enum:
               - radxa,rockpi4a
+              - radxa,rockpi4a-plus
               - radxa,rockpi4b
+              - radxa,rockpi4b-plus
               - radxa,rockpi4c
           - const: radxa,rockpi4
           - const: rockchip,rk3399
index 53115b9..5ece380 100644 (file)
@@ -22,7 +22,9 @@ select:
           - rockchip,px30-pmu
           - rockchip,rk3066-pmu
           - rockchip,rk3288-pmu
+          - rockchip,rk3368-pmu
           - rockchip,rk3399-pmu
+          - rockchip,rk3568-pmu
 
   required:
     - compatible
@@ -34,7 +36,9 @@ properties:
           - rockchip,px30-pmu
           - rockchip,rk3066-pmu
           - rockchip,rk3288-pmu
+          - rockchip,rk3368-pmu
           - rockchip,rk3399-pmu
+          - rockchip,rk3568-pmu
       - const: syscon
       - const: simple-mfd
 
index 0796f0c..ef6dc14 100644 (file)
@@ -199,6 +199,12 @@ properties:
               - samsung,exynos7-espresso        # Samsung Exynos7 Espresso
           - const: samsung,exynos7
 
+      - description: Exynos Auto v9 based boards
+        items:
+          - enum:
+              - samsung,exynosautov9-sadk   # Samsung Exynos Auto v9 SADK
+          - const: samsung,exynosautov9
+
 required:
   - compatible
 
index 7b6ae30..2c12e57 100644 (file)
@@ -30,6 +30,11 @@ properties:
               - sprd,sp9863a-1h10
           - const: sprd,sc9863a
 
+      - items:
+          - enum:
+              - sprd,ums512-1h10
+          - const: sprd,ums512
+
 additionalProperties: true
 
 ...
index 9a77ab7..9ac7da0 100644 (file)
@@ -57,6 +57,10 @@ properties:
           - const: st,stm32h750
       - items:
           - enum:
+              - st,stm32mp135f-dk
+          - const: st,stm32mp135
+      - items:
+          - enum:
               - shiratech,stm32mp157a-iot-box # IoT Box
               - shiratech,stm32mp157a-stinger96 # Stinger96
               - st,stm32mp157c-ed1
index e713a6f..29c9961 100644 (file)
@@ -30,6 +30,7 @@ properties:
     enum:
       - allwinner,sun5i-a13-mbus
       - allwinner,sun8i-h3-mbus
+      - allwinner,sun8i-r40-mbus
       - allwinner,sun50i-a64-mbus
 
   reg:
diff --git a/Documentation/devicetree/bindings/arm/sunxi/allwinner,sun6i-a31-cpuconfig.yaml b/Documentation/devicetree/bindings/arm/sunxi/allwinner,sun6i-a31-cpuconfig.yaml
new file mode 100644 (file)
index 0000000..f3878e0
--- /dev/null
@@ -0,0 +1,38 @@
+# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/arm/sunxi/allwinner,sun6i-a31-cpuconfig.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Allwinner CPU Configuration Controller Device Tree Bindings
+
+maintainers:
+  - Chen-Yu Tsai <wens@csie.org>
+  - Maxime Ripard <mripard@kernel.org>
+
+properties:
+  compatible:
+    enum:
+      - allwinner,sun6i-a31-cpuconfig
+      - allwinner,sun8i-a23-cpuconfig
+      - allwinner,sun8i-a83t-cpucfg
+      - allwinner,sun8i-a83t-r-cpucfg
+      - allwinner,sun9i-a80-cpucfg
+
+  reg:
+    maxItems: 1
+
+required:
+  - compatible
+  - reg
+
+additionalProperties: false
+
+examples:
+  - |
+      cpucfg@1f01c00 {
+          compatible = "allwinner,sun6i-a31-cpuconfig";
+          reg = <0x01f01c00 0x300>;
+      };
+
+...
diff --git a/Documentation/devicetree/bindings/arm/sunxi/allwinner,sun9i-a80-prcm.yaml b/Documentation/devicetree/bindings/arm/sunxi/allwinner,sun9i-a80-prcm.yaml
new file mode 100644 (file)
index 0000000..668aadb
--- /dev/null
@@ -0,0 +1,33 @@
+# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/arm/sunxi/allwinner,sun9i-a80-prcm.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Allwinner A80 PRCM Device Tree Bindings
+
+maintainers:
+  - Chen-Yu Tsai <wens@csie.org>
+  - Maxime Ripard <mripard@kernel.org>
+
+properties:
+  compatible:
+    const: allwinner,sun9i-a80-prcm
+
+  reg:
+    maxItems: 1
+
+required:
+  - compatible
+  - reg
+
+additionalProperties: false
+
+examples:
+  - |
+      prcm@8001400 {
+          compatible = "allwinner,sun9i-a80-prcm";
+          reg = <0x08001400 0x200>;
+      };
+
+...
index c5aa362..cf32723 100644 (file)
@@ -24,16 +24,27 @@ properties:
           - enum:
               - ti,am654-evm
               - siemens,iot2050-basic
+              - siemens,iot2050-basic-pg2
               - siemens,iot2050-advanced
+              - siemens,iot2050-advanced-pg2
           - const: ti,am654
 
       - description: K3 J721E SoC
-        items:
+        oneOf:
           - const: ti,j721e
+          - items:
+              - enum:
+                  - ti,j721e-evm
+                  - ti,j721e-sk
+              - const: ti,j721e
 
       - description: K3 J7200 SoC
-        items:
+        oneOf:
           - const: ti,j7200
+          - items:
+              - enum:
+                  - ti,j7200-evm
+              - const: ti,j7200
 
       - description: K3 AM642 SoC
         items:
index 001bbbc..9c1cacb 100644 (file)
@@ -18,6 +18,7 @@ properties:
         items:
           - enum:
               - toshiba,tmpv7708-rm-mbrc  # TMPV7708 RM main board
+              - toshiba,tmpv7708-visrobo-vrb  # TMPV7708 VisROBO VRB board
           - const: toshiba,tmpv7708
 
 additionalProperties: true
index f52c7e8..4dc0e01 100644 (file)
@@ -87,6 +87,7 @@ properties:
               - xlnx,zynqmp-zcu102-revA
               - xlnx,zynqmp-zcu102-revB
               - xlnx,zynqmp-zcu102-rev1.0
+              - xlnx,zynqmp-zcu102-rev1.1
           - const: xlnx,zynqmp-zcu102
           - const: xlnx,zynqmp
 
@@ -115,6 +116,22 @@ properties:
           - const: xlnx,zynqmp-zcu111
           - const: xlnx,zynqmp
 
+      - description: Xilinx Kria SOMs
+        items:
+          - const: xlnx,zynqmp-sm-k26-rev1
+          - const: xlnx,zynqmp-sm-k26-revB
+          - const: xlnx,zynqmp-sm-k26-revA
+          - const: xlnx,zynqmp-sm-k26
+          - const: xlnx,zynqmp
+
+      - description: Xilinx Kria SOMs (starter)
+        items:
+          - const: xlnx,zynqmp-smk-k26-rev1
+          - const: xlnx,zynqmp-smk-k26-revB
+          - const: xlnx,zynqmp-smk-k26-revA
+          - const: xlnx,zynqmp-smk-k26
+          - const: xlnx,zynqmp
+
 additionalProperties: true
 
 ...
index 3260857..c8b2459 100644 (file)
@@ -47,6 +47,9 @@ properties:
   interrupts:
     maxItems: 1
 
+  power-domains:
+    maxItems: 1
+
 required:
   - "#clock-cells"
   - compatible
index 031e35e..48c8cad 100644 (file)
@@ -51,6 +51,9 @@ properties:
   dma-names:
     const: audio-rx
 
+  power-domains:
+    maxItems: 1
+
 required:
   - compatible
   - reg
index 8a73780..c55a821 100644 (file)
@@ -24,6 +24,9 @@ properties:
   interrupts:
     maxItems: 1
 
+  power-domains:
+    maxItems: 1
+
 required:
   - compatible
   - reg
index 9b24081..5d921e3 100644 (file)
@@ -24,6 +24,9 @@ properties:
   interrupts:
     maxItems: 1
 
+  power-domains:
+    maxItems: 1
+
 required:
   - compatible
   - reg
index d30428b..36b0145 100644 (file)
@@ -19,6 +19,11 @@ Required properties:
   Documentation/devicetree/bindings/graph.txt. This port should be connected
   to the input port of an attached DSI panel or DSI-to-eDP encoder chip.
 
+Optional properties:
+- resets: list of phandle + reset specifier pair, as described in [1].
+
+[1] Documentation/devicetree/bindings/reset/reset.txt
+
 MIPI TX Configuration Module
 ============================
 
@@ -45,6 +50,7 @@ dsi0: dsi@1401b000 {
        clocks = <&mmsys MM_DSI0_ENGINE>, <&mmsys MM_DSI0_DIGITAL>,
                 <&mipi_tx0>;
        clock-names = "engine", "digital", "hs";
+       resets = <&mmsys MT8173_MMSYS_SW0_RST_B_DISP_DSI0>;
        phys = <&mipi_tx0>;
        phy-names = "dphy";
 
diff --git a/Documentation/devicetree/bindings/gpu/host1x/nvidia,tegra210-nvdec.yaml b/Documentation/devicetree/bindings/gpu/host1x/nvidia,tegra210-nvdec.yaml
new file mode 100644 (file)
index 0000000..3cf8629
--- /dev/null
@@ -0,0 +1,106 @@
+# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: "http://devicetree.org/schemas/gpu/host1x/nvidia,tegra210-nvdec.yaml#"
+$schema: "http://devicetree.org/meta-schemas/core.yaml#"
+
+title: Device tree binding for NVIDIA Tegra NVDEC
+
+description: |
+  NVDEC is the hardware video decoder present on NVIDIA Tegra210
+  and newer chips. It is located on the Host1x bus and typically
+  programmed through Host1x channels.
+
+maintainers:
+  - Thierry Reding <treding@gmail.com>
+  - Mikko Perttunen <mperttunen@nvidia.com>
+
+properties:
+  $nodename:
+    pattern: "^nvdec@[0-9a-f]*$"
+
+  compatible:
+    enum:
+      - nvidia,tegra210-nvdec
+      - nvidia,tegra186-nvdec
+      - nvidia,tegra194-nvdec
+
+  reg:
+    maxItems: 1
+
+  clocks:
+    maxItems: 1
+
+  clock-names:
+    items:
+      - const: nvdec
+
+  resets:
+    maxItems: 1
+
+  reset-names:
+    items:
+      - const: nvdec
+
+  power-domains:
+    maxItems: 1
+
+  iommus:
+    maxItems: 1
+
+  dma-coherent: true
+
+  interconnects:
+    items:
+      - description: DMA read memory client
+      - description: DMA read 2 memory client
+      - description: DMA write memory client
+
+  interconnect-names:
+    items:
+      - const: dma-mem
+      - const: read-1
+      - const: write
+
+  nvidia,host1x-class:
+    description: |
+      Host1x class of the engine, used to specify the targeted engine
+      when programming the engine through Host1x channels or when
+      configuring engine-specific behavior in Host1x.
+    default: 0xf0
+    $ref: /schemas/types.yaml#/definitions/uint32
+
+required:
+  - compatible
+  - reg
+  - clocks
+  - clock-names
+  - resets
+  - reset-names
+  - power-domains
+
+additionalProperties: false
+
+examples:
+  - |
+    #include <dt-bindings/clock/tegra186-clock.h>
+    #include <dt-bindings/interrupt-controller/arm-gic.h>
+    #include <dt-bindings/memory/tegra186-mc.h>
+    #include <dt-bindings/power/tegra186-powergate.h>
+    #include <dt-bindings/reset/tegra186-reset.h>
+
+    nvdec@15480000 {
+            compatible = "nvidia,tegra186-nvdec";
+            reg = <0x15480000 0x40000>;
+            clocks = <&bpmp TEGRA186_CLK_NVDEC>;
+            clock-names = "nvdec";
+            resets = <&bpmp TEGRA186_RESET_NVDEC>;
+            reset-names = "nvdec";
+
+            power-domains = <&bpmp TEGRA186_POWER_DOMAIN_NVDEC>;
+            interconnects = <&mc TEGRA186_MEMORY_CLIENT_NVDECSRD &emc>,
+                            <&mc TEGRA186_MEMORY_CLIENT_NVDECSRD1 &emc>,
+                            <&mc TEGRA186_MEMORY_CLIENT_NVDECSWR &emc>;
+            interconnect-names = "dma-mem", "read-1", "write";
+            iommus = <&smmu TEGRA186_SID_NVDEC>;
+    };
diff --git a/Documentation/devicetree/bindings/memory-controllers/omap-gpmc.txt b/Documentation/devicetree/bindings/memory-controllers/omap-gpmc.txt
deleted file mode 100644 (file)
index c1359f4..0000000
+++ /dev/null
@@ -1,157 +0,0 @@
-Device tree bindings for OMAP general purpose memory controllers (GPMC)
-
-The actual devices are instantiated from the child nodes of a GPMC node.
-
-Required properties:
-
- - compatible:         Should be set to one of the following:
-
-                       ti,omap2420-gpmc (omap2420)
-                       ti,omap2430-gpmc (omap2430)
-                       ti,omap3430-gpmc (omap3430 & omap3630)
-                       ti,omap4430-gpmc (omap4430 & omap4460 & omap543x)
-                       ti,am3352-gpmc   (am335x devices)
-
- - reg:                        A resource specifier for the register space
-                       (see the example below)
- - ti,hwmods:          Should be set to "ti,gpmc" until the DT transition is
-                       completed.
- - #address-cells:     Must be set to 2 to allow memory address translation
- - #size-cells:                Must be set to 1 to allow CS address passing
- - gpmc,num-cs:                The maximum number of chip-select lines that controller
-                       can support.
- - gpmc,num-waitpins:  The maximum number of wait pins that controller can
-                       support.
- - ranges:             Must be set up to reflect the memory layout with four
-                       integer values for each chip-select line in use:
-
-                          <cs-number> 0 <physical address of mapping> <size>
-
-                       Currently, calculated values derived from the contents
-                       of the per-CS register GPMC_CONFIG7 (as set up by the
-                       bootloader) are used for the physical address decoding.
-                       As this will change in the future, filling correct
-                       values here is a requirement.
- - interrupt-controller: The GPMC driver implements and interrupt controller for
-                       the NAND events "fifoevent" and "termcount" plus the
-                       rising/falling edges on the GPMC_WAIT pins.
-                       The interrupt number mapping is as follows
-                       0 - NAND_fifoevent
-                       1 - NAND_termcount
-                       2 - GPMC_WAIT0 pin edge
-                       3 - GPMC_WAIT1 pin edge, and so on.
- - interrupt-cells:    Must be set to 2
- - gpio-controller:    The GPMC driver implements a GPIO controller for the
-                       GPMC WAIT pins that can be used as general purpose inputs.
-                       0 maps to GPMC_WAIT0 pin.
- - gpio-cells:         Must be set to 2
-
-Required properties when using NAND prefetch dma:
- - dmas                        GPMC NAND prefetch dma channel
- - dma-names           Must be set to "rxtx"
-
-Timing properties for child nodes. All are optional and default to 0.
-
- - gpmc,sync-clk-ps:   Minimum clock period for synchronous mode, in picoseconds
-
- Chip-select signal timings (in nanoseconds) corresponding to GPMC_CONFIG2:
- - gpmc,cs-on-ns:      Assertion time
- - gpmc,cs-rd-off-ns:  Read deassertion time
- - gpmc,cs-wr-off-ns:  Write deassertion time
-
- ADV signal timings (in nanoseconds) corresponding to GPMC_CONFIG3:
- - gpmc,adv-on-ns:     Assertion time
- - gpmc,adv-rd-off-ns: Read deassertion time
- - gpmc,adv-wr-off-ns: Write deassertion time
- - gpmc,adv-aad-mux-on-ns:     Assertion time for AAD
- - gpmc,adv-aad-mux-rd-off-ns: Read deassertion time for AAD
- - gpmc,adv-aad-mux-wr-off-ns: Write deassertion time for AAD
-
- WE signals timings (in nanoseconds) corresponding to GPMC_CONFIG4:
- - gpmc,we-on-ns       Assertion time
- - gpmc,we-off-ns:     Deassertion time
-
- OE signals timings (in nanoseconds) corresponding to GPMC_CONFIG4:
- - gpmc,oe-on-ns:      Assertion time
- - gpmc,oe-off-ns:     Deassertion time
- - gpmc,oe-aad-mux-on-ns:      Assertion time for AAD
- - gpmc,oe-aad-mux-off-ns:     Deassertion time for AAD
-
- Access time and cycle time timings (in nanoseconds) corresponding to
- GPMC_CONFIG5:
- - gpmc,page-burst-access-ns:  Multiple access word delay
- - gpmc,access-ns:             Start-cycle to first data valid delay
- - gpmc,rd-cycle-ns:           Total read cycle time
- - gpmc,wr-cycle-ns:           Total write cycle time
- - gpmc,bus-turnaround-ns:     Turn-around time between successive accesses
- - gpmc,cycle2cycle-delay-ns:  Delay between chip-select pulses
- - gpmc,clk-activation-ns:     GPMC clock activation time
- - gpmc,wait-monitoring-ns:    Start of wait monitoring with regard to valid
-                               data
-
-Boolean timing parameters. If property is present parameter enabled and
-disabled if omitted:
- - gpmc,adv-extra-delay:       ADV signal is delayed by half GPMC clock
- - gpmc,cs-extra-delay:                CS signal is delayed by half GPMC clock
- - gpmc,cycle2cycle-diffcsen:  Add "cycle2cycle-delay" between successive
-                               accesses to a different CS
- - gpmc,cycle2cycle-samecsen:  Add "cycle2cycle-delay" between successive
-                               accesses to the same CS
- - gpmc,oe-extra-delay:                OE signal is delayed by half GPMC clock
- - gpmc,we-extra-delay:                WE signal is delayed by half GPMC clock
- - gpmc,time-para-granularity: Multiply all access times by 2
-
-The following are only applicable to OMAP3+ and AM335x:
- - gpmc,wr-access-ns:          In synchronous write mode, for single or
-                               burst accesses, defines the number of
-                               GPMC_FCLK cycles from start access time
-                               to the GPMC_CLK rising edge used by the
-                               memory device for the first data capture.
- - gpmc,wr-data-mux-bus-ns:    In address-data multiplex mode, specifies
-                               the time when the first data is driven on
-                               the address-data bus.
-
-GPMC chip-select settings properties for child nodes. All are optional.
-
-- gpmc,burst-length    Page/burst length. Must be 4, 8 or 16.
-- gpmc,burst-wrap      Enables wrap bursting
-- gpmc,burst-read      Enables read page/burst mode
-- gpmc,burst-write     Enables write page/burst mode
-- gpmc,device-width    Total width of device(s) connected to a GPMC
-                       chip-select in bytes. The GPMC supports 8-bit
-                       and 16-bit devices and so this property must be
-                       1 or 2.
-- gpmc,mux-add-data    Address and data multiplexing configuration.
-                       Valid values are 1 for address-address-data
-                       multiplexing mode and 2 for address-data
-                       multiplexing mode.
-- gpmc,sync-read       Enables synchronous read. Defaults to asynchronous
-                       is this is not set.
-- gpmc,sync-write      Enables synchronous writes. Defaults to asynchronous
-                       is this is not set.
-- gpmc,wait-pin                Wait-pin used by client. Must be less than
-                       "gpmc,num-waitpins".
-- gpmc,wait-on-read    Enables wait monitoring on reads.
-- gpmc,wait-on-write   Enables wait monitoring on writes.
-
-Example for an AM33xx board:
-
-       gpmc: gpmc@50000000 {
-               compatible = "ti,am3352-gpmc";
-               ti,hwmods = "gpmc";
-               reg = <0x50000000 0x2000>;
-               interrupts = <100>;
-               dmas = <&edma 52 0>;
-               dma-names = "rxtx";
-               gpmc,num-cs = <8>;
-               gpmc,num-waitpins = <2>;
-               #address-cells = <2>;
-               #size-cells = <1>;
-               ranges = <0 0 0x08000000 0x10000000>; /* CS0 @addr 0x8000000, size 0x10000000 */
-               interrupt-controller;
-               #interrupt-cells = <2>;
-               gpio-controller;
-               #gpio-cells = <2>;
-
-               /* child nodes go here */
-       };
diff --git a/Documentation/devicetree/bindings/memory-controllers/ti,gpmc-child.yaml b/Documentation/devicetree/bindings/memory-controllers/ti,gpmc-child.yaml
new file mode 100644 (file)
index 0000000..6e3995b
--- /dev/null
@@ -0,0 +1,245 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/memory-controllers/ti,gpmc-child.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: device tree bindings for children of the Texas Instruments GPMC
+
+maintainers:
+  - Tony Lindgren <tony@atomide.com>
+  - Roger Quadros <rogerq@kernel.org>
+
+description:
+  This binding is meant for the child nodes of the GPMC node. The node
+  represents any device connected to the GPMC bus. It may be a Flash chip,
+  RAM chip or Ethernet controller, etc. These properties are meant for
+  configuring the GPMC settings/timings and will accompany the bindings
+  supported by the respective device.
+
+properties:
+  reg: true
+
+# GPMC Timing properties for child nodes. All are optional and default to 0.
+  gpmc,sync-clk-ps:
+    description: Minimum clock period for synchronous mode
+    default: 0
+
+# Chip-select signal timings corresponding to GPMC_CONFIG2:
+  gpmc,cs-on-ns:
+    description: Assertion time
+    default: 0
+
+  gpmc,cs-rd-off-ns:
+    description: Read deassertion time
+    default: 0
+
+  gpmc,cs-wr-off-ns:
+    description: Write deassertion time
+    default: 0
+
+# ADV signal timings corresponding to GPMC_CONFIG3:
+  gpmc,adv-on-ns:
+    description: Assertion time
+    default: 0
+
+  gpmc,adv-rd-off-ns:
+    description: Read deassertion time
+    default: 0
+
+  gpmc,adv-wr-off-ns:
+    description: Write deassertion time
+    default: 0
+
+  gpmc,adv-aad-mux-on-ns:
+    description: Assertion time for AAD
+    default: 0
+
+  gpmc,adv-aad-mux-rd-off-ns:
+    description: Read deassertion time for AAD
+    default: 0
+
+  gpmc,adv-aad-mux-wr-off-ns:
+    description: Write deassertion time for AAD
+    default: 0
+
+# WE signals timings corresponding to GPMC_CONFIG4:
+  gpmc,we-on-ns:
+    description: Assertion time
+    default: 0
+
+  gpmc,we-off-ns:
+    description: Deassertion time
+    default: 0
+
+# OE signals timings corresponding to GPMC_CONFIG4:
+  gpmc,oe-on-ns:
+    description: Assertion time
+    default: 0
+
+  gpmc,oe-off-ns:
+    description: Deassertion time
+    default: 0
+
+  gpmc,oe-aad-mux-on-ns:
+    description: Assertion time for AAD
+    default: 0
+
+  gpmc,oe-aad-mux-off-ns:
+    description: Deassertion time for AAD
+    default: 0
+
+# Access time and cycle time timings (in nanoseconds) corresponding to
+# GPMC_CONFIG5:
+  gpmc,page-burst-access-ns:
+    description: Multiple access word delay
+    default: 0
+
+  gpmc,access-ns:
+    description: Start-cycle to first data valid delay
+    default: 0
+
+  gpmc,rd-cycle-ns:
+    description: Total read cycle time
+    default: 0
+
+  gpmc,wr-cycle-ns:
+    description: Total write cycle time
+    default: 0
+
+  gpmc,bus-turnaround-ns:
+    description: Turn-around time between successive accesses
+    default: 0
+
+  gpmc,cycle2cycle-delay-ns:
+    description: Delay between chip-select pulses
+    default: 0
+
+  gpmc,clk-activation-ns:
+    description: GPMC clock activation time
+    default: 0
+
+  gpmc,wait-monitoring-ns:
+    description: Start of wait monitoring with regard to valid data
+    default: 0
+
+# Boolean timing parameters. If property is present, parameter is enabled
+# otherwise disabled.
+  gpmc,adv-extra-delay:
+    description: ADV signal is delayed by half GPMC clock
+    type: boolean
+
+  gpmc,cs-extra-delay:
+    description: CS signal is delayed by half GPMC clock
+    type: boolean
+
+  gpmc,cycle2cycle-diffcsen:
+    description: |
+      Add "cycle2cycle-delay" between successive accesses
+      to a different CS
+    type: boolean
+
+  gpmc,cycle2cycle-samecsen:
+    description: |
+      Add "cycle2cycle-delay" between successive accesses
+      to the same CS
+    type: boolean
+
+  gpmc,oe-extra-delay:
+    description: OE signal is delayed by half GPMC clock
+    type: boolean
+
+  gpmc,we-extra-delay:
+    description: WE signal is delayed by half GPMC clock
+    type: boolean
+
+  gpmc,time-para-granularity:
+    description: Multiply all access times by 2
+    type: boolean
+
+# The following two properties are applicable only to OMAP3+ and AM335x:
+  gpmc,wr-access-ns:
+    description: |
+      In synchronous write mode, for single or
+      burst accesses, defines the number of
+      GPMC_FCLK cycles from start access time
+      to the GPMC_CLK rising edge used by the
+      memory device for the first data capture.
+    default: 0
+
+  gpmc,wr-data-mux-bus-ns:
+    description: |
+      In address-data multiplex mode, specifies
+      the time when the first data is driven on
+      the address-data bus.
+    default: 0
+
+# GPMC chip-select settings properties for child nodes. All are optional.
+  gpmc,burst-length:
+    description: Page/burst length.
+    $ref: /schemas/types.yaml#/definitions/uint32
+    enum: [0, 4, 8, 16]
+    default: 0
+
+  gpmc,burst-wrap:
+    description: Enables wrap bursting
+    type: boolean
+
+  gpmc,burst-read:
+    description: Enables read page/burst mode
+    type: boolean
+
+  gpmc,burst-write:
+    description: Enables write page/burst mode
+    type: boolean
+
+  gpmc,device-width:
+    description: |
+      Total width of device(s) connected to a GPMC
+      chip-select in bytes. The GPMC supports 8-bit
+      and 16-bit devices and so this property must be
+      1 or 2.
+    $ref: /schemas/types.yaml#/definitions/uint32
+    enum: [1, 2]
+    default: 1
+
+  gpmc,mux-add-data:
+    description: |
+      Address and data multiplexing configuration.
+      Valid values are
+      0 for Non multiplexed mode
+      1 for address-address-data multiplexing mode and
+      2 for address-data multiplexing mode.
+    $ref: /schemas/types.yaml#/definitions/uint32
+    enum: [0, 1, 2]
+
+  gpmc,sync-read:
+    description: |
+      Enables synchronous read. Defaults to asynchronous
+      is this is not set.
+    type: boolean
+
+  gpmc,sync-write:
+    description: |
+      Enables synchronous writes. Defaults to asynchronous
+      is this is not set.
+    type: boolean
+
+  gpmc,wait-pin:
+    description: |
+      Wait-pin used by client. Must be less than "gpmc,num-waitpins".
+    $ref: /schemas/types.yaml#/definitions/uint32
+
+  gpmc,wait-on-read:
+    description: Enables wait monitoring on reads.
+    type: boolean
+
+  gpmc,wait-on-write:
+    description: Enables wait monitoring on writes.
+    type: boolean
+
+required:
+  - reg
+
+# the GPMC child will have its own native properties
+additionalProperties: true
diff --git a/Documentation/devicetree/bindings/memory-controllers/ti,gpmc.yaml b/Documentation/devicetree/bindings/memory-controllers/ti,gpmc.yaml
new file mode 100644 (file)
index 0000000..25b42d6
--- /dev/null
@@ -0,0 +1,172 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/memory-controllers/ti,gpmc.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Texas Instruments GPMC Memory Controller device-tree bindings
+
+maintainers:
+  - Tony Lindgren <tony@atomide.com>
+  - Roger Quadros <rogerq@kernel.org>
+
+description:
+  The GPMC is a unified memory controller dedicated for interfacing
+  with external memory devices like
+  - Asynchronous SRAM-like memories and ASICs
+  - Asynchronous, synchronous, and page mode burst NOR flash
+  - NAND flash
+  - Pseudo-SRAM devices
+
+properties:
+  compatible:
+    items:
+      - enum:
+          - ti,am3352-gpmc
+          - ti,omap2420-gpmc
+          - ti,omap2430-gpmc
+          - ti,omap3430-gpmc
+          - ti,omap4430-gpmc
+
+  reg:
+    maxItems: 1
+
+  interrupts:
+    maxItems: 1
+
+  clocks:
+    maxItems: 1
+    description: |
+      Functional clock. Used for bus timing calculations and
+      GPMC configuration.
+
+  clock-names:
+    items:
+      - const: fck
+
+  dmas:
+    items:
+      - description: DMA channel for GPMC NAND prefetch
+
+  dma-names:
+    items:
+      - const: rxtx
+
+  "#address-cells": true
+
+  "#size-cells": true
+
+  gpmc,num-cs:
+    description: maximum number of supported chip-select lines.
+    $ref: /schemas/types.yaml#/definitions/uint32
+
+  gpmc,num-waitpins:
+    description: maximum number of supported wait pins.
+    $ref: /schemas/types.yaml#/definitions/uint32
+
+  ranges:
+    minItems: 1
+    description: |
+      Must be set up to reflect the memory layout with four
+      integer values for each chip-select line in use,
+      <cs-number> 0 <physical address of mapping> <size>
+    items:
+      - description: NAND bank 0
+      - description: NOR/SRAM bank 0
+      - description: NOR/SRAM bank 1
+
+  '#interrupt-cells':
+    const: 2
+
+  interrupt-controller:
+    description: |
+      The GPMC driver implements and interrupt controller for
+      the NAND events "fifoevent" and "termcount" plus the
+      rising/falling edges on the GPMC_WAIT pins.
+      The interrupt number mapping is as follows
+      0 - NAND_fifoevent
+      1 - NAND_termcount
+      2 - GPMC_WAIT0 pin edge
+      3 - GPMC_WAIT1 pin edge, and so on.
+
+  '#gpio-cells':
+    const: 2
+
+  gpio-controller:
+    description: |
+      The GPMC driver implements a GPIO controller for the
+      GPMC WAIT pins that can be used as general purpose inputs.
+      0 maps to GPMC_WAIT0 pin.
+
+  ti,hwmods:
+    description:
+      Name of the HWMOD associated with GPMC. This is for legacy
+      omap2/3 platforms only.
+    $ref: /schemas/types.yaml#/definitions/string
+    deprecated: true
+
+  ti,no-idle-on-init:
+    description:
+      Prevent idling the module at init. This is for legacy omap2/3
+      platforms only.
+    type: boolean
+    deprecated: true
+
+patternProperties:
+  "@[0-7],[a-f0-9]+$":
+    type: object
+    description: |
+      The child device node represents the device connected to the GPMC
+      bus. The device can be a NAND chip, SRAM device, NOR device
+      or an ASIC.
+
+    allOf:
+      - $ref: "ti,gpmc-child.yaml"
+
+    unevaluatedProperties: false
+
+required:
+  - compatible
+  - reg
+  - gpmc,num-cs
+  - gpmc,num-waitpins
+  - "#address-cells"
+  - "#size-cells"
+
+additionalProperties: false
+
+examples:
+  - |
+    #include <dt-bindings/interrupt-controller/arm-gic.h>
+    #include <dt-bindings/gpio/gpio.h>
+
+    gpmc: memory-controller@50000000 {
+      compatible = "ti,am3352-gpmc";
+      reg = <0x50000000 0x2000>;
+      interrupts = <100>;
+      clocks = <&l3s_clkctrl>;
+      clock-names = "fck";
+      dmas = <&edma 52 0>;
+      dma-names = "rxtx";
+      gpmc,num-cs = <8>;
+      gpmc,num-waitpins = <2>;
+      #address-cells = <2>;
+      #size-cells = <1>;
+      ranges = <0 0 0x08000000 0x10000000>; /* CS0 @addr 0x8000000, size 0x10000000 */
+      interrupt-controller;
+      #interrupt-cells = <2>;
+      gpio-controller;
+      #gpio-cells = <2>;
+
+      nand@0,0 {
+        compatible = "ti,omap2-nand";
+        reg = <0 0 4>;
+        interrupt-parent = <&gpmc>;
+        interrupts = <0 IRQ_TYPE_NONE>, /* fifoevent */
+                     <1 IRQ_TYPE_NONE>; /* termcount */
+        ti,nand-xfer-type = "prefetch-dma";
+        ti,nand-ecc-opt = "bch16";
+        ti,elm-id = <&elm>;
+        rb-gpios = <&gpmc 0 GPIO_ACTIVE_HIGH>; /* gpmc_wait0 pin */
+      };
+    };
diff --git a/Documentation/devicetree/bindings/mtd/gpmc-nand.txt b/Documentation/devicetree/bindings/mtd/gpmc-nand.txt
deleted file mode 100644 (file)
index c459f16..0000000
+++ /dev/null
@@ -1,147 +0,0 @@
-Device tree bindings for GPMC connected NANDs
-
-GPMC connected NAND (found on OMAP boards) are represented as child nodes of
-the GPMC controller with a name of "nand".
-
-All timing relevant properties as well as generic gpmc child properties are
-explained in a separate documents - please refer to
-Documentation/devicetree/bindings/memory-controllers/omap-gpmc.txt
-
-For NAND specific properties such as ECC modes or bus width, please refer to
-Documentation/devicetree/bindings/mtd/nand-controller.yaml
-
-
-Required properties:
-
- - compatible: "ti,omap2-nand"
- - reg:                range id (CS number), base offset and length of the
-               NAND I/O space
- - interrupts: Two interrupt specifiers, one for fifoevent, one for termcount.
-
-Optional properties:
-
- - nand-bus-width:             Set this numeric value to 16 if the hardware
-                               is wired that way. If not specified, a bus
-                               width of 8 is assumed.
-
- - ti,nand-ecc-opt:            A string setting the ECC layout to use. One of:
-               "sw"            1-bit Hamming ecc code via software
-               "hw"            <deprecated> use "ham1" instead
-               "hw-romcode"    <deprecated> use "ham1" instead
-               "ham1"          1-bit Hamming ecc code
-               "bch4"          4-bit BCH ecc code
-               "bch8"          8-bit BCH ecc code
-               "bch16"         16-bit BCH ECC code
-               Refer below "How to select correct ECC scheme for your device ?"
-
- - ti,nand-xfer-type:          A string setting the data transfer type. One of:
-
-               "prefetch-polled"       Prefetch polled mode (default)
-               "polled"                Polled mode, without prefetch
-               "prefetch-dma"          Prefetch enabled DMA mode
-               "prefetch-irq"          Prefetch enabled irq mode
-
- - elm_id:     <deprecated> use "ti,elm-id" instead
- - ti,elm-id:  Specifies phandle of the ELM devicetree node.
-               ELM is an on-chip hardware engine on TI SoC which is used for
-               locating ECC errors for BCHx algorithms. SoC devices which have
-               ELM hardware engines should specify this device node in .dtsi
-               Using ELM for ECC error correction frees some CPU cycles.
- - rb-gpios:   GPIO specifier for the ready/busy# pin.
-
-For inline partition table parsing (optional):
-
- - #address-cells: should be set to 1
- - #size-cells: should be set to 1
-
-Example for an AM33xx board:
-
-       gpmc: gpmc@50000000 {
-               compatible = "ti,am3352-gpmc";
-               ti,hwmods = "gpmc";
-               reg = <0x50000000 0x36c>;
-               interrupts = <100>;
-               gpmc,num-cs = <8>;
-               gpmc,num-waitpins = <2>;
-               #address-cells = <2>;
-               #size-cells = <1>;
-               ranges = <0 0 0x08000000 0x1000000>;    /* CS0 space, 16MB */
-               elm_id = <&elm>;
-               interrupt-controller;
-               #interrupt-cells = <2>;
-
-               nand@0,0 {
-                       compatible = "ti,omap2-nand";
-                       reg = <0 0 4>;          /* CS0, offset 0, NAND I/O window 4 */
-                       interrupt-parent = <&gpmc>;
-                       interrupts = <0 IRQ_TYPE_NONE>, <1 IRQ_TYPE NONE>;
-                       nand-bus-width = <16>;
-                       ti,nand-ecc-opt = "bch8";
-                       ti,nand-xfer-type = "polled";
-                       rb-gpios = <&gpmc 0 GPIO_ACTIVE_HIGH>; /* gpmc_wait0 */
-
-                       gpmc,sync-clk-ps = <0>;
-                       gpmc,cs-on-ns = <0>;
-                       gpmc,cs-rd-off-ns = <44>;
-                       gpmc,cs-wr-off-ns = <44>;
-                       gpmc,adv-on-ns = <6>;
-                       gpmc,adv-rd-off-ns = <34>;
-                       gpmc,adv-wr-off-ns = <44>;
-                       gpmc,we-off-ns = <40>;
-                       gpmc,oe-off-ns = <54>;
-                       gpmc,access-ns = <64>;
-                       gpmc,rd-cycle-ns = <82>;
-                       gpmc,wr-cycle-ns = <82>;
-                       gpmc,wr-access-ns = <40>;
-                       gpmc,wr-data-mux-bus-ns = <0>;
-
-                       #address-cells = <1>;
-                       #size-cells = <1>;
-
-                       /* partitions go here */
-               };
-       };
-
-How to select correct ECC scheme for your device ?
---------------------------------------------------
-Higher ECC scheme usually means better protection against bit-flips and
-increased system lifetime. However, selection of ECC scheme is dependent
-on various other factors also like;
-
-(1) support of built in hardware engines.
-       Some legacy OMAP SoC do not have ELM harware engine, so those SoC cannot
-       support ecc-schemes with hardware error-correction (BCHx_HW). However
-       such SoC can use ecc-schemes with software library for error-correction
-       (BCHx_HW_DETECTION_SW). The error correction capability with software
-       library remains equivalent to their hardware counter-part, but there is
-       slight CPU penalty when too many bit-flips are detected during reads.
-
-(2) Device parameters like OOBSIZE.
-       Other factor which governs the selection of ecc-scheme is oob-size.
-       Higher ECC schemes require more OOB/Spare area to store ECC syndrome,
-       so the device should have enough free bytes available its OOB/Spare
-       area to accommodate ECC for entire page. In general following expression
-       helps in determining if given device can accommodate ECC syndrome:
-       "2 + (PAGESIZE / 512) * ECC_BYTES" <= OOBSIZE"
-       where
-               OOBSIZE         number of bytes in OOB/spare area
-               PAGESIZE        number of bytes in main-area of device page
-               ECC_BYTES       number of ECC bytes generated to protect
-                               512 bytes of data, which is:
-                               '3' for HAM1_xx ecc schemes
-                               '7' for BCH4_xx ecc schemes
-                               '14' for BCH8_xx ecc schemes
-                               '26' for BCH16_xx ecc schemes
-
-       Example(a): For a device with PAGESIZE = 2048 and OOBSIZE = 64 and
-               trying to use BCH16 (ECC_BYTES=26) ecc-scheme.
-               Number of ECC bytes per page = (2 + (2048 / 512) * 26) = 106 B
-               which is greater than capacity of NAND device (OOBSIZE=64)
-               Hence, BCH16 cannot be supported on given device. But it can
-               probably use lower ecc-schemes like BCH8.
-
-       Example(b): For a device with PAGESIZE = 2048 and OOBSIZE = 128 and
-               trying to use BCH16 (ECC_BYTES=26) ecc-scheme.
-               Number of ECC bytes per page = (2 + (2048 / 512) * 26) = 106 B
-               which can be accommodated in the OOB/Spare area of this device
-               (OOBSIZE=128). So this device can use BCH16 ecc-scheme.
diff --git a/Documentation/devicetree/bindings/mtd/gpmc-nor.txt b/Documentation/devicetree/bindings/mtd/gpmc-nor.txt
deleted file mode 100644 (file)
index 2133be0..0000000
+++ /dev/null
@@ -1,98 +0,0 @@
-Device tree bindings for NOR flash connect to TI GPMC
-
-NOR flash connected to the TI GPMC (found on OMAP boards) are represented as
-child nodes of the GPMC controller with a name of "nor".
-
-All timing relevant properties as well as generic GPMC child properties are
-explained in a separate documents. Please refer to
-Documentation/devicetree/bindings/memory-controllers/omap-gpmc.txt
-
-Required properties:
-- bank-width:          Width of NOR flash in bytes. GPMC supports 8-bit and
-                       16-bit devices and so must be either 1 or 2 bytes.
-- compatible:          Documentation/devicetree/bindings/mtd/mtd-physmap.yaml
-- gpmc,cs-on-ns:               Chip-select assertion time
-- gpmc,cs-rd-off-ns:   Chip-select de-assertion time for reads
-- gpmc,cs-wr-off-ns:   Chip-select de-assertion time for writes
-- gpmc,oe-on-ns:       Output-enable assertion time
-- gpmc,oe-off-ns:      Output-enable de-assertion time
-- gpmc,we-on-ns                Write-enable assertion time
-- gpmc,we-off-ns:      Write-enable de-assertion time
-- gpmc,access-ns:      Start cycle to first data capture (read access)
-- gpmc,rd-cycle-ns:    Total read cycle time
-- gpmc,wr-cycle-ns:    Total write cycle time
-- linux,mtd-name:      Documentation/devicetree/bindings/mtd/mtd-physmap.yaml
-- reg:                 Chip-select, base address (relative to chip-select)
-                       and size of NOR flash. Note that base address will be
-                       typically 0 as this is the start of the chip-select.
-
-Optional properties:
-- gpmc,XXX             Additional GPMC timings and settings parameters. See
-                       Documentation/devicetree/bindings/memory-controllers/omap-gpmc.txt
-
-Optional properties for partition table parsing:
-- #address-cells: should be set to 1
-- #size-cells: should be set to 1
-
-Example:
-
-gpmc: gpmc@6e000000 {
-       compatible = "ti,omap3430-gpmc", "simple-bus";
-       ti,hwmods = "gpmc";
-       reg = <0x6e000000 0x1000>;
-       interrupts = <20>;
-       gpmc,num-cs = <8>;
-       gpmc,num-waitpins = <4>;
-       #address-cells = <2>;
-       #size-cells = <1>;
-
-       ranges = <0 0 0x10000000 0x08000000>;
-
-       nor@0,0 {
-               compatible = "cfi-flash";
-               linux,mtd-name= "intel,pf48f6000m0y1be";
-               #address-cells = <1>;
-               #size-cells = <1>;
-               reg = <0 0 0x08000000>;
-               bank-width = <2>;
-
-               gpmc,mux-add-data;
-               gpmc,cs-on-ns = <0>;
-               gpmc,cs-rd-off-ns = <186>;
-               gpmc,cs-wr-off-ns = <186>;
-               gpmc,adv-on-ns = <12>;
-               gpmc,adv-rd-off-ns = <48>;
-               gpmc,adv-wr-off-ns = <48>;
-               gpmc,oe-on-ns = <54>;
-               gpmc,oe-off-ns = <168>;
-               gpmc,we-on-ns = <54>;
-               gpmc,we-off-ns = <168>;
-               gpmc,rd-cycle-ns = <186>;
-               gpmc,wr-cycle-ns = <186>;
-               gpmc,access-ns = <114>;
-               gpmc,page-burst-access-ns = <6>;
-               gpmc,bus-turnaround-ns = <12>;
-               gpmc,cycle2cycle-delay-ns = <18>;
-               gpmc,wr-data-mux-bus-ns = <90>;
-               gpmc,wr-access-ns = <186>;
-               gpmc,cycle2cycle-samecsen;
-               gpmc,cycle2cycle-diffcsen;
-
-               partition@0 {
-                       label = "bootloader-nor";
-                       reg = <0 0x40000>;
-               };
-               partition@40000 {
-                       label = "params-nor";
-                       reg = <0x40000 0x40000>;
-               };
-               partition@80000 {
-                       label = "kernel-nor";
-                       reg = <0x80000 0x200000>;
-               };
-               partition@280000 {
-                       label = "filesystem-nor";
-                       reg = <0x240000 0x7d80000>;
-               };
-       };
-};
diff --git a/Documentation/devicetree/bindings/mtd/gpmc-onenand.txt b/Documentation/devicetree/bindings/mtd/gpmc-onenand.txt
deleted file mode 100644 (file)
index e9f01a9..0000000
+++ /dev/null
@@ -1,48 +0,0 @@
-Device tree bindings for GPMC connected OneNANDs
-
-GPMC connected OneNAND (found on OMAP boards) are represented as child nodes of
-the GPMC controller with a name of "onenand".
-
-All timing relevant properties as well as generic gpmc child properties are
-explained in a separate documents - please refer to
-Documentation/devicetree/bindings/memory-controllers/omap-gpmc.txt
-
-Required properties:
-
- - compatible:         "ti,omap2-onenand"
- - reg:                        The CS line the peripheral is connected to
- - gpmc,device-width:  Width of the ONENAND device connected to the GPMC
-                       in bytes. Must be 1 or 2.
-
-Optional properties:
-
- - int-gpios:          GPIO specifier for the INT pin.
-
-For inline partition table parsing (optional):
-
- - #address-cells: should be set to 1
- - #size-cells: should be set to 1
-
-Example for an OMAP3430 board:
-
-       gpmc: gpmc@6e000000 {
-               compatible = "ti,omap3430-gpmc";
-               ti,hwmods = "gpmc";
-               reg = <0x6e000000 0x1000000>;
-               interrupts = <20>;
-               gpmc,num-cs = <8>;
-               gpmc,num-waitpins = <4>;
-               #address-cells = <2>;
-               #size-cells = <1>;
-
-               onenand@0 {
-                       compatible = "ti,omap2-onenand";
-                       reg = <0 0 0>; /* CS0, offset 0 */
-                       gpmc,device-width = <2>;
-
-                       #address-cells = <1>;
-                       #size-cells = <1>;
-
-                       /* partitions go here */
-               };
-       };
diff --git a/Documentation/devicetree/bindings/mtd/ti,gpmc-nand.yaml b/Documentation/devicetree/bindings/mtd/ti,gpmc-nand.yaml
new file mode 100644 (file)
index 0000000..beb26b9
--- /dev/null
@@ -0,0 +1,121 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/mtd/ti,gpmc-nand.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Texas Instruments GPMC NAND Flash controller.
+
+maintainers:
+  - Tony Lindgren <tony@atomide.com>
+  - Roger Quadros <rogerq@kernel.org>
+
+description:
+  GPMC NAND controller/Flash is represented as a child of the
+  GPMC controller node.
+
+properties:
+  compatible:
+    const: ti,omap2-nand
+
+  reg:
+    maxItems: 1
+
+  interrupts:
+    items:
+      - description: Interrupt for fifoevent
+      - description: Interrupt for termcount
+
+  "#address-cells": true
+
+  "#size-cells": true
+
+  ti,nand-ecc-opt:
+    description: Desired ECC algorithm
+    $ref: /schemas/types.yaml#/definitions/string
+    enum: [sw, ham1, bch4, bch8, bch16]
+
+  ti,nand-xfer-type:
+    description: Data transfer method between controller and chip.
+    $ref: /schemas/types.yaml#/definitions/string
+    enum: [prefetch-polled, polled, prefetch-dma, prefetch-irq]
+    default: prefetch-polled
+
+  ti,elm-id:
+    description:
+      phandle to the ELM (Error Location Module).
+    $ref: /schemas/types.yaml#/definitions/phandle
+
+  nand-bus-width:
+    description:
+      Bus width to the NAND chip
+    $ref: /schemas/types.yaml#/definitions/uint32
+    enum: [8, 16]
+    default: 8
+
+patternProperties:
+  "@[0-9a-f]+$":
+    $ref: "/schemas/mtd/partitions/partition.yaml"
+
+allOf:
+  - $ref: "/schemas/memory-controllers/ti,gpmc-child.yaml"
+
+required:
+  - compatible
+  - reg
+  - ti,nand-ecc-opt
+
+unevaluatedProperties: false
+
+examples:
+  - |
+    #include <dt-bindings/interrupt-controller/arm-gic.h>
+    #include <dt-bindings/gpio/gpio.h>
+
+    gpmc: memory-controller@50000000 {
+      compatible = "ti,am3352-gpmc";
+      dmas = <&edma 52 0>;
+      dma-names = "rxtx";
+      clocks = <&l3s_gclk>;
+      clock-names = "fck";
+      reg = <0x50000000 0x2000>;
+      interrupts = <GIC_SPI 100 IRQ_TYPE_LEVEL_HIGH>;
+      gpmc,num-cs = <7>;
+      gpmc,num-waitpins = <2>;
+      #address-cells = <2>;
+      #size-cells = <1>;
+      interrupt-controller;
+      #interrupt-cells = <2>;
+      gpio-controller;
+      #gpio-cells = <2>;
+
+      ranges = <0 0 0x08000000 0x01000000>;   /* CS0 space. Min partition = 16MB */
+      nand@0,0 {
+        compatible = "ti,omap2-nand";
+        reg = <0 0 4>;          /* device IO registers */
+        interrupt-parent = <&gpmc>;
+        interrupts = <0 IRQ_TYPE_NONE>, /* fifoevent */
+                     <1 IRQ_TYPE_NONE>; /* termcount */
+        ti,nand-xfer-type = "prefetch-dma";
+        ti,nand-ecc-opt = "bch16";
+        ti,elm-id = <&elm>;
+        #address-cells = <1>;
+        #size-cells = <1>;
+
+        /* NAND generic properties */
+        nand-bus-width = <8>;
+        rb-gpios = <&gpmc 0 GPIO_ACTIVE_HIGH>;  /* gpmc_wait0 */
+
+        /* GPMC properties*/
+        gpmc,device-width = <1>;
+
+        partition@0 {
+          label = "NAND.SPL";
+          reg = <0x00000000 0x00040000>;
+        };
+        partition@1 {
+          label = "NAND.SPL.backup1";
+          reg = <0x00040000 0x00040000>;
+        };
+      };
+    };
diff --git a/Documentation/devicetree/bindings/mtd/ti,gpmc-onenand.yaml b/Documentation/devicetree/bindings/mtd/ti,gpmc-onenand.yaml
new file mode 100644 (file)
index 0000000..a953f73
--- /dev/null
@@ -0,0 +1,81 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/mtd/ti,gpmc-onenand.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: OneNAND over Texas Instruments GPMC bus.
+
+maintainers:
+  - Tony Lindgren <tony@atomide.com>
+  - Roger Quadros <rogerq@kernel.org>
+
+description:
+  GPMC connected OneNAND (found on OMAP boards) are represented
+  as child nodes of the GPMC controller.
+
+properties:
+  compatible:
+    const: ti,omap2-onenand
+
+  reg:
+    items:
+      - description: |
+          Chip Select number, register offset and size of
+          OneNAND register window.
+
+  "#address-cells": true
+
+  "#size-cells": true
+
+  int-gpios:
+    description: GPIO specifier for the INT pin.
+
+patternProperties:
+  "@[0-9a-f]+$":
+    $ref: "/schemas/mtd/partitions/partition.yaml"
+
+allOf:
+  - $ref: "/schemas/memory-controllers/ti,gpmc-child.yaml"
+
+required:
+  - compatible
+  - reg
+  - "#address-cells"
+  - "#size-cells"
+
+unevaluatedProperties: false
+
+examples:
+  - |
+    gpmc: memory-controller@6e000000 {
+      compatible = "ti,omap3430-gpmc";
+      reg = <0x6e000000 0x02d0>;
+      interrupts = <20>;
+      gpmc,num-cs = <8>;
+      gpmc,num-waitpins = <4>;
+      clocks = <&l3s_clkctrl>;
+      clock-names = "fck";
+      #address-cells = <2>;
+      #size-cells = <1>;
+
+      ranges = <0 0 0x01000000 0x01000000>,   /* 16 MB for OneNAND */
+               <1 0 0x02000000 0x01000000>;   /* 16 MB for smc91c96 */
+
+      onenand@0,0 {
+        compatible = "ti,omap2-onenand";
+        reg = <0 0 0x20000>;    /* CS0, offset 0, IO size 128K */
+        #address-cells = <1>;
+        #size-cells = <1>;
+
+        partition@0 {
+          label = "bootloader";
+          reg = <0x00000000 0x00100000>;
+        };
+
+        partition@100000 {
+          label = "config";
+          reg = <0x00100000 0x002c0000>;
+        };
+      };
+    };
diff --git a/Documentation/devicetree/bindings/net/gpmc-eth.txt b/Documentation/devicetree/bindings/net/gpmc-eth.txt
deleted file mode 100644 (file)
index 3282106..0000000
+++ /dev/null
@@ -1,97 +0,0 @@
-Device tree bindings for Ethernet chip connected to TI GPMC
-
-Besides being used to interface with external memory devices, the
-General-Purpose Memory Controller can be used to connect Pseudo-SRAM devices
-such as ethernet controllers to processors using the TI GPMC as a data bus.
-
-Ethernet controllers connected to TI GPMC are represented as child nodes of
-the GPMC controller with an "ethernet" name.
-
-All timing relevant properties as well as generic GPMC child properties are
-explained in a separate documents. Please refer to
-Documentation/devicetree/bindings/memory-controllers/omap-gpmc.txt
-
-For the properties relevant to the ethernet controller connected to the GPMC
-refer to the binding documentation of the device. For example, the documentation
-for the SMSC 911x is Documentation/devicetree/bindings/net/smsc,lan9115.yaml
-
-Child nodes need to specify the GPMC bus address width using the "bank-width"
-property but is possible that an ethernet controller also has a property to
-specify the I/O registers address width. Even when the GPMC has a maximum 16-bit
-address width, it supports devices with 32-bit word registers.
-For example with an SMSC LAN911x/912x controller connected to the TI GPMC on an
-OMAP2+ board, "bank-width = <2>;" and "reg-io-width = <4>;".
-
-Required properties:
-- bank-width:          Address width of the device in bytes. GPMC supports 8-bit
-                       and 16-bit devices and so must be either 1 or 2 bytes.
-- compatible:          Compatible string property for the ethernet child device.
-- gpmc,cs-on-ns:       Chip-select assertion time
-- gpmc,cs-rd-off-ns:   Chip-select de-assertion time for reads
-- gpmc,cs-wr-off-ns:   Chip-select de-assertion time for writes
-- gpmc,oe-on-ns:       Output-enable assertion time
-- gpmc,oe-off-ns:      Output-enable de-assertion time
-- gpmc,we-on-ns:       Write-enable assertion time
-- gpmc,we-off-ns:      Write-enable de-assertion time
-- gpmc,access-ns:      Start cycle to first data capture (read access)
-- gpmc,rd-cycle-ns:    Total read cycle time
-- gpmc,wr-cycle-ns:    Total write cycle time
-- reg:                 Chip-select, base address (relative to chip-select)
-                       and size of the memory mapped for the device.
-                       Note that base address will be typically 0 as this
-                       is the start of the chip-select.
-
-Optional properties:
-- gpmc,XXX             Additional GPMC timings and settings parameters. See
-                       Documentation/devicetree/bindings/memory-controllers/omap-gpmc.txt
-
-Example:
-
-gpmc: gpmc@6e000000 {
-       compatible = "ti,omap3430-gpmc";
-       ti,hwmods = "gpmc";
-       reg = <0x6e000000 0x1000>;
-       interrupts = <20>;
-       gpmc,num-cs = <8>;
-       gpmc,num-waitpins = <4>;
-       #address-cells = <2>;
-       #size-cells = <1>;
-
-       ranges = <5 0 0x2c000000 0x1000000>;
-
-       ethernet@5,0 {
-               compatible = "smsc,lan9221", "smsc,lan9115";
-               reg = <5 0 0xff>;
-               bank-width = <2>;
-
-               gpmc,mux-add-data;
-               gpmc,cs-on-ns = <0>;
-               gpmc,cs-rd-off-ns = <186>;
-               gpmc,cs-wr-off-ns = <186>;
-               gpmc,adv-on-ns = <12>;
-               gpmc,adv-rd-off-ns = <48>;
-               gpmc,adv-wr-off-ns = <48>;
-               gpmc,oe-on-ns = <54>;
-               gpmc,oe-off-ns = <168>;
-               gpmc,we-on-ns = <54>;
-               gpmc,we-off-ns = <168>;
-               gpmc,rd-cycle-ns = <186>;
-               gpmc,wr-cycle-ns = <186>;
-               gpmc,access-ns = <114>;
-               gpmc,page-burst-access-ns = <6>;
-               gpmc,bus-turnaround-ns = <12>;
-               gpmc,cycle2cycle-delay-ns = <18>;
-               gpmc,wr-data-mux-bus-ns = <90>;
-               gpmc,wr-access-ns = <186>;
-               gpmc,cycle2cycle-samecsen;
-               gpmc,cycle2cycle-diffcsen;
-
-               interrupt-parent = <&gpio6>;
-               interrupts = <16>;
-               vmmc-supply = <&vddvario>;
-               vmmc_aux-supply = <&vdd33a>;
-               reg-io-width = <4>;
-
-               smsc,save-mac-address;
-       };
-};
index 6a99d2a..8e4f9bf 100644 (file)
@@ -197,7 +197,7 @@ Tegra194 RC mode:
 Tegra194 EP mode:
 -----------------
 
-       pcie_ep@141a0000 {
+       pcie-ep@141a0000 {
                compatible = "nvidia,tegra194-pcie-ep", "snps,dw-pcie-ep";
                power-domains = <&bpmp TEGRA194_POWER_DOMAIN_PCIEX8A>;
                reg = <0x00 0x141a0000 0x0 0x00020000   /* appl registers (128K)      */
diff --git a/Documentation/devicetree/bindings/serial/fsl,s32-linflexuart.txt b/Documentation/devicetree/bindings/serial/fsl,s32-linflexuart.txt
deleted file mode 100644 (file)
index f1bbe08..0000000
+++ /dev/null
@@ -1,22 +0,0 @@
-* Freescale LINFlexD UART
-
-The LINFlexD controller implements several LIN protocol versions, as well as
-support for full-duplex UART communication through 8-bit and 9-bit frames.
-
-See chapter 47 ("LINFlexD") in the reference manual[1].
-
-Required properties:
-- compatible :
-  - "fsl,s32v234-linflexuart" for LINFlexD configured in UART mode, which
-    is compatible with the one integrated on S32V234 SoC
-- reg : Address and length of the register set for the device
-- interrupts : Should contain uart interrupt
-
-Example:
-uart0: serial@40053000 {
-       compatible = "fsl,s32v234-linflexuart";
-       reg = <0x0 0x40053000 0x0 0x1000>;
-       interrupts = <0 59 4>;
-};
-
-[1] https://www.nxp.com/webapp/Download?colCode=S32V234RM
diff --git a/Documentation/devicetree/bindings/serial/fsl,s32-linflexuart.yaml b/Documentation/devicetree/bindings/serial/fsl,s32-linflexuart.yaml
new file mode 100644 (file)
index 0000000..8b643ba
--- /dev/null
@@ -0,0 +1,48 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/serial/fsl,s32-linflexuart.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Freescale LINFlexD UART
+
+description: |
+  The LINFlexD controller implements several LIN protocol versions, as well
+  as support for full-duplex UART communication through 8-bit and 9-bit
+  frames. See chapter 47 ("LINFlexD") in the reference manual
+  https://www.nxp.com/webapp/Download?colCode=S32V234RM.
+
+maintainers:
+  - Chester Lin <clin@suse.com>
+
+allOf:
+  - $ref: "serial.yaml"
+
+properties:
+  compatible:
+    oneOf:
+      - const: fsl,s32v234-linflexuart
+      - items:
+          - const: nxp,s32g2-linflexuart
+          - const: fsl,s32v234-linflexuart
+
+  reg:
+    maxItems: 1
+
+  interrupts:
+    maxItems: 1
+
+required:
+  - compatible
+  - reg
+  - interrupts
+
+unevaluatedProperties: false
+
+examples:
+  - |
+    serial@40053000 {
+        compatible = "fsl,s32v234-linflexuart";
+        reg = <0x40053000 0x1000>;
+        interrupts = <0 59 4>;
+    };
diff --git a/Documentation/devicetree/bindings/soc/imx/fsl,imx8mm-disp-blk-ctrl.yaml b/Documentation/devicetree/bindings/soc/imx/fsl,imx8mm-disp-blk-ctrl.yaml
new file mode 100644 (file)
index 0000000..ecd86cf
--- /dev/null
@@ -0,0 +1,94 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/soc/imx/fsl,imx8mm-disp-blk-ctrl.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: NXP i.MX8MM DISP blk-ctrl
+
+maintainers:
+  - Lucas Stach <l.stach@pengutronix.de>
+
+description:
+  The i.MX8MM DISP blk-ctrl is a top-level peripheral providing access to
+  the NoC and ensuring proper power sequencing of the display and MIPI CSI
+  peripherals located in the DISP domain of the SoC.
+
+properties:
+  compatible:
+    items:
+      - const: fsl,imx8mm-disp-blk-ctrl
+      - const: syscon
+
+  reg:
+    maxItems: 1
+
+  '#power-domain-cells':
+    const: 1
+
+  power-domains:
+    minItems: 5
+    maxItems: 5
+
+  power-domain-names:
+    items:
+      - const: bus
+      - const: csi-bridge
+      - const: lcdif
+      - const: mipi-dsi
+      - const: mipi-csi
+
+  clocks:
+    minItems: 10
+    maxItems: 10
+
+  clock-names:
+    items:
+      - const: csi-bridge-axi
+      - const: csi-bridge-apb
+      - const: csi-bridge-core
+      - const: lcdif-axi
+      - const: lcdif-apb
+      - const: lcdif-pix
+      - const: dsi-pclk
+      - const: dsi-ref
+      - const: csi-aclk
+      - const: csi-pclk
+
+required:
+  - compatible
+  - reg
+  - power-domains
+  - power-domain-names
+  - clocks
+  - clock-names
+
+additionalProperties: false
+
+examples:
+  - |
+    #include <dt-bindings/clock/imx8mm-clock.h>
+    #include <dt-bindings/power/imx8mm-power.h>
+
+    disp_blk_ctl: blk_ctrl@32e28000 {
+      compatible = "fsl,imx8mm-disp-blk-ctrl", "syscon";
+      reg = <0x32e28000 0x100>;
+      power-domains = <&pgc_dispmix>, <&pgc_dispmix>, <&pgc_dispmix>,
+                      <&pgc_mipi>, <&pgc_mipi>;
+      power-domain-names = "bus", "csi-bridge", "lcdif",
+                           "mipi-dsi", "mipi-csi";
+      clocks = <&clk IMX8MM_CLK_DISP_AXI_ROOT>,
+               <&clk IMX8MM_CLK_DISP_APB_ROOT>,
+               <&clk IMX8MM_CLK_CSI1_ROOT>,
+               <&clk IMX8MM_CLK_DISP_AXI_ROOT>,
+               <&clk IMX8MM_CLK_DISP_APB_ROOT>,
+               <&clk IMX8MM_CLK_DISP_ROOT>,
+               <&clk IMX8MM_CLK_DSI_CORE>,
+               <&clk IMX8MM_CLK_DSI_PHY_REF>,
+               <&clk IMX8MM_CLK_CSI1_CORE>,
+               <&clk IMX8MM_CLK_CSI1_PHY_REF>;
+       clock-names = "csi-bridge-axi", "csi-bridge-apb", "csi-bridge-core",
+                     "lcdif-axi", "lcdif-apb", "lcdif-pix", "dsi-pclk",
+                     "dsi-ref", "csi-aclk", "csi-pclk";
+       #power-domain-cells = <1>;
+    };
diff --git a/Documentation/devicetree/bindings/soc/imx/fsl,imx8mm-vpu-blk-ctrl.yaml b/Documentation/devicetree/bindings/soc/imx/fsl,imx8mm-vpu-blk-ctrl.yaml
new file mode 100644 (file)
index 0000000..26487da
--- /dev/null
@@ -0,0 +1,76 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/soc/imx/fsl,imx8mm-vpu-blk-ctrl.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: NXP i.MX8MM VPU blk-ctrl
+
+maintainers:
+  - Lucas Stach <l.stach@pengutronix.de>
+
+description:
+  The i.MX8MM VPU blk-ctrl is a top-level peripheral providing access to
+  the NoC and ensuring proper power sequencing of the VPU peripherals
+  located in the VPU domain of the SoC.
+
+properties:
+  compatible:
+    items:
+      - const: fsl,imx8mm-vpu-blk-ctrl
+      - const: syscon
+
+  reg:
+    maxItems: 1
+
+  '#power-domain-cells':
+    const: 1
+
+  power-domains:
+    minItems: 4
+    maxItems: 4
+
+  power-domain-names:
+    items:
+      - const: bus
+      - const: g1
+      - const: g2
+      - const: h1
+
+  clocks:
+    minItems: 3
+    maxItems: 3
+
+  clock-names:
+    items:
+      - const: g1
+      - const: g2
+      - const: h1
+
+required:
+  - compatible
+  - reg
+  - power-domains
+  - power-domain-names
+  - clocks
+  - clock-names
+
+additionalProperties: false
+
+examples:
+  - |
+    #include <dt-bindings/clock/imx8mm-clock.h>
+    #include <dt-bindings/power/imx8mm-power.h>
+
+    vpu_blk_ctrl: blk-ctrl@38330000 {
+      compatible = "fsl,imx8mm-vpu-blk-ctrl", "syscon";
+      reg = <0x38330000 0x100>;
+      power-domains = <&pgc_vpumix>, <&pgc_vpu_g1>,
+                      <&pgc_vpu_g2>, <&pgc_vpu_h1>;
+      power-domain-names = "bus", "g1", "g2", "h1";
+      clocks = <&clk IMX8MM_CLK_VPU_G1_ROOT>,
+               <&clk IMX8MM_CLK_VPU_G2_ROOT>,
+               <&clk IMX8MM_CLK_VPU_H1_ROOT>;
+      clock-names = "g1", "g2", "h1";
+      #power-domain-cells = <1>;
+    };
index 39b66e9..7d48ea0 100644 (file)
@@ -21,6 +21,9 @@ properties:
       - const: allwinner,sun8i-a83t-i2s
       - const: allwinner,sun8i-h3-i2s
       - items:
+          - const: allwinner,sun8i-r40-i2s
+          - const: allwinner,sun8i-h3-i2s
+      - items:
           - const: allwinner,sun8i-v3-i2s
           - const: allwinner,sun8i-h3-i2s
       - const: allwinner,sun50i-a64-codec-i2s
index a826ac7..518487e 100644 (file)
@@ -193,6 +193,8 @@ patternProperties:
     description: B&R Industrial Automation GmbH
   "^bticino,.*":
     description: Bticino International
+  "^calamp,.*":
+    description: CalAmp Corp.
   "^calaosystems,.*":
     description: CALAO Systems SAS
   "^calxeda,.*":
@@ -337,6 +339,8 @@ patternProperties:
     description: EBV Elektronik
   "^eckelmann,.*":
     description: Eckelmann AG
+  "^edimax,.*":
+    description: EDIMAX Technology Co., Ltd
   "^edt,.*":
     description: Emerging Display Technologies
   "^eeti,.*":
@@ -397,6 +401,8 @@ patternProperties:
     description: Exar Corporation
   "^excito,.*":
     description: Excito
+  "^exegin,.*":
+    description: Exegin Technologies Limited
   "^ezchip,.*":
     description: EZchip Semiconductor
   "^facebook,.*":
@@ -581,6 +587,8 @@ patternProperties:
     description: JEDEC Solid State Technology Association
   "^jesurun,.*":
     description: Shenzhen Jesurun Electronics Business Dept.
+  "^jethome,.*":
+    description: JetHome (IP Sokolov P.A.)
   "^jianda,.*":
     description: Jiandangjing Technology Co., Ltd.
   "^kam,.*":
@@ -1108,6 +1116,8 @@ patternProperties:
     description: SpinalHDL
   "^sprd,.*":
     description: Spreadtrum Communications Inc.
+  "^ssi,.*":
+    description: SSI Computer Corp
   "^sst,.*":
     description: Silicon Storage Technology, Inc.
   "^sstar,.*":
index 0f0b487..8332133 100644 (file)
@@ -6352,6 +6352,7 @@ L:        linux-tegra@vger.kernel.org
 S:     Supported
 T:     git git://anongit.freedesktop.org/tegra/linux.git
 F:     Documentation/devicetree/bindings/display/tegra/nvidia,tegra20-host1x.txt
+F:     Documentation/devicetree/bindings/gpu/host1x/
 F:     drivers/gpu/drm/tegra/
 F:     drivers/gpu/host1x/
 F:     include/linux/host1x.h
index 7e09341..0de64f2 100644 (file)
@@ -25,6 +25,7 @@ dtb-$(CONFIG_SOC_AT91SAM9) += \
        usb_a9263.dtb \
        at91-foxg20.dtb \
        at91-kizbox.dtb \
+       at91-lmu5000.dtb \
        at91sam9g20ek.dtb \
        at91sam9g20ek_2mmc.dtb \
        tny_a9g20.dtb \
@@ -40,6 +41,7 @@ dtb-$(CONFIG_SOC_AT91SAM9) += \
        at91-kizboxmini-base.dtb \
        at91-kizboxmini-mb.dtb \
        at91-kizboxmini-rd.dtb \
+       at91-q5xr5.dtb \
        at91-smartkiz.dtb \
        at91-wb45n.dtb \
        at91sam9g15ek.dtb \
@@ -92,6 +94,7 @@ dtb-$(CONFIG_ARCH_BCM2835) += \
        bcm2837-rpi-cm3-io3.dtb \
        bcm2711-rpi-400.dtb \
        bcm2711-rpi-4-b.dtb \
+       bcm2711-rpi-cm4-io.dtb \
        bcm2835-rpi-zero.dtb \
        bcm2835-rpi-zero-w.dtb
 dtb-$(CONFIG_ARCH_BCM_5301X) += \
@@ -117,6 +120,7 @@ dtb-$(CONFIG_ARCH_BCM_5301X) += \
        bcm4709-netgear-r7000.dtb \
        bcm4709-netgear-r8000.dtb \
        bcm4709-tplink-archer-c9-v1.dtb \
+       bcm47094-asus-rt-ac88u.dtb \
        bcm47094-dlink-dir-885l.dtb \
        bcm47094-linksys-panamera.dtb \
        bcm47094-luxul-abr-4500.dtb \
@@ -157,6 +161,12 @@ dtb-$(CONFIG_ARCH_BCM_NSP) += \
        bcm958525xmc.dtb \
        bcm958622hr.dtb \
        bcm958623hr.dtb \
+       bcm958625-meraki-mx64.dtb \
+       bcm958625-meraki-mx64-a0.dtb \
+       bcm958625-meraki-mx64w.dtb \
+       bcm958625-meraki-mx64w-a0.dtb \
+       bcm958625-meraki-mx65.dtb \
+       bcm958625-meraki-mx65w.dtb \
        bcm958625hr.dtb \
        bcm988312hr.dtb \
        bcm958625k.dtb
@@ -219,9 +229,11 @@ dtb-$(CONFIG_ARCH_GEMINI) += \
        gemini-dlink-dir-685.dtb \
        gemini-dlink-dns-313.dtb \
        gemini-nas4220b.dtb \
+       gemini-ns2502.dtb \
        gemini-rut1xx.dtb \
        gemini-sl93512r.dtb \
        gemini-sq201.dtb \
+       gemini-ssi1328.dtb \
        gemini-wbd111.dtb \
        gemini-wbd222.dtb
 dtb-$(CONFIG_ARCH_HI3xxx) += \
@@ -635,10 +647,12 @@ dtb-$(CONFIG_SOC_IMX6SL) += \
        imx6sl-evk.dtb \
        imx6sl-tolino-shine2hd.dtb \
        imx6sl-tolino-shine3.dtb \
+       imx6sl-tolino-vision5.dtb \
        imx6sl-warp.dtb
 dtb-$(CONFIG_SOC_IMX6SLL) += \
        imx6sll-evk.dtb \
-       imx6sll-kobo-clarahd.dtb
+       imx6sll-kobo-clarahd.dtb \
+       imx6sll-kobo-librah2o.dtb
 dtb-$(CONFIG_SOC_IMX6SX) += \
        imx6sx-nitrogen6sx.dtb \
        imx6sx-sabreauto.dtb \
@@ -671,6 +685,7 @@ dtb-$(CONFIG_SOC_IMX6UL) += \
        imx6ul-tx6ul-0011.dtb \
        imx6ul-tx6ul-mainboard.dtb \
        imx6ull-14x14-evk.dtb \
+       imx6ull-colibri-emmc-eval-v3.dtb \
        imx6ull-colibri-eval-v3.dtb \
        imx6ull-colibri-wifi-eval-v3.dtb \
        imx6ull-myir-mys-6ulx-eval.dtb \
@@ -939,6 +954,7 @@ dtb-$(CONFIG_ARCH_OXNAS) += \
        ox810se-wd-mbwe.dtb \
        ox820-cloudengines-pogoplug-series-3.dtb
 dtb-$(CONFIG_ARCH_QCOM) += \
+       qcom-apq8026-lg-lenok.dtb \
        qcom-apq8060-dragonboard.dtb \
        qcom-apq8064-cm-qs600.dtb \
        qcom-apq8064-ifc6410.dtb \
@@ -959,6 +975,7 @@ dtb-$(CONFIG_ARCH_QCOM) += \
        qcom-ipq8064-rb3011.dtb \
        qcom-msm8226-samsung-s3ve3g.dtb \
        qcom-msm8660-surf.dtb \
+       qcom-msm8916-samsung-serranove.dtb \
        qcom-msm8960-cdp.dtb \
        qcom-msm8974-fairphone-fp2.dtb \
        qcom-msm8974-lge-nexus5-hammerhead.dtb \
@@ -1075,6 +1092,7 @@ dtb-$(CONFIG_ARCH_S5PV210) += \
        s5pv210-torbreck.dtb
 dtb-$(CONFIG_ARCH_INTEL_SOCFPGA) += \
        socfpga_arria5_socdk.dtb \
+       socfpga_arria10_mercury_aa1.dtb \
        socfpga_arria10_socdk_nand.dtb \
        socfpga_arria10_socdk_qspi.dtb \
        socfpga_arria10_socdk_sdmmc.dtb \
@@ -1113,6 +1131,7 @@ dtb-$(CONFIG_ARCH_STM32) += \
        stm32h743i-eval.dtb \
        stm32h743i-disco.dtb \
        stm32h750i-art-pi.dtb \
+       stm32mp135f-dk.dtb \
        stm32mp153c-dhcom-drc02.dtb \
        stm32mp157a-avenger96.dtb \
        stm32mp157a-dhcor-avenger96.dtb \
@@ -1387,6 +1406,7 @@ dtb-$(CONFIG_MACH_ARMADA_370) += \
 dtb-$(CONFIG_MACH_ARMADA_375) += \
        armada-375-db.dtb
 dtb-$(CONFIG_MACH_ARMADA_38X) += \
+       armada-381-netgear-gs110emx.dtb \
        armada-382-rd-ac3x-48g4x2xl.dtb \
        armada-385-atl-x530.dtb\
        armada-385-clearfog-gtr-s4.dtb \
@@ -1497,4 +1517,6 @@ dtb-$(CONFIG_ARCH_ASPEED) += \
        aspeed-bmc-opp-zaius.dtb \
        aspeed-bmc-portwell-neptune.dtb \
        aspeed-bmc-quanta-q71l.dtb \
-       aspeed-bmc-supermicro-x11spi.dtb
+       aspeed-bmc-supermicro-x11spi.dtb \
+       aspeed-bmc-inventec-transformers.dtb \
+       aspeed-bmc-tyan-s7106.dtb
index 209cdd1..5e415d8 100644 (file)
 
 &am33xx_pinmux {
 
+       compatible = "pinconf-single";
        pinctrl-names = "default";
 
        pinctrl-0 =   < &P2_03_gpio &P1_34_gpio &P2_19_gpio &P2_24_gpio
index 04e8a27..2dfb32b 100644 (file)
                syscon: syscon@10000000 {
                        compatible = "arm,realview-eb-syscon", "syscon", "simple-mfd";
                        reg = <0x10000000 0x1000>;
+                       ranges = <0x0 0x10000000 0x1000>;
+                       #address-cells = <1>;
+                       #size-cells = <1>;
 
-                       led@08.0 {
+                       led@8,0 {
                                compatible = "register-bit-led";
+                               reg = <0x08 0x04>;
                                offset = <0x08>;
                                mask = <0x01>;
                                label = "versatile:0";
                                linux,default-trigger = "heartbeat";
                                default-state = "on";
                        };
-                       led@08.1 {
+                       led@8,1 {
                                compatible = "register-bit-led";
+                               reg = <0x08 0x04>;
                                offset = <0x08>;
                                mask = <0x02>;
                                label = "versatile:1";
                                linux,default-trigger = "mmc0";
                                default-state = "off";
                        };
-                       led@08.2 {
+                       led@8,2 {
                                compatible = "register-bit-led";
+                               reg = <0x08 0x04>;
                                offset = <0x08>;
                                mask = <0x04>;
                                label = "versatile:2";
                                linux,default-trigger = "cpu0";
                                default-state = "off";
                        };
-                       led@08.3 {
+                       led@8,3 {
                                compatible = "register-bit-led";
+                               reg = <0x08 0x04>;
                                offset = <0x08>;
                                mask = <0x08>;
                                label = "versatile:3";
                                default-state = "off";
                        };
-                       led@08.4 {
+                       led@8,4 {
                                compatible = "register-bit-led";
+                               reg = <0x08 0x04>;
                                offset = <0x08>;
                                mask = <0x10>;
                                label = "versatile:4";
                                default-state = "off";
                        };
-                       led@08.5 {
+                       led@8,5 {
                                compatible = "register-bit-led";
+                               reg = <0x08 0x04>;
                                offset = <0x08>;
                                mask = <0x20>;
                                label = "versatile:5";
                                default-state = "off";
                        };
-                       led@08.6 {
+                       led@8,6 {
                                compatible = "register-bit-led";
+                               reg = <0x08 0x04>;
                                offset = <0x08>;
                                mask = <0x40>;
                                label = "versatile:6";
                                default-state = "off";
                        };
-                       led@08.7 {
+                       led@8,7 {
                                compatible = "register-bit-led";
+                               reg = <0x08 0x04>;
                                offset = <0x08>;
                                mask = <0x80>;
                                label = "versatile:7";
                                default-state = "off";
                        };
-                       oscclk0: osc0@0c {
+                       oscclk0: clock-controller@c {
                                compatible = "arm,syscon-icst307";
+                               reg = <0x0c 0x04>;
                                #clock-cells = <0>;
                                lock-offset = <0x20>;
                                vco-offset = <0x0C>;
                                clocks = <&xtal24mhz>;
                        };
-                       oscclk1: osc1@10 {
+                       oscclk1: clock-controller@10 {
                                compatible = "arm,syscon-icst307";
+                               reg = <0x10 0x04>;
                                #clock-cells = <0>;
                                lock-offset = <0x20>;
                                vco-offset = <0x10>;
                                clocks = <&xtal24mhz>;
                        };
-                       oscclk2: osc2@14 {
+                       oscclk2: clock-controller@14 {
                                compatible = "arm,syscon-icst307";
+                               reg = <0x14 0x04>;
                                #clock-cells = <0>;
                                lock-offset = <0x20>;
                                vco-offset = <0x14>;
                                clocks = <&xtal24mhz>;
                        };
-                       oscclk3: osc3@18 {
+                       oscclk3: clock-controller@18 {
                                compatible = "arm,syscon-icst307";
+                               reg = <0x18 0x04>;
                                #clock-cells = <0>;
                                lock-offset = <0x20>;
                                vco-offset = <0x18>;
                                clocks = <&xtal24mhz>;
                        };
-                       oscclk4: osc4@1c {
+                       oscclk4: clock-controller@1c {
                                compatible = "arm,syscon-icst307";
+                               reg = <0x1c 0x04>;
                                #clock-cells = <0>;
                                lock-offset = <0x20>;
                                vco-offset = <0x1c>;
index 366687f..06b8723 100644 (file)
                syscon: syscon@10000000 {
                        compatible = "arm,realview-pb1176-syscon", "syscon", "simple-mfd";
                        reg = <0x10000000 0x1000>;
+                       ranges = <0x0 0x10000000 0x1000>;
+                       #address-cells = <1>;
+                       #size-cells = <1>;
 
-                       led@08.0 {
+                       led@8,0 {
                                compatible = "register-bit-led";
+                               reg = <0x08 0x04>;
                                offset = <0x08>;
                                mask = <0x01>;
                                label = "versatile:0";
                                linux,default-trigger = "heartbeat";
                                default-state = "on";
                        };
-                       led@08.1 {
+                       led@8,1 {
                                compatible = "register-bit-led";
+                               reg = <0x08 0x04>;
                                offset = <0x08>;
                                mask = <0x02>;
                                label = "versatile:1";
                                linux,default-trigger = "mmc0";
                                default-state = "off";
                        };
-                       led@08.2 {
+                       led@8,2 {
                                compatible = "register-bit-led";
+                               reg = <0x08 0x04>;
                                offset = <0x08>;
                                mask = <0x04>;
                                label = "versatile:2";
                                linux,default-trigger = "cpu0";
                                default-state = "off";
                        };
-                       led@08.3 {
+                       led@8,3 {
                                compatible = "register-bit-led";
+                               reg = <0x08 0x04>;
                                offset = <0x08>;
                                mask = <0x08>;
                                label = "versatile:3";
                                default-state = "off";
                        };
-                       led@08.4 {
+                       led@8,4 {
                                compatible = "register-bit-led";
+                               reg = <0x08 0x04>;
                                offset = <0x08>;
                                mask = <0x10>;
                                label = "versatile:4";
                                default-state = "off";
                        };
-                       led@08.5 {
+                       led@8,5 {
                                compatible = "register-bit-led";
+                               reg = <0x08 0x04>;
                                offset = <0x08>;
                                mask = <0x20>;
                                label = "versatile:5";
                                default-state = "off";
                        };
-                       led@08.6 {
+                       led@8,6 {
                                compatible = "register-bit-led";
+                               reg = <0x08 0x04>;
                                offset = <0x08>;
                                mask = <0x40>;
                                label = "versatile:6";
                                default-state = "off";
                        };
-                       led@08.7 {
+                       led@8,7 {
                                compatible = "register-bit-led";
+                               reg = <0x08 0x04>;
                                offset = <0x08>;
                                mask = <0x80>;
                                label = "versatile:7";
                                default-state = "off";
                        };
-                       oscclk0: osc0@0c {
+                       oscclk0: clock-controller@c {
                                compatible = "arm,syscon-icst307";
+                               reg = <0x0c 0x04>;
                                #clock-cells = <0>;
                                lock-offset = <0x20>;
                                vco-offset = <0x0C>;
                                clocks = <&xtal24mhz>;
                        };
-                       oscclk1: osc1@10 {
+                       oscclk1: clock-controller@10 {
                                compatible = "arm,syscon-icst307";
+                               reg = <0x10 0x04>;
                                #clock-cells = <0>;
                                lock-offset = <0x20>;
                                vco-offset = <0x10>;
                                clocks = <&xtal24mhz>;
                        };
-                       oscclk2: osc2@14 {
+                       oscclk2: clock-controller@14 {
                                compatible = "arm,syscon-icst307";
+                               reg = <0x14 0x04>;
                                #clock-cells = <0>;
                                lock-offset = <0x20>;
                                vco-offset = <0x14>;
                                clocks = <&xtal24mhz>;
                        };
-                       oscclk3: osc3@18 {
+                       oscclk3: clock-controller@18 {
                                compatible = "arm,syscon-icst307";
+                               reg = <0x18 0x04>;
                                #clock-cells = <0>;
                                lock-offset = <0x20>;
                                vco-offset = <0x18>;
                                clocks = <&xtal24mhz>;
                        };
-                       oscclk4: osc4@1c {
+                       oscclk4: clock-controller@1c {
                                compatible = "arm,syscon-icst307";
+                               reg = <0x1c 0x04>;
                                #clock-cells = <0>;
                                lock-offset = <0x20>;
                                vco-offset = <0x1c>;
index 228a51a..295aef4 100644 (file)
                pb11mp_syscon: syscon@10000000 {
                        compatible = "arm,realview-pb11mp-syscon", "syscon", "simple-mfd";
                        reg = <0x10000000 0x1000>;
+                       ranges = <0x0 0x10000000 0x1000>;
+                       #address-cells = <1>;
+                       #size-cells = <1>;
 
-                       led@08.0 {
+                       led@8,0 {
                                compatible = "register-bit-led";
+                               reg = <0x08 0x04>;
                                offset = <0x08>;
                                mask = <0x01>;
                                label = "versatile:0";
                                linux,default-trigger = "heartbeat";
                                default-state = "on";
                        };
-                       led@08.1 {
+                       led@8,1 {
                                compatible = "register-bit-led";
+                               reg = <0x08 0x04>;
                                offset = <0x08>;
                                mask = <0x02>;
                                label = "versatile:1";
                                linux,default-trigger = "mmc0";
                                default-state = "off";
                        };
-                       led@08.2 {
+                       led@8,2 {
                                compatible = "register-bit-led";
+                               reg = <0x08 0x04>;
                                offset = <0x08>;
                                mask = <0x04>;
                                label = "versatile:2";
                                linux,default-trigger = "cpu0";
                                default-state = "off";
                        };
-                       led@08.3 {
+                       led@8,3 {
                                compatible = "register-bit-led";
+                               reg = <0x08 0x04>;
                                offset = <0x08>;
                                mask = <0x08>;
                                label = "versatile:3";
                                linux,default-trigger = "cpu1";
                                default-state = "off";
                        };
-                       led@08.4 {
+                       led@8,4 {
                                compatible = "register-bit-led";
+                               reg = <0x08 0x04>;
                                offset = <0x08>;
                                mask = <0x10>;
                                label = "versatile:4";
                                linux,default-trigger = "cpu2";
                                default-state = "off";
                        };
-                       led@08.5 {
+                       led@8,5 {
                                compatible = "register-bit-led";
+                               reg = <0x08 0x04>;
                                offset = <0x08>;
                                mask = <0x20>;
                                label = "versatile:5";
                                linux,default-trigger = "cpu3";
                                default-state = "off";
                        };
-                       led@08.6 {
+                       led@8,6 {
                                compatible = "register-bit-led";
+                               reg = <0x08 0x04>;
                                offset = <0x08>;
                                mask = <0x40>;
                                label = "versatile:6";
                                default-state = "off";
                        };
-                       led@08.7 {
+                       led@8,7 {
                                compatible = "register-bit-led";
+                               reg = <0x08 0x04>;
                                offset = <0x08>;
                                mask = <0x80>;
                                label = "versatile:7";
                                default-state = "off";
                        };
 
-                       oscclk0: osc0@0c {
+                       oscclk0: clock-controller@c {
                                compatible = "arm,syscon-icst307";
+                               reg = <0x0c 0x04>;
                                #clock-cells = <0>;
                                lock-offset = <0x20>;
                                vco-offset = <0x0C>;
                                clocks = <&xtal24mhz>;
                        };
-                       oscclk1: osc1@10 {
+                       oscclk1: clock-controller@10 {
                                compatible = "arm,syscon-icst307";
+                               reg = <0x10 0x04>;
                                #clock-cells = <0>;
                                lock-offset = <0x20>;
                                vco-offset = <0x10>;
                                clocks = <&xtal24mhz>;
                        };
-                       oscclk2: osc2@14 {
+                       oscclk2: clock-controller@14 {
                                compatible = "arm,syscon-icst307";
+                               reg = <0x14 0x04>;
                                #clock-cells = <0>;
                                lock-offset = <0x20>;
                                vco-offset = <0x14>;
                                clocks = <&xtal24mhz>;
                        };
-                       oscclk3: osc3@18 {
+                       oscclk3: clock-controller@18 {
                                compatible = "arm,syscon-icst307";
+                               reg = <0x18 0x04>;
                                #clock-cells = <0>;
                                lock-offset = <0x20>;
                                vco-offset = <0x18>;
                                clocks = <&xtal24mhz>;
                        };
-                       oscclk4: osc4@1c {
+                       oscclk4: clock-controller@1c {
                                compatible = "arm,syscon-icst307";
+                               reg = <0x1c 0x04>;
                                #clock-cells = <0>;
                                lock-offset = <0x20>;
                                vco-offset = <0x1c>;
                                clocks = <&xtal24mhz>;
                        };
-                       oscclk5: osc5@d4 {
+                       oscclk5: clock-controller@d4 {
                                compatible = "arm,syscon-icst307";
+                               reg = <0xd4 0x04>;
                                #clock-cells = <0>;
                                lock-offset = <0x20>;
                                vco-offset = <0xd4>;
                                clocks = <&xtal24mhz>;
                        };
-                       oscclk6: osc6@d8 {
+                       oscclk6: clock-controller@d8 {
                                compatible = "arm,syscon-icst307";
+                               reg = <0xd8 0x04>;
                                #clock-cells = <0>;
                                lock-offset = <0x20>;
                                vco-offset = <0xd8>;
index ccf6f75..6f61f96 100644 (file)
                syscon: syscon@10000000 {
                        compatible = "arm,realview-pbx-syscon", "syscon", "simple-mfd";
                        reg = <0x10000000 0x1000>;
+                       ranges = <0x0 0x10000000 0x1000>;
+                       #address-cells = <1>;
+                       #size-cells = <1>;
 
-                       led@08.0 {
+                       led@8,0 {
                                compatible = "register-bit-led";
+                               reg = <0x08 0x04>;
                                offset = <0x08>;
                                mask = <0x01>;
                                label = "versatile:0";
                                linux,default-trigger = "heartbeat";
                                default-state = "on";
                        };
-                       led@08.1 {
+                       led@8,1 {
                                compatible = "register-bit-led";
+                               reg = <0x08 0x04>;
                                offset = <0x08>;
                                mask = <0x02>;
                                label = "versatile:1";
                                linux,default-trigger = "mmc0";
                                default-state = "off";
                        };
-                       led@08.2 {
+                       led@8,2 {
                                compatible = "register-bit-led";
+                               reg = <0x08 0x04>;
                                offset = <0x08>;
                                mask = <0x04>;
                                label = "versatile:2";
                                linux,default-trigger = "cpu0";
                                default-state = "off";
                        };
-                       led@08.3 {
+                       led@8,3 {
                                compatible = "register-bit-led";
+                               reg = <0x08 0x04>;
                                offset = <0x08>;
                                mask = <0x08>;
                                label = "versatile:3";
                                default-state = "off";
                        };
-                       led@08.4 {
+                       led@8,4 {
                                compatible = "register-bit-led";
+                               reg = <0x08 0x04>;
                                offset = <0x08>;
                                mask = <0x10>;
                                label = "versatile:4";
                                default-state = "off";
                        };
-                       led@08.5 {
+                       led@8,5 {
                                compatible = "register-bit-led";
+                               reg = <0x08 0x04>;
                                offset = <0x08>;
                                mask = <0x20>;
                                label = "versatile:5";
                                default-state = "off";
                        };
-                       led@08.6 {
+                       led@8,6 {
                                compatible = "register-bit-led";
+                               reg = <0x08 0x04>;
                                offset = <0x08>;
                                mask = <0x40>;
                                label = "versatile:6";
                                default-state = "off";
                        };
-                       led@08.7 {
+                       led@8,7 {
                                compatible = "register-bit-led";
+                               reg = <0x08 0x04>;
                                offset = <0x08>;
                                mask = <0x80>;
                                label = "versatile:7";
                                default-state = "off";
                        };
-                       oscclk0: osc0@0c {
+                       oscclk0: clock-controller@c {
                                compatible = "arm,syscon-icst307";
+                               reg = <0x0c 0x04>;
                                #clock-cells = <0>;
                                lock-offset = <0x20>;
                                vco-offset = <0x0C>;
                                clocks = <&xtal24mhz>;
                        };
-                       oscclk1: osc1@10 {
+                       oscclk1: clock-controller@10 {
                                compatible = "arm,syscon-icst307";
+                               reg = <0x10 0x04>;
                                #clock-cells = <0>;
                                lock-offset = <0x20>;
                                vco-offset = <0x10>;
                                clocks = <&xtal24mhz>;
                        };
-                       oscclk2: osc2@14 {
+                       oscclk2: clock-controller@14 {
                                compatible = "arm,syscon-icst307";
+                               reg = <0x14 0x04>;
                                #clock-cells = <0>;
                                lock-offset = <0x20>;
                                vco-offset = <0x14>;
                                clocks = <&xtal24mhz>;
                        };
-                       oscclk3: osc3@18 {
+                       oscclk3: clock-controller@18 {
                                compatible = "arm,syscon-icst307";
+                               reg = <0x18 0x04>;
                                #clock-cells = <0>;
                                lock-offset = <0x20>;
                                vco-offset = <0x18>;
                                clocks = <&xtal24mhz>;
                        };
-                       oscclk4: osc4@1c {
+                       oscclk4: clock-controller@1c {
                                compatible = "arm,syscon-icst307";
+                               reg = <0x1c 0x04>;
                                #clock-cells = <0>;
                                lock-offset = <0x20>;
                                vco-offset = <0x1c>;
diff --git a/arch/arm/boot/dts/armada-381-netgear-gs110emx.dts b/arch/arm/boot/dts/armada-381-netgear-gs110emx.dts
new file mode 100644 (file)
index 0000000..0a96111
--- /dev/null
@@ -0,0 +1,295 @@
+// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
+/* Copyright (c) 2021, Marcel Ziswiler <marcel@ziswiler.com> */
+
+/dts-v1/;
+#include "armada-385.dtsi"
+#include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/input/input.h>
+
+/ {
+       model = "Netgear GS110EMX";
+       compatible = "netgear,gs110emx", "marvell,armada380";
+
+       aliases {
+               /* So that mvebu u-boot can update the MAC addresses */
+               ethernet1 = &eth0;
+       };
+
+       chosen {
+               stdout-path = "serial0:115200n8";
+       };
+
+       gpio-keys {
+               compatible = "gpio-keys";
+               pinctrl-0 = <&front_button_pins>;
+               pinctrl-names = "default";
+
+               factory_default {
+                       label = "Factory Default";
+                       gpios = <&gpio1 6 GPIO_ACTIVE_LOW>;
+                       linux,code = <KEY_RESTART>;
+               };
+       };
+
+       memory {
+               device_type = "memory";
+               reg = <0x00000000 0x08000000>; /* 128 MB */
+       };
+
+       soc {
+               ranges = <MBUS_ID(0xf0, 0x01) 0 0xf1000000 0x100000
+                         MBUS_ID(0x01, 0x1d) 0 0xfff00000 0x100000
+                         MBUS_ID(0x09, 0x19) 0 0xf1100000 0x10000
+                         MBUS_ID(0x09, 0x15) 0 0xf1110000 0x10000
+                         MBUS_ID(0x0c, 0x04) 0 0xf1200000 0x100000>;
+
+               internal-regs {
+                       rtc@a3800 {
+                               /*
+                                * If the rtc doesn't work, run "date reset"
+                                * twice in u-boot.
+                                */
+                               status = "okay";
+                       };
+               };
+       };
+};
+
+&eth0 {
+       /* ethernet@70000 */
+       bm,pool-long = <0>;
+       bm,pool-short = <1>;
+       buffer-manager = <&bm>;
+       phy-mode = "rgmii-id";
+       pinctrl-0 = <&ge0_rgmii_pins>;
+       pinctrl-names = "default";
+       status = "okay";
+
+       fixed-link {
+               full-duplex;
+               pause;
+               speed = <1000>;
+       };
+};
+
+&mdio {
+       pinctrl-names = "default";
+       pinctrl-0 = <&mdio_pins>;
+       status = "okay";
+
+       switch@0 {
+               compatible = "marvell,mv88e6190";
+               #address-cells = <1>;
+               #interrupt-cells = <2>;
+               interrupt-controller;
+               interrupt-parent = <&gpio1>;
+               interrupts = <7 IRQ_TYPE_LEVEL_LOW>;
+               pinctrl-0 = <&switch_interrupt_pins>;
+               pinctrl-names = "default";
+               #size-cells = <0>;
+               reg = <0>;
+
+               mdio {
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+
+                       switch0phy1: switch0phy1@1 {
+                               reg = <0x1>;
+                       };
+
+                       switch0phy2: switch0phy2@2 {
+                               reg = <0x2>;
+                       };
+
+                       switch0phy3: switch0phy3@3 {
+                               reg = <0x3>;
+                       };
+
+                       switch0phy4: switch0phy4@4 {
+                               reg = <0x4>;
+                       };
+
+                       switch0phy5: switch0phy5@5 {
+                               reg = <0x5>;
+                       };
+
+                       switch0phy6: switch0phy6@6 {
+                               reg = <0x6>;
+                       };
+
+                       switch0phy7: switch0phy7@7 {
+                               reg = <0x7>;
+                       };
+
+                       switch0phy8: switch0phy8@8 {
+                               reg = <0x8>;
+                       };
+               };
+
+               mdio-external {
+                       compatible = "marvell,mv88e6xxx-mdio-external";
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+
+                       phy1: ethernet-phy@b {
+                               reg = <0xb>;
+                               compatible = "ethernet-phy-ieee802.3-c45";
+                       };
+
+                       phy2: ethernet-phy@c {
+                               reg = <0xc>;
+                               compatible = "ethernet-phy-ieee802.3-c45";
+                       };
+               };
+
+               ports {
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+
+                       port@0 {
+                               ethernet = <&eth0>;
+                               label = "cpu";
+                               reg = <0>;
+
+                               fixed-link {
+                                       full-duplex;
+                                       pause;
+                                       speed = <1000>;
+                               };
+                       };
+
+                       port@1 {
+                               label = "lan1";
+                               phy-handle = <&switch0phy1>;
+                               reg = <1>;
+                       };
+
+                       port@2 {
+                               label = "lan2";
+                               phy-handle = <&switch0phy2>;
+                               reg = <2>;
+                       };
+
+                       port@3 {
+                               label = "lan3";
+                               phy-handle = <&switch0phy3>;
+                               reg = <3>;
+                       };
+
+                       port@4 {
+                               label = "lan4";
+                               phy-handle = <&switch0phy4>;
+                               reg = <4>;
+                       };
+
+                       port@5 {
+                               label = "lan5";
+                               phy-handle = <&switch0phy5>;
+                               reg = <5>;
+                       };
+
+                       port@6 {
+                               label = "lan6";
+                               phy-handle = <&switch0phy6>;
+                               reg = <6>;
+                       };
+
+                       port@7 {
+                               label = "lan7";
+                               phy-handle = <&switch0phy7>;
+                               reg = <7>;
+                       };
+
+                       port@8 {
+                               label = "lan8";
+                               phy-handle = <&switch0phy8>;
+                               reg = <8>;
+                       };
+
+                       port@9 {
+                               /* 88X3310P external phy */
+                               label = "lan9";
+                               phy-handle = <&phy1>;
+                               phy-mode = "xaui";
+                               reg = <9>;
+                       };
+
+                       port@a {
+                               /* 88X3310P external phy */
+                               label = "lan10";
+                               phy-handle = <&phy2>;
+                               phy-mode = "xaui";
+                               reg = <0xa>;
+                       };
+               };
+       };
+};
+
+&pinctrl {
+       front_button_pins: front-button-pins {
+               marvell,pins = "mpp38";
+               marvell,function = "gpio";
+       };
+
+       switch_interrupt_pins: switch-interrupt-pins {
+               marvell,pins = "mpp39";
+               marvell,function = "gpio";
+       };
+};
+
+&spi0 {
+       pinctrl-0 = <&spi0_pins>;
+       pinctrl-names = "default";
+       status = "okay";
+
+       spi-flash@0 {
+               #address-cells = <1>;
+               #size-cells = <1>;
+               compatible = "jedec,spi-nor";
+               reg = <0>; /* Chip select 0 */
+               spi-max-frequency = <3000000>;
+
+               partitions {
+                       compatible = "fixed-partitions";
+                       #address-cells = <1>;
+                       #size-cells = <1>;
+
+                       partition@0 {
+                               label = "boot";
+                               read-only;
+                               reg = <0x00000000 0x00100000>;
+                       };
+
+                       partition@100000 {
+                               label = "env";
+                               reg = <0x00100000 0x00010000>;
+                       };
+
+                       partition@200000 {
+                               label = "rsv";
+                               reg = <0x00110000 0x00010000>;
+                       };
+
+                       partition@300000 {
+                               label = "image0";
+                               reg = <0x00120000 0x00900000>;
+                       };
+
+                       partition@400000 {
+                               label = "config";
+                               reg = <0x00a20000 0x00300000>;
+                       };
+
+                       partition@480000 {
+                               label = "debug";
+                               reg = <0x00d20000 0x002e0000>;
+                       };
+               };
+       };
+};
+
+&uart0 {
+       pinctrl-0 = <&uart0_pins>;
+       pinctrl-names = "default";
+       status = "okay";
+};
index 79d1784..6406a0f 100644 (file)
 //24LC128 EEPROM
 &i2c3 {
        status = "okay";
+       eeprom@50 {
+               compatible = "atmel,24c256";
+               reg = <0x50>;
+               pagesize = <64>;
+       };
 };
 
 //P0 Power regulators
index 57b0c45..3515d55 100644 (file)
                        linux,code = <ASPEED_GPIO(J, 1)>;
                };
 
+               S0_scp_auth_fail {
+                       label = "S0_SCP_AUTH_FAIL";
+                       gpios = <&gpio ASPEED_GPIO(J, 2) GPIO_ACTIVE_LOW>;
+                       linux,code = <ASPEED_GPIO(J, 2)>;
+               };
+
+               S1_scp_auth_fail {
+                       label = "S1_SCP_AUTH_FAIL";
+                       gpios = <&gpio ASPEED_GPIO(Z, 5) GPIO_ACTIVE_LOW>;
+                       linux,code = <ASPEED_GPIO(Z, 5)>;
+               };
+
                S1_overtemp {
                        label = "S1_OVERTEMP";
                        gpios = <&gpio ASPEED_GPIO(Z, 6) GPIO_ACTIVE_LOW>;
        /*Q0-Q7*/       "","","","","","UID_BUTTON","","",
        /*R0-R7*/       "","","BMC_EXT_HIGHTEMP_L","OCP_AUX_PWREN",
                        "OCP_MAIN_PWREN","RESET_BUTTON","","",
-       /*S0-S7*/       "","","","","","","","",
+       /*S0-S7*/       "","","","","RTC_BAT_SEN_EN","","","",
        /*T0-T7*/       "","","","","","","","",
        /*U0-U7*/       "","","","","","","","",
        /*V0-V7*/       "","","","","","","","",
                        "S1_BMC_DDR_ADR","","","","",
        /*AC0-AC7*/     "SYS_PWR_GD","","","","","BMC_READY","SLAVE_PRESENT_L",
                        "BMC_OCP_PG";
+
+       i2c4_o_en {
+               gpio-hog;
+               gpios = <ASPEED_GPIO(Y, 2) GPIO_ACTIVE_HIGH>;
+               output-high;
+               line-name = "BMC_I2C4_O_EN";
+       };
 };
index 2efd706..f42e2d7 100644 (file)
                i2c32 = &i2c14mux1chn1;
                i2c33 = &i2c14mux1chn2;
                i2c34 = &i2c14mux1chn3;
+               i2c35 = &i2c15mux0chn0;
+               i2c36 = &i2c15mux0chn1;
+               i2c37 = &i2c15mux0chn2;
+               i2c38 = &i2c15mux0chn3;
+               i2c39 = &i2c15mux1chn0;
+               i2c40 = &i2c15mux1chn1;
+               i2c41 = &i2c15mux1chn2;
+               i2c42 = &i2c15mux1chn3;
+               i2c43 = &i2c15mux2chn0;
+               i2c44 = &i2c15mux2chn1;
+               i2c45 = &i2c15mux2chn2;
+               i2c46 = &i2c15mux2chn3;
+               i2c47 = &i2c8mux0chn0;
+               i2c48 = &i2c8mux0chn1;
 
                serial4 = &uart5;
 
                        gpios = <&gpio0 ASPEED_GPIO(P, 4) GPIO_ACTIVE_LOW>;
                };
        };
+
+       iio-hwmon-battery {
+               compatible = "iio-hwmon";
+               io-channels = <&adc1 7>;
+       };
+};
+
+&adc1 {
+       status = "okay";
+       aspeed,int-vref-microvolt = <2500000>;
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_adc8_default &pinctrl_adc9_default
+                                &pinctrl_adc10_default &pinctrl_adc11_default
+                                &pinctrl_adc12_default &pinctrl_adc13_default
+                                &pinctrl_adc14_default &pinctrl_adc15_default>;
 };
 
 &gpio0 {
        gpio-line-names =
        /*A0-A7*/       "","","","","","","","",
-       /*B0-B7*/       "USERSPACE_RSTIND_BUFF","","","","","","","",
+       /*B0-B7*/       "USERSPACE_RSTIND_BUFF","","","","","","checkstop","",
        /*C0-C7*/       "","","","","","","","",
        /*D0-D7*/       "","","","","","","","",
        /*E0-E7*/       "","","","","","","","",
        /*F0-F7*/       "PIN_HOLE_RESET_IN_N","","",
-                               "PIN_HOLE_RESET_OUT_N","","","","",
+                               "PIN_HOLE_RESET_OUT_N","","",
+                               "factory-reset-toggle","",
        /*G0-G7*/       "","","","","","","","",
        /*H0-H7*/       "led-rtc-battery","led-bmc","led-rear-enc-id0","led-rear-enc-fault0","","","","",
-       /*I0-I7*/       "","","","","","","","",
+       /*I0-I7*/       "","","","","","","bmc-secure-boot","",
        /*J0-J7*/       "","","","","","","","",
        /*K0-K7*/       "","","","","","","","",
        /*L0-L7*/       "","","","","","","","",
        /*N0-N7*/       "","","","","","","","",
        /*O0-O7*/       "","","","","","","","",
        /*P0-P7*/       "","","","","led-pcieslot-power","","","",
-       /*Q0-Q7*/       "","","","","","","","",
+       /*Q0-Q7*/       "","","regulator-standby-faulted","","","","","",
        /*R0-R7*/       "bmc-tpm-reset","power-chassis-control","power-chassis-good","","","I2C_FLASH_MICRO_N","","",
        /*S0-S7*/       "","","","","","","","",
        /*T0-T7*/       "","","","","","","","",
                        "presence-lcd-op",
                        "presence-base-op",
                        "";
-
-               gpio@0 {
-                       reg = <0>;
-                       type = <PCA955X_TYPE_GPIO>;
-               };
-
-               gpio@1 {
-                       reg = <1>;
-                       type = <PCA955X_TYPE_GPIO>;
-               };
-
-               gpio@2 {
-                       reg = <2>;
-                       type = <PCA955X_TYPE_GPIO>;
-               };
-
-               gpio@3 {
-                       reg = <3>;
-                       type = <PCA955X_TYPE_GPIO>;
-               };
-
-               gpio@4 {
-                       reg = <4>;
-                       type = <PCA955X_TYPE_GPIO>;
-               };
-
-               gpio@5 {
-                       reg = <5>;
-                       type = <PCA955X_TYPE_GPIO>;
-               };
-
-               gpio@6 {
-                       reg = <6>;
-                       type = <PCA955X_TYPE_GPIO>;
-               };
-
-               gpio@7 {
-                       reg = <7>;
-                       type = <PCA955X_TYPE_GPIO>;
-               };
-
-               gpio@8 {
-                       reg = <8>;
-                       type = <PCA955X_TYPE_GPIO>;
-               };
-
-               gpio@9 {
-                       reg = <9>;
-                       type = <PCA955X_TYPE_GPIO>;
-               };
-
-               gpio@10 {
-                       reg = <10>;
-                       type = <PCA955X_TYPE_GPIO>;
-               };
-
-               gpio@11 {
-                       reg = <11>;
-                       type = <PCA955X_TYPE_GPIO>;
-               };
-
-               gpio@12 {
-                       reg = <12>;
-                       type = <PCA955X_TYPE_GPIO>;
-               };
-
-               gpio@13 {
-                       reg = <13>;
-                       type = <PCA955X_TYPE_GPIO>;
-               };
-
-               gpio@14 {
-                       reg = <14>;
-                       type = <PCA955X_TYPE_GPIO>;
-               };
-
-               gpio@15 {
-                       reg = <15>;
-                       type = <PCA955X_TYPE_GPIO>;
-               };
        };
 };
 
                        "expander-cable-card3",
                        "expander-cable-card4",
                        "expander-cable-card5";
-
-               gpio@0 {
-                       reg = <0>;
-                       type = <PCA955X_TYPE_GPIO>;
-               };
-
-               gpio@1 {
-                       reg = <1>;
-                       type = <PCA955X_TYPE_GPIO>;
-               };
-
-               gpio@2 {
-                       reg = <2>;
-                       type = <PCA955X_TYPE_GPIO>;
-               };
-
-               gpio@3 {
-                       reg = <3>;
-                       type = <PCA955X_TYPE_GPIO>;
-               };
-
-               gpio@4 {
-                       reg = <4>;
-                       type = <PCA955X_TYPE_GPIO>;
-               };
-
-               gpio@5 {
-                       reg = <5>;
-                       type = <PCA955X_TYPE_GPIO>;
-               };
-
-               gpio@6 {
-                       reg = <6>;
-                       type = <PCA955X_TYPE_GPIO>;
-               };
-
-               gpio@7 {
-                       reg = <7>;
-                       type = <PCA955X_TYPE_GPIO>;
-               };
-
-               gpio@8 {
-                       reg = <8>;
-                       type = <PCA955X_TYPE_GPIO>;
-               };
-
-               gpio@9 {
-                       reg = <9>;
-                       type = <PCA955X_TYPE_GPIO>;
-               };
        };
 
        i2c-switch@70 {
                                        default-state = "keep";
                                        type = <PCA955X_TYPE_LED>;
                                };
-
-                               gpio@2 {
-                                       reg = <2>;
-                                       type = <PCA955X_TYPE_GPIO>;
-                               };
-
-                               gpio@3 {
-                                       reg = <3>;
-                                       type = <PCA955X_TYPE_GPIO>;
-                               };
-
-                               gpio@4 {
-                                       reg = <4>;
-                                       type = <PCA955X_TYPE_GPIO>;
-                               };
-
-                               gpio@5 {
-                                       reg = <5>;
-                                       type = <PCA955X_TYPE_GPIO>;
-                               };
-
-                               gpio@6 {
-                                       reg = <6>;
-                                       type = <PCA955X_TYPE_GPIO>;
-                               };
-
-                               gpio@7 {
-                                       reg = <7>;
-                                       type = <PCA955X_TYPE_GPIO>;
-                               };
                        };
                };
 
                                        default-state = "keep";
                                        type = <PCA955X_TYPE_LED>;
                                };
-
-                               gpio@2 {
-                                       reg = <2>;
-                                       type = <PCA955X_TYPE_GPIO>;
-                               };
-
-                               gpio@3 {
-                                       reg = <3>;
-                                       type = <PCA955X_TYPE_GPIO>;
-                               };
-
-                               gpio@4 {
-                                       reg = <4>;
-                                       type = <PCA955X_TYPE_GPIO>;
-                               };
-
-                               gpio@5 {
-                                       reg = <5>;
-                                       type = <PCA955X_TYPE_GPIO>;
-                               };
-
-                               gpio@6 {
-                                       reg = <6>;
-                                       type = <PCA955X_TYPE_GPIO>;
-                               };
-
-                               gpio@7 {
-                                       reg = <7>;
-                                       type = <PCA955X_TYPE_GPIO>;
-                               };
                        };
                };
 
                                        default-state = "keep";
                                        type = <PCA955X_TYPE_LED>;
                                };
-
-                               gpio@2 {
-                                       reg = <2>;
-                                       type = <PCA955X_TYPE_GPIO>;
-                               };
-
-                               gpio@3 {
-                                       reg = <3>;
-                                       type = <PCA955X_TYPE_GPIO>;
-                               };
-
-                               gpio@4 {
-                                       reg = <4>;
-                                       type = <PCA955X_TYPE_GPIO>;
-                               };
-
-                               gpio@5 {
-                                       reg = <5>;
-                                       type = <PCA955X_TYPE_GPIO>;
-                               };
-
-                               gpio@6 {
-                                       reg = <6>;
-                                       type = <PCA955X_TYPE_GPIO>;
-                               };
-
-                               gpio@7 {
-                                       reg = <7>;
-                                       type = <PCA955X_TYPE_GPIO>;
-                               };
                        };
                };
        };
                        "expander-cable-card9",
                        "expander-cable-card10",
                        "expander-cable-card11";
-
-               gpio@0 {
-                       reg = <0>;
-                       type = <PCA955X_TYPE_GPIO>;
-               };
-
-               gpio@1 {
-                       reg = <1>;
-                       type = <PCA955X_TYPE_GPIO>;
-               };
-
-               gpio@2 {
-                       reg = <2>;
-                       type = <PCA955X_TYPE_GPIO>;
-               };
-
-               gpio@3 {
-                       reg = <3>;
-                       type = <PCA955X_TYPE_GPIO>;
-               };
-
-               gpio@4 {
-                       reg = <4>;
-                       type = <PCA955X_TYPE_GPIO>;
-               };
-
-               gpio@5 {
-                       reg = <5>;
-                       type = <PCA955X_TYPE_GPIO>;
-               };
-
-               gpio@6 {
-                       reg = <6>;
-                       type = <PCA955X_TYPE_GPIO>;
-               };
-
-               gpio@7 {
-                       reg = <7>;
-                       type = <PCA955X_TYPE_GPIO>;
-               };
-
-               gpio@8 {
-                       reg = <8>;
-                       type = <PCA955X_TYPE_GPIO>;
-               };
-
-               gpio@9 {
-                       reg = <9>;
-                       type = <PCA955X_TYPE_GPIO>;
-               };
-
-               gpio@10 {
-                       reg = <10>;
-                       type = <PCA955X_TYPE_GPIO>;
-               };
-
-               gpio@11 {
-                       reg = <11>;
-                       type = <PCA955X_TYPE_GPIO>;
-               };
-
        };
 
        i2c-switch@70 {
                                        default-state = "keep";
                                        type = <PCA955X_TYPE_LED>;
                                };
-
-                               gpio@2 {
-                                       reg = <2>;
-                                       type = <PCA955X_TYPE_GPIO>;
-                               };
-
-                               gpio@3 {
-                                       reg = <3>;
-                                       type = <PCA955X_TYPE_GPIO>;
-                               };
-
-                               gpio@4 {
-                                       reg = <4>;
-                                       type = <PCA955X_TYPE_GPIO>;
-                               };
-
-                               gpio@5 {
-                                       reg = <5>;
-                                       type = <PCA955X_TYPE_GPIO>;
-                               };
-
-                               gpio@6 {
-                                       reg = <6>;
-                                       type = <PCA955X_TYPE_GPIO>;
-                               };
-
-                               gpio@7 {
-                                       reg = <7>;
-                                       type = <PCA955X_TYPE_GPIO>;
-                               };
                        };
                };
 
                                        default-state = "keep";
                                        type = <PCA955X_TYPE_LED>;
                                };
-
-                               gpio@2 {
-                                       reg = <2>;
-                                       type = <PCA955X_TYPE_GPIO>;
-                               };
-
-                               gpio@3 {
-                                       reg = <3>;
-                                       type = <PCA955X_TYPE_GPIO>;
-                               };
-
-                               gpio@4 {
-                                       reg = <4>;
-                                       type = <PCA955X_TYPE_GPIO>;
-                               };
-
-                               gpio@5 {
-                                       reg = <5>;
-                                       type = <PCA955X_TYPE_GPIO>;
-                               };
-
-                               gpio@6 {
-                                       reg = <6>;
-                                       type = <PCA955X_TYPE_GPIO>;
-                               };
-
-                               gpio@7 {
-                                       reg = <7>;
-                                       type = <PCA955X_TYPE_GPIO>;
-                               };
                        };
                };
 
                                        default-state = "keep";
                                        type = <PCA955X_TYPE_LED>;
                                };
-
-                               gpio@2 {
-                                       reg = <2>;
-                                       type = <PCA955X_TYPE_GPIO>;
-                               };
-
-                               gpio@3 {
-                                       reg = <3>;
-                                       type = <PCA955X_TYPE_GPIO>;
-                               };
-
-                               gpio@4 {
-                                       reg = <4>;
-                                       type = <PCA955X_TYPE_GPIO>;
-                               };
-
-                               gpio@5 {
-                                       reg = <5>;
-                                       type = <PCA955X_TYPE_GPIO>;
-                               };
-
-                               gpio@6 {
-                                       reg = <6>;
-                                       type = <PCA955X_TYPE_GPIO>;
-                               };
-
-                               gpio@7 {
-                                       reg = <7>;
-                                       type = <PCA955X_TYPE_GPIO>;
-                               };
                        };
                };
 
                                        default-state = "keep";
                                        type = <PCA955X_TYPE_LED>;
                                };
-
-                               gpio@2 {
-                                       reg = <2>;
-                                       type = <PCA955X_TYPE_GPIO>;
-                               };
-
-                               gpio@3 {
-                                       reg = <3>;
-                                       type = <PCA955X_TYPE_GPIO>;
-                               };
-
-                               gpio@4 {
-                                       reg = <4>;
-                                       type = <PCA955X_TYPE_GPIO>;
-                               };
-
-                               gpio@5 {
-                                       reg = <5>;
-                                       type = <PCA955X_TYPE_GPIO>;
-                               };
-
-                               gpio@6 {
-                                       reg = <6>;
-                                       type = <PCA955X_TYPE_GPIO>;
-                               };
-
-                               gpio@7 {
-                                       reg = <7>;
-                                       type = <PCA955X_TYPE_GPIO>;
-                               };
                        };
                };
        };
                                        default-state = "keep";
                                        type = <PCA955X_TYPE_LED>;
                                };
-
-                               gpio@2 {
-                                       reg = <2>;
-                                       type = <PCA955X_TYPE_GPIO>;
-                               };
-
-                               gpio@3 {
-                                       reg = <3>;
-                                       type = <PCA955X_TYPE_GPIO>;
-                               };
-
-                               gpio@4 {
-                                       reg = <4>;
-                                       type = <PCA955X_TYPE_GPIO>;
-                               };
-
-                               gpio@5 {
-                                       reg = <5>;
-                                       type = <PCA955X_TYPE_GPIO>;
-                               };
-
-                               gpio@6 {
-                                       reg = <6>;
-                                       type = <PCA955X_TYPE_GPIO>;
-                               };
-
-                               gpio@7 {
-                                       reg = <7>;
-                                       type = <PCA955X_TYPE_GPIO>;
-                               };
                        };
                };
 
                                        default-state = "keep";
                                        type = <PCA955X_TYPE_LED>;
                                };
-
-                               gpio@2 {
-                                       reg = <2>;
-                                       type = <PCA955X_TYPE_GPIO>;
-                               };
-
-                               gpio@3 {
-                                       reg = <3>;
-                                       type = <PCA955X_TYPE_GPIO>;
-                               };
-
-                               gpio@4 {
-                                       reg = <4>;
-                                       type = <PCA955X_TYPE_GPIO>;
-                               };
-
-                               gpio@5 {
-                                       reg = <5>;
-                                       type = <PCA955X_TYPE_GPIO>;
-                               };
-
-                               gpio@6 {
-                                       reg = <6>;
-                                       type = <PCA955X_TYPE_GPIO>;
-                               };
-
-                               gpio@7 {
-                                       reg = <7>;
-                                       type = <PCA955X_TYPE_GPIO>;
-                               };
                        };
                };
 
 
                                led@1 {
                                        label = "cablecard-c10-cxp-bot";
-                                       reg = <1>;
-                                       retain-state-shutdown;
-                                       default-state = "keep";
-                                       type = <PCA955X_TYPE_LED>;
-                               };
-
-                               gpio@2 {
-                                       reg = <2>;
-                                       type = <PCA955X_TYPE_GPIO>;
-                               };
-
-                               gpio@3 {
-                                       reg = <3>;
-                                       type = <PCA955X_TYPE_GPIO>;
-                               };
-
-                               gpio@4 {
-                                       reg = <4>;
-                                       type = <PCA955X_TYPE_GPIO>;
-                               };
-
-                               gpio@5 {
-                                       reg = <5>;
-                                       type = <PCA955X_TYPE_GPIO>;
-                               };
-
-                               gpio@6 {
-                                       reg = <6>;
-                                       type = <PCA955X_TYPE_GPIO>;
-                               };
-
-                               gpio@7 {
-                                       reg = <7>;
-                                       type = <PCA955X_TYPE_GPIO>;
+                                       reg = <1>;
+                                       retain-state-shutdown;
+                                       default-state = "keep";
+                                       type = <PCA955X_TYPE_LED>;
                                };
                        };
                };
                                        default-state = "keep";
                                        type = <PCA955X_TYPE_LED>;
                                };
-
-                               gpio@2 {
-                                       reg = <2>;
-                                       type = <PCA955X_TYPE_GPIO>;
-                               };
-
-                               gpio@3 {
-                                       reg = <3>;
-                                       type = <PCA955X_TYPE_GPIO>;
-                               };
-
-                               gpio@4 {
-                                       reg = <4>;
-                                       type = <PCA955X_TYPE_GPIO>;
-                               };
-
-                               gpio@5 {
-                                       reg = <5>;
-                                       type = <PCA955X_TYPE_GPIO>;
-                               };
-
-                               gpio@6 {
-                                       reg = <6>;
-                                       type = <PCA955X_TYPE_GPIO>;
-                               };
-
-                               gpio@7 {
-                                       reg = <7>;
-                                       type = <PCA955X_TYPE_GPIO>;
-                               };
                        };
                };
        };
                gpio-controller;
                #gpio-cells = <2>;
 
-               gpio@0 {
-                       reg = <0>;
-                       type = <PCA955X_TYPE_GPIO>;
-               };
-
                led@1 {
                        label = "pcieslot-c01";
                        reg = <1>;
                        default-state = "keep";
                        type = <PCA955X_TYPE_LED>;
                };
-
-               gpio@12 {
-                       reg = <12>;
-                       type = <PCA955X_TYPE_GPIO>;
-               };
-
-               gpio@13 {
-                       reg = <13>;
-                       type = <PCA955X_TYPE_GPIO>;
-               };
-
-               gpio@14 {
-                       reg = <14>;
-                       type = <PCA955X_TYPE_GPIO>;
-               };
-
-               gpio@15 {
-                       reg = <15>;
-                       type = <PCA955X_TYPE_GPIO>;
-               };
        };
 };
 
                        type = <PCA955X_TYPE_LED>;
                };
 
-               gpio@7 {
-                       reg = <7>;
-                       type = <PCA955X_TYPE_GPIO>;
-               };
-
                led@8 {
                        label = "vrm4";
                        reg = <8>;
                        type = <PCA955X_TYPE_LED>;
                };
 
-               gpio@7 {
-                       reg = <7>;
-                       type = <PCA955X_TYPE_GPIO>;
-               };
-
                led@8 {
                        label = "vrm0";
                        reg = <8>;
                compatible = "atmel,24c128";
                reg = <0x50>;
        };
+
+       i2c-switch@70 {
+               compatible = "nxp,pca9546";
+               reg = <0x70>;
+               #address-cells = <1>;
+               #size-cells = <0>;
+               status = "okay";
+               i2c-mux-idle-disconnect;
+
+               i2c8mux0chn0: i2c@0 {
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       reg = <0>;
+               };
+
+               i2c8mux0chn1: i2c@1 {
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       reg = <1>;
+               };
+       };
 };
 
 &i2c9 {
 };
 
 &i2c14 {
+       multi-master;
        status = "okay";
 
+       ibm-panel@62 {
+               compatible = "ibm,op-panel";
+               reg = <(0x62 | I2C_OWN_SLAVE_ADDRESS)>;
+       };
+
        i2c-switch@70 {
                compatible = "nxp,pca9546";
                reg = <0x70>;
                #address-cells = <1>;
                #size-cells = <0>;
                status = "okay";
-               i2c-mux-idle-disconnect;
+               idle-state = <1>;
 
                i2c14mux0chn0: i2c@0 {
                        #address-cells = <1>;
                                        default-state = "keep";
                                        type = <PCA955X_TYPE_LED>;
                                };
-
-                               gpio@14 {
-                                       reg = <14>;
-                                       type = <PCA955X_TYPE_GPIO>;
-                               };
-
-                               gpio@15 {
-                                       reg = <15>;
-                                       type = <PCA955X_TYPE_GPIO>;
-                               };
                        };
 
                        pca0: pca9552@61 {
                                        "presence-fan2",
                                        "presence-fan1",
                                        "presence-fan0";
-
-                               gpio@0 {
-                                       reg = <0>;
-                                       type = <PCA955X_TYPE_GPIO>;
-                               };
-
-                               gpio@1 {
-                                       reg = <1>;
-                                       type = <PCA955X_TYPE_GPIO>;
-                               };
-
-                               gpio@2 {
-                                       reg = <2>;
-                                       type = <PCA955X_TYPE_GPIO>;
-                               };
-
-                               gpio@3 {
-                                       reg = <3>;
-                                       type = <PCA955X_TYPE_GPIO>;
-                               };
-
-                               gpio@4 {
-                                       reg = <4>;
-                                       type = <PCA955X_TYPE_GPIO>;
-                               };
-
-                               gpio@5 {
-                                       reg = <5>;
-                                       type = <PCA955X_TYPE_GPIO>;
-                               };
-
-                               gpio@6 {
-                                       reg = <6>;
-                                       type = <PCA955X_TYPE_GPIO>;
-                               };
-
-                               gpio@7 {
-                                       reg = <7>;
-                                       type = <PCA955X_TYPE_GPIO>;
-                               };
-
-                               gpio@8 {
-                                       reg = <8>;
-                                       type = <PCA955X_TYPE_GPIO>;
-                               };
-
-                               gpio@9 {
-                                       reg = <9>;
-                                       type = <PCA955X_TYPE_GPIO>;
-                               };
-
-                               gpio@10 {
-                                       reg = <10>;
-                                       type = <PCA955X_TYPE_GPIO>;
-                               };
-
-                               gpio@11 {
-                                       reg = <11>;
-                                       type = <PCA955X_TYPE_GPIO>;
-                               };
-
-                               gpio@12 {
-                                       reg = <12>;
-                                       type = <PCA955X_TYPE_GPIO>;
-                               };
-
-                               gpio@13 {
-                                       reg = <13>;
-                                       type = <PCA955X_TYPE_GPIO>;
-                               };
-
-                               gpio@14 {
-                                       reg = <14>;
-                                       type = <PCA955X_TYPE_GPIO>;
-                               };
-
-                               gpio@15 {
-                                       reg = <15>;
-                                       type = <PCA955X_TYPE_GPIO>;
-                               };
                        };
                };
        };
 
 &i2c15 {
        status = "okay";
+
+       i2c-switch@70 {
+               compatible = "nxp,pca9546";
+               reg = <0x70>;
+               #address-cells = <1>;
+               #size-cells = <0>;
+               i2c-mux-idle-disconnect;
+
+               i2c15mux0chn0: i2c@0 {
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       reg = <0>;
+
+                       eeprom@53 {
+                               compatible = "atmel,24c64";
+                               reg = <0x53>;
+                       };
+               };
+
+               i2c15mux0chn1: i2c@1 {
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       reg = <1>;
+
+                       eeprom@53 {
+                               compatible = "atmel,24c64";
+                               reg = <0x53>;
+                       };
+               };
+
+               i2c15mux0chn2: i2c@2 {
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       reg = <2>;
+
+                       eeprom@53 {
+                               compatible = "atmel,24c64";
+                               reg = <0x53>;
+                       };
+               };
+
+               i2c15mux0chn3: i2c@3 {
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       reg = <3>;
+
+                       eeprom@53 {
+                               compatible = "atmel,24c64";
+                               reg = <0x53>;
+                       };
+               };
+       };
+
+       i2c-switch@71 {
+               compatible = "nxp,pca9546";
+               reg = <0x71>;
+               #address-cells = <1>;
+               #size-cells = <0>;
+               i2c-mux-idle-disconnect;
+
+               i2c15mux1chn0: i2c@0 {
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       reg = <0>;
+
+                       eeprom@53 {
+                               compatible = "atmel,24c64";
+                               reg = <0x53>;
+                       };
+               };
+
+               i2c15mux1chn1: i2c@1 {
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       reg = <1>;
+
+                       eeprom@53 {
+                               compatible = "atmel,24c64";
+                               reg = <0x53>;
+                       };
+               };
+
+               i2c15mux1chn2: i2c@2 {
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       reg = <2>;
+
+                       eeprom@53 {
+                               compatible = "atmel,24c64";
+                               reg = <0x53>;
+                       };
+               };
+
+               i2c15mux1chn3: i2c@3 {
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       reg = <3>;
+
+                       eeprom@53 {
+                               compatible = "atmel,24c64";
+                               reg = <0x53>;
+                       };
+               };
+       };
+
+       i2c-switch@72 {
+               compatible = "nxp,pca9546";
+               reg = <0x72>;
+               #address-cells = <1>;
+               #size-cells = <0>;
+               i2c-mux-idle-disconnect;
+
+               i2c15mux2chn0: i2c@0 {
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       reg = <0>;
+
+                       eeprom@53 {
+                               compatible = "atmel,24c64";
+                               reg = <0x53>;
+                       };
+               };
+
+               i2c15mux2chn1: i2c@1 {
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       reg = <1>;
+
+                       eeprom@53 {
+                               compatible = "atmel,24c64";
+                               reg = <0x53>;
+                       };
+               };
+
+               i2c15mux2chn2: i2c@2 {
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       reg = <2>;
+               };
+
+               i2c15mux2chn3: i2c@3 {
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       reg = <3>;
+               };
+       };
 };
 
 &ehci1 {
        memory-region = <&flash_memory>;
 };
 
-&kcs4 {
-       compatible = "openbmc,mctp-lpc";
-       status = "okay";
-};
-
 &mac2 {
        status = "okay";
        pinctrl-names = "default";
        status = "okay";
        memory-region = <&vga_memory>;
 };
+
+&kcs2 {
+       status = "okay";
+       aspeed,lpc-io-reg = <0xca8 0xcac>;
+};
+
+&kcs3 {
+       status = "okay";
+       aspeed,lpc-io-reg = <0xca2>;
+       aspeed,lpc-interrupts = <11 IRQ_TYPE_LEVEL_LOW>;
+};
index 6419c97..866f32c 100644 (file)
@@ -82,7 +82,7 @@
 
        chosen {
                stdout-path = &uart5;
-               bootargs = "console=ttyS4,115200n8";
+               bootargs = "console=ttyS4,115200n8 earlycon";
        };
 
        memory@80000000 {
                };
        };
 
-       gpio-keys {
-               compatible = "gpio-keys";
-
-               ps0-presence {
-                       label = "ps0-presence";
-                       gpios = <&gpio0 ASPEED_GPIO(S, 0) GPIO_ACTIVE_LOW>;
-                       linux,code = <ASPEED_GPIO(S, 0)>;
-               };
-
-               ps1-presence {
-                       label = "ps1-presence";
-                       gpios = <&gpio0 ASPEED_GPIO(S, 1) GPIO_ACTIVE_LOW>;
-                       linux,code = <ASPEED_GPIO(S, 1)>;
-               };
-
-               ps2-presence {
-                       label = "ps2-presence";
-                       gpios = <&gpio0 ASPEED_GPIO(S, 2) GPIO_ACTIVE_LOW>;
-                       linux,code = <ASPEED_GPIO(S, 2)>;
-               };
-
-               ps3-presence {
-                       label = "ps3-presence";
-                       gpios = <&gpio0 ASPEED_GPIO(S, 3) GPIO_ACTIVE_LOW>;
-                       linux,code = <ASPEED_GPIO(S, 3)>;
-               };
-       };
-
        i2c2mux: i2cmux {
                compatible = "i2c-mux-gpio";
                #address-cells = <1>;
                        linux,code = <11>;
                };
        };
+
+       iio-hwmon-battery {
+               compatible = "iio-hwmon";
+               io-channels = <&adc1 7>;
+       };
+};
+
+&adc1 {
+       status = "okay";
+       aspeed,int-vref-microvolt = <2500000>;
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_adc8_default &pinctrl_adc9_default
+               &pinctrl_adc10_default &pinctrl_adc11_default
+               &pinctrl_adc12_default &pinctrl_adc13_default
+               &pinctrl_adc14_default &pinctrl_adc15_default>;
 };
 
 &ehci1 {
        /*C0-C7*/       "","","","","","","","",
        /*D0-D7*/       "","","","","","","","",
        /*E0-E7*/       "","","","","","","","",
-       /*F0-F7*/       "","","","","","","","",
+       /*F0-F7*/       "","","","","","","factory-reset-toggle","",
        /*G0-G7*/       "","","","","","","","",
        /*H0-H7*/       "","bmc-ingraham0","rear-enc-id0","rear-enc-fault0","","","","",
-       /*I0-I7*/       "","","","","","","","",
+       /*I0-I7*/       "","","","","","","bmc-secure-boot","",
        /*J0-J7*/       "","","","","","","","",
        /*K0-K7*/       "","","","","","","","",
        /*L0-L7*/       "","","","","","","","",
        /*N0-N7*/       "","","","","","","","",
        /*O0-O7*/       "","","","usb-power","","","","",
        /*P0-P7*/       "","","","","pcieslot-power","","","",
-       /*Q0-Q7*/       "cfam-reset","","","","","","","",
+       /*Q0-Q7*/       "cfam-reset","","regulator-standby-faulted","","","","","",
        /*R0-R7*/       "bmc-tpm-reset","power-chassis-control","power-chassis-good","","","","","",
        /*S0-S7*/       "presence-ps0","presence-ps1","presence-ps2","presence-ps3",
                                "","","","",
        /*Y0-Y7*/       "","","","","","","","",
        /*Z0-Z7*/       "","","","","","","","";
 
-       pin_mclr_vpp {
-               gpio-hog;
-               gpios = <ASPEED_GPIO(P, 7) GPIO_OPEN_DRAIN>;
-               output-high;
-               line-name = "mclr_vpp";
-       };
-
        i2c3_mux_oe_n {
                gpio-hog;
                gpios = <ASPEED_GPIO(G, 6) GPIO_ACTIVE_LOW>;
                        "DASD_BP2_PRESENT_N",
                        "DASD_BP1_PRESENT_N",
                        "DASD_BP0_PRESENT_N";
-
-               gpio@0 {
-                       reg = <0>;
-                       type = <PCA955X_TYPE_GPIO>;
-               };
-
-               gpio@1 {
-                       reg = <1>;
-                       type = <PCA955X_TYPE_GPIO>;
-               };
-
-               gpio@2 {
-                       reg = <2>;
-                       type = <PCA955X_TYPE_GPIO>;
-               };
-
-               gpio@3 {
-                       reg = <3>;
-                       type = <PCA955X_TYPE_GPIO>;
-               };
-
-               gpio@4 {
-                       reg = <4>;
-                       type = <PCA955X_TYPE_GPIO>;
-               };
-
-               gpio@5 {
-                       reg = <5>;
-                       type = <PCA955X_TYPE_GPIO>;
-               };
-
-               gpio@6 {
-                       reg = <6>;
-                       type = <PCA955X_TYPE_GPIO>;
-               };
-
-               gpio@7 {
-                       reg = <7>;
-                       type = <PCA955X_TYPE_GPIO>;
-               };
        };
 };
 
                        "SLOT1_EXPANDER_PRSNT_N", "SLOT2_EXPANDER_PRSNT_N",
                        "SLOT3_EXPANDER_PRSNT_N", "SLOT4_EXPANDER_PRSNT_N",
                        "", "", "", "", "", "";
-
-               gpio@0 {
-                       reg = <0>;
-                       type = <PCA955X_TYPE_GPIO>;
-               };
-
-               gpio@1 {
-                       reg = <1>;
-                       type = <PCA955X_TYPE_GPIO>;
-               };
-
-               gpio@2 {
-                       reg = <2>;
-                       type = <PCA955X_TYPE_GPIO>;
-               };
-
-               gpio@3 {
-                       reg = <3>;
-                       type = <PCA955X_TYPE_GPIO>;
-               };
-
-               gpio@4 {
-                       reg = <4>;
-                       type = <PCA955X_TYPE_GPIO>;
-               };
-
-               gpio@5 {
-                       reg = <5>;
-                       type = <PCA955X_TYPE_GPIO>;
-               };
-
-               gpio@6 {
-                       reg = <6>;
-                       type = <PCA955X_TYPE_GPIO>;
-               };
-
-               gpio@7 {
-                       reg = <7>;
-                       type = <PCA955X_TYPE_GPIO>;
-               };
-
-               gpio@8 {
-                       reg = <8>;
-                       type = <PCA955X_TYPE_GPIO>;
-               };
-
-               gpio@9 {
-                       reg = <9>;
-                       type = <PCA955X_TYPE_GPIO>;
-               };
-
-               gpio@10 {
-                       reg = <10>;
-                       type = <PCA955X_TYPE_GPIO>;
-               };
-
-               gpio@11 {
-                       reg = <11>;
-                       type = <PCA955X_TYPE_GPIO>;
-               };
-
-               gpio@12 {
-                       reg = <12>;
-                       type = <PCA955X_TYPE_GPIO>;
-               };
-
-               gpio@13 {
-                       reg = <13>;
-                       type = <PCA955X_TYPE_GPIO>;
-               };
-
-               gpio@14 {
-                       reg = <14>;
-                       type = <PCA955X_TYPE_GPIO>;
-               };
-
-               gpio@15 {
-                       reg = <15>;
-                       type = <PCA955X_TYPE_GPIO>;
-               };
        };
 };
 
                reg = <0x4a>;
        };
 
+       pca9551@60 {
+               compatible = "nxp,pca9551";
+               reg = <0x60>;
+               #address-cells = <1>;
+               #size-cells = <0>;
+
+               gpio-controller;
+               #gpio-cells = <2>;
+
+               led@0 {
+                       label = "cablecard0-cxp-top";
+                       reg = <0>;
+                       retain-state-shutdown;
+                       default-state = "keep";
+                       type = <PCA955X_TYPE_LED>;
+               };
+
+               led@1 {
+                       label = "cablecard0-cxp-bot";
+                       reg = <1>;
+                       retain-state-shutdown;
+                       default-state = "keep";
+                       type = <PCA955X_TYPE_LED>;
+               };
+       };
+
        pca9546@70 {
                compatible = "nxp,pca9546";
                reg = <0x70>;
                reg = <0x49>;
        };
 
+       pca9551@60 {
+               compatible = "nxp,pca9551";
+               reg = <0x60>;
+               #address-cells = <1>;
+               #size-cells = <0>;
+
+               gpio-controller;
+               #gpio-cells = <2>;
+
+               led@0 {
+                       label = "cablecard3-cxp-top";
+                       reg = <0>;
+                       retain-state-shutdown;
+                       default-state = "keep";
+                       type = <PCA955X_TYPE_LED>;
+               };
+
+               led@1 {
+                       label = "cablecard3-cxp-bot";
+                       reg = <1>;
+                       retain-state-shutdown;
+                       default-state = "keep";
+                       type = <PCA955X_TYPE_LED>;
+               };
+       };
+
+       pca9551@61 {
+               compatible = "nxp,pca9551";
+               reg = <0x61>;
+               #address-cells = <1>;
+               #size-cells = <0>;
+
+               gpio-controller;
+               #gpio-cells = <2>;
+
+               led@0 {
+                       label = "cablecard4-cxp-top";
+                       reg = <0>;
+                       retain-state-shutdown;
+                       default-state = "keep";
+                       type = <PCA955X_TYPE_LED>;
+               };
+
+               led@1 {
+                       label = "cablecard4-cxp-bot";
+                       reg = <1>;
+                       retain-state-shutdown;
+                       default-state = "keep";
+                       type = <PCA955X_TYPE_LED>;
+               };
+       };
+
        pca9546@70 {
                compatible = "nxp,pca9546";
                reg = <0x70>;
        multi-master;
        status = "okay";
 
-       si7021-a20@40 {
-               compatible = "silabs,si7020";
-               reg = <0x40>;
-       };
-
-       tmp275@48 {
-               compatible = "ti,tmp275";
-               reg = <0x48>;
-       };
-
-       max: max31785@52 {
-               compatible = "maxim,max31785a";
-               reg = <0x52>;
+       pca9552@30 {
+               compatible = "ibm,pca9552";
+               reg = <0x30>;
                #address-cells = <1>;
                #size-cells = <0>;
 
-               fan0: fan@0 {
-                       compatible = "pmbus-fan";
+               gpio-controller;
+               #gpio-cells = <2>;
+
+               led@0 {
+                       label = "pcieslot0";
                        reg = <0>;
-                       tach-pulses = <2>;
+                       retain-state-shutdown;
+                       default-state = "keep";
+                       type = <PCA955X_TYPE_LED>;
                };
 
-               fan1: fan@1 {
-                       compatible = "pmbus-fan";
+               led@1 {
+                       label = "pcieslot1";
                        reg = <1>;
-                       tach-pulses = <2>;
+                       retain-state-shutdown;
+                       default-state = "keep";
+                       type = <PCA955X_TYPE_LED>;
                };
 
-               fan2: fan@2 {
-                       compatible = "pmbus-fan";
+               led@2 {
+                       label = "pcieslot2";
                        reg = <2>;
-                       tach-pulses = <2>;
+                       retain-state-shutdown;
+                       default-state = "keep";
+                       type = <PCA955X_TYPE_LED>;
                };
 
-               fan3: fan@3 {
-                       compatible = "pmbus-fan";
+               led@3 {
+                       label = "pcieslot3";
                        reg = <3>;
-                       tach-pulses = <2>;
+                       retain-state-shutdown;
+                       default-state = "keep";
+                       type = <PCA955X_TYPE_LED>;
                };
 
-               fan4: fan@4 {
-                       compatible = "pmbus-fan";
+               led@4 {
+                       label = "pcieslot4";
                        reg = <4>;
-                       tach-pulses = <2>;
+                       retain-state-shutdown;
+                       default-state = "keep";
+                       type = <PCA955X_TYPE_LED>;
                };
 
-               fan5: fan@5 {
-                       compatible = "pmbus-fan";
+               led@5 {
+                       label = "cpu1";
                        reg = <5>;
-                       tach-pulses = <2>;
+                       retain-state-shutdown;
+                       default-state = "keep";
+                       type = <PCA955X_TYPE_LED>;
+               };
+
+               led@6 {
+                       label = "cpu-vrm1";
+                       reg = <6>;
+                       retain-state-shutdown;
+                       default-state = "keep";
+                       type = <PCA955X_TYPE_LED>;
+               };
+
+               led@8 {
+                       label = "lcd-russel";
+                       reg = <8>;
+                       retain-state-shutdown;
+                       default-state = "keep";
+                       type = <PCA955X_TYPE_LED>;
                };
        };
 
-       pca0: pca9552@61 {
-               compatible = "nxp,pca9552";
-               reg = <0x61>;
+       pca9552@31 {
+               compatible = "ibm,pca9552";
+               reg = <0x31>;
                #address-cells = <1>;
                #size-cells = <0>;
 
                gpio-controller;
                #gpio-cells = <2>;
 
-               gpio@0 {
+               led@0 {
+                       label = "ddimm0";
                        reg = <0>;
-                       type = <PCA955X_TYPE_GPIO>;
+                       retain-state-shutdown;
+                       default-state = "keep";
+                       type = <PCA955X_TYPE_LED>;
                };
 
-               gpio@1 {
+               led@1 {
+                       label = "ddimm1";
                        reg = <1>;
-                       type = <PCA955X_TYPE_GPIO>;
+                       retain-state-shutdown;
+                       default-state = "keep";
+                       type = <PCA955X_TYPE_LED>;
                };
 
-               gpio@2 {
+               led@2 {
+                       label = "ddimm2";
                        reg = <2>;
-                       type = <PCA955X_TYPE_GPIO>;
+                       retain-state-shutdown;
+                       default-state = "keep";
+                       type = <PCA955X_TYPE_LED>;
                };
 
-               gpio@3 {
+               led@3 {
+                       label = "ddimm3";
                        reg = <3>;
-                       type = <PCA955X_TYPE_GPIO>;
+                       retain-state-shutdown;
+                       default-state = "keep";
+                       type = <PCA955X_TYPE_LED>;
                };
 
-               gpio@4 {
+               led@4 {
+                       label = "ddimm4";
                        reg = <4>;
-                       type = <PCA955X_TYPE_GPIO>;
+                       retain-state-shutdown;
+                       default-state = "keep";
+                       type = <PCA955X_TYPE_LED>;
                };
 
-               gpio@5 {
+               led@5 {
+                       label = "ddimm5";
                        reg = <5>;
-                       type = <PCA955X_TYPE_GPIO>;
+                       retain-state-shutdown;
+                       default-state = "keep";
+                       type = <PCA955X_TYPE_LED>;
                };
 
-               gpio@6 {
+               led@6 {
+                       label = "ddimm6";
                        reg = <6>;
-                       type = <PCA955X_TYPE_GPIO>;
+                       retain-state-shutdown;
+                       default-state = "keep";
+                       type = <PCA955X_TYPE_LED>;
                };
 
-               gpio@7 {
+               led@7 {
+                       label = "ddimm7";
                        reg = <7>;
-                       type = <PCA955X_TYPE_GPIO>;
+                       retain-state-shutdown;
+                       default-state = "keep";
+                       type = <PCA955X_TYPE_LED>;
                };
 
-               gpio@8 {
+               led@8 {
+                       label = "ddimm8";
                        reg = <8>;
-                       type = <PCA955X_TYPE_GPIO>;
+                       retain-state-shutdown;
+                       default-state = "keep";
+                       type = <PCA955X_TYPE_LED>;
                };
 
-               gpio@9 {
+               led@9 {
+                       label = "ddimm9";
                        reg = <9>;
-                       type = <PCA955X_TYPE_GPIO>;
+                       retain-state-shutdown;
+                       default-state = "keep";
+                       type = <PCA955X_TYPE_LED>;
                };
 
-               gpio@10 {
+               led@10 {
+                       label = "ddimm10";
                        reg = <10>;
-                       type = <PCA955X_TYPE_GPIO>;
+                       retain-state-shutdown;
+                       default-state = "keep";
+                       type = <PCA955X_TYPE_LED>;
                };
 
-               gpio@11 {
+               led@11 {
+                       label = "ddimm11";
                        reg = <11>;
-                       type = <PCA955X_TYPE_GPIO>;
+                       retain-state-shutdown;
+                       default-state = "keep";
+                       type = <PCA955X_TYPE_LED>;
                };
 
-               gpio@12 {
+               led@12 {
+                       label = "ddimm12";
                        reg = <12>;
-                       type = <PCA955X_TYPE_GPIO>;
+                       retain-state-shutdown;
+                       default-state = "keep";
+                       type = <PCA955X_TYPE_LED>;
                };
 
-               gpio@13 {
+               led@13 {
+                       label = "ddimm13";
                        reg = <13>;
-                       type = <PCA955X_TYPE_GPIO>;
+                       retain-state-shutdown;
+                       default-state = "keep";
+                       type = <PCA955X_TYPE_LED>;
                };
 
-               gpio@14 {
+               led@14 {
+                       label = "ddimm14";
                        reg = <14>;
-                       type = <PCA955X_TYPE_GPIO>;
+                       retain-state-shutdown;
+                       default-state = "keep";
+                       type = <PCA955X_TYPE_LED>;
                };
 
-               gpio@15 {
+               led@15 {
+                       label = "ddimm15";
                        reg = <15>;
-                       type = <PCA955X_TYPE_GPIO>;
+                       retain-state-shutdown;
+                       default-state = "keep";
+                       type = <PCA955X_TYPE_LED>;
                };
        };
 
-       ibm-panel@62 {
-               compatible = "ibm,op-panel";
-               reg = <(0x62 | I2C_OWN_SLAVE_ADDRESS)>;
-       };
-
-       dps: dps310@76 {
-               compatible = "infineon,dps310";
-               reg = <0x76>;
-               #io-channel-cells = <0>;
-       };
-
-       eeprom@50 {
-               compatible = "atmel,24c64";
-               reg = <0x50>;
-       };
-
-       eeprom@51 {
-               compatible = "atmel,24c64";
-               reg = <0x51>;
-       };
-};
-
-&i2c8 {
-       status = "okay";
-
-       ucd90320@11 {
-               compatible = "ti,ucd90320";
-               reg = <0x11>;
-       };
-
-       rtc@32 {
-               compatible = "epson,rx8900";
+       pca9552@32 {
+               compatible = "ibm,pca9552";
                reg = <0x32>;
-       };
-
-       tmp275@48 {
-               compatible = "ti,tmp275";
-               reg = <0x48>;
-       };
-
-       tmp275@4a {
-               compatible = "ti,tmp275";
-               reg = <0x4a>;
-       };
-
-       eeprom@50 {
-               compatible = "atmel,24c64";
-               reg = <0x50>;
-       };
-
-       eeprom@51 {
-               compatible = "atmel,24c64";
-               reg = <0x51>;
-       };
-
-       pca_pres2: pca9552@61 {
-               compatible = "nxp,pca9552";
-               reg = <0x61>;
                #address-cells = <1>;
                #size-cells = <0>;
+
                gpio-controller;
                #gpio-cells = <2>;
 
-               gpio-line-names =
-                       "SLOT6_PRSNT_EN_RSVD", "SLOT7_PRSNT_EN_RSVD",
-                       "SLOT8_PRSNT_EN_RSVD", "SLOT9_PRSNT_EN_RSVD",
-                       "SLOT10_PRSNT_EN_RSVD", "SLOT11_PRSNT_EN_RSVD",
-                       "SLOT6_EXPANDER_PRSNT_N", "SLOT7_EXPANDER_PRSNT_N",
-                       "SLOT8_EXPANDER_PRSNT_N", "SLOT9_EXPANDER_PRSNT_N",
-                       "SLOT10_EXPANDER_PRSNT_N", "SLOT11_EXPANDER_PRSNT_N",
-                       "", "", "", "";
-
-               gpio@0 {
+               led@0 {
+                       label = "ddimm16";
                        reg = <0>;
-                       type = <PCA955X_TYPE_GPIO>;
+                       retain-state-shutdown;
+                       default-state = "keep";
+                       type = <PCA955X_TYPE_LED>;
                };
 
-               gpio@1 {
+               led@1 {
+                       label = "ddimm17";
                        reg = <1>;
-                       type = <PCA955X_TYPE_GPIO>;
+                       retain-state-shutdown;
+                       default-state = "keep";
+                       type = <PCA955X_TYPE_LED>;
                };
 
-               gpio@2 {
+               led@2 {
+                       label = "ddimm18";
                        reg = <2>;
-                       type = <PCA955X_TYPE_GPIO>;
+                       retain-state-shutdown;
+                       default-state = "keep";
+                       type = <PCA955X_TYPE_LED>;
                };
 
-               gpio@3 {
+               led@3 {
+                       label = "ddimm19";
                        reg = <3>;
-                       type = <PCA955X_TYPE_GPIO>;
+                       retain-state-shutdown;
+                       default-state = "keep";
+                       type = <PCA955X_TYPE_LED>;
                };
 
-               gpio@4 {
+               led@4 {
+                       label = "ddimm20";
                        reg = <4>;
-                       type = <PCA955X_TYPE_GPIO>;
+                       retain-state-shutdown;
+                       default-state = "keep";
+                       type = <PCA955X_TYPE_LED>;
                };
 
-               gpio@5 {
+               led@5 {
+                       label = "ddimm21";
                        reg = <5>;
-                       type = <PCA955X_TYPE_GPIO>;
+                       retain-state-shutdown;
+                       default-state = "keep";
+                       type = <PCA955X_TYPE_LED>;
                };
 
-               gpio@6 {
+               led@6 {
+                       label = "ddimm22";
                        reg = <6>;
-                       type = <PCA955X_TYPE_GPIO>;
+                       retain-state-shutdown;
+                       default-state = "keep";
+                       type = <PCA955X_TYPE_LED>;
                };
 
-               gpio@7 {
+               led@7 {
+                       label = "ddimm23";
                        reg = <7>;
-                       type = <PCA955X_TYPE_GPIO>;
+                       retain-state-shutdown;
+                       default-state = "keep";
+                       type = <PCA955X_TYPE_LED>;
                };
 
-               gpio@8 {
+               led@8 {
+                       label = "ddimm24";
                        reg = <8>;
-                       type = <PCA955X_TYPE_GPIO>;
+                       retain-state-shutdown;
+                       default-state = "keep";
+                       type = <PCA955X_TYPE_LED>;
                };
 
-               gpio@9 {
+               led@9 {
+                       label = "ddimm25";
                        reg = <9>;
-                       type = <PCA955X_TYPE_GPIO>;
+                       retain-state-shutdown;
+                       default-state = "keep";
+                       type = <PCA955X_TYPE_LED>;
                };
 
-               gpio@10 {
+               led@10 {
+                       label = "ddimm26";
                        reg = <10>;
-                       type = <PCA955X_TYPE_GPIO>;
+                       retain-state-shutdown;
+                       default-state = "keep";
+                       type = <PCA955X_TYPE_LED>;
                };
 
-               gpio@11 {
+               led@11 {
+                       label = "ddimm27";
                        reg = <11>;
-                       type = <PCA955X_TYPE_GPIO>;
+                       retain-state-shutdown;
+                       default-state = "keep";
+                       type = <PCA955X_TYPE_LED>;
                };
 
-               gpio@12 {
+               led@12 {
+                       label = "ddimm28";
                        reg = <12>;
-                       type = <PCA955X_TYPE_GPIO>;
+                       retain-state-shutdown;
+                       default-state = "keep";
+                       type = <PCA955X_TYPE_LED>;
                };
 
-               gpio@13 {
+               led@13 {
+                       label = "ddimm29";
                        reg = <13>;
-                       type = <PCA955X_TYPE_GPIO>;
+                       retain-state-shutdown;
+                       default-state = "keep";
+                       type = <PCA955X_TYPE_LED>;
                };
 
-               gpio@14 {
+               led@14 {
+                       label = "ddimm30";
                        reg = <14>;
-                       type = <PCA955X_TYPE_GPIO>;
+                       retain-state-shutdown;
+                       default-state = "keep";
+                       type = <PCA955X_TYPE_LED>;
                };
 
-               gpio@15 {
+               led@15 {
+                       label = "ddimm31";
                        reg = <15>;
-                       type = <PCA955X_TYPE_GPIO>;
+                       retain-state-shutdown;
+                       default-state = "keep";
+                       type = <PCA955X_TYPE_LED>;
                };
        };
 
-};
+       pca9552@33 {
+               compatible = "ibm,pca9552";
+               reg = <0x33>;
+               #address-cells = <1>;
+               #size-cells = <0>;
 
-&i2c9 {
-       status = "okay";
+               gpio-controller;
+               #gpio-cells = <2>;
 
-       tmp423a@4c {
-               compatible = "ti,tmp423";
-               reg = <0x4c>;
-       };
+               led@0 {
+                       label = "planar";
+                       reg = <0>;
+                       retain-state-shutdown;
+                       default-state = "keep";
+                       type = <PCA955X_TYPE_LED>;
+               };
 
-       tmp423b@4d {
+               led@1 {
+                       label = "cpu0";
+                       reg = <1>;
+                       retain-state-shutdown;
+                       default-state = "keep";
+                       type = <PCA955X_TYPE_LED>;
+               };
+
+               led@3 {
+                       label = "dasd-pyramid0";
+                       reg = <3>;
+                       retain-state-shutdown;
+                       default-state = "keep";
+                       type = <PCA955X_TYPE_LED>;
+               };
+
+               led@4 {
+                       label = "dasd-pyramid1";
+                       reg = <4>;
+                       retain-state-shutdown;
+                       default-state = "keep";
+                       type = <PCA955X_TYPE_LED>;
+               };
+
+               led@5 {
+                       label = "dasd-pyramid2";
+                       reg = <5>;
+                       retain-state-shutdown;
+                       default-state = "keep";
+                       type = <PCA955X_TYPE_LED>;
+               };
+
+               led@6 {
+                       label = "cpu0-vrm0";
+                       reg = <6>;
+                       retain-state-shutdown;
+                       default-state = "keep";
+                       type = <PCA955X_TYPE_LED>;
+               };
+
+               led@7 {
+                       label = "rtc-battery";
+                       reg = <7>;
+                       retain-state-shutdown;
+                       default-state = "keep";
+                       type = <PCA955X_TYPE_LED>;
+               };
+
+               led@8 {
+                       label = "base-blyth";
+                       reg = <8>;
+                       retain-state-shutdown;
+                       default-state = "keep";
+                       type = <PCA955X_TYPE_LED>;
+               };
+
+               led@9 {
+                       label = "pcieslot6";
+                       reg = <9>;
+                       retain-state-shutdown;
+                       default-state = "keep";
+                       type = <PCA955X_TYPE_LED>;
+               };
+
+               led@10 {
+                       label = "pcieslot7";
+                       reg = <10>;
+                       retain-state-shutdown;
+                       default-state = "keep";
+                       type = <PCA955X_TYPE_LED>;
+               };
+
+               led@11 {
+                       label = "pcieslot8";
+                       reg = <11>;
+                       retain-state-shutdown;
+                       default-state = "keep";
+                       type = <PCA955X_TYPE_LED>;
+               };
+
+               led@12 {
+                       label = "pcieslot9";
+                       reg = <12>;
+                       retain-state-shutdown;
+                       default-state = "keep";
+                       type = <PCA955X_TYPE_LED>;
+               };
+
+               led@13 {
+                       label = "pcieslot10";
+                       reg = <13>;
+                       retain-state-shutdown;
+                       default-state = "keep";
+                       type = <PCA955X_TYPE_LED>;
+               };
+
+               led@14 {
+                       label = "pcieslot11";
+                       reg = <14>;
+                       retain-state-shutdown;
+                       default-state = "keep";
+                       type = <PCA955X_TYPE_LED>;
+               };
+
+               led@15 {
+                       label = "tpm-wilson";
+                       reg = <15>;
+                       retain-state-shutdown;
+                       default-state = "keep";
+                       type = <PCA955X_TYPE_LED>;
+               };
+       };
+
+       si7021-a20@40 {
+               compatible = "silabs,si7020";
+               reg = <0x40>;
+       };
+
+       tmp275@48 {
+               compatible = "ti,tmp275";
+               reg = <0x48>;
+       };
+
+       max: max31785@52 {
+               compatible = "maxim,max31785a";
+               reg = <0x52>;
+               #address-cells = <1>;
+               #size-cells = <0>;
+
+               fan0: fan@0 {
+                       compatible = "pmbus-fan";
+                       reg = <0>;
+                       tach-pulses = <2>;
+               };
+
+               fan1: fan@1 {
+                       compatible = "pmbus-fan";
+                       reg = <1>;
+                       tach-pulses = <2>;
+               };
+
+               fan2: fan@2 {
+                       compatible = "pmbus-fan";
+                       reg = <2>;
+                       tach-pulses = <2>;
+               };
+
+               fan3: fan@3 {
+                       compatible = "pmbus-fan";
+                       reg = <3>;
+                       tach-pulses = <2>;
+               };
+
+               fan4: fan@4 {
+                       compatible = "pmbus-fan";
+                       reg = <4>;
+                       tach-pulses = <2>;
+               };
+
+               fan5: fan@5 {
+                       compatible = "pmbus-fan";
+                       reg = <5>;
+                       tach-pulses = <2>;
+               };
+       };
+
+       pca9551@60 {
+               compatible = "nxp,pca9551";
+               reg = <0x60>;
+               #address-cells = <1>;
+               #size-cells = <0>;
+
+               gpio-controller;
+               #gpio-cells = <2>;
+
+               led@0 {
+                       label = "front-sys-id0";
+                       reg = <0>;
+                       retain-state-shutdown;
+                       default-state = "keep";
+                       type = <PCA955X_TYPE_LED>;
+               };
+
+               led@1 {
+                       label = "front-check-log0";
+                       reg = <1>;
+                       retain-state-shutdown;
+                       default-state = "keep";
+                       type = <PCA955X_TYPE_LED>;
+               };
+
+               led@2 {
+                       label = "front-enc-fault1";
+                       reg = <2>;
+                       retain-state-shutdown;
+                       default-state = "keep";
+                       type = <PCA955X_TYPE_LED>;
+               };
+
+               led@3 {
+                       label = "front-sys-pwron0";
+                       reg = <3>;
+                       retain-state-shutdown;
+                       default-state = "keep";
+                       type = <PCA955X_TYPE_LED>;
+               };
+       };
+
+       pca0: pca9552@61 {
+               compatible = "nxp,pca9552";
+               reg = <0x61>;
+               #address-cells = <1>;
+               #size-cells = <0>;
+
+               gpio-controller;
+               #gpio-cells = <2>;
+
+               led@0 {
+                       label = "fan0";
+                       reg = <0>;
+                       retain-state-shutdown;
+                       default-state = "keep";
+                       type = <PCA955X_TYPE_LED>;
+               };
+
+               led@1 {
+                       label = "fan1";
+                       reg = <1>;
+                       retain-state-shutdown;
+                       default-state = "keep";
+                       type = <PCA955X_TYPE_LED>;
+               };
+
+               led@2 {
+                       label = "fan2";
+                       reg = <2>;
+                       retain-state-shutdown;
+                       default-state = "keep";
+                       type = <PCA955X_TYPE_LED>;
+               };
+
+               led@3 {
+                       label = "fan3";
+                       reg = <3>;
+                       retain-state-shutdown;
+                       default-state = "keep";
+                       type = <PCA955X_TYPE_LED>;
+               };
+
+               led@4 {
+                       label = "fan4";
+                       reg = <4>;
+                       retain-state-shutdown;
+                       default-state = "keep";
+                       type = <PCA955X_TYPE_LED>;
+               };
+
+               led@5 {
+                       label = "fan5";
+                       reg = <5>;
+                       retain-state-shutdown;
+                       default-state = "keep";
+                       type = <PCA955X_TYPE_LED>;
+               };
+       };
+
+       ibm-panel@62 {
+               compatible = "ibm,op-panel";
+               reg = <(0x62 | I2C_OWN_SLAVE_ADDRESS)>;
+       };
+
+       dps: dps310@76 {
+               compatible = "infineon,dps310";
+               reg = <0x76>;
+               #io-channel-cells = <0>;
+       };
+
+       eeprom@50 {
+               compatible = "atmel,24c64";
+               reg = <0x50>;
+       };
+
+       eeprom@51 {
+               compatible = "atmel,24c64";
+               reg = <0x51>;
+       };
+};
+
+&i2c8 {
+       status = "okay";
+
+       ucd90320@11 {
+               compatible = "ti,ucd90320";
+               reg = <0x11>;
+       };
+
+       rtc@32 {
+               compatible = "epson,rx8900";
+               reg = <0x32>;
+       };
+
+       tmp275@48 {
+               compatible = "ti,tmp275";
+               reg = <0x48>;
+       };
+
+       tmp275@4a {
+               compatible = "ti,tmp275";
+               reg = <0x4a>;
+       };
+
+       eeprom@50 {
+               compatible = "atmel,24c64";
+               reg = <0x50>;
+       };
+
+       eeprom@51 {
+               compatible = "atmel,24c64";
+               reg = <0x51>;
+       };
+
+       pca_pres3: pca9552@60 {
+               compatible = "nxp,pca9552";
+               reg = <0x60>;
+               #address-cells = <1>;
+               #size-cells = <0>;
+               gpio-controller;
+               #gpio-cells = <2>;
+
+               gpio-line-names =
+                       "", "", "", "", "", "", "", "",
+                       "", "", "", "", "", "", "power-config-full-load", "";
+       };
+
+       pca_pres2: pca9552@61 {
+               compatible = "nxp,pca9552";
+               reg = <0x61>;
+               #address-cells = <1>;
+               #size-cells = <0>;
+               gpio-controller;
+               #gpio-cells = <2>;
+
+               gpio-line-names =
+                       "SLOT6_PRSNT_EN_RSVD", "SLOT7_PRSNT_EN_RSVD",
+                       "SLOT8_PRSNT_EN_RSVD", "SLOT9_PRSNT_EN_RSVD",
+                       "SLOT10_PRSNT_EN_RSVD", "SLOT11_PRSNT_EN_RSVD",
+                       "SLOT6_EXPANDER_PRSNT_N", "SLOT7_EXPANDER_PRSNT_N",
+                       "SLOT8_EXPANDER_PRSNT_N", "SLOT9_EXPANDER_PRSNT_N",
+                       "SLOT10_EXPANDER_PRSNT_N", "SLOT11_EXPANDER_PRSNT_N",
+                       "", "", "", "";
+       };
+
+};
+
+&i2c9 {
+       status = "okay";
+
+       tmp423a@4c {
+               compatible = "ti,tmp423";
+               reg = <0x4c>;
+       };
+
+       tmp423b@4d {
                compatible = "ti,tmp423";
                reg = <0x4d>;
        };
                reg = <0x49>;
        };
 
+       pca9551@60 {
+               compatible = "nxp,pca9551";
+               reg = <0x60>;
+               #address-cells = <1>;
+               #size-cells = <0>;
+
+               gpio-controller;
+               #gpio-cells = <2>;
+
+               led@0 {
+                       label = "cablecard10-cxp-top";
+                       reg = <0>;
+                       retain-state-shutdown;
+                       default-state = "keep";
+                       type = <PCA955X_TYPE_LED>;
+               };
+
+               led@1 {
+                       label = "cablecard10-cxp-bot";
+                       reg = <1>;
+                       retain-state-shutdown;
+                       default-state = "keep";
+                       type = <PCA955X_TYPE_LED>;
+               };
+       };
+
        pca9546@70 {
                compatible = "nxp,pca9546";
                reg = <0x70>;
 
 &i2c12 {
        status = "okay";
+
+       eeprom@50 {
+               compatible = "atmel,24c64";
+               reg = <0x50>;
+       };
 };
 
 &i2c13 {
                compatible = "atmel,24c64";
                reg = <0x50>;
        };
+
+       pca9552@60 {
+               compatible = "nxp,pca9552";
+               reg = <0x60>;
+               #address-cells = <1>;
+               #size-cells = <0>;
+
+               gpio-controller;
+               #gpio-cells = <2>;
+
+               led@0 {
+                       label = "nvme0";
+                       reg = <0>;
+                       retain-state-shutdown;
+                       default-state = "keep";
+                       type = <PCA955X_TYPE_LED>;
+               };
+
+               led@1 {
+                       label = "nvme1";
+                       reg = <1>;
+                       retain-state-shutdown;
+                       default-state = "keep";
+                       type = <PCA955X_TYPE_LED>;
+               };
+
+               led@2 {
+                       label = "nvme2";
+                       reg = <2>;
+                       retain-state-shutdown;
+                       default-state = "keep";
+                       type = <PCA955X_TYPE_LED>;
+               };
+
+               led@3 {
+                       label = "nvme3";
+                       reg = <3>;
+                       retain-state-shutdown;
+                       default-state = "keep";
+                       type = <PCA955X_TYPE_LED>;
+               };
+
+               led@4 {
+                       label = "nvme4";
+                       reg = <4>;
+                       retain-state-shutdown;
+                       default-state = "keep";
+                       type = <PCA955X_TYPE_LED>;
+               };
+
+               led@5 {
+                       label = "nvme5";
+                       reg = <5>;
+                       retain-state-shutdown;
+                       default-state = "keep";
+                       type = <PCA955X_TYPE_LED>;
+               };
+
+               led@6 {
+                       label = "nvme6";
+                       reg = <6>;
+                       retain-state-shutdown;
+                       default-state = "keep";
+                       type = <PCA955X_TYPE_LED>;
+               };
+
+               led@7 {
+                       label = "nvme7";
+                       reg = <7>;
+                       retain-state-shutdown;
+                       default-state = "keep";
+                       type = <PCA955X_TYPE_LED>;
+               };
+       };
 };
 
 &i2c14 {
                compatible = "atmel,24c64";
                reg = <0x50>;
        };
+
+       pca9552@60 {
+               compatible = "nxp,pca9552";
+               reg = <0x60>;
+               #address-cells = <1>;
+               #size-cells = <0>;
+
+               gpio-controller;
+               #gpio-cells = <2>;
+
+               led@0 {
+                       label = "nvme8";
+                       reg = <0>;
+                       retain-state-shutdown;
+                       default-state = "keep";
+                       type = <PCA955X_TYPE_LED>;
+               };
+
+               led@1 {
+                       label = "nvme9";
+                       reg = <1>;
+                       retain-state-shutdown;
+                       default-state = "keep";
+                       type = <PCA955X_TYPE_LED>;
+               };
+
+               led@2 {
+                       label = "nvme10";
+                       reg = <2>;
+                       retain-state-shutdown;
+                       default-state = "keep";
+                       type = <PCA955X_TYPE_LED>;
+               };
+
+               led@3 {
+                       label = "nvme11";
+                       reg = <3>;
+                       retain-state-shutdown;
+                       default-state = "keep";
+                       type = <PCA955X_TYPE_LED>;
+               };
+
+               led@4 {
+                       label = "nvme12";
+                       reg = <4>;
+                       retain-state-shutdown;
+                       default-state = "keep";
+                       type = <PCA955X_TYPE_LED>;
+               };
+
+               led@5 {
+                       label = "nvme13";
+                       reg = <5>;
+                       retain-state-shutdown;
+                       default-state = "keep";
+                       type = <PCA955X_TYPE_LED>;
+               };
+
+               led@6 {
+                       label = "nvme14";
+                       reg = <6>;
+                       retain-state-shutdown;
+                       default-state = "keep";
+                       type = <PCA955X_TYPE_LED>;
+               };
+
+               led@7 {
+                       label = "nvme15";
+                       reg = <7>;
+                       retain-state-shutdown;
+                       default-state = "keep";
+                       type = <PCA955X_TYPE_LED>;
+               };
+       };
 };
 
 &i2c15 {
                compatible = "atmel,24c64";
                reg = <0x50>;
        };
+
+       pca9552@60 {
+               compatible = "nxp,pca9552";
+               reg = <0x60>;
+               #address-cells = <1>;
+               #size-cells = <0>;
+
+               gpio-controller;
+               #gpio-cells = <2>;
+
+               led@0 {
+                       label = "nvme16";
+                       reg = <0>;
+                       retain-state-shutdown;
+                       default-state = "keep";
+                       type = <PCA955X_TYPE_LED>;
+               };
+
+               led@1 {
+                       label = "nvme17";
+                       reg = <1>;
+                       retain-state-shutdown;
+                       default-state = "keep";
+                       type = <PCA955X_TYPE_LED>;
+               };
+
+               led@2 {
+                       label = "nvme18";
+                       reg = <2>;
+                       retain-state-shutdown;
+                       default-state = "keep";
+                       type = <PCA955X_TYPE_LED>;
+               };
+
+               led@3 {
+                       label = "nvme19";
+                       reg = <3>;
+                       retain-state-shutdown;
+                       default-state = "keep";
+                       type = <PCA955X_TYPE_LED>;
+               };
+
+               led@4 {
+                       label = "nvme20";
+                       reg = <4>;
+                       retain-state-shutdown;
+                       default-state = "keep";
+                       type = <PCA955X_TYPE_LED>;
+               };
+
+               led@5 {
+                       label = "nvme21";
+                       reg = <5>;
+                       retain-state-shutdown;
+                       default-state = "keep";
+                       type = <PCA955X_TYPE_LED>;
+               };
+
+               led@6 {
+                       label = "nvme22";
+                       reg = <6>;
+                       retain-state-shutdown;
+                       default-state = "keep";
+                       type = <PCA955X_TYPE_LED>;
+               };
+
+               led@7 {
+                       label = "nvme23";
+                       reg = <7>;
+                       retain-state-shutdown;
+                       default-state = "keep";
+                       type = <PCA955X_TYPE_LED>;
+               };
+       };
 };
 
 &vuart1 {
        status = "okay";
        memory-region = <&vga_memory>;
 };
+
+&kcs2 {
+       status = "okay";
+       aspeed,lpc-io-reg = <0xca8 0xcac>;
+};
+
+&kcs3 {
+       status = "okay";
+       aspeed,lpc-io-reg = <0xca2>;
+       aspeed,lpc-interrupts = <11 IRQ_TYPE_LEVEL_LOW>;
+};
index 1752f32..60a39ea 100644 (file)
@@ -3,6 +3,7 @@
 #include "aspeed-g5.dtsi"
 #include <dt-bindings/gpio/aspeed-gpio.h>
 #include <dt-bindings/leds/leds-pca955x.h>
+#include <dt-bindings/interrupt-controller/irq.h>
 
 / {
        model = "FP5280G2 BMC";
                label = "bmc";
                m25p,fast-read;
                spi-max-frequency = <50000000>;
-#include "openbmc-flash-layout.dtsi"
+#include "openbmc-flash-layout-64.dtsi"
        };
 };
 
 
 };
 
+&kcs3 {
+       status = "okay";
+       aspeed,lpc-io-reg = <0xca2>;
+       aspeed,lpc-interrupts = <11 IRQ_TYPE_LEVEL_LOW>;
+};
+
 #include "ibm-power9-dual.dtsi"
diff --git a/arch/arm/boot/dts/aspeed-bmc-inventec-transformers.dts b/arch/arm/boot/dts/aspeed-bmc-inventec-transformers.dts
new file mode 100644 (file)
index 0000000..caf6665
--- /dev/null
@@ -0,0 +1,328 @@
+// SPDX-License-Identifier: GPL-2.0-or-later
+// Copyright 2021 Inventec Corp.
+
+/dts-v1/;
+
+#include "aspeed-g6.dtsi"
+#include "aspeed-g6-pinctrl.dtsi"
+#include <dt-bindings/i2c/i2c.h>
+#include <dt-bindings/gpio/aspeed-gpio.h>
+
+/ {
+       model = "TRANSFORMERS BMC";
+       compatible = "inventec,transformer-bmc", "aspeed,ast2600";
+
+       aliases {
+               serial4 = &uart5;
+       };
+
+       chosen {
+               stdout-path = &uart5;
+               bootargs = "console=ttyS4,115200n8";
+       };
+
+       memory@80000000 {
+               device_type = "memory";
+               reg = <0x80000000 0x80000000>;
+       };
+
+       leds {
+               compatible = "gpio-leds";
+
+               // UID led
+               uid {
+                       label = "UID_LED";
+                       gpios = <&gpio0 ASPEED_GPIO(X, 0) GPIO_ACTIVE_LOW>;
+               };
+
+               // Heart beat led
+               heartbeat {
+                       label = "HB_LED";
+                       gpios = <&gpio0 ASPEED_GPIO(P, 7) GPIO_ACTIVE_LOW>;
+               };
+       };
+};
+
+&mdio0 {
+       status = "okay";
+
+       ethphy0: ethernet-phy@0 {
+               compatible = "ethernet-phy-ieee802.3-c22";
+               reg = <1>;
+       };
+};
+
+&mac3 {
+       status = "okay";
+       phy-mode = "rgmii";
+       phy-handle = <&ethphy0>;
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_rgmii4_default>;
+};
+
+&fmc {
+       status = "okay";
+
+       flash@0 {
+               status = "okay";
+               m25p,fast-read;
+               label = "bmc";
+               spi-max-frequency = <33000000>;
+               spi-tx-bus-width = <2>;
+               spi-rx-bus-width = <2>;
+#include "openbmc-flash-layout.dtsi"
+       };
+
+       flash@1 {
+               status = "okay";
+               m25p,fast-read;
+               label = "bmc2";
+               spi-max-frequency = <33000000>;
+               spi-tx-bus-width = <2>;
+               spi-rx-bus-width = <2>;
+       };
+};
+
+&spi1 {
+       status = "okay";
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_spi1_default>;
+
+       flash@0 {
+               status = "okay";
+               m25p,fast-read;
+               label = "bios";
+               spi-max-frequency = <33000000>;
+               spi-tx-bus-width = <1>;
+               spi-rx-bus-width = <1>;
+       };
+};
+
+&wdt1 {
+       status = "okay";
+};
+
+&uart1 {
+       status = "okay";
+};
+
+&uart5 {
+       status = "okay";
+};
+
+&i2c0 {
+       status = "okay";
+
+       //Set bmc' slave address;
+       bmc_slave@10 {
+               compatible = "ipmb-dev";
+               reg = <(0x10 | I2C_OWN_SLAVE_ADDRESS)>;
+               i2c-protocol;
+       };
+};
+
+&i2c2 {
+       status = "okay";
+};
+
+&i2c3 {
+       // FRU AT24C512C-SSHM-T
+       status = "okay";
+       eeprom@50 {
+               compatible = "atmel,24c512";
+               reg = <0x50>;
+               pagesize = <128>;
+       };
+};
+
+&i2c5 {
+       status = "okay";
+};
+
+&i2c6 {
+       status = "okay";
+
+       tmp75@49 {
+               compatible = "ti,tmp75";
+               reg = <0x49>;
+       };
+
+       tmp75@4f {
+               compatible = "ti,tmp75";
+               reg = <0x4f>;
+       };
+
+       tmp468@48 {
+               compatible = "ti,tmp468";
+               reg = <0x48>;
+       };
+};
+
+&i2c7 {
+       status = "okay";
+       adm1278@40 {
+               compatible = "adi,adm1278";
+               reg = <0x40>;
+       };
+};
+
+
+&i2c8 {
+       // FRU AT24C512C-SSHM-T
+       status = "okay";
+
+       eeprom@51 {
+               compatible = "atmel,24c512";
+               reg = <0x51>;
+               pagesize = <128>;
+       };
+
+       eeprom@53 {
+               compatible = "atmel,24c512";
+               reg = <0x53>;
+               pagesize = <128>;
+       };
+};
+
+&i2c9 {
+       // M.2
+       status = "okay";
+};
+
+&i2c10 {
+       // I2C EXPANDER
+       status = "okay";
+
+       i2c-switch@71 {
+               compatible = "nxp,pca9544";
+               #address-cells = <1>;
+               #size-cells = <0>;
+               reg = <0x71>;
+       };
+
+       i2c-switch@73 {
+               compatible = "nxp,pca9544";
+               #address-cells = <1>;
+               #size-cells = <0>;
+               reg = <0x73>;
+       };
+};
+
+&i2c11 {
+       // I2C EXPANDER
+       status = "okay";
+
+       i2c-switch@70 {
+               compatible = "nxp,pca9544";
+               #address-cells = <1>;
+               #size-cells = <0>;
+               reg = <0x70>;
+
+               pcie_eeprom_riser1: i2c@0 {
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       reg = <0>;
+
+                       eeprom@55 {
+                               compatible = "atmel,24c512";
+                               reg = <0x55>;
+                               pagesize = <128>;
+                       };
+               };
+
+               pcie_eeprom_riser2: i2c@1 {
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       reg = <1>;
+
+                       eeprom@55 {
+                               compatible = "atmel,24c512";
+                               reg = <0x55>;
+                               pagesize = <128>;
+                       };
+               };
+
+               pcie_eeprom_riser3: i2c@2 {
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       reg = <2>;
+
+                       eeprom@55 {
+                               compatible = "atmel,24c512";
+                               reg = <0x55>;
+                               pagesize = <128>;
+                       };
+               };
+       };
+};
+
+&i2c12 {
+       status = "okay";
+
+       psu0:psu0@58 {
+               compatible = "pmbus";
+               reg = <0x58>;
+       };
+};
+
+&gpio0 {
+       status = "okay";
+       gpio-line-names =
+       /*A0-A7*/   "","","","","","","","",
+       /*B0-B7*/   "presence-ps0","power-chassis-good","","","","","presence-ps1","",
+       /*C0-C7*/   "","","","","","","","",
+       /*D0-D7*/   "","","","","","","","",
+       /*E0-E7*/   "","","","","","","","",
+       /*F0-F7*/   "","","","","power-chassis-control","","","",
+       /*G0-G7*/   "","","jtag-mux","","","","","",
+       /*H0-H7*/   "","","","","reset-button","power-button","","",
+       /*I0-I7*/   "","","","","","","","",
+       /*J0-J7*/   "","","","","","","","",
+       /*K0-K7*/   "","","","","","","","",
+       /*L0-L7*/   "","","","","","","","",
+       /*M0-M7*/   "","","","","","","","",
+       /*N0-N7*/   "","","","","","","","",
+       /*O0-O7*/   "","","","","","","","",
+       /*P0-P7*/   "","","","tck-mux","","","","",
+       /*Q0-Q7*/   "","","","","","","","",
+       /*R0-R7*/   "","","","","","","","",
+       /*S0-S7*/   "","","","","","","","",
+       /*T0-T7*/   "","","","","","","","",
+       /*U0-U7*/   "","nmi-button","","","","","","",
+       /*V0-V7*/   "","","","","power-config-full-load","","","",
+       /*W0-W7*/   "","","","","","","","",
+       /*X0-X7*/   "","","","","","","","",
+       /*Y0-Y7*/   "","","","","","","","",
+       /*Z0-Z7*/   "","","","","","","","",
+       /*AA0-AA7*/ "","","","","","","","",
+       /*AB0-AB7*/ "","","","","","","","",
+       /*AC0-AC7*/ "","","","","","","","";
+};
+
+&lpc_snoop {
+       status = "okay";
+       snoop-ports = <0x80>;
+};
+
+&emmc_controller {
+       status = "okay";
+};
+
+&emmc {
+       status = "okay";
+       non-removable;
+       max-frequency = <52000000>;
+       bus-width = <8>;
+};
+
+&vhub {
+       status = "okay";
+       aspeed,vhub-downstream-ports = <7>;
+       aspeed,vhub-generic-endpoints = <21>;
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_usb2ad_default>;
+};
+
+&rtc {
+       status = "okay";
+};
diff --git a/arch/arm/boot/dts/aspeed-bmc-tyan-s7106.dts b/arch/arm/boot/dts/aspeed-bmc-tyan-s7106.dts
new file mode 100644 (file)
index 0000000..68f332e
--- /dev/null
@@ -0,0 +1,488 @@
+// SPDX-License-Identifier: GPL-2.0+
+/dts-v1/;
+
+#include "aspeed-g5.dtsi"
+#include <dt-bindings/gpio/aspeed-gpio.h>
+
+/ {
+       model = "Tyan S7106 BMC";
+       compatible = "tyan,s7106-bmc", "aspeed,ast2500";
+
+       chosen {
+               stdout-path = &uart5;
+               bootargs = "console=ttyS4,115200 earlycon";
+       };
+
+       memory@80000000 {
+               device_type = "memory";
+               reg = <0x80000000 0x20000000>;
+       };
+
+       reserved-memory {
+               #address-cells = <1>;
+               #size-cells = <1>;
+               ranges;
+
+               p2a_memory: region@987f0000 {
+                       no-map;
+                       reg = <0x987f0000 0x00010000>; /* 64KB */
+               };
+
+               vga_memory: framebuffer@9f000000 {
+                       no-map;
+                       reg = <0x9f000000 0x01000000>; /* 16M */
+               };
+
+               gfx_memory: framebuffer {
+                       size = <0x01000000>; /* 16M */
+                       alignment = <0x01000000>;
+                       compatible = "shared-dma-pool";
+                       reusable;
+               };
+       };
+
+       leds {
+               compatible = "gpio-leds";
+
+               identify {
+                       gpios = <&gpio ASPEED_GPIO(A, 2) GPIO_ACTIVE_LOW>;
+               };
+
+               heartbeat {
+                       gpios = <&gpio ASPEED_GPIO(E, 7) GPIO_ACTIVE_LOW>;
+               };
+       };
+
+       iio-hwmon {
+               compatible = "iio-hwmon";
+               io-channels = <&adc 0>, <&adc 1>, <&adc 2>, <&adc 3>,
+                       <&adc 4>, <&adc 5>, <&adc 6>, <&adc 7>,
+                       <&adc 8>, <&adc 9>, <&adc 10>, <&adc 11>,
+                       <&adc 12>, <&adc 13>, <&adc 14>;
+       };
+
+       iio-hwmon-battery {
+               compatible = "iio-hwmon";
+               io-channels = <&adc 15>;
+       };
+};
+
+&fmc {
+       status = "okay";
+       flash@0 {
+               label = "bmc";
+               status = "okay";
+               m25p,fast-read;
+#include "openbmc-flash-layout.dtsi"
+       };
+};
+
+&spi1 {
+       status = "okay";
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_spi1_default>;
+
+       flash@0 {
+               status = "okay";
+               label = "pnor";
+               m25p,fast-read;
+       };
+};
+
+&uart1 {
+       /* Rear RS-232 connector */
+       status = "okay";
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_txd1_default
+                       &pinctrl_rxd1_default>;
+};
+
+&uart2 {
+       /* RS-232 connector on header */
+       status = "okay";
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_txd2_default
+                       &pinctrl_rxd2_default>;
+};
+
+&uart3 {
+       /* Alternative to vuart to internally connect (route) to uart1
+        * when vuart cannot be used due to BIOS limitations.
+        */
+       status = "okay";
+};
+
+&uart4 {
+       /* Alternative to vuart to internally connect (route) to the
+        * external port usually used by uart1 when vuart cannot be
+        * used due to BIOS limitations.
+        */
+       status = "okay";
+};
+
+&uart5 {
+       /* BMC "debug" (console) UART; connected to RS-232 connector
+        * on header; selectable via jumpers as alternative to uart2
+        */
+       status = "okay";
+};
+
+&vuart {
+       status = "okay";
+};
+
+&lpc_ctrl {
+       status = "okay";
+};
+
+&p2a {
+       status = "okay";
+       memory-region = <&p2a_memory>;
+};
+
+&lpc_snoop {
+       status = "okay";
+       snoop-ports = <0x80>;
+};
+
+&adc {
+       status = "okay";
+};
+
+&vhub {
+       status = "okay";
+};
+
+&pwm_tacho {
+       status = "okay";
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_pwm0_default
+                       &pinctrl_pwm1_default
+                       &pinctrl_pwm3_default
+                       &pinctrl_pwm4_default>;
+
+       /* CPU fan #0 */
+       fan@0 {
+               reg = <0x00>;
+               aspeed,fan-tach-ch = /bits/ 8 <0x00>;
+       };
+
+       /* CPU fan #1 */
+       fan@1 {
+               reg = <0x01>;
+               aspeed,fan-tach-ch = /bits/ 8 <0x01>;
+       };
+
+       /* PWM group for chassis fans #1, #2, #3 and #4  */
+       fan@2 {
+               reg = <0x03>;
+               aspeed,fan-tach-ch = /bits/ 8 <0x02>;
+       };
+
+       fan@3 {
+               reg = <0x03>;
+               aspeed,fan-tach-ch = /bits/ 8 <0x03>;
+       };
+
+       fan@4 {
+               reg = <0x03>;
+               aspeed,fan-tach-ch = /bits/ 8 <0x04>;
+       };
+
+       fan@5 {
+               reg = <0x03>;
+               aspeed,fan-tach-ch = /bits/ 8 <0x05>;
+       };
+
+       /* PWM group for chassis fans #5 and #6  */
+       fan@6 {
+               reg = <0x04>;
+               aspeed,fan-tach-ch = /bits/ 8 <0x06>;
+       };
+
+       fan@7 {
+               reg = <0x04>;
+               aspeed,fan-tach-ch = /bits/ 8 <0x07>;
+       };
+};
+
+&i2c0 {
+       status = "okay";
+
+       /* Hardware monitor with temperature sensors */
+       nct7802@28 {
+               compatible = "nuvoton,nct7802";
+               reg = <0x28>;
+       };
+
+       /* Also connected to:
+        * - IPMB pin header
+        * - CPU #0 memory error LED @ 0x3A
+        * - CPU #1 memory error LED @ 0x3C
+        */
+};
+
+&i2c1 {
+       /* Directly connected to PCH SMBUS #0 */
+       status = "okay";
+};
+
+&i2c2 {
+       status = "okay";
+
+       /* BMC EEPROM, incl. mainboard FRU */
+       eeprom@50 {
+               compatible = "atmel,24c256";
+               reg = <0x50>;
+       };
+
+       /* Also connected to:
+        * - fan header
+        * - mini-SAS HD connector
+        * - SSATA SGPIO
+        * - via switch (BMC_SMB3_PCH_IE_SML3_EN, active low)
+        *   to PCH SMBUS #3
+        */
+};
+
+&i2c3 {
+       status = "okay";
+
+       /* PSU1 FRU @ 0xA0 */
+       eeprom@50 {
+               compatible = "atmel,24c02";
+               reg = <0x50>;
+       };
+
+       /* PSU2 FRU @ 0xA2 */
+       eeprom@51 {
+               compatible = "atmel,24c02";
+               reg = <0x51>;
+       };
+
+       /* PSU1 @ 0xB0 */
+       power-supply@58 {
+               compatible = "pmbus";
+               reg = <0x58>;
+       };
+
+       /* PSU2 @ 0xB2 */
+       power-supply@59 {
+               compatible = "pmbus";
+               reg = <0x59>;
+       };
+
+       /* Also connected to:
+        * - PCH SMBUS #1
+        */
+};
+
+&i2c4 {
+       status = "okay";
+
+       /* Connected to:
+        * - PCH SMBUS #2
+        */
+
+       /* Connected via switch to:
+        * - CPU #0 channels ABC VDDQ @ 0x80
+        * - CPU #0 channels DEF VDDQ @ 0x81
+        * - CPU #1 channels ABC VDDQ @ 0x82
+        * - CPU #1 channels DEF VDDQ @ 0x83
+        * - CPU #0 VCCIO & VMCP @ 0x52
+        * - CPU #1 VCCIO & VMCP @ 0x53
+        * - CPU #0 VCCIN @ 0xC0
+        * - CPU #0 VSA @ 0xC2
+        * - CPU #1 VCCIN @ 0xC4
+        * - CPU #1 VSA @ 0xC6
+        * - J110
+        */
+};
+
+&i2c5 {
+       status = "okay";
+
+       /* Connected via switch (PCH_BMC_SMB_SW_P) to:
+        * - mainboard FRU @ 0xAE
+        * - XDP connector
+        * - ME debug header
+        * - clock buffer @ 0xD8
+        * - i2c4 via switch (PCH_VR_SMBUS_SW_P; controlled by PCH)
+        * - PCH SMBUS
+        */
+};
+
+&i2c6 {
+       status = "okay";
+
+       /* Connected via switch (BMC_PE_SMB_EN_1_N) to
+        * bus mux (selector BMC_PE_SMB_SW_BIT[1..0]) to:
+        * - 0,0: PCIE slot 1, SMB #1
+        * - 0,1: PCIE slot 1, SMB #2
+        * - 1,0: PCIE slot 2, SMB #1
+        * - 1,1: PCIE slot 2, SMB #2
+        */
+
+       /* Connected via switch (BMC_PE_SMB_EN_2_N) to
+        * bus mux (selector BMC_PE_SMB_SW_BIT[1..0]) to:
+        * - 0,0: OCP0 (A) SMB
+        * - 0,1: OCP0 (C) SMB
+        * - 1,0: OCP1 (A) SMB
+        * - 1,1: NC
+        */
+};
+
+&i2c7 {
+       status = "okay";
+
+       /* Connected to:
+        * - PCH SMBUS #4
+        */
+};
+
+&i2c8 {
+       status = "okay";
+
+       /* Not connected */
+};
+
+&mac0 {
+       status = "okay";
+       use-ncsi;
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_rmii1_default>;
+};
+
+&mac1 {
+       status = "okay";
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_rgmii2_default &pinctrl_mdio2_default>;
+};
+
+&ibt {
+       status = "okay";
+};
+
+&kcs1 {
+       status = "okay";
+       aspeed,lpc-io-reg = <0xca8>;
+};
+
+&kcs3 {
+       status = "okay";
+       aspeed,lpc-io-reg = <0xca2>;
+};
+
+/* Enable BMC VGA output to show an early (pre-BIOS) boot screen */
+&gfx {
+       status = "okay";
+       memory-region = <&gfx_memory>;
+};
+
+/* We're following the GPIO naming as defined at
+ * https://github.com/openbmc/docs/blob/master/designs/device-tree-gpio-naming.md.
+ *
+ * Notes on led-identify and id-button:
+ * - A physical button is connected to id-button which
+ *   triggers the clock on a D flip-flop. The /Q output of the
+ *   flip-flop drives its D input.
+ * - The flip-flop's Q output drives led-identify which is
+ *   connected to LEDs.
+ * - With that, every button press toggles the LED between on and off.
+ *
+ * Notes on power-, reset- and nmi- button and control:
+ * - The -button signals can be used to monitor physical buttons.
+ * - The -control signals can be used to actuate the specific
+ *   operation.
+ * - In hardware, the -button signals are connected to the -control
+ *   signals through drivers with the -control signals being
+ *   protected through diodes.
+ */
+&gpio {
+       status = "okay";
+       gpio-line-names =
+       /*A0*/          "",
+       /*A1*/          "",
+       /*A2*/          "led-identify", /* in/out: BMC_IDLED_ON_N */
+       /*A3*/          "",
+       /*A4*/          "",
+       /*A5*/          "",
+       /*A6*/          "",
+       /*A7*/          "",
+       /*B0-B7*/       "","","","","","","","",
+       /*C0*/          "",
+       /*C1*/          "",
+       /*C2*/          "",
+       /*C3*/          "",
+       /*C4*/          "id-button", /* in/out: BMC_IDBTN_IN_OUT_N */
+       /*C5*/          "post-complete", /* in: FM_BIOS_POST_CMPLT_N */
+       /*C6*/          "",
+       /*C7*/          "",
+       /*D0*/          "",
+       /*D1*/          "",
+       /*D2*/          "power-chassis-good", /* in: SYS_PWROK_BUF */
+       /*D3*/          "platform-reset", /* in: SYS_PLTRST_N */
+       /*D4*/          "",
+       /*D5*/          "",
+       /*D6*/          "",
+       /*D7*/          "",
+       /*E0*/          "power-button", /* in: BMC_PWBTN_IN_N */
+       /*E1*/          "power-chassis-control", /* out: BMC_PWRBTN_OUT_N */
+       /*E2*/          "reset-button", /* in: BMC_RSTBTN_IN_N */
+       /*E3*/          "reset-control", /* out: BMC_RSTBTN_OUT_N */
+       /*E4*/          "nmi-button", /* in: BMC_NMIBTN_IN_N */
+       /*E5*/          "nmi-control", /* out: BMC_NMIBTN_OUT_N */
+       /*E6*/          "",
+       /*E7*/          "led-heartbeat", /* out: BMC_HEARTBRAT_LED_N */
+       /*F0*/          "",
+       /*F1*/          "clear-cmos-control", /* out: BMC_CLR_CMOS_N */
+       /*F2*/          "",
+       /*F3*/          "",
+       /*F4*/          "led-fault", /* out: AST_HW_FAULT_N */
+       /*F5*/          "",
+       /*F6*/          "",
+       /*F7*/          "",
+       /*G0*/          "BMC_PE_SMB_EN_1_N", /* out */
+       /*G1*/          "BMC_PE_SMB_EN_2_N", /* out */
+       /*G2*/          "",
+       /*G3*/          "",
+       /*G4*/          "",
+       /*G5*/          "",
+       /*G6*/          "",
+       /*G7*/          "",
+       /*H0-H7*/       "","","","","","","","",
+       /*I0-I7*/       "","","","","","","","",
+       /*J0-J7*/       "","","","","","","","",
+       /*K0-K7*/       "","","","","","","","",
+       /*L0-L7*/       "","","","","","","","",
+       /*M0-M7*/       "","","","","","","","",
+       /*N0-N7*/       "","","","","","","","",
+       /*O0-O7*/       "","","","","","","","",
+       /*P0-P7*/       "","","","","","","","",
+       /*Q0*/          "",
+       /*Q1*/          "",
+       /*Q2*/          "",
+       /*Q3*/          "",
+       /*Q4*/          "BMC_PE_SMB_SW_BIT0", /* out */
+       /*Q5*/          "BMC_PE_SMB_SW_BIT1", /* out */
+       /*Q6*/          "",
+       /*Q7*/          "",
+       /*R0-R7*/       "","","","","","","","",
+       /*S0-S7*/       "","","","","","","","",
+       /*T0-T7*/       "","","","","","","","",
+       /*U0-U7*/       "","","","","","","","",
+       /*V0-V7*/       "","","","","","","","",
+       /*W0-W7*/       "","","","","","","","",
+       /*X0-X7*/       "","","","","","","","",
+       /*Y0-Y7*/       "","","","","","","","",
+       /*Z0-Z7*/       "","","","","","","","",
+       /*AA0*/         "",
+       /*AA1*/         "",
+       /*AA2*/         "",
+       /*AA3*/         "BMC_SMB3_PCH_IE_SML3_EN", /* out */
+       /*AA4*/         "",
+       /*AA5*/         "",
+       /*AA6*/         "",
+       /*AA7*/         "",
+       /*AB0-AB7*/     "","","","","","","","";
+};
index c5aeb3c..b313a1c 100644 (file)
                                        interrupts = <8>;
                                        status = "disabled";
                                };
+
+                               uart_routing: uart-routing@9c {
+                                       compatible = "aspeed,ast2400-uart-routing";
+                                       reg = <0x9c 0x4>;
+                                       status = "disabled";
+                               };
                        };
 
                        uart2: serial@1e78d000 {
index 73ca1ec..c704945 100644 (file)
                                        #reset-cells = <1>;
                                };
 
+                               uart_routing: uart-routing@9c {
+                                       compatible = "aspeed,ast2500-uart-routing";
+                                       reg = <0x9c 0x4>;
+                                       status = "disabled";
+                               };
+
                                lhc: lhc@a0 {
                                        compatible = "aspeed,ast2500-lhc";
                                        reg = <0xa0 0x24 0xc8 0x8>;
index 1b47be1..5106a42 100644 (file)
                                status = "disabled";
                        };
 
+                       adc0: adc@1e6e9000 {
+                               compatible = "aspeed,ast2600-adc0";
+                               reg = <0x1e6e9000 0x100>;
+                               clocks = <&syscon ASPEED_CLK_APB2>;
+                               resets = <&syscon ASPEED_RESET_ADC>;
+                               interrupts = <GIC_SPI 46 IRQ_TYPE_LEVEL_HIGH>;
+                               #io-channel-cells = <1>;
+                               status = "disabled";
+                       };
+
+                       adc1: adc@1e6e9100 {
+                               compatible = "aspeed,ast2600-adc1";
+                               reg = <0x1e6e9100 0x100>;
+                               clocks = <&syscon ASPEED_CLK_APB2>;
+                               resets = <&syscon ASPEED_RESET_ADC>;
+                               interrupts = <GIC_SPI 46 IRQ_TYPE_LEVEL_HIGH>;
+                               #io-channel-cells = <1>;
+                               status = "disabled";
+                       };
+
                        gpio0: gpio@1e780000 {
                                #gpio-cells = <2>;
                                gpio-controller;
                                        #reset-cells = <1>;
                                };
 
+                               uart_routing: uart-routing@98 {
+                                       compatible = "aspeed,ast2600-uart-routing";
+                                       reg = <0x98 0x8>;
+                                       status = "disabled";
+                               };
+
                                ibt: ibt@140 {
                                        compatible = "aspeed,ast2600-ibt-bmc";
                                        reg = <0x140 0x18>;
diff --git a/arch/arm/boot/dts/at91-lmu5000.dts b/arch/arm/boot/dts/at91-lmu5000.dts
new file mode 100644 (file)
index 0000000..f8863d7
--- /dev/null
@@ -0,0 +1,147 @@
+// SPDX-License-Identifier: GPL-2.0-only
+/*
+ * Device Tree file for CalAmp LMU5000 board
+ *
+ * Copyright (C) 2013 Adam Porter <porter.adam@gmail.com>
+ */
+
+/dts-v1/;
+#include "at91sam9g20.dtsi"
+
+/ {
+       model = "CalAmp LMU5000";
+       compatible = "calamp,lmu5000", "atmel,at91sam9g20", "atmel,at91sam9";
+
+       chosen {
+               bootargs = "mem=64M console=ttyS0,115200 rootfstype=jffs2";
+       };
+
+       memory {
+               reg = <0x20000000 0x4000000>;
+       };
+
+       clocks {
+               #address-cells = <1>;
+               #size-cells = <1>;
+               ranges;
+
+               main_clock: clock@0 {
+                       compatible = "atmel,osc", "fixed-clock";
+                       clock-frequency = <18432000>;
+               };
+       };
+};
+
+&dbgu {
+       status = "okay";
+};
+
+&ebi {
+       status = "okay";
+
+       nand_controller: nand-controller {
+               pinctrl-0 = <&pinctrl_nand_cs &pinctrl_nand_rb>;
+               pinctrl-names = "default";
+               status = "okay";
+
+               nand@3 {
+                       reg = <0x3 0x0 0x800000>;
+                       rb-gpios = <&pioC 13 GPIO_ACTIVE_HIGH>;
+                       cs-gpios = <&pioC 14 GPIO_ACTIVE_HIGH>;
+                       nand-bus-width = <8>;
+                       nand-ecc-mode = "soft";
+                       nand-on-flash-bbt;
+                       label = "atmel_nand";
+                       status = "okay";
+
+                       partitions {
+                               compatible = "fixed-partitions";
+                               #address-cells = <1>;
+                               #size-cells = <1>;
+
+                               kernel@0 {
+                                       label = "kernel";
+                                       reg = <0x0 0x400000>;
+                               };
+
+                               rootfs@400000 {
+                                       label = "rootfs";
+                                       reg = <0x400000 0x3C00000>;
+                               };
+
+                               user1@4000000 {
+                                       label = "user1";
+                                       reg = <0x4000000 0x2000000>;
+                               };
+
+                               user2@6000000 {
+                                       label = "user2";
+                                       reg = <0x6000000 0x2000000>;
+                               };
+                       };
+               };
+       };
+};
+
+&macb0 {
+       phy-mode = "mii";
+       status = "okay";
+};
+
+&pinctrl {
+       board {
+               pinctrl_pck0_as_mck: pck0_as_mck {
+                       atmel,pins = <AT91_PIOC 1 AT91_PERIPH_B AT91_PINCTRL_NONE>;
+               };
+       };
+
+       usb0 {
+               pinctrl_usb1_vbus_gpio: usb0_vbus_gpio {
+                       atmel,pins = <AT91_PIOC 5 AT91_PERIPH_GPIO AT91_PINCTRL_NONE>;
+               };
+       };
+};
+
+&ssc0 {
+       status = "okay";
+       pinctrl-0 = <&pinctrl_ssc0_tx>;
+};
+
+&uart0 {
+       status = "okay";
+};
+
+&uart1 {
+       status = "okay";
+};
+
+&usart0 {
+       pinctrl-0 =
+               <&pinctrl_usart0
+                &pinctrl_usart0_rts
+                &pinctrl_usart0_cts
+                &pinctrl_usart0_dtr_dsr
+                &pinctrl_usart0_dcd
+                &pinctrl_usart0_ri>;
+       status = "okay";
+};
+
+&usart2 {
+       status = "okay";
+};
+
+&usb0 {
+       num-ports = <2>;
+       status = "okay";
+};
+
+&usb1 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_usb1_vbus_gpio>;
+       atmel,vbus-gpio = <&pioC 5 GPIO_ACTIVE_HIGH>;
+       status = "okay";
+};
+
+&watchdog {
+       status = "okay";
+};
diff --git a/arch/arm/boot/dts/at91-q5xr5.dts b/arch/arm/boot/dts/at91-q5xr5.dts
new file mode 100644 (file)
index 0000000..5827383
--- /dev/null
@@ -0,0 +1,199 @@
+// SPDX-License-Identifier: GPL-2.0-only
+/*
+ * Device Tree file for Exegin Q5xR5 board
+ *
+ * Copyright (C) 2014 Owen Kirby <osk@exegin.com>
+ */
+
+/dts-v1/;
+#include "at91sam9g20.dtsi"
+
+/ {
+       model = "Exegin Q5x (rev5)";
+       compatible = "exegin,q5xr5", "atmel,at91sam9g20", "atmel,at91sam9";
+
+       chosen {
+               bootargs = "console=ttyS0,115200 rootfstype=squashfs,jffs2";
+       };
+
+       memory {
+               reg = <0x20000000 0x0>;
+       };
+
+       clocks {
+               #address-cells = <1>;
+               #size-cells = <1>;
+               ranges;
+
+               main_clock: clock@0 {
+                       compatible = "atmel,osc", "fixed-clock";
+                       clock-frequency = <18432000>;
+               };
+
+               slow_xtal {
+                       clock-frequency = <32768>;
+               };
+
+               main_xtal {
+                       clock-frequency = <18432000>;
+               };
+       };
+};
+
+&dbgu {
+       status = "okay";
+};
+
+&ebi {
+       status = "okay";
+
+       flash: flash@0 {
+               compatible = "cfi-flash";
+               #address-cells = <1>;
+               #size-cells = <1>;
+               reg = <0x0 0x1000000 0x800000>;
+               bank-width = <2>;
+
+               partitions {
+                       compatible = "fixed-partitions";
+                       #address-cells = <1>;
+                       #size-cells = <1>;
+
+                       kernel@0 {
+                               label = "kernel";
+                               reg = <0x0 0x200000>;
+                       };
+
+                       rootfs@200000 {
+                               label = "rootfs";
+                               reg = <0x200000 0x600000>;
+                       };
+               };
+       };
+};
+
+&macb0 {
+       phy-mode = "mii";
+       status = "okay";
+};
+
+&pinctrl {
+       board {
+               pinctrl_pck0_as_mck: pck0_as_mck {
+                       atmel,pins = <AT91_PIOC 1 AT91_PERIPH_B AT91_PINCTRL_NONE>;
+               };
+       };
+
+       spi0 {
+               pinctrl_spi0: spi0-0 {
+                       atmel,pins =
+                               <AT91_PIOA 0 AT91_PERIPH_A AT91_PINCTRL_NONE
+                                AT91_PIOA 1 AT91_PERIPH_A AT91_PINCTRL_NONE
+                                AT91_PIOA 2 AT91_PERIPH_A AT91_PINCTRL_NONE>;
+               };
+
+               pinctrl_spi0_npcs0: spi0_npcs0 {
+                       atmel,pins = <AT91_PIOA 3 AT91_PERIPH_A AT91_PINCTRL_NONE>;
+               };
+
+               pinctrl_spi0_npcs1: spi0_npcs1 {
+                       atmel,pins = <AT91_PIOC 11 AT91_PERIPH_B AT91_PINCTRL_NONE>;
+               };
+       };
+
+       spi1 {
+               pinctrl_spi1: spi1-0 {
+                       atmel,pins =
+                               <AT91_PIOB 0 AT91_PERIPH_A AT91_PINCTRL_NONE
+                                AT91_PIOB 1 AT91_PERIPH_A AT91_PINCTRL_NONE
+                                AT91_PIOB 2 AT91_PERIPH_A AT91_PINCTRL_NONE>;
+               };
+
+               pinctrl_spi1_npcs0: spi1_npcs0 {
+                       atmel,pins = <AT91_PIOB 3 AT91_PERIPH_A AT91_PINCTRL_NONE>;
+               };
+
+               pinctrl_spi1_npcs1: spi1_npcs1 {
+                       atmel,pins = <AT91_PIOC 5 AT91_PERIPH_B AT91_PINCTRL_NONE>;
+               };
+       };
+};
+
+&spi0 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_spi0 &pinctrl_spi0_npcs0 &pinctrl_spi0_npcs1>;
+       cs-gpios = <&pioA 3 GPIO_ACTIVE_HIGH>, <&pioC 11 GPIO_ACTIVE_LOW>, <0>, <0>;
+       status = "okay";
+
+       m25p80@0 {
+               compatible = "jedec,spi-nor";
+               spi-max-frequency = <20000000>;
+               reg = <0>;
+               #address-cells = <1>;
+               #size-cells = <1>;
+
+               at91boot@0 {
+                       label = "at91boot";
+                       reg = <0x0 0x4000>;
+               };
+
+               uenv@4000 {
+                       label = "uboot-env";
+                       reg = <0x4000 0x4000>;
+               };
+
+               uboot@8000 {
+                       label = "uboot";
+                       reg = <0x8000 0x3E000>;
+               };
+       };
+
+       spidev@1 {
+               compatible = "spidev";
+               spi-max-frequency = <2000000>;
+               reg = <1>;
+       };
+};
+
+&spi1 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_spi1 &pinctrl_spi1_npcs0 &pinctrl_spi1_npcs1>;
+       cs-gpios = <&pioB 3 GPIO_ACTIVE_HIGH>, <&pioC 5 GPIO_ACTIVE_LOW>, <0>, <0>;
+       status = "okay";
+
+       spidev@0 {
+               compatible = "spidev";
+               spi-max-frequency = <2000000>;
+               reg = <0>;
+       };
+
+       spidev@1 {
+               compatible = "spidev";
+               spi-max-frequency = <2000000>;
+               reg = <1>;
+       };
+};
+
+&usart0 {
+       pinctrl-0 =
+               <&pinctrl_usart0
+                &pinctrl_usart0_rts
+                &pinctrl_usart0_cts
+                &pinctrl_usart0_dtr_dsr
+                &pinctrl_usart0_dcd
+                &pinctrl_usart0_ri>;
+       status = "okay";
+};
+
+&usb0 {
+       num-ports = <2>;
+       status = "okay";
+};
+
+&usb1 {
+       status = "okay";
+};
+
+&watchdog {
+       status = "okay";
+};
index b48ac3b..a4623cc 100644 (file)
@@ -8,6 +8,7 @@
  */
 #include "sama5d2.dtsi"
 #include "sama5d2-pinfunc.h"
+#include <dt-bindings/gpio/gpio.h>
 
 / {
        model = "Atmel SAMA5D27 SoM1";
 
                        i2c0: i2c@f8028000 {
                                dmas = <0>, <0>;
-                               pinctrl-names = "default";
+                               pinctrl-names = "default", "gpio";
                                pinctrl-0 = <&pinctrl_i2c0_default>;
+                               pinctrl-1 = <&pinctrl_i2c0_gpio>;
+                               sda-gpios = <&pioA PIN_PD21 GPIO_ACTIVE_HIGH>;
+                               scl-gpios = <&pioA PIN_PD22 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
                                status = "okay";
 
                                at24@50 {
                                        bias-disable;
                                };
 
+                               pinctrl_i2c0_gpio: i2c0_gpio {
+                                       pinmux = <PIN_PD21__GPIO>,
+                                                <PIN_PD22__GPIO>;
+                                       bias-disable;
+                               };
+
                                pinctrl_qspi1_default: qspi1_default {
                                        sck_cs {
                                                pinmux = <PIN_PB5__QSPI1_SCK>,
index cd46725..08f0d4b 100644 (file)
                                        i2c-analog-filter;
                                        i2c-digital-filter;
                                        i2c-digital-filter-width-ns = <35>;
-                                       pinctrl-names = "default";
+                                       pinctrl-names = "default", "gpio";
                                        pinctrl-0 = <&pinctrl_mikrobus_i2c>;
+                                       pinctrl-1 = <&pinctrl_i2c3_gpio>;
+                                       sda-gpios = <&pioA PIN_PA24 GPIO_ACTIVE_HIGH>;
+                                       scl-gpios = <&pioA PIN_PA23 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
                                        status = "okay";
                                };
                        };
                                i2c-analog-filter;
                                i2c-digital-filter;
                                i2c-digital-filter-width-ns = <35>;
-                               pinctrl-names = "default";
+                               pinctrl-names = "default", "gpio";
                                pinctrl-0 = <&pinctrl_i2c1_default>;
+                               pinctrl-1 = <&pinctrl_i2c1_gpio>;
+                               sda-gpios = <&pioA PIN_PD4 GPIO_ACTIVE_HIGH>;
+                               scl-gpios = <&pioA PIN_PD5 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
                                status = "okay";
                        };
 
                                        bias-disable;
                                };
 
+                               pinctrl_i2c1_gpio: i2c1_gpio {
+                                        pinmux = <PIN_PD4__GPIO>,
+                                                 <PIN_PD5__GPIO>;
+                                        bias-disable;
+                                };
+
+
                                pinctrl_isc_base: isc_base {
                                        pinmux = <PIN_PC21__ISC_PCK>,
                                                 <PIN_PC22__ISC_VSYNC>,
                                        bias-disable;
                                };
 
+                               pinctrl_i2c3_gpio: i2c3_gpio {
+                                       pinmux = <PIN_PA24__GPIO>,
+                                                <PIN_PA23__GPIO>;
+                                       bias-disable;
+                               };
+
                                pinctrl_flx4_default: flx4_uart_default {
                                        pinmux = <PIN_PC28__FLEXCOM4_IO0>,
                                                 <PIN_PC29__FLEXCOM4_IO1>,
index 025a783..21c8617 100644 (file)
                        clock-frequency = <24000000>;
                };
        };
+
+       wifi_pwrseq: wifi_pwrseq {
+               compatible = "mmc-pwrseq-wilc1000";
+               reset-gpios = <&pioA PIN_PA27 GPIO_ACTIVE_HIGH>;
+               powerdown-gpios = <&pioA PIN_PA29 GPIO_ACTIVE_HIGH>;
+               pinctrl-0 = <&pinctrl_wilc_pwrseq>;
+               pinctrl-names = "default";
+       };
 };
 
 &flx1 {
                         <PIN_PB10__QSPI1_IO3>;
                bias-pull-up;
        };
+
+       pinctrl_sdmmc1_default: sdmmc1_default {
+               cmd-data {
+                       pinmux = <PIN_PA28__SDMMC1_CMD>,
+                                <PIN_PA18__SDMMC1_DAT0>,
+                                <PIN_PA19__SDMMC1_DAT1>,
+                                <PIN_PA20__SDMMC1_DAT2>,
+                                <PIN_PA21__SDMMC1_DAT3>;
+                       bias-disable;
+               };
+
+               conf-ck {
+                       pinmux = <PIN_PA22__SDMMC1_CK>;
+                       bias-disable;
+               };
+       };
+
+       pinctrl_wilc_default: wilc_default {
+               conf-irq {
+                       pinmux = <PIN_PB25__GPIO>;
+                       bias-disable;
+               };
+       };
+
+       pinctrl_wilc_pwrseq: wilc_pwrseq {
+               conf-ce-nrst {
+                       pinmux = <PIN_PA27__GPIO>,
+                                <PIN_PA29__GPIO>;
+                       bias-disable;
+               };
+
+               conf-rtcclk {
+                       pinmux = <PIN_PB13__PCK1>;
+                       bias-disable;
+               };
+       };
+};
+
+&sdmmc1 {
+       #address-cells = <1>;
+       #size-cells = <0>;
+       bus-width = <4>;
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_sdmmc1_default>;
+       mmc-pwrseq = <&wifi_pwrseq>;
+       no-1-8-v;
+       non-removable;
+       bus-width = <4>;
+       status = "okay";
+
+       wilc: wifi@0 {
+               reg = <0>;
+               compatible = "microchip,wilc1000";
+               pinctrl-names = "default";
+               pinctrl-0 = <&pinctrl_wilc_default>;
+               clocks = <&pmc PMC_TYPE_SYSTEM 9>;
+               clock-names = "rtc";
+               interrupts = <PIN_PB25 IRQ_TYPE_NONE>;
+               interrupt-parent = <&pioA>;
+               assigned-clocks = <&pmc PMC_TYPE_SYSTEM 9>;
+               assigned-clock-rates = <32768>;
+       };
 };
 
index e06b587..806eb1d 100644 (file)
 };
 
 &i2c0 { /* mikrobus i2c */
-       pinctrl-names = "default";
+       pinctrl-names = "default", "gpio";
        pinctrl-0 = <&pinctrl_mikrobus_i2c>;
+       pinctrl-1 = <&pinctrl_i2c0_gpio>;
+       sda-gpios = <&pioA PIN_PD21 GPIO_ACTIVE_HIGH>;
+       scl-gpios = <&pioA PIN_PD22 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
        i2c-digital-filter;
        i2c-digital-filter-width-ns = <35>;
        status = "okay";
 
 &i2c1 {
        dmas = <0>, <0>;
-       pinctrl-names = "default";
+       pinctrl-names = "default", "gpio";
        pinctrl-0 = <&pinctrl_i2c1_default>;
+       pinctrl-1 = <&pinctrl_i2c1_gpio>;
+       sda-gpios = <&pioA PIN_PD19 GPIO_ACTIVE_HIGH>;
+       scl-gpios = <&pioA PIN_PD20 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
        i2c-digital-filter;
        i2c-digital-filter-width-ns = <35>;
        status = "okay";
                bias-disable;
        };
 
+       pinctrl_i2c1_gpio: i2c1_gpio {
+                pinmux = <PIN_PD19__GPIO>,
+                         <PIN_PD20__GPIO>;
+                bias-disable;
+        };
+
        pinctrl_key_gpio_default: key_gpio_default {
                pinmux = <PIN_PD0__GPIO>;
                bias-pull-up;
                bias-disable;
        };
 
+       pinctrl_i2c0_gpio: i2c0_gpio {
+               pinmux = <PIN_PD21__GPIO>,
+                        <PIN_PD22__GPIO>;
+               bias-disable;
+       };
+
        pinctrl_mikrobus1_an: mikrobus1_an {
                pinmux = <PIN_PD26__GPIO>;
                bias-disable;
index f3d6aaa..0e1975c 100644 (file)
        };
 };
 
+&adc {
+       vddana-supply = <&vddout25>;
+       vref-supply = <&vddout25>;
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_mikrobus1_an_default &pinctrl_mikrobus2_an_default>;
+       status = "okay";
+};
+
 &cpu0 {
        cpu-supply = <&vddcpu>;
 };
        status = "okay";
 };
 
+&tcb0 {
+       timer0: timer@0 {
+               compatible = "atmel,tcb-timer";
+               reg = <0>;
+       };
+
+       timer1: timer@1 {
+               compatible = "atmel,tcb-timer";
+               reg = <1>;
+       };
+};
+
 &trng {
        status = "okay";
 };
index 3ca97b4..7e5c598 100644 (file)
 &macb1 {
        status = "okay";
 
-       phy-mode = "rgmii";
+       phy-mode = "rmii";
 
        #address-cells = <1>;
        #size-cells = <0>;
index 019f1c3..7368347 100644 (file)
                                clock-names = "t0_clk", "t1_clk", "t2_clk", "slow_clk";
                        };
 
-                       pinctrl@fffff400 {
+                       pinctrl: pinctrl@fffff400 {
                                #address-cells = <1>;
                                #size-cells = <1>;
                                compatible = "atmel,at91rm9200-pinctrl", "simple-bus";
index 0d9ff12..ca240cd 100644 (file)
@@ -53,7 +53,7 @@
        interrupt-controller;
        #interrupt-cells = <1>;
 
-       ac_power_supply: ac-power-supply {
+       ac_power_supply: ac-power {
                compatible = "x-powers,axp202-ac-power-supply";
                status = "disabled";
        };
@@ -69,7 +69,7 @@
                #gpio-cells = <2>;
        };
 
-       battery_power_supply: battery-power-supply {
+       battery_power_supply: battery-power {
                compatible = "x-powers,axp209-battery-power-supply";
                status = "disabled";
        };
                };
        };
 
-       usb_power_supply: usb-power-supply {
+       usb_power_supply: usb-power {
                compatible = "x-powers,axp202-usb-power-supply";
                status = "disabled";
        };
index 65a07a6..a020c12 100644 (file)
@@ -52,7 +52,7 @@
        interrupt-controller;
        #interrupt-cells = <1>;
 
-       ac_power_supply: ac-power-supply {
+       ac_power_supply: ac-power {
                compatible = "x-powers,axp221-ac-power-supply";
                status = "disabled";
        };
@@ -62,7 +62,7 @@
                #io-channel-cells = <1>;
        };
 
-       battery_power_supply: battery-power-supply {
+       battery_power_supply: battery-power {
                compatible = "x-powers,axp221-battery-power-supply";
                status = "disabled";
        };
                };
        };
 
-       usb_power_supply: usb_power_supply {
+       usb_power_supply: usb-power {
                compatible = "x-powers,axp221-usb-power-supply";
                status = "disabled";
        };
index 1dfeece..b93387b 100644 (file)
@@ -48,7 +48,7 @@
        interrupt-controller;
        #interrupt-cells = <1>;
 
-       ac_power_supply: ac-power-supply {
+       ac_power_supply: ac-power {
                compatible = "x-powers,axp813-ac-power-supply";
                status = "disabled";
        };
                gpio-controller;
                #gpio-cells = <2>;
 
-               gpio0_ldo: gpio0-ldo {
+               gpio0_ldo: gpio0-ldo-pin {
                        pins = "GPIO0";
                        function = "ldo";
                };
 
-               gpio1_ldo: gpio1-ldo {
+               gpio1_ldo: gpio1-ldo-pin {
                        pins = "GPIO1";
                        function = "ldo";
                };
        };
 
-       battery_power_supply: battery-power-supply {
+       battery_power_supply: battery-power {
                compatible = "x-powers,axp813-battery-power-supply";
                status = "disabled";
        };
                };
        };
 
-       usb_power_supply: usb-power-supply {
+       usb_power_supply: usb-power {
                compatible = "x-powers,axp813-usb-power-supply";
        };
 };
diff --git a/arch/arm/boot/dts/bcm-nsp-ax.dtsi b/arch/arm/boot/dts/bcm-nsp-ax.dtsi
new file mode 100644 (file)
index 0000000..f2e941d
--- /dev/null
@@ -0,0 +1,70 @@
+// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
+/*
+ * Broadcom Northstar Plus Ax stepping-specific bindings.
+ * Notable differences from B0+ are the secondary-boot-reg and
+ * lack of DMA coherency.
+ */
+
+&cpu1 {
+       secondary-boot-reg = <0xffff042c>;
+};
+
+&dma {
+       /delete-property/ dma-coherent;
+};
+
+&sdio {
+       /delete-property/ dma-coherent;
+};
+
+&amac0 {
+       /delete-property/ dma-coherent;
+};
+
+&amac1 {
+       /delete-property/ dma-coherent;
+};
+
+&amac2 {
+       /delete-property/ dma-coherent;
+};
+
+&ehci0 {
+       /delete-property/ dma-coherent;
+};
+
+&mailbox {
+       /delete-property/ dma-coherent;
+};
+
+&xhci {
+       /delete-property/ dma-coherent;
+};
+
+&ehci0 {
+       /delete-property/ dma-coherent;
+};
+
+&ohci0 {
+       /delete-property/ dma-coherent;
+};
+
+&i2c0 {
+       /delete-property/ dma-coherent;
+};
+
+&sata {
+       /delete-property/ dma-coherent;
+};
+
+&pcie0 {
+       /delete-property/ dma-coherent;
+};
+
+&pcie1 {
+       /delete-property/ dma-coherent;
+};
+
+&pcie2 {
+       /delete-property/ dma-coherent;
+};
index 748df79..1c08daa 100644 (file)
@@ -77,7 +77,7 @@
                interrupt-affinity = <&cpu0>, <&cpu1>;
        };
 
-       mpcore@19000000 {
+       mpcore-bus@19000000 {
                compatible = "simple-bus";
                ranges = <0x00000000 0x19000000 0x00023000>;
                #address-cells = <1>;
                };
        };
 
-       axi@18000000 {
+       axi: axi@18000000 {
                compatible = "simple-bus";
                ranges = <0x00000000 0x18000000 0x0011c40c>;
                #address-cells = <1>;
                        status = "disabled";
                };
 
-               sdio: sdhci@21000 {
+               sdio: mmc@21000 {
                        compatible = "brcm,sdhci-iproc-cygnus";
                        reg = <0x21000 0x100>;
                        interrupts = <GIC_SPI 145 IRQ_TYPE_LEVEL_HIGH>;
                        num-cs = <2>;
                        #address-cells = <1>;
                        #size-cells = <0>;
+                       status = "disabled";
                };
 
                xhci: usb@29000 {
                        status = "disabled";
                };
 
+               mdio: mdio@32000 {
+                       compatible = "brcm,iproc-mdio";
+                       reg = <0x32000 0x8>;
+                       #size-cells = <0>;
+                       #address-cells = <1>;
+               };
+
+               mdio-mux@32000 {
+                       compatible = "mdio-mux-mmioreg", "mdio-mux";
+                       reg = <0x32000 0x4>;
+                       mux-mask = <0x200>;
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       mdio-parent-bus = <&mdio>;
+
+                       mdio_int: mdio@0 {
+                               reg = <0x0>;
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+
+                               usb3_phy: usb3-phy@10 {
+                                       compatible = "brcm,ns-bx-usb3-phy";
+                                       reg = <0x10>;
+                                       usb3-dmp-syscon = <&usb3_dmp>;
+                                       #phy-cells = <0>;
+                                       status = "disabled";
+                               };
+                       };
+
+                       mdio_ext: mdio@200 {
+                               reg = <0x200>;
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+                       };
+               };
+
                rng: rng@33000 {
                        compatible = "brcm,bcm-nsp-rng";
                        reg = <0x33000 0x14>;
                        };
                };
 
-               usb3_phy: usb3-phy@104000 {
-                       compatible = "brcm,ns-bx-usb3-phy";
-                       reg = <0x104000 0x1000>,
-                             <0x032000 0x1000>;
-                       reg-names = "dmp", "ccb-mii";
-                       #phy-cells = <0>;
-                       status = "disabled";
+               usb3_dmp: syscon@104000 {
+                       reg = <0x104000 0x1000>;
                };
        };
 
index 72ce80f..631dd5b 100644 (file)
@@ -3,6 +3,7 @@
 #include "bcm2711.dtsi"
 #include "bcm2711-rpi.dtsi"
 #include "bcm283x-rpi-usb-peripheral.dtsi"
+#include "bcm283x-rpi-wifi-bt.dtsi"
 
 / {
        compatible = "raspberrypi,4-model-b", "brcm,bcm2711";
                };
        };
 
-       wifi_pwrseq: wifi-pwrseq {
-               compatible = "mmc-pwrseq-simple";
-               reset-gpios = <&expgpio 1 GPIO_ACTIVE_LOW>;
-       };
-
        sd_io_1v8_reg: sd_io_1v8_reg {
                compatible = "regulator-gpio";
                regulator-name = "vdd-sd-io";
        };
 };
 
+&bt {
+       shutdown-gpios = <&expgpio 0 GPIO_ACTIVE_HIGH>;
+};
+
 &ddc0 {
        status = "okay";
 };
        status = "okay";
 };
 
-/* SDHCI is used to control the SDIO for wireless */
-&sdhci {
-       #address-cells = <1>;
-       #size-cells = <0>;
-       pinctrl-names = "default";
-       pinctrl-0 = <&emmc_gpio34>;
-       bus-width = <4>;
-       non-removable;
-       mmc-pwrseq = <&wifi_pwrseq>;
-       status = "okay";
-
-       brcmf: wifi@1 {
-               reg = <1>;
-               compatible = "brcm,bcm4329-fmac";
-       };
-};
-
 /* EMMC2 is used to drive the SD card */
 &emmc2 {
        vqmmc-supply = <&sd_io_1v8_reg>;
        pinctrl-names = "default";
        pinctrl-0 = <&uart0_ctsrts_gpio30 &uart0_gpio32>;
        uart-has-rtscts;
-       status = "okay";
-
-       bluetooth {
-               compatible = "brcm,bcm43438-bt";
-               max-speed = <2000000>;
-               shutdown-gpios = <&expgpio 0 GPIO_ACTIVE_HIGH>;
-       };
 };
 
 /* uart1 is mapped to the pin header */
 &vec {
        status = "disabled";
 };
+
+&wifi_pwrseq {
+       reset-gpios = <&expgpio 1 GPIO_ACTIVE_LOW>;
+};
diff --git a/arch/arm/boot/dts/bcm2711-rpi-cm4-io.dts b/arch/arm/boot/dts/bcm2711-rpi-cm4-io.dts
new file mode 100644 (file)
index 0000000..19600b6
--- /dev/null
@@ -0,0 +1,138 @@
+// SPDX-License-Identifier: GPL-2.0
+/dts-v1/;
+#include "bcm2711-rpi-cm4.dtsi"
+#include "bcm283x-rpi-usb-host.dtsi"
+
+/ {
+       model = "Raspberry Pi Compute Module 4 IO Board";
+
+       leds {
+               led-act {
+                       gpios = <&gpio 42 GPIO_ACTIVE_HIGH>;
+               };
+
+               led-pwr {
+                       label = "PWR";
+                       gpios = <&expgpio 2 GPIO_ACTIVE_LOW>;
+                       default-state = "keep";
+                       linux,default-trigger = "default-on";
+               };
+       };
+};
+
+&ddc0 {
+       status = "okay";
+};
+
+&ddc1 {
+       status = "okay";
+};
+
+&gpio {
+       /*
+        * Parts taken from rpi_SCH_4b_4p0_reduced.pdf and
+        * the official GPU firmware DT blob.
+        *
+        * Legend:
+        * "FOO" = GPIO line named "FOO" on the schematic
+        * "FOO_N" = GPIO line named "FOO" on schematic, active low
+        */
+       gpio-line-names = "ID_SDA",
+                         "ID_SCL",
+                         "SDA1",
+                         "SCL1",
+                         "GPIO_GCLK",
+                         "GPIO5",
+                         "GPIO6",
+                         "SPI_CE1_N",
+                         "SPI_CE0_N",
+                         "SPI_MISO",
+                         "SPI_MOSI",
+                         "SPI_SCLK",
+                         "GPIO12",
+                         "GPIO13",
+                         /* Serial port */
+                         "TXD1",
+                         "RXD1",
+                         "GPIO16",
+                         "GPIO17",
+                         "GPIO18",
+                         "GPIO19",
+                         "GPIO20",
+                         "GPIO21",
+                         "GPIO22",
+                         "GPIO23",
+                         "GPIO24",
+                         "GPIO25",
+                         "GPIO26",
+                         "GPIO27",
+                         "RGMII_MDIO",
+                         "RGMIO_MDC",
+                         /* Used by BT module */
+                         "CTS0",
+                         "RTS0",
+                         "TXD0",
+                         "RXD0",
+                         /* Used by Wifi */
+                         "SD1_CLK",
+                         "SD1_CMD",
+                         "SD1_DATA0",
+                         "SD1_DATA1",
+                         "SD1_DATA2",
+                         "SD1_DATA3",
+                         /* Shared with SPI flash */
+                         "PWM0_MISO",
+                         "PWM1_MOSI",
+                         "STATUS_LED_G_CLK",
+                         "SPIFLASH_CE_N",
+                         "SDA0",
+                         "SCL0",
+                         "RGMII_RXCLK",
+                         "RGMII_RXCTL",
+                         "RGMII_RXD0",
+                         "RGMII_RXD1",
+                         "RGMII_RXD2",
+                         "RGMII_RXD3",
+                         "RGMII_TXCLK",
+                         "RGMII_TXCTL",
+                         "RGMII_TXD0",
+                         "RGMII_TXD1",
+                         "RGMII_TXD2",
+                         "RGMII_TXD3";
+};
+
+&hdmi0 {
+       status = "okay";
+};
+
+&hdmi1 {
+       status = "okay";
+};
+
+&genet {
+       status = "okay";
+};
+
+&pixelvalve0 {
+       status = "okay";
+};
+
+&pixelvalve1 {
+       status = "okay";
+};
+
+&pixelvalve2 {
+       status = "okay";
+};
+
+&pixelvalve4 {
+       status = "okay";
+};
+
+&vc4 {
+       status = "okay";
+};
+
+&vec {
+       status = "disabled";
+};
diff --git a/arch/arm/boot/dts/bcm2711-rpi-cm4.dtsi b/arch/arm/boot/dts/bcm2711-rpi-cm4.dtsi
new file mode 100644 (file)
index 0000000..a2954d4
--- /dev/null
@@ -0,0 +1,113 @@
+// SPDX-License-Identifier: GPL-2.0
+/dts-v1/;
+#include "bcm2711.dtsi"
+#include "bcm2711-rpi.dtsi"
+#include "bcm283x-rpi-wifi-bt.dtsi"
+
+/ {
+       compatible = "raspberrypi,4-compute-module", "brcm,bcm2711";
+
+       chosen {
+               /* 8250 auxiliary UART instead of pl011 */
+               stdout-path = "serial1:115200n8";
+       };
+
+       sd_io_1v8_reg: sd_io_1v8_reg {
+               compatible = "regulator-gpio";
+               regulator-name = "vdd-sd-io";
+               regulator-min-microvolt = <1800000>;
+               regulator-max-microvolt = <3300000>;
+               regulator-boot-on;
+               regulator-always-on;
+               regulator-settling-time-us = <5000>;
+               gpios = <&expgpio 4 GPIO_ACTIVE_HIGH>;
+               states = <1800000 0x1>,
+                        <3300000 0x0>;
+               status = "okay";
+       };
+
+       sd_vcc_reg: sd_vcc_reg {
+               compatible = "regulator-fixed";
+               regulator-name = "vcc-sd";
+               regulator-min-microvolt = <3300000>;
+               regulator-max-microvolt = <3300000>;
+               regulator-boot-on;
+               enable-active-high;
+               gpio = <&expgpio 6 GPIO_ACTIVE_HIGH>;
+       };
+};
+
+&bt {
+       shutdown-gpios = <&expgpio 0 GPIO_ACTIVE_HIGH>;
+};
+
+/* EMMC2 is used to drive the eMMC */
+&emmc2 {
+       bus-width = <8>;
+       vqmmc-supply = <&sd_io_1v8_reg>;
+       vmmc-supply = <&sd_vcc_reg>;
+       broken-cd;
+       /* Even the IP block is limited to 100 MHz
+        * this provides a throughput gain
+        */
+       mmc-hs200-1_8v;
+       status = "okay";
+};
+
+&expgpio {
+       gpio-line-names = "BT_ON",
+                         "WL_ON",
+                         "PWR_LED_OFF",
+                         "ANT1",
+                         "VDD_SD_IO_SEL",
+                         "CAM_GPIO",
+                         "SD_PWR_ON",
+                         "ANT2";
+
+       ant1: ant1-hog {
+               gpio-hog;
+               gpios = <3 GPIO_ACTIVE_HIGH>;
+               /* internal antenna enabled */
+               output-high;
+               line-name = "ant1";
+       };
+
+       ant2: ant2-hog {
+               gpio-hog;
+               gpios = <7 GPIO_ACTIVE_HIGH>;
+               /* external antenna disabled */
+               output-low;
+               line-name = "ant2";
+       };
+};
+
+&genet {
+       phy-handle = <&phy1>;
+       phy-mode = "rgmii-rxid";
+       status = "okay";
+};
+
+&genet_mdio {
+       phy1: ethernet-phy@0 {
+               /* No PHY interrupt */
+               reg = <0x0>;
+       };
+};
+
+/* uart0 communicates with the BT module */
+&uart0 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&uart0_ctsrts_gpio30 &uart0_gpio32>;
+       uart-has-rtscts;
+};
+
+/* uart1 is mapped to the pin header */
+&uart1 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&uart1_gpio14>;
+       status = "okay";
+};
+
+&wifi_pwrseq {
+       reset-gpios = <&expgpio 1 GPIO_ACTIVE_LOW>;
+};
index 33b2b77..243236b 100644 (file)
@@ -7,6 +7,7 @@
 #include "bcm2835.dtsi"
 #include "bcm2835-rpi.dtsi"
 #include "bcm283x-rpi-usb-otg.dtsi"
+#include "bcm283x-rpi-wifi-bt.dtsi"
 
 / {
        compatible = "raspberrypi,model-zero-w", "brcm,bcm2835";
                        gpios = <&gpio 47 GPIO_ACTIVE_LOW>;
                };
        };
+};
 
-       wifi_pwrseq: wifi-pwrseq {
-               compatible = "mmc-pwrseq-simple";
-               reset-gpios = <&gpio 41 GPIO_ACTIVE_LOW>;
-       };
+&bt {
+       shutdown-gpios = <&gpio 45 GPIO_ACTIVE_HIGH>;
 };
 
 &gpio {
 };
 
 &sdhci {
-       #address-cells = <1>;
-       #size-cells = <0>;
-       pinctrl-names = "default";
        pinctrl-0 = <&emmc_gpio34 &gpclk2_gpio43>;
-       bus-width = <4>;
-       mmc-pwrseq = <&wifi_pwrseq>;
-       non-removable;
-       status = "okay";
-
-       brcmf: wifi@1 {
-               reg = <1>;
-               compatible = "brcm,bcm4329-fmac";
-       };
 };
 
 &sdhost {
 &uart0 {
        pinctrl-names = "default";
        pinctrl-0 = <&uart0_gpio32 &uart0_ctsrts_gpio30>;
-       status = "okay";
-
-       bluetooth {
-               compatible = "brcm,bcm43438-bt";
-               max-speed = <2000000>;
-               shutdown-gpios = <&gpio 45 GPIO_ACTIVE_HIGH>;
-       };
 };
 
 &uart1 {
        pinctrl-0 = <&uart1_gpio14>;
        status = "okay";
 };
+
+&wifi_pwrseq {
+       reset-gpios = <&gpio 41 GPIO_ACTIVE_LOW>;
+};
index 77099a7..d73daf5 100644 (file)
@@ -3,6 +3,7 @@
 #include "bcm2837.dtsi"
 #include "bcm2836-rpi.dtsi"
 #include "bcm283x-rpi-usb-host.dtsi"
+#include "bcm283x-rpi-wifi-bt.dtsi"
 
 / {
        compatible = "raspberrypi,3-model-a-plus", "brcm,bcm2837";
        status = "okay";
 };
 
-/*
- * SDHCI is used to control the SDIO for wireless
- *
- * WL_REG_ON and BT_REG_ON of the CYW43455 Wifi/BT module are driven
- * by a single GPIO. We can't give GPIO control to one of the drivers,
- * otherwise the other part would get unexpectedly disturbed.
- */
-&sdhci {
-       #address-cells = <1>;
-       #size-cells = <0>;
-       pinctrl-names = "default";
-       pinctrl-0 = <&emmc_gpio34>;
-       status = "okay";
-       bus-width = <4>;
-       non-removable;
-
-       brcmf: wifi@1 {
-               reg = <1>;
-               compatible = "brcm,bcm4329-fmac";
-       };
-};
-
 /* SDHOST is used to drive the SD card */
 &sdhost {
        pinctrl-names = "default";
        bus-width = <4>;
 };
 
-/* uart0 communicates with the BT module */
+/* uart0 communicates with the BT module
+ *
+ * WL_REG_ON and BT_REG_ON of the CYW43455 Wifi/BT module are driven
+ * by a single GPIO. We can't give GPIO control to one of the drivers,
+ * otherwise the other part would get unexpectedly disturbed.
+ */
 &uart0 {
        pinctrl-names = "default";
        pinctrl-0 = <&uart0_ctsrts_gpio30 &uart0_gpio32 &gpclk2_gpio43>;
-       status = "okay";
-
-       bluetooth {
-               compatible = "brcm,bcm43438-bt";
-               max-speed = <2000000>;
-       };
 };
 
 /* uart1 is mapped to the pin header */
index 6101026..e12938b 100644 (file)
@@ -4,6 +4,7 @@
 #include "bcm2836-rpi.dtsi"
 #include "bcm283x-rpi-lan7515.dtsi"
 #include "bcm283x-rpi-usb-host.dtsi"
+#include "bcm283x-rpi-wifi-bt.dtsi"
 
 / {
        compatible = "raspberrypi,3-model-b-plus", "brcm,bcm2837";
                        linux,default-trigger = "default-on";
                };
        };
+};
 
-       wifi_pwrseq: wifi-pwrseq {
-               compatible = "mmc-pwrseq-simple";
-               reset-gpios = <&expgpio 1 GPIO_ACTIVE_LOW>;
-       };
+&bt {
+       shutdown-gpios = <&expgpio 0 GPIO_ACTIVE_HIGH>;
 };
 
 &firmware {
        status = "okay";
 };
 
-/* SDHCI is used to control the SDIO for wireless */
-&sdhci {
-       #address-cells = <1>;
-       #size-cells = <0>;
-       pinctrl-names = "default";
-       pinctrl-0 = <&emmc_gpio34>;
-       status = "okay";
-       bus-width = <4>;
-       non-removable;
-       mmc-pwrseq = <&wifi_pwrseq>;
-
-       brcmf: wifi@1 {
-               reg = <1>;
-               compatible = "brcm,bcm4329-fmac";
-       };
-};
-
 /* SDHOST is used to drive the SD card */
 &sdhost {
        pinctrl-names = "default";
 &uart0 {
        pinctrl-names = "default";
        pinctrl-0 = <&uart0_ctsrts_gpio30 &uart0_gpio32 &gpclk2_gpio43>;
-       status = "okay";
-
-       bluetooth {
-               compatible = "brcm,bcm43438-bt";
-               max-speed = <2000000>;
-               shutdown-gpios = <&expgpio 0 GPIO_ACTIVE_HIGH>;
-       };
 };
 
 /* uart1 is mapped to the pin header */
        pinctrl-0 = <&uart1_gpio14>;
        status = "okay";
 };
+
+&wifi_pwrseq {
+       reset-gpios = <&expgpio 1 GPIO_ACTIVE_LOW>;
+};
index dd4a486..42b5383 100644 (file)
@@ -4,6 +4,7 @@
 #include "bcm2836-rpi.dtsi"
 #include "bcm283x-rpi-smsc9514.dtsi"
 #include "bcm283x-rpi-usb-host.dtsi"
+#include "bcm283x-rpi-wifi-bt.dtsi"
 
 / {
        compatible = "raspberrypi,3-model-b", "brcm,bcm2837";
                        gpios = <&expgpio 2 GPIO_ACTIVE_HIGH>;
                };
        };
+};
 
-       wifi_pwrseq: wifi-pwrseq {
-               compatible = "mmc-pwrseq-simple";
-               reset-gpios = <&expgpio 1 GPIO_ACTIVE_LOW>;
-       };
+&bt {
+       shutdown-gpios = <&expgpio 0 GPIO_ACTIVE_HIGH>;
 };
 
 &firmware {
 &uart0 {
        pinctrl-names = "default";
        pinctrl-0 = <&uart0_gpio32 &gpclk2_gpio43>;
-       status = "okay";
-
-       bluetooth {
-               compatible = "brcm,bcm43438-bt";
-               max-speed = <2000000>;
-               shutdown-gpios = <&expgpio 0 GPIO_ACTIVE_HIGH>;
-       };
 };
 
 /* uart1 is mapped to the pin header */
        status = "okay";
 };
 
-/* SDHCI is used to control the SDIO for wireless */
-&sdhci {
-       #address-cells = <1>;
-       #size-cells = <0>;
-       pinctrl-names = "default";
-       pinctrl-0 = <&emmc_gpio34>;
-       status = "okay";
-       bus-width = <4>;
-       non-removable;
-       mmc-pwrseq = <&wifi_pwrseq>;
-
-       brcmf: wifi@1 {
-               reg = <1>;
-               compatible = "brcm,bcm4329-fmac";
-       };
-};
-
 /* SDHOST is used to drive the SD card */
 &sdhost {
        pinctrl-names = "default";
        status = "okay";
        bus-width = <4>;
 };
+
+&wifi_pwrseq {
+       reset-gpios = <&expgpio 1 GPIO_ACTIVE_LOW>;
+};
diff --git a/arch/arm/boot/dts/bcm283x-rpi-wifi-bt.dtsi b/arch/arm/boot/dts/bcm283x-rpi-wifi-bt.dtsi
new file mode 100644 (file)
index 0000000..0b64cc1
--- /dev/null
@@ -0,0 +1,34 @@
+// SPDX-License-Identifier: GPL-2.0
+
+/ {
+       wifi_pwrseq: wifi-pwrseq {
+               compatible = "mmc-pwrseq-simple";
+       };
+};
+
+/* SDHCI is used to control the SDIO for wireless */
+&sdhci {
+       #address-cells = <1>;
+       #size-cells = <0>;
+       pinctrl-names = "default";
+       pinctrl-0 = <&emmc_gpio34>;
+       bus-width = <4>;
+       non-removable;
+       mmc-pwrseq = <&wifi_pwrseq>;
+       status = "okay";
+
+       brcmf: wifi@1 {
+               reg = <1>;
+               compatible = "brcm,bcm4329-fmac";
+       };
+};
+
+/* uart0 communicates with the BT module */
+&uart0 {
+       status = "okay";
+
+       bt: bluetooth {
+               compatible = "brcm,bcm43438-bt";
+               max-speed = <2000000>;
+       };
+};
index 61c7b13..43a5d67 100644 (file)
@@ -20,7 +20,7 @@
                bootargs = "console=ttyS0,115200 earlycon";
        };
 
-       memory {
+       memory@0 {
                device_type = "memory";
                reg = <0x00000000 0x08000000>,
                      <0x88000000 0x08000000>;
 &usb3_phy {
        status = "okay";
 };
+
+&srab {
+       status = "okay";
+
+       ports {
+               port@0 {
+                       reg = <0>;
+                       label = "lan4";
+               };
+
+               port@1 {
+                       reg = <1>;
+                       label = "lan3";
+               };
+
+               port@2 {
+                       reg = <2>;
+                       label = "lan2";
+               };
+
+               port@3 {
+                       reg = <3>;
+                       label = "lan1";
+               };
+
+               port@4 {
+                       reg = <4>;
+                       label = "wan";
+               };
+
+               port@5 {
+                       reg = <5>;
+                       label = "cpu";
+                       ethernet = <&gmac0>;
+               };
+       };
+};
index d857751..d00495a 100644 (file)
                };
        };
 };
+
+&srab {
+       status = "okay";
+
+       ports {
+               port@0 {
+                       reg = <0>;
+                       label = "lan1";
+               };
+
+               port@1 {
+                       reg = <1>;
+                       label = "lan2";
+               };
+
+               port@2 {
+                       reg = <2>;
+                       label = "lan3";
+               };
+
+               port@3 {
+                       reg = <3>;
+                       label = "lan4";
+               };
+
+               port@4 {
+                       reg = <4>;
+                       label = "wan";
+               };
+
+               port@5 {
+                       reg = <5>;
+                       label = "cpu";
+                       ethernet = <&gmac0>;
+               };
+       };
+};
index 6c6bb7b..7546c8d 100644 (file)
@@ -19,7 +19,7 @@
                bootargs = "console=ttyS0,115200";
        };
 
-       memory {
+       memory@0 {
                device_type = "memory";
                reg = <0x00000000 0x08000000>,
                      <0x88000000 0x08000000>;
index d29e7f8..beae9ea 100644 (file)
@@ -19,7 +19,7 @@
                bootargs = "console=ttyS0,115200";
        };
 
-       memory {
+       memory@0 {
                device_type = "memory";
                reg = <0x00000000 0x08000000>,
                      <0x88000000 0x18000000>;
index 9b6887d..7879f7d 100644 (file)
@@ -16,7 +16,7 @@
                bootargs = "console=ttyS0,115200";
        };
 
-       memory {
+       memory@0 {
                device_type = "memory";
                reg = <0x00000000 0x08000000>,
                      <0x88000000 0x08000000>;
index 7989a53..56d309d 100644 (file)
@@ -19,7 +19,7 @@
                bootargs = "console=ttyS0,115200";
        };
 
-       memory {
+       memory@0 {
                device_type = "memory";
                reg = <0x00000000 0x08000000>,
                      <0x88000000 0x08000000>;
index 87b655b..89f992a 100644 (file)
@@ -30,7 +30,7 @@
                bootargs = "console=ttyS0,115200";
        };
 
-       memory {
+       memory@0 {
                device_type = "memory";
                reg = <0x00000000 0x08000000>,
                      <0x88000000 0x08000000>;
 &usb3_phy {
        status = "okay";
 };
+
+&srab {
+       status = "okay";
+
+       ports {
+               port@0 {
+                       reg = <0>;
+                       label = "lan1";
+               };
+
+               port@1 {
+                       reg = <1>;
+                       label = "lan2";
+               };
+
+               port@2 {
+                       reg = <2>;
+                       label = "lan3";
+               };
+
+               port@3 {
+                       reg = <3>;
+                       label = "lan4";
+               };
+
+               port@4 {
+                       reg = <4>;
+                       label = "wan";
+               };
+
+               port@8 {
+                       reg = <8>;
+                       label = "cpu";
+                       ethernet = <&gmac2>;
+
+                       fixed-link {
+                               speed = <1000>;
+                               full-duplex;
+                       };
+               };
+       };
+};
index f806be5..c2a266a 100644 (file)
@@ -15,7 +15,7 @@
                bootargs = "console=ttyS0,115200 earlycon";
        };
 
-       memory {
+       memory@0 {
                device_type = "memory";
                reg = <0x00000000 0x08000000>;
        };
diff --git a/arch/arm/boot/dts/bcm47094-asus-rt-ac88u.dts b/arch/arm/boot/dts/bcm47094-asus-rt-ac88u.dts
new file mode 100644 (file)
index 0000000..4480605
--- /dev/null
@@ -0,0 +1,200 @@
+// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
+/*
+ * Copyright (C) 2021 Arınç ÃœNAL <arinc.unal@arinc9.com>
+ */
+
+/dts-v1/;
+
+#include "bcm47094.dtsi"
+#include "bcm5301x-nand-cs0-bch8.dtsi"
+
+/ {
+       compatible = "asus,rt-ac88u", "brcm,bcm47094", "brcm,bcm4708";
+       model = "Asus RT-AC88U";
+
+       chosen {
+               bootargs = "earlycon";
+       };
+
+       memory@0 {
+               device_type = "memory";
+               reg = <0x00000000 0x08000000>,
+                     <0x88000000 0x18000000>;
+       };
+
+       nvram@1c080000 {
+               compatible = "brcm,nvram";
+               reg = <0x1c080000 0x00180000>;
+       };
+
+       leds {
+               compatible = "gpio-leds";
+
+               power {
+                       label = "white:power";
+                       gpios = <&chipcommon 3 GPIO_ACTIVE_LOW>;
+                       linux,default-trigger = "default-on";
+               };
+
+               wan-red {
+                       label = "red:wan";
+                       gpios = <&chipcommon 5 GPIO_ACTIVE_HIGH>;
+               };
+
+               lan {
+                       label = "white:lan";
+                       gpios = <&chipcommon 21 GPIO_ACTIVE_LOW>;
+               };
+
+               usb2 {
+                       label = "white:usb2";
+                       gpios = <&chipcommon 16 GPIO_ACTIVE_LOW>;
+                       trigger-sources = <&ehci_port2>;
+                       linux,default-trigger = "usbport";
+               };
+
+               usb3 {
+                       label = "white:usb3";
+                       gpios = <&chipcommon 17 GPIO_ACTIVE_LOW>;
+                       trigger-sources = <&ehci_port1>, <&xhci_port1>;
+                       linux,default-trigger = "usbport";
+               };
+
+               wps {
+                       label = "white:wps";
+                       gpios = <&chipcommon 19 GPIO_ACTIVE_LOW>;
+               };
+       };
+
+       gpio-keys {
+               compatible = "gpio-keys";
+               #address-cells = <1>;
+               #size-cells = <0>;
+
+               wps {
+                       label = "WPS";
+                       linux,code = <KEY_WPS_BUTTON>;
+                       gpios = <&chipcommon 20 GPIO_ACTIVE_LOW>;
+               };
+
+               reset {
+                       label = "Reset";
+                       linux,code = <KEY_RESTART>;
+                       gpios = <&chipcommon 11 GPIO_ACTIVE_LOW>;
+               };
+
+               wifi {
+                       label = "Wi-Fi";
+                       linux,code = <KEY_RFKILL>;
+                       gpios = <&chipcommon 18 GPIO_ACTIVE_LOW>;
+               };
+
+               led {
+                       label = "Backlight";
+                       linux,code = <KEY_BRIGHTNESS_ZERO>;
+                       gpios = <&chipcommon 4 GPIO_ACTIVE_LOW>;
+               };
+       };
+};
+
+&srab {
+       compatible = "brcm,bcm53012-srab", "brcm,bcm5301x-srab";
+       status = "okay";
+       dsa,member = <0 0>;
+
+       ports {
+               #address-cells = <1>;
+               #size-cells = <0>;
+
+               port@0 {
+                       reg = <0>;
+                       label = "lan4";
+               };
+
+               port@1 {
+                       reg = <1>;
+                       label = "lan3";
+               };
+
+               port@2 {
+                       reg = <2>;
+                       label = "lan2";
+               };
+
+               port@3 {
+                       reg = <3>;
+                       label = "lan1";
+               };
+
+               port@4 {
+                       reg = <4>;
+                       label = "wan";
+               };
+
+               sw0_p5: port@5 {
+                       reg = <5>;
+                       label = "extsw";
+
+                       fixed-link {
+                               speed = <1000>;
+                               full-duplex;
+                       };
+               };
+
+               port@7 {
+                       reg = <7>;
+                       ethernet = <&gmac1>;
+                       label = "cpu";
+
+                       fixed-link {
+                               speed = <1000>;
+                               full-duplex;
+                       };
+               };
+
+               port@8 {
+                       reg = <8>;
+                       ethernet = <&gmac2>;
+                       label = "cpu";
+                       status = "disabled";
+
+                       fixed-link {
+                               speed = <1000>;
+                               full-duplex;
+                       };
+               };
+       };
+};
+
+&usb2 {
+       vcc-gpio = <&chipcommon 9 GPIO_ACTIVE_HIGH>;
+};
+
+&usb3_phy {
+       status = "okay";
+};
+
+&nandcs {
+       partitions {
+               compatible = "fixed-partitions";
+               #address-cells = <1>;
+               #size-cells = <1>;
+
+               partition@0 {
+                       label = "boot";
+                       reg = <0x00000000 0x00080000>;
+                       read-only;
+               };
+
+               partition@80000 {
+                       label = "nvram";
+                       reg = <0x00080000 0x00180000>;
+               };
+
+               partition@200000 {
+                       label = "firmware";
+                       reg = <0x00200000 0x07e00000>;
+                       compatible = "brcm,trx";
+               };
+       };
+};
index a6e2aeb..60bfd52 100644 (file)
 &usb3_phy {
        status = "okay";
 };
+
+&srab {
+       status = "okay";
+
+       ports {
+               port@0 {
+                       reg = <0>;
+                       label = "lan4";
+               };
+
+               port@1 {
+                       reg = <1>;
+                       label = "lan3";
+               };
+
+               port@2 {
+                       reg = <2>;
+                       label = "lan2";
+               };
+
+               port@3 {
+                       reg = <3>;
+                       label = "lan1";
+               };
+
+               port@4 {
+                       reg = <4>;
+                       label = "wan";
+               };
+
+               port@8 {
+                       reg = <8>;
+                       label = "cpu";
+                       ethernet = <&gmac2>;
+
+                       fixed-link {
+                               speed = <1000>;
+                               full-duplex;
+                       };
+               };
+       };
+};
index 05d4f29..9bef6b9 100644 (file)
                };
        };
 
-       mdio-bus-mux@18003000 {
+       mdio-mux@18003000 {
 
                /* BIT(9) = 1 => external mdio */
                mdio@200 {
index 4b8117f..b51a0ee 100644 (file)
 &usb3_phy {
        status = "okay";
 };
+
+&srab {
+       status = "okay";
+
+       ports {
+               port@0 {
+                       reg = <0>;
+                       label = "wan";
+               };
+
+               port@1 {
+                       reg = <1>;
+                       label = "lan4";
+               };
+
+               port@2 {
+                       reg = <2>;
+                       label = "lan3";
+               };
+
+               port@3 {
+                       reg = <3>;
+                       label = "lan2";
+               };
+
+               port@4 {
+                       reg = <4>;
+                       label = "lan1";
+               };
+
+               port@5 {
+                       reg = <5>;
+                       label = "cpu";
+                       ethernet = <&gmac0>;
+               };
+       };
+};
index 5fecce0..b959a95 100644 (file)
 &usb3_phy {
        status = "okay";
 };
+
+&srab {
+       status = "okay";
+
+       ports {
+               port@0 {
+                       reg = <0>;
+                       label = "wan";
+               };
+
+               port@1 {
+                       reg = <1>;
+                       label = "lan4";
+               };
+
+               port@2 {
+                       reg = <2>;
+                       label = "lan3";
+               };
+
+               port@3 {
+                       reg = <3>;
+                       label = "lan2";
+               };
+
+               port@4 {
+                       reg = <4>;
+                       label = "lan1";
+               };
+
+               port@5 {
+                       reg = <5>;
+                       label = "cpu";
+                       ethernet = <&gmac0>;
+               };
+       };
+};
index 452b8d0..b0d8a68 100644 (file)
@@ -16,7 +16,7 @@
                bootargs = "earlycon";
        };
 
-       memory {
+       memory@0 {
                device_type = "memory";
                reg = <0x00000000 0x08000000>,
                      <0x88000000 0x18000000>;
index 049cdfd..07eb3a8 100644 (file)
                };
        };
 };
+
+&switch {
+       status = "okay";
+
+       ports {
+               port@0 {
+                       reg = <0>;
+                       label = "wan";
+               };
+
+               port@1 {
+                       reg = <1>;
+                       label = "lan1";
+               };
+
+               port@2 {
+                       reg = <2>;
+                       label = "lan2";
+               };
+
+               port@3 {
+                       reg = <3>;
+                       label = "lan3";
+               };
+
+               port@4 {
+                       reg = <4>;
+                       label = "lan4";
+               };
+
+               port@5 {
+                       reg = <5>;
+                       label = "cpu";
+                       ethernet = <&gmac0>;
+               };
+       };
+};
index 3b978dc..64f973e 100644 (file)
@@ -20,7 +20,7 @@
                bootargs = " console=ttyS0,115200n8 earlycon";
        };
 
-       memory {
+       memory@0 {
                reg = <0x00000000 0x08000000>;
                device_type = "memory";
        };
                        reg = <0x50>;
                        pagesize = <32>;
                        read-only;
+                       #address-cells = <1>;
+                       #size-cells = <1>;
+
+                       mac_address: mac-address@66 {
+                               reg = <0x66 0x6>;
+                       };
                };
        };
 };
         */
 };
 
+&gmac0 {
+       nvmem-cell-names = "mac-address";
+       nvmem-cells = <&mac_address>;
+};
+
 &gmac1 {
        status = "disabled";
 };
                };
        };
 };
+
+&srab {
+       status = "okay";
+
+       ports {
+               port@0 {
+                       reg = <0>;
+                       label = "poe";
+               };
+
+               port@5 {
+                       reg = <5>;
+                       label = "cpu";
+                       ethernet = <&gmac0>;
+
+                       fixed-link {
+                               speed = <1000>;
+                               duplex-full;
+                       };
+               };
+       };
+};
index f920892..d4f3550 100644 (file)
@@ -19,7 +19,7 @@
        #size-cells = <1>;
        interrupt-parent = <&gic>;
 
-       chipcommonA@18000000 {
+       chipcommon-a-bus@18000000 {
                compatible = "simple-bus";
                ranges = <0x00000000 0x18000000 0x00001000>;
                #address-cells = <1>;
@@ -44,7 +44,7 @@
                };
        };
 
-       mpcore@19000000 {
+       mpcore-bus@19000000 {
                compatible = "simple-bus";
                ranges = <0x00000000 0x19000000 0x00023000>;
                #address-cells = <1>;
                #address-cells = <1>;
        };
 
-       mdio-bus-mux@18003000 {
-               compatible = "mdio-mux-mmioreg";
+       mdio-mux@18003000 {
+               compatible = "mdio-mux-mmioreg", "mdio-mux";
                mdio-parent-bus = <&mdio>;
                #address-cells = <1>;
                #size-cells = <0>;
                status = "disabled";
        };
 
-       dmu@1800c000 {
+       dmu-bus@1800c000 {
                compatible = "simple-bus";
                ranges = <0 0x1800c000 0x1000>;
                #address-cells = <1>;
index 51546fc..3f03a38 100644 (file)
 
                gmac0: ethernet@5000 {
                        reg = <0x5000 0x1000>;
+
+                       mdio {
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+
+                               switch: switch@1e {
+                                       compatible = "brcm,bcm53125";
+                                       reg = <0x1e>;
+
+                                       status = "disabled";
+
+                                       /* ports are defined in board DTS */
+                                       ports {
+                                               #address-cells = <1>;
+                                               #size-cells = <0>;
+                                       };
+                               };
+                       };
                };
 
                gmac1: ethernet@b000 {
index 3d13e46..d9eb204 100644 (file)
@@ -38,7 +38,7 @@
        model = "NorthStar SVK (BCM94708)";
        compatible = "brcm,bcm94708", "brcm,bcm4708";
 
-       memory {
+       memory@0 {
                device_type = "memory";
                reg = <0x00000000 0x08000000>;
        };
index 5017b7b..618c812 100644 (file)
@@ -38,7 +38,7 @@
        model = "NorthStar SVK (BCM94709)";
        compatible = "brcm,bcm94709", "brcm,bcm4709", "brcm,bcm4708";
 
-       memory {
+       memory@0 {
                device_type = "memory";
                reg = <0x00000000 0x08000000>;
        };
index 1f73885..60376b6 100644 (file)
@@ -37,7 +37,7 @@
 
 / {
        model = "NorthStar Plus SVK (BCM958522ER)";
-       compatible = "brcm,bcm58522", "brcm,nsp";
+       compatible = "brcm,bcm958522er", "brcm,bcm58522", "brcm,nsp";
 
        chosen {
                stdout-path = "serial0:115200n8";
 };
 
 &qspi {
+       status = "okay";
        bspi-sel = <0>;
        flash: m25p80@0 {
                #address-cells = <1>;
index b6b9ca8..8eeb319 100644 (file)
@@ -37,7 +37,7 @@
 
 / {
        model = "NorthStar Plus SVK (BCM958525ER)";
-       compatible = "brcm,bcm58525", "brcm,nsp";
+       compatible = "brcm,bcm958525er", "brcm,bcm58525", "brcm,nsp";
 
        chosen {
                stdout-path = "serial0:115200n8";
 };
 
 &qspi {
+       status = "okay";
        bspi-sel = <0>;
        flash: m25p80@0 {
                #address-cells = <1>;
index ecf426f..dc86d5a 100644 (file)
@@ -37,7 +37,7 @@
 
 / {
        model = "NorthStar Plus XMC (BCM958525xmc)";
-       compatible = "brcm,bcm58525", "brcm,nsp";
+       compatible = "brcm,bcm958525xmc", "brcm,bcm58525", "brcm,nsp";
 
        chosen {
                stdout-path = "serial0:115200n8";
 };
 
 &qspi {
+       status = "okay";
        bspi-sel = <0>;
        flash: m25p80@0 {
                #address-cells = <1>;
index 8ca18da..c457e53 100644 (file)
@@ -37,7 +37,7 @@
 
 / {
        model = "NorthStar Plus SVK (BCM958622HR)";
-       compatible = "brcm,bcm58622", "brcm,nsp";
+       compatible = "brcm,bcm958622hr", "brcm,bcm58622", "brcm,nsp";
 
        chosen {
                stdout-path = "serial0:115200n8";
 };
 
 &qspi {
+       status = "okay";
        bspi-sel = <0>;
        flash: m25p80@0 {
                #address-cells = <1>;
index 9747378..c068719 100644 (file)
@@ -37,7 +37,7 @@
 
 / {
        model = "NorthStar Plus SVK (BCM958623HR)";
-       compatible = "brcm,bcm58623", "brcm,nsp";
+       compatible = "brcm,bcm958623hr", "brcm,bcm58623", "brcm,nsp";
 
        chosen {
                stdout-path = "serial0:115200n8";
 };
 
 &qspi {
+       status = "okay";
        bspi-sel = <0>;
        flash: m25p80@0 {
                #address-cells = <1>;
diff --git a/arch/arm/boot/dts/bcm958625-meraki-alamo.dtsi b/arch/arm/boot/dts/bcm958625-meraki-alamo.dtsi
new file mode 100644 (file)
index 0000000..102acd8
--- /dev/null
@@ -0,0 +1,281 @@
+// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
+/*
+ * Device Tree Bindings for Cisco Meraki MX65 series (Alamo).
+ *
+ * Copyright (C) 2020-2021 Matthew Hagan <mnhagan88@gmail.com>
+ */
+
+#include "bcm958625-meraki-mx6x-common.dtsi"
+
+/ {
+       keys {
+               compatible = "gpio-keys-polled";
+               autorepeat;
+               poll-interval = <20>;
+
+               reset {
+                       label = "reset";
+                       linux,code = <KEY_RESTART>;
+                       gpios = <&gpioa 8 GPIO_ACTIVE_LOW>;
+               };
+       };
+
+       leds {
+               compatible = "gpio-leds";
+
+               led-0 {
+                       /* green:wan1-left */
+                       function = LED_FUNCTION_ACTIVITY;
+                       function-enumerator = <0>;
+                       color = <LED_COLOR_ID_GREEN>;
+                       gpios = <&gpioa 25 GPIO_ACTIVE_LOW>;
+               };
+
+               led-1 {
+                       /* green:wan1-right */
+                       function = LED_FUNCTION_ACTIVITY;
+                       function-enumerator = <1>;
+                       color = <LED_COLOR_ID_GREEN>;
+                       gpios = <&gpioa 24 GPIO_ACTIVE_LOW>;
+               };
+
+               led-2 {
+                       /* green:wan2-left */
+                       function = LED_FUNCTION_ACTIVITY;
+                       function-enumerator = <2>;
+                       color = <LED_COLOR_ID_GREEN>;
+                       gpios = <&gpioa 27 GPIO_ACTIVE_LOW>;
+               };
+
+               led-3 {
+                       /* green:wan2-right */
+                       function = LED_FUNCTION_ACTIVITY;
+                       function-enumerator = <3>;
+                       color = <LED_COLOR_ID_GREEN>;
+                       gpios = <&gpioa 26 GPIO_ACTIVE_LOW>;
+               };
+
+               led-4 {
+                       /* amber:power */
+                       function = LED_FUNCTION_POWER;
+                       color = <LED_COLOR_ID_AMBER>;
+                       gpios = <&gpioa 3 GPIO_ACTIVE_HIGH>;
+                       default-state = "on";
+               };
+
+               led-5 {
+                       /* white:status */
+                       function = LED_FUNCTION_STATUS;
+                       color = <LED_COLOR_ID_WHITE>;
+                       gpios = <&gpioa 31 GPIO_ACTIVE_HIGH>;
+               };
+       };
+};
+
+&axi {
+       mdio-mux@3f1c0 {
+               compatible = "mdio-mux-mmioreg", "mdio-mux";
+               reg = <0x3f1c0 0x4>;
+               mux-mask = <0x2000>;
+               mdio-parent-bus = <&mdio_ext>;
+               #address-cells = <1>;
+               #size-cells = <0>;
+
+               mdio@0 {
+                       reg = <0x0>;
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+
+                       phy_port6: phy@0 {
+                               reg = <0>;
+                       };
+
+                       phy_port7: phy@1 {
+                               reg = <1>;
+                       };
+
+                       phy_port8: phy@2 {
+                               reg = <2>;
+                       };
+
+                       phy_port9: phy@3 {
+                               reg = <3>;
+                       };
+
+                       phy_port10: phy@4 {
+                               reg = <4>;
+                       };
+
+                       switch@10 {
+                               compatible = "qca,qca8337";
+                               reg = <0x10>;
+                               dsa,member = <1 0>;
+
+                               ports {
+                                       #address-cells = <1>;
+                                       #size-cells = <0>;
+                                       port@0 {
+                                               reg = <0>;
+                                               ethernet = <&sgmii1>;
+                                               phy-mode = "sgmii";
+                                               fixed-link {
+                                                       speed = <1000>;
+                                                       full-duplex;
+                                               };
+                                       };
+
+                                       port@1 {
+                                               reg = <1>;
+                                               label = "lan8";
+                                               phy-handle = <&phy_port6>;
+                                       };
+
+                                       port@2 {
+                                               reg = <2>;
+                                               label = "lan9";
+                                               phy-handle = <&phy_port7>;
+                                       };
+
+                                       port@3 {
+                                               reg = <3>;
+                                               label = "lan10";
+                                               phy-handle = <&phy_port8>;
+                                       };
+
+                                       port@4 {
+                                               reg = <4>;
+                                               label = "lan11";
+                                               phy-handle = <&phy_port9>;
+                                       };
+
+                                       port@5 {
+                                               reg = <5>;
+                                               label = "lan12";
+                                               phy-handle = <&phy_port10>;
+                                       };
+                               };
+                       };
+               };
+
+               mdio-mii@2000 {
+                       reg = <0x2000>;
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+
+                       phy_port1: phy@0 {
+                               reg = <0>;
+                       };
+
+                       phy_port2: phy@1 {
+                               reg = <1>;
+                       };
+
+                       phy_port3: phy@2 {
+                               reg = <2>;
+                       };
+
+                       phy_port4: phy@3 {
+                               reg = <3>;
+                       };
+
+                       phy_port5: phy@4 {
+                               reg = <4>;
+                       };
+
+                       switch@10 {
+                               compatible = "qca,qca8337";
+                               reg = <0x10>;
+                               dsa,member = <2 0>;
+
+                               ports {
+                                       #address-cells = <1>;
+                                       #size-cells = <0>;
+                                       port@0 {
+                                               reg = <0>;
+                                               ethernet = <&sgmii0>;
+                                               phy-mode = "sgmii";
+                                               fixed-link {
+                                                       speed = <1000>;
+                                                       full-duplex;
+                                               };
+                                       };
+
+                                       port@1 {
+                                               reg = <1>;
+                                               label = "lan3";
+                                               phy-handle = <&phy_port1>;
+                                       };
+
+                                       port@2 {
+                                               reg = <2>;
+                                               label = "lan4";
+                                               phy-handle = <&phy_port2>;
+                                       };
+
+                                       port@3 {
+                                               reg = <3>;
+                                               label = "lan5";
+                                               phy-handle = <&phy_port3>;
+                                       };
+
+                                       port@4 {
+                                               reg = <4>;
+                                               label = "lan6";
+                                               phy-handle = <&phy_port4>;
+                                       };
+
+                                       port@5 {
+                                               reg = <5>;
+                                               label = "lan7";
+                                               phy-handle = <&phy_port5>;
+                                       };
+                               };
+                       };
+               };
+       };
+};
+
+&srab {
+       compatible = "brcm,bcm58625-srab", "brcm,nsp-srab";
+       status = "okay";
+       dsa,member = <0 0>;
+
+       ports {
+               port@0 {
+                       label = "wan1";
+                       reg = <0>;
+               };
+
+               port@1 {
+                       label = "wan2";
+                       reg = <1>;
+               };
+
+               sgmii0: port@4 {
+                       label = "sw0";
+                       reg = <4>;
+                       fixed-link {
+                               speed = <1000>;
+                               full-duplex;
+                       };
+               };
+
+               sgmii1: port@5 {
+                       label = "sw1";
+                       reg = <5>;
+                       fixed-link {
+                               speed = <1000>;
+                               full-duplex;
+                       };
+               };
+
+               port@8 {
+                       ethernet = <&amac2>;
+                       reg = <8>;
+                       fixed-link {
+                               speed = <1000>;
+                               full-duplex;
+                       };
+               };
+       };
+};
diff --git a/arch/arm/boot/dts/bcm958625-meraki-kingpin.dtsi b/arch/arm/boot/dts/bcm958625-meraki-kingpin.dtsi
new file mode 100644 (file)
index 0000000..7c487c7
--- /dev/null
@@ -0,0 +1,163 @@
+// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
+/*
+ * Device Tree Bindings for Cisco Meraki MX64 series (Kingpin).
+ *
+ * Copyright (C) 2020-2021 Matthew Hagan <mnhagan88@gmail.com>
+ */
+
+#include "bcm958625-meraki-mx6x-common.dtsi"
+
+/ {
+
+       keys {
+               compatible = "gpio-keys-polled";
+               autorepeat;
+               poll-interval = <20>;
+
+               reset {
+                       label = "reset";
+                       linux,code = <KEY_RESTART>;
+                       gpios = <&gpioa 6 GPIO_ACTIVE_LOW>;
+               };
+       };
+
+       leds {
+               compatible = "gpio-leds";
+
+               led-0 {
+                       /* green:lan1-left */
+                       function = LED_FUNCTION_ACTIVITY;
+                       function-enumerator = <0>;
+                       color = <LED_COLOR_ID_GREEN>;
+                       gpios = <&gpioa 19 GPIO_ACTIVE_LOW>;
+               };
+
+               led-1 {
+                       /* green:lan1-right */
+                       function = LED_FUNCTION_ACTIVITY;
+                       function-enumerator = <1>;
+                       color = <LED_COLOR_ID_GREEN>;
+                       gpios = <&gpioa 18 GPIO_ACTIVE_LOW>;
+               };
+
+               led-2 {
+                       /* green:lan2-left */
+                       function = LED_FUNCTION_ACTIVITY;
+                       function-enumerator = <2>;
+                       color = <LED_COLOR_ID_GREEN>;
+                       gpios = <&gpioa 24 GPIO_ACTIVE_LOW>;
+               };
+
+               led-3 {
+                       /* green:lan2-right */
+                       function = LED_FUNCTION_ACTIVITY;
+                       function-enumerator = <3>;
+                       color = <LED_COLOR_ID_GREEN>;
+                       gpios = <&gpioa 20 GPIO_ACTIVE_LOW>;
+               };
+
+               led-4 {
+                       /* green:lan3-left */
+                       function = LED_FUNCTION_ACTIVITY;
+                       function-enumerator = <4>;
+                       color = <LED_COLOR_ID_GREEN>;
+                       gpios = <&gpioa 26 GPIO_ACTIVE_LOW>;
+               };
+
+               led-5 {
+                       /* green:lan3-right */
+                       function = LED_FUNCTION_ACTIVITY;
+                       function-enumerator = <5>;
+                       color = <LED_COLOR_ID_GREEN>;
+                       gpios = <&gpioa 25 GPIO_ACTIVE_LOW>;
+               };
+
+               led-6 {
+                       /* green:lan4-left */
+                       function = LED_FUNCTION_ACTIVITY;
+                       function-enumerator = <6>;
+                       color = <LED_COLOR_ID_GREEN>;
+                       gpios = <&gpioa 28 GPIO_ACTIVE_LOW>;
+               };
+
+               led-7 {
+                       /* green:lan4-right */
+                       function = LED_FUNCTION_ACTIVITY;
+                       function-enumerator = <7>;
+                       color = <LED_COLOR_ID_GREEN>;
+                       gpios = <&gpioa 27 GPIO_ACTIVE_LOW>;
+               };
+
+               led-8 {
+                       /* green:wan-left */
+                       function = LED_FUNCTION_ACTIVITY;
+                       function-enumerator = <8>;
+                       color = <LED_COLOR_ID_GREEN>;
+                       gpios = <&gpioa 30 GPIO_ACTIVE_LOW>;
+               };
+
+               led-9 {
+                       /* green:wan-right */
+                       function = LED_FUNCTION_ACTIVITY;
+                       function-enumerator = <9>;
+                       color = <LED_COLOR_ID_GREEN>;
+                       gpios = <&gpioa 29 GPIO_ACTIVE_LOW>;
+               };
+
+               led-a {
+                       /* amber:power */
+                       function = LED_FUNCTION_POWER;
+                       color = <LED_COLOR_ID_AMBER>;
+                       gpios = <&gpioa 0 GPIO_ACTIVE_LOW>;
+                       default-state = "on";
+               };
+
+               led-b {
+                       /* white:status */
+                       function = LED_FUNCTION_STATUS;
+                       color = <LED_COLOR_ID_WHITE>;
+                       gpios = <&gpioa 31 GPIO_ACTIVE_HIGH>;
+               };
+       };
+};
+
+&srab {
+       compatible = "brcm,bcm58625-srab", "brcm,nsp-srab";
+       status = "okay";
+
+       ports {
+               port@0 {
+                       label = "lan1";
+                       reg = <0>;
+               };
+
+               port@1 {
+                       label = "lan2";
+                       reg = <1>;
+               };
+
+               port@2 {
+                       label = "lan3";
+                       reg = <2>;
+               };
+
+               port@3 {
+                       label = "lan4";
+                       reg = <3>;
+               };
+
+               port@4 {
+                       label = "wan";
+                       reg = <4>;
+               };
+
+               port@8 {
+                       ethernet = <&amac2>;
+                       reg = <8>;
+                       fixed-link {
+                               speed = <1000>;
+                               full-duplex;
+                       };
+               };
+       };
+};
diff --git a/arch/arm/boot/dts/bcm958625-meraki-mx64-a0.dts b/arch/arm/boot/dts/bcm958625-meraki-mx64-a0.dts
new file mode 100644 (file)
index 0000000..9944566
--- /dev/null
@@ -0,0 +1,25 @@
+// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
+/*
+ * Device Tree Bindings for Cisco Meraki MX64 with A0 SoC.
+ *
+ * Copyright (C) 2020-2021 Matthew Hagan <mnhagan88@gmail.com>
+ */
+
+/dts-v1/;
+
+#include "bcm958625-meraki-kingpin.dtsi"
+#include "bcm-nsp-ax.dtsi"
+
+/ {
+       model = "Cisco Meraki MX64(A0)";
+       compatible = "meraki,mx64-a0", "brcm,bcm58625", "brcm,nsp";
+
+       chosen {
+               stdout-path = "serial0:115200n8";
+       };
+
+       memory@60000000 {
+               device_type = "memory";
+               reg = <0x60000000 0x80000000>;
+       };
+};
diff --git a/arch/arm/boot/dts/bcm958625-meraki-mx64.dts b/arch/arm/boot/dts/bcm958625-meraki-mx64.dts
new file mode 100644 (file)
index 0000000..0693943
--- /dev/null
@@ -0,0 +1,24 @@
+// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
+/*
+ * Device Tree Bindings for Cisco Meraki MX64 with B0+ SoC.
+ *
+ * Copyright (C) 2020-2021 Matthew Hagan <mnhagan88@gmail.com>
+ */
+
+/dts-v1/;
+
+#include "bcm958625-meraki-kingpin.dtsi"
+
+/ {
+       model = "Cisco Meraki MX64";
+       compatible = "meraki,mx64", "brcm,bcm58625", "brcm,nsp";
+
+       chosen {
+               stdout-path = "serial0:115200n8";
+       };
+
+       memory@60000000 {
+               device_type = "memory";
+               reg = <0x60000000 0x80000000>;
+       };
+};
diff --git a/arch/arm/boot/dts/bcm958625-meraki-mx64w-a0.dts b/arch/arm/boot/dts/bcm958625-meraki-mx64w-a0.dts
new file mode 100644 (file)
index 0000000..112fddb
--- /dev/null
@@ -0,0 +1,33 @@
+// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
+/*
+ * Device Tree Bindings for Cisco Meraki MX64W with A0 SoC.
+ *
+ * Copyright (C) 2020-2021 Matthew Hagan <mnhagan88@gmail.com>
+ */
+
+/dts-v1/;
+
+#include "bcm958625-meraki-kingpin.dtsi"
+#include "bcm-nsp-ax.dtsi"
+
+/ {
+       model = "Cisco Meraki MX64W(A0)";
+       compatible = "meraki,mx64w-a0", "brcm,bcm58625", "brcm,nsp";
+
+       chosen {
+               stdout-path = "serial0:115200n8";
+       };
+
+       memory@60000000 {
+               device_type = "memory";
+               reg = <0x60000000 0x80000000>;
+       };
+};
+
+&pcie0 {
+       status = "okay";
+};
+
+&pcie1 {
+       status = "okay";
+};
diff --git a/arch/arm/boot/dts/bcm958625-meraki-mx64w.dts b/arch/arm/boot/dts/bcm958625-meraki-mx64w.dts
new file mode 100644 (file)
index 0000000..de2e367
--- /dev/null
@@ -0,0 +1,32 @@
+// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
+/*
+ * Device Tree Bindings for Cisco Meraki MX64W with B0+ SoC.
+ *
+ * Copyright (C) 2020-2021 Matthew Hagan <mnhagan88@gmail.com>
+ */
+
+/dts-v1/;
+
+#include "bcm958625-meraki-kingpin.dtsi"
+
+/ {
+       model = "Cisco Meraki MX64W";
+       compatible = "meraki,mx64w", "brcm,bcm58625", "brcm,nsp";
+
+       chosen {
+               stdout-path = "serial0:115200n8";
+       };
+
+       memory@60000000 {
+               device_type = "memory";
+               reg = <0x60000000 0x80000000>;
+       };
+};
+
+&pcie0 {
+       status = "okay";
+};
+
+&pcie1 {
+       status = "okay";
+};
diff --git a/arch/arm/boot/dts/bcm958625-meraki-mx65.dts b/arch/arm/boot/dts/bcm958625-meraki-mx65.dts
new file mode 100644 (file)
index 0000000..d1b684d
--- /dev/null
@@ -0,0 +1,24 @@
+// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
+/*
+ * Device Tree Bindings for Cisco Meraki MX65.
+ *
+ * Copyright (C) 2020-2021 Matthew Hagan <mnhagan88@gmail.com>
+ */
+
+/dts-v1/;
+
+#include "bcm958625-meraki-alamo.dtsi"
+
+/ {
+       model = "Cisco Meraki MX65";
+       compatible = "meraki,mx65", "brcm,bcm58625", "brcm,nsp";
+
+       chosen {
+               stdout-path = "serial0:115200n8";
+       };
+
+       memory@60000000 {
+               device_type = "memory";
+               reg = <0x60000000 0x80000000>;
+       };
+};
diff --git a/arch/arm/boot/dts/bcm958625-meraki-mx65w.dts b/arch/arm/boot/dts/bcm958625-meraki-mx65w.dts
new file mode 100644 (file)
index 0000000..a2165ab
--- /dev/null
@@ -0,0 +1,32 @@
+// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
+/*
+ * Device Tree Bindings for Cisco Meraki MX65W.
+ *
+ * Copyright (C) 2020-2021 Matthew Hagan <mnhagan88@gmail.com>
+ */
+
+/dts-v1/;
+
+#include "bcm958625-meraki-alamo.dtsi"
+
+/ {
+       model = "Cisco Meraki MX65W";
+       compatible = "meraki,mx65w", "brcm,bcm58625", "brcm,nsp";
+
+       chosen {
+               stdout-path = "serial0:115200n8";
+       };
+
+       memory@60000000 {
+               device_type = "memory";
+               reg = <0x60000000 0x80000000>;
+       };
+};
+
+&pcie0 {
+       status = "okay";
+};
+
+&pcie1 {
+       status = "okay";
+};
diff --git a/arch/arm/boot/dts/bcm958625-meraki-mx6x-common.dtsi b/arch/arm/boot/dts/bcm958625-meraki-mx6x-common.dtsi
new file mode 100644 (file)
index 0000000..6519b7c
--- /dev/null
@@ -0,0 +1,129 @@
+// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
+/*
+ * Common Bindings for Cisco Meraki MX64 (Kingpin) and MX65 (Alamo) devices.
+ *
+ * Copyright (C) 2020-2021 Matthew Hagan <mnhagan88@gmail.com>
+ */
+
+#include "bcm-nsp.dtsi"
+#include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/input/input.h>
+#include <dt-bindings/leds/common.h>
+
+/ {
+       pwm-leds {
+               compatible = "pwm-leds";
+
+               led-1 {
+                       function = LED_FUNCTION_INDICATOR;
+                       color = <LED_COLOR_ID_RED>;
+                       pwms = <&pwm 1 50000>;
+                       max-brightness = <255>;
+               };
+
+               led-2 {
+                       function = LED_FUNCTION_INDICATOR;
+                       color = <LED_COLOR_ID_GREEN>;
+                       pwms = <&pwm 2 50000>;
+                       max-brightness = <255>;
+               };
+
+               led-3 {
+                       function = LED_FUNCTION_INDICATOR;
+                       color = <LED_COLOR_ID_BLUE>;
+                       pwms = <&pwm 3 50000>;
+                       max-brightness = <255>;
+               };
+       };
+};
+
+&amac2 {
+       status = "okay";
+};
+
+&ehci0 {
+       status = "okay";
+};
+
+&i2c0 {
+       status = "okay";
+
+       eeprom@50 {
+               compatible = "atmel,24c64";
+               reg = <0x50>;
+               pagesize = <32>;
+               read-only;
+       };
+};
+
+&nand_controller {
+       nand@0 {
+               compatible = "brcm,nandcs";
+               reg = <0>;
+               nand-on-flash-bbt;
+
+               #address-cells = <1>;
+               #size-cells = <1>;
+
+               nand-ecc-strength = <24>;
+               nand-ecc-step-size = <1024>;
+
+               brcm,nand-oob-sector-size = <27>;
+
+               partition@0 {
+                       label = "u-boot";
+                       reg = <0x0 0x80000>;
+                       read-only;
+               };
+
+               partition@80000 {
+                       label = "shmoo";
+                       reg = <0x80000 0x80000>;
+                       read-only;
+               };
+
+               partition@100000 {
+                       label = "bootkernel1";
+                       reg = <0x100000 0x300000>;
+               };
+
+               partition@400000 {
+                       label = "nvram";
+                       reg = <0x400000 0x100000>;
+               };
+
+               partition@500000 {
+                       label = "bootkernel2";
+                       reg = <0x500000 0x300000>;
+               };
+
+               partition@800000 {
+                       label = "ubi";
+                       reg = <0x800000 0x3f700000>;
+               };
+       };
+};
+
+&ohci0 {
+       status = "okay";
+};
+
+&pinctrl {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pwm_leds>;
+
+       pwm_leds: pwm_leds {
+               function = "pwm";
+               groups = "pwm1_grp", "pwm2_grp", "pwm3_grp";
+       };
+};
+
+&pwm {
+       status = "okay";
+       #pwm-cells = <2>;
+};
+
+&uart0 {
+       clock-frequency = <62500000>;
+       status = "okay";
+};
index 0f92b77..b22fc66 100644 (file)
@@ -37,7 +37,7 @@
 
 / {
        model = "NorthStar Plus SVK (BCM958625HR)";
-       compatible = "brcm,bcm58625", "brcm,nsp";
+       compatible = "brcm,bcm958625hr", "brcm,bcm58625", "brcm,nsp";
 
        chosen {
                stdout-path = "serial0:115200n8";
 };
 
 &qspi {
+       status = "okay";
        bspi-sel = <0>;
        flash: m25p80@0 {
                #address-cells = <1>;
index 9e984ca..0183f89 100644 (file)
@@ -36,7 +36,7 @@
 
 / {
        model = "NorthStar Plus SVK (BCM958625K)";
-       compatible = "brcm,bcm58625", "brcm,nsp";
+       compatible = "brcm,bcm958625k", "brcm,bcm58625", "brcm,nsp";
 
        chosen {
                stdout-path = "serial0:115200n8";
 };
 
 &qspi {
+       status = "okay";
        bspi-sel = <0>;
        flash: m25p80@0 {
                #address-cells = <1>;
index 5475dab..007e347 100644 (file)
@@ -37,7 +37,7 @@
 
 / {
        model = "NorthStar Plus SVK (BCM988312HR)";
-       compatible = "brcm,bcm88312", "brcm,nsp";
+       compatible = "brcm,bcm988312hr", "brcm,bcm88312", "brcm,nsp";
 
        chosen {
                stdout-path = "serial0:115200n8";
 
 /* USB 3 support needed to be complete */
 
+&dma {
+       status = "okay";
+};
+
 &amac0 {
        status = "okay";
 };
 };
 
 &qspi {
+       status = "okay";
        bspi-sel = <0>;
        flash: m25p80@0 {
                #address-cells = <1>;
index dfc1ef8..6b485cb 100644 (file)
                        };
                };
 
+               target-module@59000000 {
+                       compatible = "ti,sysc-omap4", "ti,sysc";
+                       reg = <0x59000020 0x4>;
+                       reg-names = "rev";
+                       clocks = <&dss_clkctrl DRA7_DSS_BB2D_CLKCTRL 0>;
+                       clock-names = "fck";
+                       #address-cells = <1>;
+                       #size-cells = <1>;
+                       ranges = <0x0 0x59000000 0x1000>;
+
+                       bb2d: gpu@0 {
+                               compatible = "vivante,gc";
+                               reg = <0x0 0x700>;
+                               interrupts = <GIC_SPI 120 IRQ_TYPE_LEVEL_HIGH>;
+                               clocks = <&dss_clkctrl DRA7_BB2D_CLKCTRL 0>;
+                               clock-names = "core";
+                       };
+               };
+
                aes1_target: target-module@4b500000 {
                        compatible = "ti,sysc-omap2", "ti,sysc";
                        reg = <0x4b500080 0x4>,
index cfb239d..1a49f15 100644 (file)
@@ -41,7 +41,7 @@
        leds: leds {
                compatible = "gpio-leds";
 
-               on {
+               led {
                        label = "e60k02:white:on";
                        gpios = <&gpio5 7 GPIO_ACTIVE_LOW>;
                        linux,default-trigger = "timer";
diff --git a/arch/arm/boot/dts/e70k02.dtsi b/arch/arm/boot/dts/e70k02.dtsi
new file mode 100644 (file)
index 0000000..156de65
--- /dev/null
@@ -0,0 +1,320 @@
+// SPDX-License-Identifier: GPL-2.0
+/*
+ * Copyright 2021 Andreas Kemnade
+ * based on works
+ * Copyright 2016 Freescale Semiconductor, Inc.
+ * and
+ * Copyright (C) 2014 Ricoh Electronic Devices Co., Ltd
+ *
+ * Netronix E70K02 board common.
+ * This board is equipped with different SoCs and
+ * found in ebook-readers like the Kobo Clara HD (with i.MX6SLL) and
+ * the Tolino Shine 3 (with i.MX6SL)
+ */
+#include <dt-bindings/input/input.h>
+
+/ {
+       aliases {
+               mmc0 = &usdhc1;
+               mmc1 = &usdhc3;
+       };
+
+       chosen {
+               stdout-path = &uart1;
+       };
+
+       gpio_keys: gpio-keys {
+               compatible = "gpio-keys";
+
+               power {
+                       label = "Power";
+                       gpios = <&gpio4 25 GPIO_ACTIVE_LOW>;
+                       linux,code = <KEY_POWER>;
+                       wakeup-source;
+               };
+
+               cover {
+                       label = "Cover";
+                       gpios = <&gpio4 23 GPIO_ACTIVE_LOW>;
+                       linux,code = <SW_LID>;
+                       linux,input-type = <EV_SW>;
+                       wakeup-source;
+               };
+
+               pageup {
+                       label = "PageUp";
+                       gpios = <&gpio4 0 GPIO_ACTIVE_LOW>;
+                       linux,code = <KEY_PAGEUP>;
+               };
+
+               pagedown {
+                       label = "PageDown";
+                       gpios = <&gpio4 2 GPIO_ACTIVE_LOW>;
+                       linux,code = <KEY_PAGEDOWN>;
+               };
+       };
+
+       leds: leds {
+               compatible = "gpio-leds";
+
+               led {
+                       label = "e70k02:white:on";
+                       gpios = <&gpio4 17 GPIO_ACTIVE_LOW>;
+                       linux,default-trigger = "timer";
+               };
+       };
+
+       memory@80000000 {
+               device_type = "memory";
+               reg = <0x80000000 0x20000000>;
+       };
+
+       reg_wifi: regulator-wifi {
+               compatible = "regulator-fixed";
+               regulator-name = "SD3_SPWR";
+               regulator-min-microvolt = <3000000>;
+               regulator-max-microvolt = <3000000>;
+               gpio = <&gpio4 29 GPIO_ACTIVE_HIGH>;
+               enable-active-high;
+       };
+
+       wifi_pwrseq: wifi-pwrseq {
+               compatible = "mmc-pwrseq-simple";
+               post-power-on-delay-ms = <20>;
+               reset-gpios = <&gpio5 0 GPIO_ACTIVE_LOW>;
+       };
+};
+
+&i2c1 {
+       clock-frequency = <100000>;
+       status = "okay";
+
+       lm3630a: backlight@36 {
+               reg = <0x36>;
+               compatible = "ti,lm3630a";
+               enable-gpios = <&gpio2 10 GPIO_ACTIVE_HIGH>;
+
+               #address-cells = <1>;
+               #size-cells = <0>;
+
+               led@0 {
+                       reg = <0>;
+                       led-sources = <0>;
+                       label = "backlight_warm";
+                       default-brightness = <0>;
+                       max-brightness = <255>;
+               };
+
+               led@1 {
+                       reg = <1>;
+                       led-sources = <1>;
+                       label = "backlight_cold";
+                       default-brightness = <0>;
+                       max-brightness = <255>;
+               };
+       };
+
+       /* TODO: KX122 acceleration sensor a 0x1e */
+
+};
+
+&i2c2 {
+       clock-frequency = <100000>;
+       status = "okay";
+
+       /* TODO: CYTTSP5 touch controller at 0x24 */
+
+       /* TODO: SY7636 PMIC for E Ink at 0x62 */
+
+};
+
+&i2c3 {
+       clock-frequency = <100000>;
+       status = "okay";
+
+       ricoh619: pmic@32 {
+               compatible = "ricoh,rc5t619";
+               reg = <0x32>;
+               interrupt-parent = <&gpio4>;
+               interrupts = <19 IRQ_TYPE_EDGE_FALLING>;
+               system-power-controller;
+
+               regulators {
+                       dcdc1_reg: DCDC1 {
+                               regulator-name = "DCDC1";
+                               regulator-min-microvolt = <300000>;
+                               regulator-max-microvolt = <1875000>;
+                               regulator-always-on;
+                               regulator-boot-on;
+
+                               regulator-state-mem {
+                                       regulator-on-in-suspend;
+                                       regulator-suspend-max-microvolt = <900000>;
+                                       regulator-suspend-min-microvolt = <900000>;
+                               };
+                       };
+
+                       /* Core3_3V3 */
+                       dcdc2_reg: DCDC2 {
+                               regulator-name = "DCDC2";
+                               regulator-always-on;
+                               regulator-boot-on;
+
+                               regulator-state-mem {
+                                       regulator-on-in-suspend;
+                                       regulator-suspend-max-microvolt = <3300000>;
+                                       regulator-suspend-min-microvolt = <3300000>;
+                               };
+                       };
+
+                       dcdc3_reg: DCDC3 {
+                               regulator-name = "DCDC3";
+                               regulator-min-microvolt = <300000>;
+                               regulator-max-microvolt = <1875000>;
+                               regulator-always-on;
+                               regulator-boot-on;
+
+                               regulator-state-mem {
+                                       regulator-on-in-suspend;
+                                       regulator-suspend-max-microvolt = <1140000>;
+                                       regulator-suspend-min-microvolt = <1140000>;
+                               };
+                       };
+
+                       /* Core4_1V2 */
+                       dcdc4_reg: DCDC4 {
+                               regulator-name = "DCDC4";
+                               regulator-min-microvolt = <1200000>;
+                               regulator-max-microvolt = <1200000>;
+                               regulator-always-on;
+                               regulator-boot-on;
+
+                               regulator-state-mem {
+                                       regulator-on-in-suspend;
+                                       regulator-suspend-max-microvolt = <1140000>;
+                                       regulator-suspend-min-microvolt = <1140000>;
+                               };
+                       };
+
+                       /* Core4_1V8 */
+                       dcdc5_reg: DCDC5 {
+                               regulator-name = "DCDC5";
+                               regulator-min-microvolt = <1800000>;
+                               regulator-max-microvolt = <1800000>;
+                               regulator-always-on;
+                               regulator-boot-on;
+
+                               regulator-state-mem {
+                                       regulator-on-in-suspend;
+                                       regulator-suspend-max-microvolt = <1700000>;
+                                       regulator-suspend-min-microvolt = <1700000>;
+                               };
+                       };
+
+                       ldo1_reg: LDO1  {
+                               regulator-name = "LDO1";
+                               regulator-boot-on;
+                       };
+
+                       /* Core1_3V3 */
+                       ldo2_reg: LDO2  {
+                               regulator-name = "LDO2";
+                               regulator-always-on;
+                               regulator-boot-on;
+
+                               regulator-state-mem {
+                                       regulator-on-in-suspend;
+                                       regulator-suspend-max-microvolt = <3000000>;
+                                       regulator-suspend-min-microvolt = <3000000>;
+                               };
+                       };
+
+                       /* Core5_1V2 */
+                       ldo3_reg: LDO3  {
+                               regulator-name = "LDO3";
+                               regulator-always-on;
+                               regulator-boot-on;
+                       };
+
+                       ldo4_reg: LDO4 {
+                               regulator-name = "LDO4";
+                               regulator-boot-on;
+                       };
+
+                       /* SPD_3V3 */
+                       ldo5_reg: LDO5 {
+                               regulator-name = "LDO5";
+                               regulator-always-on;
+                               regulator-boot-on;
+                       };
+
+                       /* DDR_0V6 */
+                       ldo6_reg: LDO6 {
+                               regulator-name = "LDO6";
+                               regulator-always-on;
+                               regulator-boot-on;
+                       };
+
+                       /* VDD_PWM */
+                       ldo7_reg: LDO7 {
+                               regulator-name = "LDO7";
+                               regulator-boot-on;
+                       };
+
+                       /* ldo_1v8 */
+                       ldo8_reg: LDO8 {
+                               regulator-name = "LDO8";
+                               regulator-min-microvolt = <1800000>;
+                               regulator-max-microvolt = <1800000>;
+                               regulator-boot-on;
+                       };
+
+                       ldo9_reg: LDO9 {
+                               regulator-name = "LDO9";
+                               regulator-boot-on;
+                       };
+
+                       ldo10_reg: LDO10 {
+                               regulator-name = "LDO10";
+                               regulator-boot-on;
+                       };
+
+                       ldortc1_reg: LDORTC1  {
+                               regulator-name = "LDORTC1";
+                               regulator-boot-on;
+                       };
+               };
+       };
+};
+
+&snvs_rtc {
+       /* we are using the rtc in the pmic, not disabled in imx6sll.dtsi */
+       status = "disabled";
+};
+
+&uart1 {
+       status = "okay";
+};
+
+&usdhc1 {
+       non-removable;
+       no-1-8-v;
+       status = "okay";
+};
+
+&usdhc3 {
+       vmmc-supply = <&reg_wifi>;
+       mmc-pwrseq = <&wifi_pwrseq>;
+       cap-power-off-card;
+       non-removable;
+       status = "okay";
+};
+
+&usbotg1 {
+       pinctrl-names = "default";
+       disable-over-current;
+       srp-disable;
+       hnp-disable;
+       adp-disable;
+       status = "okay";
+};
index 0a27f03..89495dd 100644 (file)
@@ -80,7 +80,7 @@
        };
 
        ethernet@20000000 {
-               compatible = "smsc,lan9220", "smsc,lan9115";
+               compatible = "smsc,lan9221", "smsc,lan9115";
                reg = <0x20000000 0x10000>;
                phy-mode = "mii";
                interrupt-parent = <&gpio0>;
index f6ba5e4..5f7f8fe 100644 (file)
@@ -19,6 +19,7 @@
 / {
        model = "Samsung Rinato board";
        compatible = "samsung,rinato", "samsung,exynos3250", "samsung,exynos3";
+       chassis-type = "watch";
 
        aliases {
                i2c7 = &i2c_max77836;
index 5592217..19bb7dc 100644 (file)
@@ -18,6 +18,7 @@
 / {
        model = "Samsung Galaxy S2 (GT-I9100)";
        compatible = "samsung,i9100", "samsung,exynos4210", "samsung,exynos4";
+       chassis-type = "handset";
 
        memory@40000000 {
                device_type = "memory";
index 1c53941..435fda6 100644 (file)
                        ldo4_reg: LDO4 {
                                regulator-name = "VDD_RTC_1.8V";
                                regulator-min-microvolt = <1800000>;
-                               regulator-max-microvolt = <1800000>;
+                               regulator-max-microvolt = <1800000>;
                                regulator-always-on;
                        };
 
                        ldo6_reg: LDO6 {
                                regulator-name = "VMIPI_1.8V";
                                regulator-min-microvolt = <1800000>;
-                               regulator-max-microvolt = <1800000>;
+                               regulator-max-microvolt = <1800000>;
                                regulator-always-on;
                        };
 
                        ldo7_reg: LDO7 {
                                regulator-name = "VDD_AUD_1.8V";
                                regulator-min-microvolt = <1800000>;
-                               regulator-max-microvolt = <1800000>;
+                               regulator-max-microvolt = <1800000>;
                        };
 
                        ldo8_reg: LDO8 {
                                regulator-name = "VADC_3.3V";
                                regulator-min-microvolt = <3300000>;
-                               regulator-max-microvolt = <3300000>;
+                               regulator-max-microvolt = <3300000>;
                        };
 
                        ldo9_reg: LDO9 {
                                regulator-name = "DVDD_SWB_2.8V";
                                regulator-min-microvolt = <2800000>;
-                               regulator-max-microvolt = <2800000>;
+                               regulator-max-microvolt = <2800000>;
                                regulator-always-on;
                        };
 
                        ldo10_reg: LDO10 {
                                regulator-name = "VDD_PLL_1.1V";
                                regulator-min-microvolt = <1100000>;
-                               regulator-max-microvolt = <1100000>;
+                               regulator-max-microvolt = <1100000>;
                                regulator-always-on;
                        };
 
                        ldo11_reg: LDO11 {
                                regulator-name = "VDD_AUD_3V";
                                regulator-min-microvolt = <3000000>;
-                               regulator-max-microvolt = <3000000>;
+                               regulator-max-microvolt = <3000000>;
                        };
 
                        ldo14_reg: LDO14 {
                                regulator-name = "AVDD18_SWB_1.8V";
                                regulator-min-microvolt = <1800000>;
-                               regulator-max-microvolt = <1800000>;
+                               regulator-max-microvolt = <1800000>;
                                regulator-always-on;
                        };
 
                        ldo17_reg: LDO17 {
                                regulator-name = "VDD_SWB_3.3V";
                                regulator-min-microvolt = <3300000>;
-                               regulator-max-microvolt = <3300000>;
+                               regulator-max-microvolt = <3300000>;
                                regulator-always-on;
                        };
 
                        ldo21_reg: LDO21 {
                                regulator-name = "VDD_MIF_1.2V";
                                regulator-min-microvolt = <1200000>;
-                               regulator-max-microvolt = <1200000>;
+                               regulator-max-microvolt = <1200000>;
                                regulator-always-on;
                        };
 
                        buck1_reg: BUCK1 {
                                regulator-name = "VDD_ARM_1.2V";
                                regulator-min-microvolt = <950000>;
-                               regulator-max-microvolt = <1350000>;
+                               regulator-max-microvolt = <1350000>;
                                regulator-always-on;
                                regulator-boot-on;
                        };
                        buck2_reg: BUCK2 {
                                regulator-name = "VDD_INT_1.1V";
                                regulator-min-microvolt = <900000>;
-                               regulator-max-microvolt = <1100000>;
+                               regulator-max-microvolt = <1100000>;
                                regulator-always-on;
                                regulator-boot-on;
                        };
index 3eb8df3..9c4ff75 100644 (file)
@@ -16,6 +16,7 @@
 / {
        model = "Samsung Trats based on Exynos4210";
        compatible = "samsung,trats", "samsung,exynos4210", "samsung,exynos4";
+       chassis-type = "handset";
 
        memory@40000000 {
                device_type = "memory";
index f052853..9f93e74 100644 (file)
@@ -16,6 +16,7 @@
 / {
        model = "Samsung Universal C210 based on Exynos4210 rev0";
        compatible = "samsung,universal_c210", "samsung,exynos4210", "samsung,exynos4";
+       chassis-type = "handset";
 
        memory@40000000 {
                device_type = "memory";
index 07fbcf8..61aca57 100644 (file)
@@ -12,6 +12,7 @@
 / {
        model = "Samsung Galaxy S3 (GT-I9300) based on Exynos4412";
        compatible = "samsung,i9300", "samsung,midas", "samsung,exynos4412", "samsung,exynos4";
+       chassis-type = "handset";
 
        /* bootargs are passed in by bootloader */
 
index 6bc3d89..77083f1 100644 (file)
@@ -5,6 +5,7 @@
 / {
        model = "Samsung Galaxy S3 (GT-I9305) based on Exynos4412";
        compatible = "samsung,i9305", "samsung,midas", "samsung,exynos4412", "samsung,exynos4";
+       chassis-type = "handset";
 
        /* bootargs are passed in by bootloader */
 
index 2c79214..9ae05b0 100644 (file)
@@ -5,6 +5,7 @@
 / {
        compatible = "samsung,n710x", "samsung,midas", "samsung,exynos4412", "samsung,exynos4";
        model = "Samsung Galaxy Note 2 (GT-N7100, GT-N7105) based on Exynos4412";
+       chassis-type = "handset";
 
        memory@40000000 {
                device_type = "memory";
index 5479ef0..e6aec5f 100644 (file)
                        buck1_reg: BUCK1 {
                                regulator-name = "VDD_MIF";
                                regulator-min-microvolt = <950000>;
-                               regulator-max-microvolt = <1100000>;
+                               regulator-max-microvolt = <1100000>;
                                regulator-always-on;
                                regulator-boot-on;
                                op_mode = <1>; /* Normal Mode */
                        buck2_reg: BUCK2 {
                                regulator-name = "VDD_ARM";
                                regulator-min-microvolt = <900000>;
-                               regulator-max-microvolt = <1350000>;
+                               regulator-max-microvolt = <1350000>;
                                regulator-always-on;
                                regulator-boot-on;
                                op_mode = <1>; /* Normal Mode */
                        buck3_reg: BUCK3 {
                                regulator-name = "VDD_INT";
                                regulator-min-microvolt = <900000>;
-                               regulator-max-microvolt = <1200000>;
+                               regulator-max-microvolt = <1200000>;
                                regulator-always-on;
                                regulator-boot-on;
                                op_mode = <1>; /* Normal Mode */
                        buck4_reg: BUCK4 {
                                regulator-name = "VDD_G3D";
                                regulator-min-microvolt = <750000>;
-                               regulator-max-microvolt = <1500000>;
+                               regulator-max-microvolt = <1500000>;
                                regulator-always-on;
                                regulator-boot-on;
                                op_mode = <1>; /* Normal Mode */
                        buck5_reg: BUCK5 {
                                regulator-name = "VDD_M12";
                                regulator-min-microvolt = <750000>;
-                               regulator-max-microvolt = <1500000>;
+                               regulator-max-microvolt = <1500000>;
                                regulator-always-on;
                                regulator-boot-on;
                                op_mode = <1>; /* Normal Mode */
                        buck6_reg: BUCK6 {
                                regulator-name = "VDD12_5M";
                                regulator-min-microvolt = <750000>;
-                               regulator-max-microvolt = <1500000>;
+                               regulator-max-microvolt = <1500000>;
                                regulator-always-on;
                                regulator-boot-on;
                                op_mode = <1>; /* Normal Mode */
                        buck9_reg: BUCK9 {
                                regulator-name = "VDDF28_EMMC";
                                regulator-min-microvolt = <750000>;
-                               regulator-max-microvolt = <3000000>;
+                               regulator-max-microvolt = <3000000>;
                                regulator-always-on;
                                regulator-boot-on;
                                op_mode = <1>; /* Normal Mode */
index 9f55942..0932ec5 100644 (file)
@@ -12,6 +12,7 @@
 / {
        model = "Samsung Galaxy Note 10.1 (GT-N8010/N8013) based on Exynos4412";
        compatible = "samsung,n8010", "samsung,p4note", "samsung,exynos4412", "samsung,exynos4";
+       chassis-type = "tablet";
 
        /* this is the base variant without any kind of modem */
 };
index 7b447b6..3c2d2a7 100644 (file)
@@ -15,6 +15,7 @@
 / {
        model = "Samsung Trats 2 based on Exynos4412";
        compatible = "samsung,trats2", "samsung,midas", "samsung,exynos4412", "samsung,exynos4";
+       chassis-type = "handset";
 
        memory@40000000 {
                device_type = "memory";
index a771542..3583095 100644 (file)
                vinl8-supply = <&buck8_reg>;
                vinl9-supply = <&buck8_reg>;
 
-               s5m8767,pmic-buck2-dvs-voltage = <1300000>;
-               s5m8767,pmic-buck3-dvs-voltage = <1100000>;
-               s5m8767,pmic-buck4-dvs-voltage = <1200000>;
                s5m8767,pmic-buck-dvs-gpios = <&gpd1 0 GPIO_ACTIVE_HIGH>,
                                              <&gpd1 1 GPIO_ACTIVE_HIGH>,
                                              <&gpd1 2 GPIO_ACTIVE_HIGH>;
index 0822b77..f8ca61d 100644 (file)
@@ -14,6 +14,7 @@
        model = "Google Snow Rev 5+";
        compatible = "google,snow-rev5", "samsung,exynos5250",
                "samsung,exynos5";
+       chassis-type = "laptop";
 
        sound {
                compatible = "google,snow-audio-max98090";
index 9946dce..a630bc6 100644 (file)
@@ -12,6 +12,7 @@
        model = "Google Snow";
        compatible = "google,snow-rev4", "google,snow", "samsung,exynos5250",
                "samsung,exynos5";
+       chassis-type = "laptop";
 
        sound {
                compatible = "google,snow-audio-max98095";
index fba1462..e0feedc 100644 (file)
@@ -16,6 +16,7 @@
 / {
        model = "Google Spring";
        compatible = "google,spring", "samsung,exynos5250", "samsung,exynos5";
+       chassis-type = "laptop";
 
        memory@40000000 {
                device_type = "memory";
index 4ffa925..1397789 100644 (file)
 
                sata: sata@122f0000 {
                        compatible = "snps,dwc-ahci";
-                       samsung,sata-freq = <66>;
                        reg = <0x122F0000 0x1ff>;
                        interrupts = <GIC_SPI 115 IRQ_TYPE_LEVEL_HIGH>;
                        clocks = <&clock CLK_SATA>, <&clock CLK_SCLK_SATA>;
index 315b3dc..e76fb10 100644 (file)
@@ -26,6 +26,7 @@
                "google,pit-rev7", "google,pit-rev6",
                "google,pit", "google,peach","samsung,exynos5420",
                "samsung,exynos5";
+       chassis-type = "laptop";
 
        aliases {
                /* Assign 20 so we don't get confused w/ builtin ones */
index 0ce3443..77013ee 100644 (file)
@@ -24,6 +24,7 @@
                "google,pi-rev11", "google,pi-rev10",
                "google,pi", "google,peach", "samsung,exynos5800",
                "samsung,exynos5";
+       chassis-type = "laptop";
 
        aliases {
                /* Assign 20 so we don't get confused w/ builtin ones */
index c79a2a0..3961496 100644 (file)
 
                pci@50000000 {
                        status = "okay";
-                       interrupt-map-mask = <0xf800 0 0 7>;
-                       interrupt-map =
-                               <0x4800 0 0 1 &pci_intc 0>, /* Slot 9 */
-                               <0x4800 0 0 2 &pci_intc 1>,
-                               <0x4800 0 0 3 &pci_intc 2>,
-                               <0x4800 0 0 4 &pci_intc 3>,
-                               <0x5000 0 0 1 &pci_intc 1>, /* Slot 10 */
-                               <0x5000 0 0 2 &pci_intc 2>,
-                               <0x5000 0 0 3 &pci_intc 3>,
-                               <0x5000 0 0 4 &pci_intc 0>,
-                               <0x5800 0 0 1 &pci_intc 2>, /* Slot 11 */
-                               <0x5800 0 0 2 &pci_intc 3>,
-                               <0x5800 0 0 3 &pci_intc 0>,
-                               <0x5800 0 0 4 &pci_intc 1>,
-                               <0x6000 0 0 1 &pci_intc 3>, /* Slot 12 */
-                               <0x6000 0 0 2 &pci_intc 0>,
-                               <0x6000 0 0 3 &pci_intc 1>,
-                               <0x6000 0 0 4 &pci_intc 2>;
                };
 
                ethernet@60000000 {
diff --git a/arch/arm/boot/dts/gemini-ns2502.dts b/arch/arm/boot/dts/gemini-ns2502.dts
new file mode 100644 (file)
index 0000000..704abd2
--- /dev/null
@@ -0,0 +1,148 @@
+// SPDX-License-Identifier: GPL-2.0
+/*
+ * Copyright (C) 2021 Corentin Labbe <clabbe@baylibre.com>
+ * Device Tree file for Edimax NS 2502
+ */
+
+/dts-v1/;
+
+#include "gemini.dtsi"
+
+/ {
+       model = "Edimax NS-2502";
+       compatible = "edimax,ns-2502", "cortina,gemini";
+       #address-cells = <1>;
+       #size-cells = <1>;
+
+       memory@0 {
+               /* 128 MB */
+               device_type = "memory";
+               reg = <0x00000000 0x8000000>;
+       };
+
+       aliases {
+               mdio-gpio0 = &mdio0;
+       };
+
+       chosen {
+               bootargs = "console=ttyS0,19200n8";
+               stdout-path = &uart0;
+       };
+
+       mdio0: mdio {
+               compatible = "virtual,mdio-gpio";
+               gpios = <&gpio0 22 GPIO_ACTIVE_HIGH>, /* MDC */
+                       <&gpio0 21 GPIO_ACTIVE_HIGH>; /* MDIO */
+               #address-cells = <1>;
+               #size-cells = <0>;
+
+               phy0: ethernet-phy@1 {
+                       reg = <1>;
+                       device_type = "ethernet-phy";
+                       /* We lack the knowledge of necessary GPIO to achieve
+                        * Gigabit
+                        */
+                       max-speed = <100>;
+               };
+       };
+};
+
+&ethernet {
+       status = "okay";
+       ethernet-port@0 {
+               phy-mode = "rgmii";
+               phy-handle = <&phy0>;
+       };
+};
+
+&flash {
+       status = "okay";
+       /* 8MB of flash */
+       reg = <0x30000000 0x00800000>;
+
+       pinctrl-names = "enabled", "disabled";
+       pinctrl-0 = <&pflash_default_pins>;
+       pinctrl-1 = <&pflash_disabled_pins>;
+
+       partitions {
+               compatible = "fixed-partitions";
+               #address-cells = <1>;
+               #size-cells = <1>;
+
+               partition@0 {
+                       label = "RedBoot";
+                       reg = <0x00000000 0x00020000>;
+               };
+               partition@20000 {
+                       label = "kernel";
+                       reg = <0x00020000 0x00700000>;
+               };
+               partition@720000 {
+                       label = "VCTL";
+                       reg = <0x00720000 0x00020000>;
+               };
+               partition@740000 {
+                       label = "CurConf";
+                       reg = <0x00740000 0x000a0000>;
+               };
+               partition@7e0000 {
+                       label = "FIS";
+                       reg = <0x007e0000 0x00010000>;
+               };
+       };
+};
+
+&gpio0 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&gpio0_default_pins>;
+};
+
+&ide0 {
+       status = "okay";
+};
+
+&ide1 {
+       status = "okay";
+};
+
+&sata {
+       cortina,gemini-ata-muxmode = <3>;
+       cortina,gemini-enable-sata-bridge;
+       status = "okay";
+};
+
+&syscon {
+       pinctrl {
+               /*
+                * gpio0agrp cover line 0-4
+                * gpio0bgrp cover line 5
+                */
+               gpio0_default_pins: pinctrl-gpio0 {
+                           mux {
+                                   function = "gpio0";
+                                   groups = "gpio0agrp", "gpio0bgrp", "gpio0hgrp";
+                           };
+               };
+               pflash_disabled_pins: pinctrl-pflash-disabled {
+                       mux {
+                               function = "gpio0";
+                               groups = "gpio0ggrp", "gpio0igrp", "gpio0jgrp",
+                                        "gpio0kgrp";
+                       };
+               };
+               pinctrl-gmii {
+                       mux {
+                               function = "gmii";
+                               groups = "gmii_gmac0_grp";
+                               };
+               };
+       };
+};
+
+&usb0 {
+       status = "okay";
+};
+
+&usb1 {
+       status = "okay";
+};
index c78e55f..91c19e8 100644 (file)
 
                pci@50000000 {
                        status = "okay";
-                       interrupt-map-mask = <0xf800 0 0 7>;
-                       interrupt-map =
-                               <0x4800 0 0 1 &pci_intc 0>, /* Slot 9 */
-                               <0x4800 0 0 2 &pci_intc 1>,
-                               <0x4800 0 0 3 &pci_intc 2>,
-                               <0x4800 0 0 4 &pci_intc 3>,
-                               <0x5000 0 0 1 &pci_intc 1>, /* Slot 10 */
-                               <0x5000 0 0 2 &pci_intc 2>,
-                               <0x5000 0 0 3 &pci_intc 3>,
-                               <0x5000 0 0 4 &pci_intc 0>,
-                               <0x5800 0 0 1 &pci_intc 2>, /* Slot 11 */
-                               <0x5800 0 0 2 &pci_intc 3>,
-                               <0x5800 0 0 3 &pci_intc 0>,
-                               <0x5800 0 0 4 &pci_intc 1>,
-                               <0x6000 0 0 1 &pci_intc 3>, /* Slot 12 */
-                               <0x6000 0 0 2 &pci_intc 0>,
-                               <0x6000 0 0 3 &pci_intc 1>,
-                               <0x6000 0 0 4 &pci_intc 2>;
                };
 
                ethernet@60000000 {
index 1b64cc8..d0efd76 100644 (file)
 
                pci@50000000 {
                        status = "okay";
-                       interrupt-map-mask = <0xf800 0 0 7>;
-                       interrupt-map =
-                               <0x4800 0 0 1 &pci_intc 0>, /* Slot 9 */
-                               <0x4800 0 0 2 &pci_intc 1>,
-                               <0x4800 0 0 3 &pci_intc 2>,
-                               <0x4800 0 0 4 &pci_intc 3>,
-                               <0x5000 0 0 1 &pci_intc 1>, /* Slot 10 */
-                               <0x5000 0 0 2 &pci_intc 2>,
-                               <0x5000 0 0 3 &pci_intc 3>,
-                               <0x5000 0 0 4 &pci_intc 0>,
-                               <0x5800 0 0 1 &pci_intc 2>, /* Slot 11 */
-                               <0x5800 0 0 2 &pci_intc 3>,
-                               <0x5800 0 0 3 &pci_intc 0>,
-                               <0x5800 0 0 4 &pci_intc 1>,
-                               <0x6000 0 0 1 &pci_intc 3>, /* Slot 12 */
-                               <0x6000 0 0 2 &pci_intc 0>,
-                               <0x6000 0 0 3 &pci_intc 1>,
-                               <0x6000 0 0 4 &pci_intc 2>;
                };
 
                ethernet@60000000 {
diff --git a/arch/arm/boot/dts/gemini-ssi1328.dts b/arch/arm/boot/dts/gemini-ssi1328.dts
new file mode 100644 (file)
index 0000000..2b3e7db
--- /dev/null
@@ -0,0 +1,138 @@
+// SPDX-License-Identifier: GPL-2.0
+/*
+ * Copyright (C) 2021 Corentin Labbe <clabbe@baylibre.com>
+ * Device Tree file for SSI 1328
+ */
+
+/dts-v1/;
+
+#include "gemini.dtsi"
+
+/ {
+       model = "SSI 1328";
+       compatible = "ssi,1328", "cortina,gemini";
+       #address-cells = <1>;
+       #size-cells = <1>;
+
+       memory@0 {
+               /* 128 MB */
+               device_type = "memory";
+               reg = <0x00000000 0x8000000>;
+       };
+
+       aliases {
+               mdio-gpio0 = &mdio0;
+       };
+
+       chosen {
+               bootargs = "console=ttyS0,19200n8 initrd=0x900000,9M";
+               stdout-path = &uart0;
+       };
+
+       mdio0: mdio {
+               compatible = "virtual,mdio-gpio";
+               gpios = <&gpio0 22 GPIO_ACTIVE_HIGH>, /* MDC */
+                       <&gpio0 21 GPIO_ACTIVE_HIGH>; /* MDIO */
+               #address-cells = <1>;
+               #size-cells = <0>;
+
+               /* LAN Marvell 88E1118 */
+               phy0: ethernet-phy@1 {
+                       reg = <1>;
+                       device_type = "ethernet-phy";
+                       /* We lack the knowledge of necessary GPIO to achieve
+                        * Gigabit
+                        */
+                       max-speed = <100>;
+               };
+               /* WAN ICPlus IP101A */
+               phy1: ethernet-phy@2 {
+                       reg = <2>;
+                       device_type = "ethernet-phy";
+               };
+       };
+};
+
+&ethernet {
+       status = "okay";
+       ethernet-port@0 {
+               phy-mode = "rgmii";
+               phy-handle = <&phy0>;
+       };
+       ethernet-port@1 {
+               phy-mode = "rgmii";
+               phy-handle = <&phy1>;
+       };
+};
+
+&flash {
+       status = "okay";
+       /* 32MB of flash */
+       reg = <0x30000000 0x03200000>;
+
+       pinctrl-names = "enabled", "disabled";
+       pinctrl-0 = <&pflash_default_pins>;
+       pinctrl-1 = <&pflash_disabled_pins>;
+
+       partitions {
+               compatible = "redboot-fis";
+               /* Eraseblock at 0xfe0000 */
+               fis-index-block = <0x7F>;
+       };
+};
+
+&gpio0 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&gpio0_default_pins>;
+};
+
+&ide0 {
+       status = "okay";
+};
+
+&ide1 {
+       status = "okay";
+};
+
+&sata {
+       cortina,gemini-ata-muxmode = <0>;
+       cortina,gemini-enable-sata-bridge;
+       status = "okay";
+};
+
+&syscon {
+       pinctrl {
+               /*
+                * gpio0agrp cover line 0-4
+                * gpio0bgrp cover line 5
+                */
+               gpio0_default_pins: pinctrl-gpio0 {
+                       mux {
+                               function = "gpio0";
+                               groups = "gpio0agrp", "gpio0bgrp";
+                       };
+               };
+               pflash_disabled_pins: pinctrl-pflash-disabled {
+                       mux {
+                               function = "gpio0";
+                               groups = "gpio0ggrp", "gpio0igrp", "gpio0jgrp",
+                                        "gpio0kgrp";
+                       };
+               };
+               pinctrl-gmii {
+                       /* This platform use both the ethernet ports */
+                       mux {
+                               function = "gmii";
+                               groups = "gmii_gmac0_grp", "gmii_gmac1_grp";
+                       };
+               };
+       };
+};
+
+&usb0 {
+       status = "okay";
+};
+
+&usb1 {
+       status = "okay";
+};
index 5602ba8..de3c441 100644 (file)
 
                pci@50000000 {
                        status = "okay";
-                       interrupt-map-mask = <0xf800 0 0 7>;
-                       interrupt-map =
-                               <0x4800 0 0 1 &pci_intc 0>, /* Slot 9 */
-                               <0x4800 0 0 2 &pci_intc 1>,
-                               <0x4800 0 0 3 &pci_intc 2>,
-                               <0x4800 0 0 4 &pci_intc 3>,
-                               <0x5000 0 0 1 &pci_intc 1>, /* Slot 10 */
-                               <0x5000 0 0 2 &pci_intc 2>,
-                               <0x5000 0 0 3 &pci_intc 3>,
-                               <0x5000 0 0 4 &pci_intc 0>,
-                               <0x5800 0 0 1 &pci_intc 2>, /* Slot 11 */
-                               <0x5800 0 0 2 &pci_intc 3>,
-                               <0x5800 0 0 3 &pci_intc 0>,
-                               <0x5800 0 0 4 &pci_intc 1>,
-                               <0x6000 0 0 1 &pci_intc 3>, /* Slot 12 */
-                               <0x6000 0 0 2 &pci_intc 0>,
-                               <0x6000 0 0 3 &pci_intc 1>,
-                               <0x6000 0 0 4 &pci_intc 2>;
                };
 
                ethernet@60000000 {
index a4a260c..e5ceaad 100644 (file)
 
                pci@50000000 {
                        status = "okay";
-                       interrupt-map-mask = <0xf800 0 0 7>;
-                       interrupt-map =
-                               <0x4800 0 0 1 &pci_intc 0>, /* Slot 9 */
-                               <0x4800 0 0 2 &pci_intc 1>,
-                               <0x4800 0 0 3 &pci_intc 2>,
-                               <0x4800 0 0 4 &pci_intc 3>,
-                               <0x5000 0 0 1 &pci_intc 1>, /* Slot 10 */
-                               <0x5000 0 0 2 &pci_intc 2>,
-                               <0x5000 0 0 3 &pci_intc 3>,
-                               <0x5000 0 0 4 &pci_intc 0>,
-                               <0x5800 0 0 1 &pci_intc 2>, /* Slot 11 */
-                               <0x5800 0 0 2 &pci_intc 3>,
-                               <0x5800 0 0 3 &pci_intc 0>,
-                               <0x5800 0 0 4 &pci_intc 1>,
-                               <0x6000 0 0 1 &pci_intc 3>, /* Slot 12 */
-                               <0x6000 0 0 2 &pci_intc 0>,
-                               <0x6000 0 0 3 &pci_intc 1>,
-                               <0x6000 0 0 4 &pci_intc 2>;
                };
 
                ethernet@60000000 {
index cc053af..e836bd0 100644 (file)
@@ -16,7 +16,7 @@
                compatible = "simple-bus";
                interrupt-parent = <&intcon>;
 
-               flash@30000000 {
+               flash: flash@30000000 {
                        compatible = "cortina,gemini-flash", "cfi-flash";
                        syscon = <&syscon>;
                        pinctrl-names = "default";
                        device_type = "pci";
                        #address-cells = <3>;
                        #size-cells = <2>;
-                       #interrupt-cells = <1>;
                        status = "disabled";
 
+                       #interrupt-cells = <1>;
+                       interrupt-map-mask = <0xf800 0 0 7>;
+                       interrupt-map =
+                               <0x4800 0 0 1 &pci_intc 0>, /* Slot 9 */
+                               <0x4800 0 0 2 &pci_intc 1>,
+                               <0x4800 0 0 3 &pci_intc 2>,
+                               <0x4800 0 0 4 &pci_intc 3>,
+                               <0x5000 0 0 1 &pci_intc 1>, /* Slot 10 */
+                               <0x5000 0 0 2 &pci_intc 2>,
+                               <0x5000 0 0 3 &pci_intc 3>,
+                               <0x5000 0 0 4 &pci_intc 0>,
+                               <0x5800 0 0 1 &pci_intc 2>, /* Slot 11 */
+                               <0x5800 0 0 2 &pci_intc 3>,
+                               <0x5800 0 0 3 &pci_intc 0>,
+                               <0x5800 0 0 4 &pci_intc 1>,
+                               <0x6000 0 0 1 &pci_intc 3>, /* Slot 12 */
+                               <0x6000 0 0 2 &pci_intc 0>,
+                               <0x6000 0 0 3 &pci_intc 1>,
+                               <0x6000 0 0 4 &pci_intc 2>;
+
                        bus-range = <0x00 0xff>;
                        /* PCI ranges mappings */
                        ranges =
                        };
                };
 
-               ethernet@60000000 {
+               ethernet: ethernet@60000000 {
                        compatible = "cortina,gemini-ethernet";
                        reg = <0x60000000 0x4000>, /* Global registers, queue */
                              <0x60004000 0x2000>, /* V-bit */
                        clocks = <&syscon GEMINI_CLK_GATE_SECURITY>;
                };
 
-               ide@63000000 {
+               ide0: ide@63000000 {
                        compatible = "cortina,gemini-pata", "faraday,ftide010";
                        reg = <0x63000000 0x1000>;
                        interrupts = <4 IRQ_TYPE_EDGE_RISING>;
                        #size-cells = <0>;
                };
 
-               ide@63400000 {
+               ide1: ide@63400000 {
                        compatible = "cortina,gemini-pata", "faraday,ftide010";
                        reg = <0x63400000 0x1000>;
                        interrupts = <5 IRQ_TYPE_EDGE_RISING>;
                        status = "disabled";
                };
 
-               usb@68000000 {
+               usb0: usb@68000000 {
                        compatible = "cortina,gemini-usb", "faraday,fotg210";
                        reg = <0x68000000 0x1000>;
                        interrupts = <10 IRQ_TYPE_LEVEL_HIGH>;
                        status = "disabled";
                };
 
-               usb@69000000 {
+               usb1: usb@69000000 {
                        compatible = "cortina,gemini-usb", "faraday,fotg210";
                        reg = <0x69000000 0x1000>;
                        interrupts = <11 IRQ_TYPE_LEVEL_HIGH>;
index 4329b37..e8325fd 100644 (file)
 };
 
 &ecspi1 {
-       cs-gpios = <&gpio3 19 GPIO_ACTIVE_HIGH>;
+       cs-gpios = <&gpio3 19 GPIO_ACTIVE_LOW>;
        pinctrl-names = "default";
        pinctrl-0 = <&pinctrl_ecspi1>;
        status = "okay";
index a326a33..f028b6a 100644 (file)
@@ -47,7 +47,6 @@
        mpl3115a2: pressure-sensor@60 {
                compatible = "fsl,mpl3115";
                reg = <0x60>;
-               vcc-supply = <&reg_3v3_acm>;
 
                /*
                 * The MPL3115 interrupts are connected to pin 22 and 23
index 5ac8444..56bb1ca 100644 (file)
                ti,enable-gpios = <&gpio5 12 GPIO_ACTIVE_LOW>,
                                  <&gpio5 11 GPIO_ACTIVE_LOW>;
                vin-supply = <&reg_3v3>;
-               vin-voltage-override = <3100000>;
                autosuspend-delay = <30000>;
                irq-status-read-quirk;
                en2-rf-quirk;
-               t5t-rmb-extra-byte-quirk;
                status = "okay";
        };
 };
index 667b8fa..b12b5aa 100644 (file)
@@ -6,6 +6,7 @@
 #include "imx6dl.dtsi"
 #include "imx6qdl-skov-cpu.dtsi"
 #include "imx6qdl-skov-cpu-revc.dtsi"
+#include "imx6qdl-skov-revc-lt2.dtsi"
 
 / {
        model = "SKOV IMX6 CPU SoloCore";
index e5c4dc6..674af39 100644 (file)
                        reg = <2>;
                        color = <LED_COLOR_ID_BLUE>;
                };
-
-               chan@3 {
-                       chan-name = "W";
-                       led-cur = /bits/ 8 <0x0>;
-                       max-cur = /bits/ 8 <0x0>;
-                       reg = <3>;
-                       color = <LED_COLOR_ID_WHITE>;
-               };
        };
 
        eeprom@57 {
index f00add7..ff97d22 100644 (file)
@@ -6,6 +6,7 @@
 #include "imx6q.dtsi"
 #include "imx6qdl-skov-cpu.dtsi"
 #include "imx6qdl-skov-cpu-revc.dtsi"
+#include "imx6qdl-skov-revc-lt2.dtsi"
 
 / {
        model = "SKOV IMX6 CPU QuadCore";
index 30fa349..ed2739e 100644 (file)
                st,mod-12b = <1>;
                /* internal ADC reference */
                st,ref-sel = <0>;
-               /* ADC converstion time: 80 clocks */
+               /* ADC conversion time: 80 clocks */
                st,sample-time = <4>;
 
-               stmpe_touchscreen {
+               stmpe_touchscreen: stmpe-touchscreen {
                        compatible = "st,stmpe-ts";
                        /* 8 sample average control */
                        st,ave-ctrl = <3>;
                        st,touch-det-delay = <5>;
                };
 
-               stmpe_adc {
+               stmpe_adc: stmpe-adc {
                        compatible = "st,stmpe-adc";
                        /* forbid to use ADC channels 3-0 (touch) */
                        st,norequest-mask = <0x0F>;
+                       #io-channel-cells = <1>;
                };
        };
 };
index 0199385..120d6e9 100644 (file)
 };
 
 &i2c1 {
-       pinctrl-names = "default";
+       pinctrl-names = "default", "gpio";
        pinctrl-0 = <&pinctrl_i2c1>;
+       pinctrl-1 = <&pinctrl_i2c1_gpio>;
+       scl-gpios = <&gpio3 21 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
+       sda-gpios = <&gpio3 28 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
        clock-frequency = <400000>;
        status = "disabled";
 
 };
 
 &i2c2 {
-       pinctrl-names = "default";
+       pinctrl-names = "default", "gpio";
        pinctrl-0 = <&pinctrl_i2c2>;
+       pinctrl-1 = <&pinctrl_i2c2_gpio>;
+       scl-gpios = <&gpio4 12 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
+       sda-gpios = <&gpio4 13 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
        clock-frequency = <100000>;
        status = "disabled";
 };
        pinctrl-0 = <&pinctrl_usdhc1>;
        cd-gpios = <&gpio6 31 GPIO_ACTIVE_LOW>;
        no-1-8-v;
+       disable-wp;
        status = "disabled";
 };
 
                >;
        };
 
+       pinctrl_i2c1: i2c1grp {
+               fsl,pins = <
+                       MX6QDL_PAD_EIM_D21__I2C1_SCL            0x4001b8b1
+                       MX6QDL_PAD_EIM_D28__I2C1_SDA            0x4001b8b1
+               >;
+       };
+
+       pinctrl_i2c1_gpio: i2c1gpiogrp {
+               fsl,pins = <
+                       MX6QDL_PAD_EIM_D21__GPIO3_IO21          0x4001b8b1
+                       MX6QDL_PAD_EIM_D28__GPIO3_IO28          0x4001b8b1
+               >;
+       };
+
        pinctrl_i2c2: i2c2grp {
                fsl,pins = <
                        MX6QDL_PAD_KEY_ROW3__I2C2_SDA           0x4001b8b1
                >;
        };
 
-       pinctrl_i2c1: i2c1grp {
+       pinctrl_i2c2_gpio: i2c2gpiogrp {
                fsl,pins = <
-                       MX6QDL_PAD_EIM_D21__I2C1_SCL            0x4001b8b1
-                       MX6QDL_PAD_EIM_D28__I2C1_SDA            0x4001b8b1
+                       MX6QDL_PAD_KEY_ROW3__GPIO4_IO13         0x4001b8b1
+                       MX6QDL_PAD_KEY_COL3__GPIO4_IO12         0x4001b8b1
                >;
        };
 
index a80aa08..94b254b 100644 (file)
 };
 
 &i2c3 {
-       pinctrl-names = "default";
+       pinctrl-names = "default", "gpio";
        pinctrl-0 = <&pinctrl_i2c3>;
+       pinctrl-1 = <&pinctrl_i2c3_gpio>;
+       scl-gpios = <&gpio1 5 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
+       sda-gpios = <&gpio1 6 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
        clock-frequency = <400000>;
        status = "okay";
 
                >;
        };
 
+       pinctrl_i2c3_gpio: i2c3gpiogrp {
+               fsl,pins = <
+                       MX6QDL_PAD_GPIO_6__GPIO1_IO06   0x4001b8b1
+                       MX6QDL_PAD_GPIO_5__GPIO1_IO05   0x4001b8b1
+               >;
+       };
+
        pinctrl_ecspi1: ecspi1grp {
                fsl,pins = <
                        MX6QDL_PAD_EIM_D16__ECSPI1_SCLK         0x100b1
diff --git a/arch/arm/boot/dts/imx6qdl-skov-revc-lt2.dtsi b/arch/arm/boot/dts/imx6qdl-skov-revc-lt2.dtsi
new file mode 100644 (file)
index 0000000..48c9ce0
--- /dev/null
@@ -0,0 +1,99 @@
+// SPDX-License-Identifier: (GPL-2.0 OR MIT)
+//
+// Copyright (C) 2021 Pengutronix, Oleksij Rempel <kernel@pengutronix.de>
+
+/ {
+       backlight: backlight {
+               compatible = "pwm-backlight";
+               pinctrl-names = "default";
+               pinctrl-0 = <&pinctrl_backlight>;
+               enable-gpios = <&gpio6 23 GPIO_ACTIVE_LOW>;
+               pwms = <&pwm2 0 20000 0>;
+               brightness-levels = <0 255>;
+               num-interpolated-steps = <17>;
+               default-brightness-level = <8>;
+               power-supply = <&reg_24v0>;
+       };
+
+       display {
+               #address-cells = <1>;
+               #size-cells = <0>;
+
+               compatible = "fsl,imx-parallel-display";
+               pinctrl-names = "default";
+               pinctrl-0 = <&pinctrl_ipu1>;
+
+               port@0 {
+                       reg = <0>;
+
+                       display0_in: endpoint {
+                               remote-endpoint = <&ipu1_di0_disp0>;
+                       };
+               };
+
+               port@1 {
+                       reg = <1>;
+
+                       display0_out: endpoint {
+                               remote-endpoint = <&panel_in>;
+                       };
+               };
+       };
+
+       panel {
+               compatible = "logictechno,lttd800480070-l2rt";
+               backlight = <&backlight>;
+               power-supply = <&reg_3v3>;
+
+               port {
+                       panel_in: endpoint {
+                               remote-endpoint = <&display0_out>;
+                       };
+               };
+       };
+};
+
+&ipu1_di0_disp0 {
+       remote-endpoint = <&display0_in>;
+};
+
+&iomuxc {
+       pinctrl_backlight: backlightgrp {
+               fsl,pins = <
+                       MX6QDL_PAD_RGMII_TD3__GPIO6_IO23                0x58
+               >;
+       };
+
+       pinctrl_ipu1: ipu1grp {
+               fsl,pins = <
+                       MX6QDL_PAD_DI0_DISP_CLK__IPU1_DI0_DISP_CLK      0x10
+                       MX6QDL_PAD_DI0_PIN15__IPU1_DI0_PIN15            0x10
+                       MX6QDL_PAD_DI0_PIN2__IPU1_DI0_PIN02             0x10
+                       MX6QDL_PAD_DI0_PIN3__IPU1_DI0_PIN03             0x10
+                       MX6QDL_PAD_DISP0_DAT0__IPU1_DISP0_DATA00        0x10
+                       MX6QDL_PAD_DISP0_DAT1__IPU1_DISP0_DATA01        0x10
+                       MX6QDL_PAD_DISP0_DAT2__IPU1_DISP0_DATA02        0x10
+                       MX6QDL_PAD_DISP0_DAT3__IPU1_DISP0_DATA03        0x10
+                       MX6QDL_PAD_DISP0_DAT4__IPU1_DISP0_DATA04        0x10
+                       MX6QDL_PAD_DISP0_DAT5__IPU1_DISP0_DATA05        0x10
+                       MX6QDL_PAD_DISP0_DAT6__IPU1_DISP0_DATA06        0x10
+                       MX6QDL_PAD_DISP0_DAT7__IPU1_DISP0_DATA07        0x10
+                       MX6QDL_PAD_DISP0_DAT8__IPU1_DISP0_DATA08        0x10
+                       MX6QDL_PAD_DISP0_DAT9__IPU1_DISP0_DATA09        0x10
+                       MX6QDL_PAD_DISP0_DAT10__IPU1_DISP0_DATA10       0x10
+                       MX6QDL_PAD_DISP0_DAT11__IPU1_DISP0_DATA11       0x10
+                       MX6QDL_PAD_DISP0_DAT12__IPU1_DISP0_DATA12       0x10
+                       MX6QDL_PAD_DISP0_DAT13__IPU1_DISP0_DATA13       0x10
+                       MX6QDL_PAD_DISP0_DAT14__IPU1_DISP0_DATA14       0x10
+                       MX6QDL_PAD_DISP0_DAT15__IPU1_DISP0_DATA15       0x10
+                       MX6QDL_PAD_DISP0_DAT16__IPU1_DISP0_DATA16       0x10
+                       MX6QDL_PAD_DISP0_DAT17__IPU1_DISP0_DATA17       0x10
+                       MX6QDL_PAD_DISP0_DAT18__IPU1_DISP0_DATA18       0x10
+                       MX6QDL_PAD_DISP0_DAT19__IPU1_DISP0_DATA19       0x10
+                       MX6QDL_PAD_DISP0_DAT20__IPU1_DISP0_DATA20       0x10
+                       MX6QDL_PAD_DISP0_DAT21__IPU1_DISP0_DATA21       0x10
+                       MX6QDL_PAD_DISP0_DAT22__IPU1_DISP0_DATA22       0x10
+                       MX6QDL_PAD_DISP0_DAT23__IPU1_DISP0_DATA23       0x10
+               >;
+       };
+};
index b18b83a..51a3a53 100644 (file)
@@ -20,7 +20,7 @@
 &ecspi1 {
        pinctrl-names = "default";
        pinctrl-0 = <&pinctrl_ecspi1>;
-       cs-gpios = <&gpio3 19 GPIO_ACTIVE_HIGH>;
+       cs-gpios = <&gpio3 19 GPIO_ACTIVE_LOW>;
        status = "okay";
 
        m25p80: flash@0 {
index 89c342f..f5de5de 100644 (file)
                };
 
                pcie: pcie@1ffc000 {
-                       compatible = "fsl,imx6q-pcie", "snps,dw-pcie";
+                       compatible = "fsl,imx6q-pcie";
                        reg = <0x01ffc000 0x04000>,
                              <0x01f00000 0x80000>;
                        reg-names = "dbi", "config";
                        #size-cells = <2>;
                        device_type = "pci";
                        bus-range = <0x00 0xff>;
-                       ranges = <0x81000000 0 0          0x01f80000 0 0x00010000 /* downstream I/O */
-                                 0x82000000 0 0x01000000 0x01000000 0 0x00f00000>; /* non-prefetchable memory */
+                       ranges = <0x81000000 0 0          0x01f80000 0 0x00010000>, /* downstream I/O */
+                                <0x82000000 0 0x01000000 0x01000000 0 0x00f00000>; /* non-prefetchable memory */
                        num-lanes = <1>;
-                       num-viewport = <4>;
                        interrupts = <GIC_SPI 120 IRQ_TYPE_LEVEL_HIGH>;
                        interrupt-names = "msi";
                        #interrupt-cells = <1>;
index b92e0f2..7648e8a 100644 (file)
 };
 
 &ecspi2 {
-       cs-gpios = <&gpio2 26 GPIO_ACTIVE_HIGH>;
+       cs-gpios = <&gpio2 26 GPIO_ACTIVE_LOW>;
        pinctrl-names = "default";
        pinctrl-0 = <&pinctrl_ecspi2>;
        status = "okay";
 };
 
 &ecspi3 {
-       cs-gpios = <&gpio4 24 GPIO_ACTIVE_HIGH>;
+       cs-gpios = <&gpio4 24 GPIO_ACTIVE_LOW>;
        pinctrl-names = "default";
        pinctrl-0 = <&pinctrl_ecspi3>;
        status = "okay";
index b310f13..0503655 100644 (file)
 };
 
 &pcie {
-       compatible = "fsl,imx6qp-pcie", "snps,dw-pcie";
+       compatible = "fsl,imx6qp-pcie";
 };
diff --git a/arch/arm/boot/dts/imx6sl-tolino-vision5.dts b/arch/arm/boot/dts/imx6sl-tolino-vision5.dts
new file mode 100644 (file)
index 0000000..ff6118d
--- /dev/null
@@ -0,0 +1,349 @@
+// SPDX-License-Identifier: (GPL-2.0)
+/*
+ * Device tree for the Tolino Vision 5 ebook reader
+ *
+ * Name on mainboard is: 37NB-E70K0M+6A3
+ * Serials start with: E70K02 (a number also seen in
+ * vendor kernel sources)
+ *
+ * This mainboard seems to be equipped with different SoCs.
+ * In the Tolino Vision 5 ebook reader it is a i.MX6SL
+ *
+ * Copyright 2021 Andreas Kemnade
+ * based on works
+ * Copyright 2016 Freescale Semiconductor, Inc.
+ */
+
+/dts-v1/;
+
+#include <dt-bindings/input/input.h>
+#include <dt-bindings/gpio/gpio.h>
+#include "imx6sl.dtsi"
+#include "e70k02.dtsi"
+
+/ {
+       model = "Tolino Vision 5";
+       compatible = "kobo,tolino-vision5", "fsl,imx6sl";
+};
+
+&gpio_keys {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_gpio_keys>;
+};
+
+&i2c1 {
+       pinctrl-names = "default","sleep";
+       pinctrl-0 = <&pinctrl_i2c1>;
+       pinctrl-1 = <&pinctrl_i2c1_sleep>;
+};
+
+&i2c2 {
+       pinctrl-names = "default","sleep";
+       pinctrl-0 = <&pinctrl_i2c2>;
+       pinctrl-1 = <&pinctrl_i2c2_sleep>;
+};
+
+&i2c3 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_i2c3>;
+};
+
+&iomuxc {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_hog>;
+
+       pinctrl_gpio_keys: gpio-keysgrp {
+               fsl,pins = <
+                       MX6SL_PAD_FEC_CRS_DV__GPIO4_IO25        0x17059 /* PWR_SW */
+                       MX6SL_PAD_FEC_MDC__GPIO4_IO23   0x17059 /* HALL_EN */
+                       MX6SL_PAD_KEY_COL4__GPIO4_IO00          0x17059 /* PAGE_UP */
+                       MX6SL_PAD_KEY_COL5__GPIO4_IO02          0x17059 /* PAGE_DOWN */
+               >;
+       };
+
+       pinctrl_hog: hoggrp {
+               fsl,pins = <
+                       MX6SL_PAD_LCD_DAT1__GPIO2_IO21  0x79
+                       MX6SL_PAD_LCD_DAT4__GPIO2_IO24  0x79
+                       MX6SL_PAD_LCD_DAT5__GPIO2_IO25  0x79
+                       MX6SL_PAD_LCD_DAT6__GPIO2_IO26  0x79
+                       MX6SL_PAD_LCD_DAT7__GPIO2_IO27  0x79
+                       MX6SL_PAD_LCD_DAT8__GPIO2_IO28  0x79
+                       MX6SL_PAD_LCD_DAT9__GPIO2_IO29  0x79
+                       MX6SL_PAD_LCD_DAT10__GPIO2_IO30 0x79
+                       MX6SL_PAD_LCD_DAT11__GPIO2_IO31 0x79
+                       MX6SL_PAD_LCD_DAT12__GPIO3_IO00 0x79
+                       MX6SL_PAD_LCD_DAT13__GPIO3_IO01 0x79
+                       MX6SL_PAD_LCD_DAT14__GPIO3_IO02 0x79
+                       MX6SL_PAD_LCD_DAT15__GPIO3_IO03 0x79
+                       MX6SL_PAD_LCD_DAT16__GPIO3_IO04 0x79
+                       MX6SL_PAD_LCD_DAT17__GPIO3_IO05 0x79
+                       MX6SL_PAD_LCD_DAT18__GPIO3_IO06 0x79
+                       MX6SL_PAD_LCD_DAT19__GPIO3_IO07 0x79
+                       MX6SL_PAD_LCD_DAT20__GPIO3_IO08 0x79
+                       MX6SL_PAD_LCD_DAT21__GPIO3_IO09 0x79
+                       MX6SL_PAD_LCD_DAT22__GPIO3_IO10 0x79
+                       MX6SL_PAD_LCD_DAT23__GPIO3_IO11 0x79
+                       MX6SL_PAD_LCD_CLK__GPIO2_IO15           0x79
+                       MX6SL_PAD_LCD_ENABLE__GPIO2_IO16        0x79
+                       MX6SL_PAD_LCD_HSYNC__GPIO2_IO17 0x79
+                       MX6SL_PAD_LCD_VSYNC__GPIO2_IO18 0x79
+                       MX6SL_PAD_LCD_RESET__GPIO2_IO19 0x79
+                       MX6SL_PAD_FEC_TX_CLK__GPIO4_IO21        0x79
+                       MX6SL_PAD_FEC_REF_CLK__GPIO4_IO26       0x79
+                       MX6SL_PAD_KEY_COL3__GPIO3_IO30          0x79
+                       MX6SL_PAD_KEY_ROW7__GPIO4_IO07          0x79
+                       MX6SL_PAD_ECSPI2_MOSI__GPIO4_IO13       0x79
+               >;
+       };
+
+       pinctrl_i2c1: i2c1grp {
+               fsl,pins = <
+                       MX6SL_PAD_I2C1_SCL__I2C1_SCL     0x4001f8b1
+                       MX6SL_PAD_I2C1_SDA__I2C1_SDA     0x4001f8b1
+               >;
+       };
+
+       pinctrl_i2c1_sleep: i2c1grp-sleep {
+               fsl,pins = <
+                       MX6SL_PAD_I2C1_SCL__I2C1_SCL     0x400108b1
+                       MX6SL_PAD_I2C1_SDA__I2C1_SDA     0x400108b1
+               >;
+       };
+
+       pinctrl_i2c2: i2c2grp {
+               fsl,pins = <
+                       MX6SL_PAD_I2C2_SCL__I2C2_SCL     0x4001f8b1
+                       MX6SL_PAD_I2C2_SDA__I2C2_SDA     0x4001f8b1
+               >;
+       };
+
+       pinctrl_i2c2_sleep: i2c2grp-sleep {
+               fsl,pins = <
+                       MX6SL_PAD_I2C2_SCL__I2C2_SCL     0x400108b1
+                       MX6SL_PAD_I2C2_SDA__I2C2_SDA     0x400108b1
+               >;
+       };
+
+       pinctrl_i2c3: i2c3grp {
+               fsl,pins = <
+                       MX6SL_PAD_REF_CLK_24M__I2C3_SCL  0x4001f8b1
+                       MX6SL_PAD_REF_CLK_32K__I2C3_SDA  0x4001f8b1
+               >;
+       };
+
+       pinctrl_led: ledgrp {
+               fsl,pins = <
+                       MX6SL_PAD_FEC_RXD0__GPIO4_IO17  0x10059
+               >;
+       };
+
+       pinctrl_lm3630a_bl_gpio: lm3630a-bl-gpiogrp {
+               fsl,pins = <
+                       MX6SL_PAD_EPDC_PWRCTRL3__GPIO2_IO10             0x10059 /* HWEN */
+               >;
+       };
+
+       pinctrl_ricoh_gpio: ricoh-gpiogrp {
+               fsl,pins = <
+                       MX6SL_PAD_FEC_MDIO__GPIO4_IO20          0x1b8b1 /* ricoh619 chg */
+                       MX6SL_PAD_FEC_RX_ER__GPIO4_IO19         0x1b8b1 /* ricoh619 irq */
+                       MX6SL_PAD_KEY_COL2__GPIO3_IO28          0x1b8b1 /* ricoh619 bat_low_int */
+               >;
+       };
+
+       pinctrl_uart1: uart1grp {
+               fsl,pins = <
+                       MX6SL_PAD_UART1_TXD__UART1_TX_DATA 0x1b0b1
+                       MX6SL_PAD_UART1_RXD__UART1_RX_DATA 0x1b0b1
+               >;
+       };
+
+       pinctrl_usbotg1: usbotg1grp {
+               fsl,pins = <
+                       MX6SL_PAD_EPDC_PWRCOM__USB_OTG1_ID 0x17059
+               >;
+       };
+
+       pinctrl_usdhc1: usdhc1grp {
+               fsl,pins = <
+                       MX6SL_PAD_SD1_CMD__SD1_CMD      0x17059
+                       MX6SL_PAD_SD1_CLK__SD1_CLK      0x17059
+                       MX6SL_PAD_SD1_DAT0__SD1_DATA0   0x17059
+                       MX6SL_PAD_SD1_DAT1__SD1_DATA1   0x17059
+                       MX6SL_PAD_SD1_DAT2__SD1_DATA2   0x17059
+                       MX6SL_PAD_SD1_DAT3__SD1_DATA3   0x17059
+                       MX6SL_PAD_SD1_DAT4__SD1_DATA4   0x17059
+                       MX6SL_PAD_SD1_DAT5__SD1_DATA5   0x17059
+                       MX6SL_PAD_SD1_DAT6__SD1_DATA6   0x17059
+                       MX6SL_PAD_SD1_DAT7__SD1_DATA7   0x17059
+               >;
+       };
+
+       pinctrl_usdhc1_100mhz: usdhc1-100mhzgrp {
+               fsl,pins = <
+                       MX6SL_PAD_SD1_CMD__SD1_CMD      0x170b9
+                       MX6SL_PAD_SD1_CLK__SD1_CLK      0x170b9
+                       MX6SL_PAD_SD1_DAT0__SD1_DATA0   0x170b9
+                       MX6SL_PAD_SD1_DAT1__SD1_DATA1   0x170b9
+                       MX6SL_PAD_SD1_DAT2__SD1_DATA2   0x170b9
+                       MX6SL_PAD_SD1_DAT3__SD1_DATA3   0x170b9
+                       MX6SL_PAD_SD1_DAT4__SD1_DATA4   0x170b9
+                       MX6SL_PAD_SD1_DAT5__SD1_DATA5   0x170b9
+                       MX6SL_PAD_SD1_DAT6__SD1_DATA6   0x170b9
+                       MX6SL_PAD_SD1_DAT7__SD1_DATA7   0x170b9
+               >;
+       };
+
+       pinctrl_usdhc1_200mhz: usdhc1-200mhzgrp {
+               fsl,pins = <
+                       MX6SL_PAD_SD1_CMD__SD1_CMD      0x170f9
+                       MX6SL_PAD_SD1_CLK__SD1_CLK      0x170f9
+                       MX6SL_PAD_SD1_DAT0__SD1_DATA0   0x170f9
+                       MX6SL_PAD_SD1_DAT1__SD1_DATA1   0x170f9
+                       MX6SL_PAD_SD1_DAT2__SD1_DATA2   0x170f9
+                       MX6SL_PAD_SD1_DAT3__SD1_DATA3   0x170f9
+                       MX6SL_PAD_SD1_DAT4__SD1_DATA4   0x170b9
+                       MX6SL_PAD_SD1_DAT5__SD1_DATA5   0x170b9
+                       MX6SL_PAD_SD1_DAT6__SD1_DATA6   0x170b9
+                       MX6SL_PAD_SD1_DAT7__SD1_DATA7   0x170b9
+               >;
+       };
+
+       pinctrl_usdhc1_sleep: usdhc1-sleepgrp {
+               fsl,pins = <
+                       MX6SL_PAD_SD1_CMD__SD1_CMD      0x10059
+                       MX6SL_PAD_SD1_CLK__SD1_CLK      0x10059
+                       MX6SL_PAD_SD1_DAT0__SD1_DATA0   0x10059
+                       MX6SL_PAD_SD1_DAT1__SD1_DATA1   0x10059
+                       MX6SL_PAD_SD1_DAT2__SD1_DATA2   0x10059
+                       MX6SL_PAD_SD1_DAT3__SD1_DATA3   0x10059
+                       MX6SL_PAD_SD1_DAT4__SD1_DATA4   0x10059
+                       MX6SL_PAD_SD1_DAT5__SD1_DATA5   0x10059
+                       MX6SL_PAD_SD1_DAT6__SD1_DATA6   0x10059
+                       MX6SL_PAD_SD1_DAT7__SD1_DATA7   0x10059
+               >;
+       };
+
+       pinctrl_usdhc3: usdhc3grp {
+               fsl,pins = <
+                       MX6SL_PAD_SD3_CMD__SD3_CMD      0x11059
+                       MX6SL_PAD_SD3_CLK__SD3_CLK      0x11059
+                       MX6SL_PAD_SD3_DAT0__SD3_DATA0   0x11059
+                       MX6SL_PAD_SD3_DAT1__SD3_DATA1   0x11059
+                       MX6SL_PAD_SD3_DAT2__SD3_DATA2   0x11059
+                       MX6SL_PAD_SD3_DAT3__SD3_DATA3   0x11059
+               >;
+       };
+
+       pinctrl_usdhc3_100mhz: usdhc3-100mhzgrp {
+               fsl,pins = <
+                       MX6SL_PAD_SD3_CMD__SD3_CMD      0x170b9
+                       MX6SL_PAD_SD3_CLK__SD3_CLK      0x170b9
+                       MX6SL_PAD_SD3_DAT0__SD3_DATA0   0x170b9
+                       MX6SL_PAD_SD3_DAT1__SD3_DATA1   0x170b9
+                       MX6SL_PAD_SD3_DAT2__SD3_DATA2   0x170b9
+                       MX6SL_PAD_SD3_DAT3__SD3_DATA3   0x170b9
+               >;
+       };
+
+       pinctrl_usdhc3_200mhz: usdhc3-200mhzgrp {
+               fsl,pins = <
+                       MX6SL_PAD_SD3_CMD__SD3_CMD      0x170f9
+                       MX6SL_PAD_SD3_CLK__SD3_CLK      0x170f9
+                       MX6SL_PAD_SD3_DAT0__SD3_DATA0   0x170f9
+                       MX6SL_PAD_SD3_DAT1__SD3_DATA1   0x170f9
+                       MX6SL_PAD_SD3_DAT2__SD3_DATA2   0x170f9
+                       MX6SL_PAD_SD3_DAT3__SD3_DATA3   0x170f9
+               >;
+       };
+
+       pinctrl_usdhc3_sleep: usdhc3-sleepgrp {
+               fsl,pins = <
+                       MX6SL_PAD_SD3_CMD__GPIO5_IO21   0x100c1
+                       MX6SL_PAD_SD3_CLK__GPIO5_IO18   0x100c1
+                       MX6SL_PAD_SD3_DAT0__GPIO5_IO19  0x100c1
+                       MX6SL_PAD_SD3_DAT1__GPIO5_IO20  0x100c1
+                       MX6SL_PAD_SD3_DAT2__GPIO5_IO16  0x100c1
+                       MX6SL_PAD_SD3_DAT3__GPIO5_IO17  0x100c1
+               >;
+       };
+
+       pinctrl_wifi_power: wifi-powergrp {
+               fsl,pins = <
+                       MX6SL_PAD_SD2_DAT6__GPIO4_IO29  0x10059  /* WIFI_3V3_ON */
+               >;
+       };
+
+       pinctrl_wifi_reset: wifi-resetgrp {
+               fsl,pins = <
+                       MX6SL_PAD_SD2_DAT7__GPIO5_IO00  0x10059 /* WIFI_RST */
+               >;
+       };
+};
+
+&leds {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_led>;
+};
+
+&lm3630a {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_lm3630a_bl_gpio>;
+};
+
+&reg_wifi {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_wifi_power>;
+};
+
+&reg_vdd1p1 {
+       vin-supply = <&dcdc2_reg>;
+};
+
+&reg_vdd2p5 {
+       vin-supply = <&dcdc2_reg>;
+};
+
+&reg_arm {
+       vin-supply = <&dcdc3_reg>;
+};
+
+&reg_soc {
+       vin-supply = <&dcdc1_reg>;
+};
+
+&reg_pu {
+       vin-supply = <&dcdc1_reg>;
+};
+
+&ricoh619 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_ricoh_gpio>;
+};
+
+&uart1 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_uart1>;
+};
+
+&usdhc1 {
+       pinctrl-names = "default", "state_100mhz", "state_200mhz","sleep";
+       pinctrl-0 = <&pinctrl_usdhc1>;
+       pinctrl-1 = <&pinctrl_usdhc1_100mhz>;
+       pinctrl-2 = <&pinctrl_usdhc1_200mhz>;
+       pinctrl-3 = <&pinctrl_usdhc1_sleep>;
+};
+
+&usdhc3 {
+       pinctrl-names = "default", "state_100mhz", "state_200mhz","sleep";
+       pinctrl-0 = <&pinctrl_usdhc3>;
+       pinctrl-1 = <&pinctrl_usdhc3_100mhz>;
+       pinctrl-2 = <&pinctrl_usdhc3_200mhz>;
+       pinctrl-3 = <&pinctrl_usdhc3_sleep>;
+};
+
+&wifi_pwrseq {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_wifi_reset>;
+};
index 997b96c..c7d907c 100644 (file)
                        device_type = "cpu";
                        reg = <0x0>;
                        next-level-cache = <&L2>;
-                       operating-points = <
+                       operating-points =
                                /* kHz    uV */
-                               996000  1275000
-                               792000  1175000
-                               396000  975000
-                       >;
-                       fsl,soc-operating-points = <
+                               <996000  1275000>,
+                               <792000  1175000>,
+                               <396000  975000>;
+                       fsl,soc-operating-points =
                                /* ARM kHz      SOC-PU uV */
-                               996000          1225000
-                               792000          1175000
-                               396000          1175000
-                       >;
+                               <996000         1225000>,
+                               <792000         1175000>,
+                               <396000         1175000>;
                        clock-latency = <61036>; /* two CLK32 periods */
                        #cooling-cells = <2>;
                        clocks = <&clks IMX6SL_CLK_ARM>, <&clks IMX6SL_CLK_PLL2_PFD2>,
diff --git a/arch/arm/boot/dts/imx6sll-kobo-librah2o.dts b/arch/arm/boot/dts/imx6sll-kobo-librah2o.dts
new file mode 100644 (file)
index 0000000..a8b0e88
--- /dev/null
@@ -0,0 +1,339 @@
+// SPDX-License-Identifier: (GPL-2.0)
+/*
+ * Device tree for the Kobo Libra H2O ebook reader
+ *
+ * Name on mainboard is: 37NB-E70K0M+6A3
+ * Serials start with: E70K02 (a number also seen in
+ * vendor kernel sources)
+ *
+ * This mainboard seems to be equipped with different SoCs.
+ * In the Kobo Libra H2O ebook reader it is an i.MX6SLL
+ *
+ * Copyright 2021 Andreas Kemnade
+ * based on works
+ * Copyright 2016 Freescale Semiconductor, Inc.
+ */
+
+/dts-v1/;
+
+#include <dt-bindings/input/input.h>
+#include <dt-bindings/gpio/gpio.h>
+#include "imx6sll.dtsi"
+#include "e70k02.dtsi"
+
+/ {
+       model = "Kobo Libra H2O";
+       compatible = "kobo,librah2o", "fsl,imx6sll";
+};
+
+&clks {
+       assigned-clocks = <&clks IMX6SLL_CLK_PLL4_AUDIO_DIV>;
+       assigned-clock-rates = <393216000>;
+};
+
+&cpu0 {
+       arm-supply = <&dcdc3_reg>;
+       soc-supply = <&dcdc1_reg>;
+};
+
+&gpio_keys {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_gpio_keys>;
+};
+
+&i2c1 {
+       pinctrl-names = "default","sleep";
+       pinctrl-0 = <&pinctrl_i2c1>;
+       pinctrl-1 = <&pinctrl_i2c1_sleep>;
+};
+
+&i2c2 {
+       pinctrl-names = "default","sleep";
+       pinctrl-0 = <&pinctrl_i2c2>;
+       pinctrl-1 = <&pinctrl_i2c2_sleep>;
+};
+
+&i2c3 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_i2c3>;
+};
+
+&iomuxc {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_hog>;
+
+       pinctrl_gpio_keys: gpio-keysgrp {
+               fsl,pins = <
+                       MX6SLL_PAD_GPIO4_IO25__GPIO4_IO25       0x17059 /* PWR_SW */
+                       MX6SLL_PAD_GPIO4_IO23__GPIO4_IO23       0x17059 /* HALL_EN */
+                       MX6SLL_PAD_KEY_COL4__GPIO4_IO00         0x17059 /* PAGE_UP */
+                       MX6SLL_PAD_KEY_COL5__GPIO4_IO02         0x17059 /* PAGE_DOWN */
+               >;
+       };
+
+       pinctrl_hog: hoggrp {
+               fsl,pins = <
+                       MX6SLL_PAD_LCD_DATA01__GPIO2_IO21       0x79
+                       MX6SLL_PAD_LCD_DATA04__GPIO2_IO24       0x79
+                       MX6SLL_PAD_LCD_DATA05__GPIO2_IO25       0x79
+                       MX6SLL_PAD_LCD_DATA06__GPIO2_IO26       0x79
+                       MX6SLL_PAD_LCD_DATA07__GPIO2_IO27       0x79
+                       MX6SLL_PAD_LCD_DATA08__GPIO2_IO28       0x79
+                       MX6SLL_PAD_LCD_DATA09__GPIO2_IO29       0x79
+                       MX6SLL_PAD_LCD_DATA10__GPIO2_IO30       0x79
+                       MX6SLL_PAD_LCD_DATA11__GPIO2_IO31       0x79
+                       MX6SLL_PAD_LCD_DATA12__GPIO3_IO00       0x79
+                       MX6SLL_PAD_LCD_DATA13__GPIO3_IO01       0x79
+                       MX6SLL_PAD_LCD_DATA14__GPIO3_IO02       0x79
+                       MX6SLL_PAD_LCD_DATA15__GPIO3_IO03       0x79
+                       MX6SLL_PAD_LCD_DATA16__GPIO3_IO04       0x79
+                       MX6SLL_PAD_LCD_DATA17__GPIO3_IO05       0x79
+                       MX6SLL_PAD_LCD_DATA18__GPIO3_IO06       0x79
+                       MX6SLL_PAD_LCD_DATA19__GPIO3_IO07       0x79
+                       MX6SLL_PAD_LCD_DATA20__GPIO3_IO08       0x79
+                       MX6SLL_PAD_LCD_DATA21__GPIO3_IO09       0x79
+                       MX6SLL_PAD_LCD_DATA22__GPIO3_IO10       0x79
+                       MX6SLL_PAD_LCD_DATA23__GPIO3_IO11       0x79
+                       MX6SLL_PAD_LCD_CLK__GPIO2_IO15          0x79
+                       MX6SLL_PAD_LCD_ENABLE__GPIO2_IO16       0x79
+                       MX6SLL_PAD_LCD_HSYNC__GPIO2_IO17        0x79
+                       MX6SLL_PAD_LCD_VSYNC__GPIO2_IO18        0x79
+                       MX6SLL_PAD_LCD_RESET__GPIO2_IO19        0x79
+                       MX6SLL_PAD_GPIO4_IO21__GPIO4_IO21       0x79
+                       MX6SLL_PAD_GPIO4_IO26__GPIO4_IO26       0x79
+                       MX6SLL_PAD_KEY_COL3__GPIO3_IO30         0x79
+                       MX6SLL_PAD_KEY_ROW7__GPIO4_IO07         0x79
+                       MX6SLL_PAD_ECSPI2_MOSI__GPIO4_IO13      0x79
+               >;
+       };
+
+       pinctrl_i2c1: i2c1grp {
+               fsl,pins = <
+                       MX6SLL_PAD_I2C1_SCL__I2C1_SCL   0x4001f8b1
+                       MX6SLL_PAD_I2C1_SDA__I2C1_SDA   0x4001f8b1
+               >;
+       };
+
+       pinctrl_i2c1_sleep: i2c1grp-sleep {
+               fsl,pins = <
+                       MX6SLL_PAD_I2C1_SCL__I2C1_SCL   0x400108b1
+                       MX6SLL_PAD_I2C1_SDA__I2C1_SDA   0x400108b1
+               >;
+       };
+
+       pinctrl_i2c2: i2c2grp {
+               fsl,pins = <
+                       MX6SLL_PAD_I2C2_SCL__I2C2_SCL   0x4001f8b1
+                       MX6SLL_PAD_I2C2_SDA__I2C2_SDA   0x4001f8b1
+               >;
+       };
+
+       pinctrl_i2c2_sleep: i2c2grp-sleep {
+               fsl,pins = <
+                       MX6SLL_PAD_I2C2_SCL__I2C2_SCL   0x400108b1
+                       MX6SLL_PAD_I2C2_SDA__I2C2_SDA   0x400108b1
+               >;
+       };
+
+       pinctrl_i2c3: i2c3grp {
+               fsl,pins = <
+                       MX6SLL_PAD_REF_CLK_24M__I2C3_SCL 0x4001f8b1
+                       MX6SLL_PAD_REF_CLK_32K__I2C3_SDA 0x4001f8b1
+               >;
+       };
+
+       pinctrl_led: ledgrp {
+               fsl,pins = <
+                       MX6SLL_PAD_GPIO4_IO17__GPIO4_IO17       0x10059
+               >;
+       };
+
+       pinctrl_lm3630a_bl_gpio: lm3630a-bl-gpiogrp {
+               fsl,pins = <
+                       MX6SLL_PAD_EPDC_PWR_CTRL3__GPIO2_IO10   0x10059 /* HWEN */
+               >;
+       };
+
+       pinctrl_ricoh_gpio: ricoh-gpiogrp {
+               fsl,pins = <
+                       MX6SLL_PAD_GPIO4_IO20__GPIO4_IO20       0x1b8b1 /* ricoh619 chg */
+                       MX6SLL_PAD_GPIO4_IO19__GPIO4_IO19       0x1b8b1 /* ricoh619 irq */
+                       MX6SLL_PAD_KEY_COL2__GPIO3_IO28         0x1b8b1 /* ricoh619 bat_low_int */
+               >;
+       };
+
+       pinctrl_uart1: uart1grp {
+               fsl,pins = <
+                       MX6SLL_PAD_UART1_TXD__UART1_DCE_TX 0x1b0b1
+                       MX6SLL_PAD_UART1_RXD__UART1_DCE_RX 0x1b0b1
+               >;
+       };
+
+       pinctrl_usbotg1: usbotg1grp {
+               fsl,pins = <
+                       MX6SLL_PAD_EPDC_PWR_COM__USB_OTG1_ID 0x17059
+               >;
+       };
+
+       pinctrl_usdhc1: usdhc1grp {
+               fsl,pins = <
+                       MX6SLL_PAD_SD1_CMD__SD1_CMD     0x17059
+                       MX6SLL_PAD_SD1_CLK__SD1_CLK     0x17059
+                       MX6SLL_PAD_SD1_DATA0__SD1_DATA0 0x17059
+                       MX6SLL_PAD_SD1_DATA1__SD1_DATA1 0x17059
+                       MX6SLL_PAD_SD1_DATA2__SD1_DATA2 0x17059
+                       MX6SLL_PAD_SD1_DATA3__SD1_DATA3 0x17059
+                       MX6SLL_PAD_SD1_DATA4__SD1_DATA4 0x17059
+                       MX6SLL_PAD_SD1_DATA5__SD1_DATA5 0x17059
+                       MX6SLL_PAD_SD1_DATA6__SD1_DATA6 0x17059
+                       MX6SLL_PAD_SD1_DATA7__SD1_DATA7 0x17059
+               >;
+       };
+
+       pinctrl_usdhc1_100mhz: usdhc1-100mhzgrp {
+               fsl,pins = <
+                       MX6SLL_PAD_SD1_CMD__SD1_CMD     0x170b9
+                       MX6SLL_PAD_SD1_CLK__SD1_CLK     0x170b9
+                       MX6SLL_PAD_SD1_DATA0__SD1_DATA0 0x170b9
+                       MX6SLL_PAD_SD1_DATA1__SD1_DATA1 0x170b9
+                       MX6SLL_PAD_SD1_DATA2__SD1_DATA2 0x170b9
+                       MX6SLL_PAD_SD1_DATA3__SD1_DATA3 0x170b9
+                       MX6SLL_PAD_SD1_DATA4__SD1_DATA4 0x170b9
+                       MX6SLL_PAD_SD1_DATA5__SD1_DATA5 0x170b9
+                       MX6SLL_PAD_SD1_DATA6__SD1_DATA6 0x170b9
+                       MX6SLL_PAD_SD1_DATA7__SD1_DATA7 0x170b9
+               >;
+       };
+
+       pinctrl_usdhc1_200mhz: usdhc1-200mhzgrp {
+               fsl,pins = <
+                       MX6SLL_PAD_SD1_CMD__SD1_CMD     0x170f9
+                       MX6SLL_PAD_SD1_CLK__SD1_CLK     0x170f9
+                       MX6SLL_PAD_SD1_DATA0__SD1_DATA0 0x170f9
+                       MX6SLL_PAD_SD1_DATA1__SD1_DATA1 0x170f9
+                       MX6SLL_PAD_SD1_DATA2__SD1_DATA2 0x170f9
+                       MX6SLL_PAD_SD1_DATA3__SD1_DATA3 0x170f9
+                       MX6SLL_PAD_SD1_DATA4__SD1_DATA4 0x170b9
+                       MX6SLL_PAD_SD1_DATA5__SD1_DATA5 0x170b9
+                       MX6SLL_PAD_SD1_DATA6__SD1_DATA6 0x170b9
+                       MX6SLL_PAD_SD1_DATA7__SD1_DATA7 0x170b9
+               >;
+       };
+
+       pinctrl_usdhc1_sleep: usdhc1-sleepgrp {
+               fsl,pins = <
+                       MX6SLL_PAD_SD1_CMD__SD1_CMD     0x10059
+                       MX6SLL_PAD_SD1_CLK__SD1_CLK     0x10059
+                       MX6SLL_PAD_SD1_DATA0__SD1_DATA0 0x10059
+                       MX6SLL_PAD_SD1_DATA1__SD1_DATA1 0x10059
+                       MX6SLL_PAD_SD1_DATA2__SD1_DATA2 0x10059
+                       MX6SLL_PAD_SD1_DATA3__SD1_DATA3 0x10059
+                       MX6SLL_PAD_SD1_DATA4__SD1_DATA4 0x10059
+                       MX6SLL_PAD_SD1_DATA5__SD1_DATA5 0x10059
+                       MX6SLL_PAD_SD1_DATA6__SD1_DATA6 0x10059
+                       MX6SLL_PAD_SD1_DATA7__SD1_DATA7 0x10059
+               >;
+       };
+
+       pinctrl_usdhc3: usdhc3grp {
+               fsl,pins = <
+                       MX6SLL_PAD_SD3_CMD__SD3_CMD     0x11059
+                       MX6SLL_PAD_SD3_CLK__SD3_CLK     0x11059
+                       MX6SLL_PAD_SD3_DATA0__SD3_DATA0 0x11059
+                       MX6SLL_PAD_SD3_DATA1__SD3_DATA1 0x11059
+                       MX6SLL_PAD_SD3_DATA2__SD3_DATA2 0x11059
+                       MX6SLL_PAD_SD3_DATA3__SD3_DATA3 0x11059
+               >;
+       };
+
+       pinctrl_usdhc3_100mhz: usdhc3-100mhzgrp {
+               fsl,pins = <
+                       MX6SLL_PAD_SD3_CMD__SD3_CMD     0x170b9
+                       MX6SLL_PAD_SD3_CLK__SD3_CLK     0x170b9
+                       MX6SLL_PAD_SD3_DATA0__SD3_DATA0 0x170b9
+                       MX6SLL_PAD_SD3_DATA1__SD3_DATA1 0x170b9
+                       MX6SLL_PAD_SD3_DATA2__SD3_DATA2 0x170b9
+                       MX6SLL_PAD_SD3_DATA3__SD3_DATA3 0x170b9
+               >;
+       };
+
+       pinctrl_usdhc3_200mhz: usdhc3-200mhzgrp {
+               fsl,pins = <
+                       MX6SLL_PAD_SD3_CMD__SD3_CMD     0x170f9
+                       MX6SLL_PAD_SD3_CLK__SD3_CLK     0x170f9
+                       MX6SLL_PAD_SD3_DATA0__SD3_DATA0 0x170f9
+                       MX6SLL_PAD_SD3_DATA1__SD3_DATA1 0x170f9
+                       MX6SLL_PAD_SD3_DATA2__SD3_DATA2 0x170f9
+                       MX6SLL_PAD_SD3_DATA3__SD3_DATA3 0x170f9
+               >;
+       };
+
+       pinctrl_usdhc3_sleep: usdhc3-sleepgrp {
+               fsl,pins = <
+                       MX6SLL_PAD_SD3_CMD__GPIO5_IO21  0x100c1
+                       MX6SLL_PAD_SD3_CLK__GPIO5_IO18  0x100c1
+                       MX6SLL_PAD_SD3_DATA0__GPIO5_IO19        0x100c1
+                       MX6SLL_PAD_SD3_DATA1__GPIO5_IO20        0x100c1
+                       MX6SLL_PAD_SD3_DATA2__GPIO5_IO16        0x100c1
+                       MX6SLL_PAD_SD3_DATA3__GPIO5_IO17        0x100c1
+               >;
+       };
+
+       pinctrl_wifi_power: wifi-powergrp {
+               fsl,pins = <
+                       MX6SLL_PAD_SD2_DATA6__GPIO4_IO29        0x10059  /* WIFI_3V3_ON */
+               >;
+       };
+
+       pinctrl_wifi_reset: wifi-resetgrp {
+               fsl,pins = <
+                       MX6SLL_PAD_SD2_DATA7__GPIO5_IO00        0x10059  /* WIFI_RST */
+               >;
+       };
+};
+
+&leds {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_led>;
+};
+
+&lm3630a {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_lm3630a_bl_gpio>;
+};
+
+&reg_wifi {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_wifi_power>;
+};
+
+&ricoh619 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_ricoh_gpio>;
+};
+
+&uart1 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_uart1>;
+};
+
+&usdhc1 {
+       pinctrl-names = "default", "state_100mhz", "state_200mhz","sleep";
+       pinctrl-0 = <&pinctrl_usdhc1>;
+       pinctrl-1 = <&pinctrl_usdhc1_100mhz>;
+       pinctrl-2 = <&pinctrl_usdhc1_200mhz>;
+       pinctrl-3 = <&pinctrl_usdhc1_sleep>;
+};
+
+&usdhc3 {
+       pinctrl-names = "default", "state_100mhz", "state_200mhz","sleep";
+       pinctrl-0 = <&pinctrl_usdhc3>;
+       pinctrl-1 = <&pinctrl_usdhc3_100mhz>;
+       pinctrl-2 = <&pinctrl_usdhc3_200mhz>;
+       pinctrl-3 = <&pinctrl_usdhc3_sleep>;
+};
+
+&wifi_pwrseq {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_wifi_reset>;
+};
index 04f8d63..d4a000c 100644 (file)
                        device_type = "cpu";
                        reg = <0>;
                        next-level-cache = <&L2>;
-                       operating-points = <
+                       operating-points =
                                /* kHz    uV */
-                               996000  1275000
-                               792000  1175000
-                               396000  1075000
-                               198000  975000
-                       >;
-                       fsl,soc-operating-points = <
+                               <996000  1275000>,
+                               <792000  1175000>,
+                               <396000  1075000>,
+                               <198000   975000>;
+                       fsl,soc-operating-points =
                                /* ARM kHz      SOC-PU uV */
-                               996000          1175000
-                               792000          1175000
-                               396000          1175000
-                               198000          1175000
-                       >;
+                               <996000         1175000>,
+                               <792000         1175000>,
+                               <396000         1175000>,
+                               <198000         1175000>;
                        clock-latency = <61036>; /* two CLK32 periods */
                        #cooling-cells = <2>;
                        clocks = <&clks IMX6SLL_CLK_ARM>,
index 8516730..fc63343 100644 (file)
                };
 
                pcie: pcie@8ffc000 {
-                       compatible = "fsl,imx6sx-pcie", "snps,dw-pcie";
+                       compatible = "fsl,imx6sx-pcie";
                        reg = <0x08ffc000 0x04000>, <0x08f00000 0x80000>;
                        reg-names = "dbi", "config";
                        #address-cells = <3>;
                        #size-cells = <2>;
                        device_type = "pci";
                        bus-range = <0x00 0xff>;
-                       ranges = <0x81000000 0 0          0x08f80000 0 0x00010000 /* downstream I/O */
-                                 0x82000000 0 0x08000000 0x08000000 0 0x00f00000>; /* non-prefetchable memory */
+                       ranges = <0x81000000 0 0          0x08f80000 0 0x00010000>, /* downstream I/O */
+                                <0x82000000 0 0x08000000 0x08000000 0 0x00f00000>; /* non-prefetchable memory */
                        num-lanes = <1>;
                        interrupts = <GIC_SPI 120 IRQ_TYPE_LEVEL_HIGH>;
                        interrupt-names = "msi";
index 19a0626..3cddc68 100644 (file)
 };
 
 &i2c1 {
-       pinctrl-names = "default";
+       pinctrl-names = "default", "gpio";
        pinctrl-0 = <&pinctrl_i2c1>;
+       pinctrl-1 = <&pinctrl_i2c1_gpio>;
+       scl-gpios = <&gpio1 28 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
+       sda-gpios = <&gpio1 29 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
        clock-frequency = <100000>;
        status = "okay";
 
                >;
        };
 
+       pinctrl_i2c1_gpio: i2cgpiogrp {
+               fsl,pins = <
+                       MX6UL_PAD_UART4_TX_DATA__GPIO1_IO28     0x4001b8b0
+                       MX6UL_PAD_UART4_RX_DATA__GPIO1_IO29     0x4001b8b0
+               >;
+       };
+
        pinctrl_uart1: uart1grp {
                fsl,pins = <
                        MX6UL_PAD_UART1_TX_DATA__UART1_DCE_TX   0x1b0b1
index 95e4080..0d4ba94 100644 (file)
        no-1-8-v;
        keep-power-in-suspend;
        wakeup-source;
+       disable-wp;
        status = "disabled";
 };
 
diff --git a/arch/arm/boot/dts/imx6ull-colibri-emmc-eval-v3.dts b/arch/arm/boot/dts/imx6ull-colibri-emmc-eval-v3.dts
new file mode 100644 (file)
index 0000000..61b93cb
--- /dev/null
@@ -0,0 +1,17 @@
+// SPDX-License-Identifier: GPL-2.0+ OR MIT
+/*
+ * Copyright 2021 Toradex
+ */
+
+/dts-v1/;
+
+#include "imx6ull-colibri-emmc-nonwifi.dtsi"
+#include "imx6ull-colibri-eval-v3.dtsi"
+
+/ {
+       model = "Toradex Colibri iMX6ULL 1GB (eMMC) on Colibri Evaluation Board V3";
+       compatible = "toradex,colibri-imx6ull-emmc-eval",
+                    "toradex,colibri-imx6ull-emmc",
+                    "toradex,colibri-imx6ull",
+                    "fsl,imx6ull";
+};
diff --git a/arch/arm/boot/dts/imx6ull-colibri-emmc-nonwifi.dtsi b/arch/arm/boot/dts/imx6ull-colibri-emmc-nonwifi.dtsi
new file mode 100644 (file)
index 0000000..a099abf
--- /dev/null
@@ -0,0 +1,185 @@
+// SPDX-License-Identifier: GPL-2.0+ OR MIT
+/*
+ * Copyright 2021 Toradex
+ */
+
+#include "imx6ull-colibri.dtsi"
+
+/ {
+       aliases {
+               mmc0 = &usdhc2; /* eMMC */
+               mmc1 = &usdhc1; /* MMC 4bit slot */
+       };
+
+       memory@80000000 {
+               device_type = "memory";
+               reg = <0x80000000 0x10000000>;
+       };
+};
+
+&gpio1 {
+       gpio-line-names = "SODIMM_8",
+                         "SODIMM_6",
+                         "SODIMM_129",
+                         "SODIMM_89",
+                         "SODIMM_19",
+                         "SODIMM_21",
+                         "UNUSABLE_SODIMM_180",
+                         "UNUSABLE_SODIMM_184",
+                         "SODIMM_4",
+                         "SODIMM_2",
+                         "SODIMM_106",
+                         "SODIMM_71",
+                         "SODIMM_23",
+                         "SODIMM_31",
+                         "SODIMM_99",
+                         "SODIMM_102",
+                         "SODIMM_33",
+                         "SODIMM_35",
+                         "SODIMM_25",
+                         "SODIMM_27",
+                         "SODIMM_36",
+                         "SODIMM_38",
+                         "SODIMM_32",
+                         "SODIMM_34",
+                         "SODIMM_135",
+                         "SODIMM_77",
+                         "SODIMM_100",
+                         "SODIMM_186",
+                         "SODIMM_196",
+                         "SODIMM_194";
+};
+
+&gpio2 {
+       gpio-line-names = "SODIMM_55",
+                         "SODIMM_63",
+                         "SODIMM_178",
+                         "SODIMM_188",
+                         "SODIMM_73",
+                         "SODIMM_30",
+                         "SODIMM_67",
+                         "SODIMM_104",
+                         "",
+                         "",
+                         "",
+                         "",
+                         "",
+                         "",
+                         "",
+                         "",
+                         "SODIMM_190",
+                         "SODIMM_47",
+                         "SODIMM_192",
+                         "SODIMM_49",
+                         "SODIMM_51",
+                         "SODIMM_53";
+};
+
+&gpio3 {
+       gpio-line-names = "SODIMM_56",
+                         "SODIMM_44",
+                         "SODIMM_68",
+                         "SODIMM_82",
+                         "",
+                         "SODIMM_76",
+                         "SODIMM_70",
+                         "SODIMM_60",
+                         "SODIMM_58",
+                         "SODIMM_78",
+                         "SODIMM_72",
+                         "SODIMM_80",
+                         "SODIMM_46",
+                         "SODIMM_62",
+                         "SODIMM_48",
+                         "SODIMM_74",
+                         "SODIMM_50",
+                         "SODIMM_52",
+                         "SODIMM_54",
+                         "SODIMM_66",
+                         "SODIMM_64",
+                         "SODIMM_57",
+                         "SODIMM_61",
+                         "SODIMM_29",
+                         "SODIMM_37",
+                         "SODIMM_88",
+                         "SODIMM_86",
+                         "SODIMM_92",
+                         "SODIMM_90";
+};
+
+&gpio4 {
+       gpio-line-names = "",
+                         "",
+                         "",
+                         "",
+                         "",
+                         "",
+                         "",
+                         "",
+                         "",
+                         "",
+                         "SODIMM_140",
+                         "SODIMM_59",
+                         "SODIMM_142",
+                         "SODIMM_144",
+                         "SODIMM_133",
+                         "SODIMM_146",
+                         "SODIMM_28",
+                         "SODIMM_75",
+                         "SODIMM_96",
+                         "SODIMM_81",
+                         "SODIMM_94",
+                         "SODIMM_101",
+                         "SODIMM_103",
+                         "SODIMM_79",
+                         "SODIMM_97",
+                         "SODIMM_69",
+                         "SODIMM_98",
+                         "SODIMM_85",
+                         "SODIMM_65";
+};
+
+&gpio5 {
+       gpio-line-names = "SODIMM_43",
+                         "SODIMM_45",
+                         "SODIMM_137",
+                         "SODIMM_95",
+                         "SODIMM_107",
+                         "SODIMM_131",
+                         "SODIMM_93",
+                         "",
+                         "SODIMM_138",
+                         "",
+                         "SODIMM_105",
+                         "SODIMM_127";
+};
+
+&gpmi {
+       status = "disabled";
+};
+
+&iomuxc {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_gpio1 &pinctrl_gpio2 &pinctrl_gpio3
+               &pinctrl_gpio4 &pinctrl_gpio6 &pinctrl_gpio7
+               &pinctrl_gpmi_gpio>;
+};
+
+&iomuxc_snvs {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_snvs_gpio1 &pinctrl_snvs_gpio3>;
+};
+
+&usdhc2 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_usdhc2emmc>;
+       assigned-clocks = <&clks IMX6UL_CLK_USDHC2_SEL>, <&clks IMX6UL_CLK_USDHC2>;
+       assigned-clock-parents = <&clks IMX6UL_CLK_PLL2_PFD2>;
+       assigned-clock-rates = <0>, <198000000>;
+       bus-width = <8>;
+       keep-power-in-suspend;
+       no-1-8-v;
+       non-removable;
+       vmmc-supply = <&reg_module_3v3>;
+       status = "okay";
+};
index 0cdbf7b..7f35a06 100644 (file)
@@ -1,6 +1,6 @@
-// SPDX-License-Identifier: (GPL-2.0 OR MIT)
+// SPDX-License-Identifier: GPL-2.0+ OR MIT
 /*
- * Copyright 2018 Toradex AG
+ * Copyright 2018-2021 Toradex
  */
 
 #include "imx6ull.dtsi"
                >;
        };
 
+       /*
+        * With an eMMC instead of a raw NAND device the following pins
+        * are available at SODIMM pins
+        */
+       pinctrl_gpmi_gpio: gpmi-gpio-grp {
+               fsl,pins = <
+                       MX6UL_PAD_NAND_ALE__GPIO4_IO10          0x10b0 /* SODIMM 140 */
+                       MX6UL_PAD_NAND_CE0_B__GPIO4_IO13        0x10b0 /* SODIMM 144 */
+                       MX6UL_PAD_NAND_CLE__GPIO4_IO15          0x10b0 /* SODIMM 146 */
+                       MX6UL_PAD_NAND_READY_B__GPIO4_IO12      0x10b0 /* SODIMM 142 */
+               >;
+       };
+
        pinctrl_gpmi_nand: gpmi-nand-grp {
                fsl,pins = <
                        MX6UL_PAD_NAND_DATA00__RAWNAND_DATA00   0x100a9
                >;
        };
 
+       pinctrl_usdhc2emmc: usdhc2emmcgrp {
+               fsl,pins = <
+                       MX6UL_PAD_NAND_RE_B__USDHC2_CLK     0x17059
+                       MX6UL_PAD_NAND_WE_B__USDHC2_CMD     0x17059
+                       MX6UL_PAD_NAND_DATA00__USDHC2_DATA0 0x17059
+                       MX6UL_PAD_NAND_DATA01__USDHC2_DATA1 0x17059
+                       MX6UL_PAD_NAND_DATA02__USDHC2_DATA2 0x17059
+                       MX6UL_PAD_NAND_DATA03__USDHC2_DATA3 0x17059
+                       MX6UL_PAD_NAND_DATA04__USDHC2_DATA4 0x17059
+                       MX6UL_PAD_NAND_DATA05__USDHC2_DATA5 0x17059
+                       MX6UL_PAD_NAND_DATA06__USDHC2_DATA6 0x17059
+                       MX6UL_PAD_NAND_DATA07__USDHC2_DATA7 0x17059
+               >;
+       };
+
        pinctrl_wdog: wdog-grp {
                fsl,pins = <
                        MX6UL_PAD_LCD_RESET__WDOG1_WDOG_ANY    0x30b0
index 5e6bef2..49086c6 100644 (file)
@@ -1,8 +1,8 @@
 // SPDX-License-Identifier: GPL-2.0 OR X11
 /*
- * Device Tree Include file for TQ Systems MBa7 carrier board.
+ * Device Tree Include file for TQ-Systems MBa7 carrier board.
  *
- * Copyright (C) 2016 TQ Systems GmbH
+ * Copyright (C) 2016 TQ-Systems GmbH
  * Author: Markus Niebel <Markus.Niebel@tq-group.com>
  * Copyright (C) 2019 Bruno Thomsen <bruno.thomsen@gmail.com>
  *
        };
 };
 
+&flash0 {
+       partitions {
+               compatible = "fixed-partitions";
+               #address-cells = <1>;
+               #size-cells = <1>;
+
+               uboot@0 {
+                       label = "U-Boot";
+                       reg = <0x0 0xd0000>;
+               };
+
+               env1@d0000 {
+                       label = "ENV1";
+                       reg = <0xd0000 0x10000>;
+               };
+
+               env2@e0000 {
+                       label = "ENV2";
+                       reg = <0xe0000 0x10000>;
+               };
+
+               dtb@f0000 {
+                       label = "DTB";
+                       reg = <0xf0000 0x10000>;
+               };
+
+               linux@100000 {
+                       label = "Linux";
+                       reg = <0x100000 0x700000>;
+               };
+
+               rootfs@800000 {
+                       label = "RootFS";
+                       reg = <0x800000 0x3800000>;
+               };
+       };
+};
+
 &flexcan1 {
        pinctrl-names = "default";
        pinctrl-0 = <&pinctrl_flexcan1>;
index 8773344..fe42b0a 100644 (file)
@@ -1,8 +1,8 @@
 // SPDX-License-Identifier: GPL-2.0 OR X11
 /*
- * Device Tree Include file for TQ Systems TQMa7x boards with full mounted PCB.
+ * Device Tree Include file for TQ-Systems TQMa7x boards with full mounted PCB.
  *
- * Copyright (C) 2016 TQ Systems GmbH
+ * Copyright (C) 2016 TQ-Systems GmbH
  * Author: Markus Niebel <Markus.Niebel@tq-group.com>
  * Copyright (C) 2019 Bruno Thomsen <bruno.thomsen@gmail.com>
  */
        cpu-supply = <&sw1a_reg>;
 };
 
+&gpio2 {
+       /* Configured as pullup by QSPI pin group */
+       qspi-reset-hog {
+               gpio-hog;
+               gpios = <4 GPIO_ACTIVE_LOW>;
+               input;
+               line-name = "qspi-reset";
+       };
+};
+
 &i2c1 {
        pinctrl-names = "default";
        pinctrl-0 = <&pinctrl_i2c1>;
                >;
        };
 
+       pinctrl_qspi: qspigrp {
+               fsl,pins = <
+                       MX7D_PAD_EPDC_DATA00__QSPI_A_DATA0      0x5A
+                       MX7D_PAD_EPDC_DATA01__QSPI_A_DATA1      0x5A
+                       MX7D_PAD_EPDC_DATA02__QSPI_A_DATA2      0x5A
+                       MX7D_PAD_EPDC_DATA03__QSPI_A_DATA3      0x5A
+                       MX7D_PAD_EPDC_DATA05__QSPI_A_SCLK       0x11
+                       MX7D_PAD_EPDC_DATA06__QSPI_A_SS0_B      0x54
+                       MX7D_PAD_EPDC_DATA07__QSPI_A_SS1_B      0x54
+               >;
+       };
+
+       pinctrl_qspi_reset: qspi_resetgrp {
+               fsl,pins = <
+                       /* #QSPI_RESET */
+                       MX7D_PAD_EPDC_DATA04__GPIO2_IO4         0x52
+               >;
+       };
+
        pinctrl_usdhc3: usdhc3grp {
                fsl,pins = <
                        MX7D_PAD_SD3_CMD__SD3_CMD               0x59
        };
 };
 
+&qspi {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_qspi &pinctrl_qspi_reset>;
+       status = "okay";
+
+       flash0: flash@0 {
+               compatible = "jedec,spi-nor";
+               reg = <0>;
+               spi-max-frequency = <29000000>;
+               spi-rx-bus-width = <4>;
+               spi-tx-bus-width = <4>;
+       };
+};
+
 &sdma {
        status = "okay";
 };
index 36ef6a3..32bf9fa 100644 (file)
@@ -1,8 +1,8 @@
 // SPDX-License-Identifier: GPL-2.0 OR X11
 /*
- * Device Tree Source for TQ Systems TQMa7D board on MBa7 carrier board.
+ * Device Tree Source for TQ-Systems TQMa7D board on MBa7 carrier board.
  *
- * Copyright (C) 2016 TQ Systems GmbH
+ * Copyright (C) 2016 TQ-Systems GmbH
  * Author: Markus Niebel <Markus.Niebel@tq-group.com>
  * Copyright (C) 2019 Bruno Thomsen <bruno.thomsen@gmail.com>
  */
@@ -13,7 +13,7 @@
 #include "imx7-mba7.dtsi"
 
 / {
-       model = "TQ Systems TQMa7D board on MBa7 carrier board";
+       model = "TQ-Systems TQMa7D board on MBa7 carrier board";
        compatible = "tq,imx7d-mba7", "tq,imx7d-tqma7", "fsl,imx7d";
 };
 
index 4a0d837..7813ef9 100644 (file)
@@ -45,7 +45,7 @@
                pinctrl-0 = <&pinctrl_spi4>;
                gpio-sck = <&gpio1 13 GPIO_ACTIVE_HIGH>;
                gpio-mosi = <&gpio1 9 GPIO_ACTIVE_HIGH>;
-               cs-gpios = <&gpio1 12 GPIO_ACTIVE_HIGH>;
+               cs-gpios = <&gpio1 12 GPIO_ACTIVE_LOW>;
                num-chipselects = <1>;
                #address-cells = <1>;
                #size-cells = <0>;
index 598aed1..3ee2017 100644 (file)
@@ -1,8 +1,8 @@
 // SPDX-License-Identifier: GPL-2.0 OR X11
 /*
- * Device Tree Include file for TQ Systems TQMa7D board with NXP i.MX7Dual SoC.
+ * Device Tree Include file for TQ-Systems TQMa7D board with NXP i.MX7Dual SoC.
  *
- * Copyright (C) 2016 TQ Systems GmbH
+ * Copyright (C) 2016 TQ-Systems GmbH
  * Author: Markus Niebel <Markus.Niebel@tq-group.com>
  * Copyright (C) 2019 Bruno Thomsen <bruno.thomsen@gmail.com>
  */
index b0bcfa9..b773597 100644 (file)
        };
 
        pcie: pcie@33800000 {
-               compatible = "fsl,imx7d-pcie", "snps,dw-pcie";
+               compatible = "fsl,imx7d-pcie";
                reg = <0x33800000 0x4000>,
                      <0x4ff00000 0x80000>;
                reg-names = "dbi", "config";
                #size-cells = <2>;
                device_type = "pci";
                bus-range = <0x00 0xff>;
-               ranges = <0x81000000 0 0          0x4ff80000 0 0x00010000   /* downstream I/O */
-                         0x82000000 0 0x40000000 0x40000000 0 0x0ff00000>; /* non-prefetchable memory */
+               ranges = <0x81000000 0 0          0x4ff80000 0 0x00010000>, /* downstream I/O */
+                        <0x82000000 0 0x40000000 0x40000000 0 0x0ff00000>; /* non-prefetchable memory */
                num-lanes = <1>;
-               num-viewport = <4>;
                interrupts = <GIC_SPI 122 IRQ_TYPE_LEVEL_HIGH>;
                interrupt-names = "msi";
                #interrupt-cells = <1>;
index d7d3f53..8e4cf58 100644 (file)
@@ -1,8 +1,8 @@
 // SPDX-License-Identifier: GPL-2.0 OR X11
 /*
- * Device Tree Source for TQ Systems TQMa7S board on MBa7 carrier board.
+ * Device Tree Source for TQ-Systems TQMa7S board on MBa7 carrier board.
  *
- * Copyright (C) 2016 TQ Systems GmbH
+ * Copyright (C) 2016 TQ-Systems GmbH
  * Author: Markus Niebel <Markus.Niebel@tq-group.com>
  * Copyright (C) 2019 Bruno Thomsen <bruno.thomsen@gmail.com>
  */
@@ -13,6 +13,6 @@
 #include "imx7-mba7.dtsi"
 
 / {
-       model = "TQ Systems TQMa7S board on MBa7 carrier board";
+       model = "TQ-Systems TQMa7S board on MBa7 carrier board";
        compatible = "tq,imx7s-mba7", "tq,imx7s-tqma7", "fsl,imx7s";
 };
index 5f5433e..7a190fd 100644 (file)
@@ -1,8 +1,8 @@
 // SPDX-License-Identifier: GPL-2.0 OR X11
 /*
- * Device Tree Include file for TQ Systems TQMa7S board with NXP i.MX7Solo SoC.
+ * Device Tree Include file for TQ-Systems TQMa7S board with NXP i.MX7Solo SoC.
  *
- * Copyright (C) 2016 TQ Systems GmbH
+ * Copyright (C) 2016 TQ-Systems GmbH
  * Author: Markus Niebel <Markus.Niebel@tq-group.com>
  * Copyright (C) 2019 Bruno Thomsen <bruno.thomsen@gmail.com>
  */
index 602f74d..ad868cf 100644 (file)
        core-module@10000000 {
                compatible = "arm,core-module-integrator", "syscon", "simple-mfd";
                reg = <0x10000000 0x200>;
+               ranges = <0x0 0x10000000 0x200>;
+               #address-cells = <1>;
+               #size-cells = <1>;
 
                /* Use core module LED to indicate CPU load */
-               led@c.0 {
+               led@c,0 {
                        compatible = "register-bit-led";
+                       reg = <0x0c 0x04>;
                        offset = <0x0c>;
                        mask = <0x01>;
                        label = "integrator:core_module";
                        interrupts = <4>;
                };
 
-               syscon {
+               syscon@1a000000 {
                        /* Debug registers mapped as syscon */
                        compatible = "syscon", "simple-mfd";
                        reg = <0x1a000000 0x10>;
+                       ranges = <0x0 0x1a000000 0x10>;
+                       #address-cells = <1>;
+                       #size-cells = <1>;
 
-                       led@4.0 {
+                       led@4,0 {
                                compatible = "register-bit-led";
+                               reg = <0x04 0x04>;
                                offset = <0x04>;
                                mask = <0x01>;
                                label = "integrator:green0";
                                linux,default-trigger = "heartbeat";
                                default-state = "on";
                        };
-                       led@4.1 {
+                       led@4,1 {
                                compatible = "register-bit-led";
+                               reg = <0x04 0x04>;
                                offset = <0x04>;
                                mask = <0x02>;
                                label = "integrator:yellow";
                                default-state = "off";
                        };
-                       led@4.2 {
+                       led@4,2 {
                                compatible = "register-bit-led";
+                               reg = <0x04 0x04>;
                                offset = <0x04>;
                                mask = <0x04>;
                                label = "integrator:red";
                                default-state = "off";
                        };
-                       led@4.3 {
+                       led@4,3 {
                                compatible = "register-bit-led";
+                               reg = <0x04 0x04>;
                                offset = <0x04>;
                                mask = <0x08>;
                                label = "integrator:green1";
index 0614f82..d47bfb6 100644 (file)
        syscon@0 {
                compatible = "arm,im-pd1-syscon", "syscon";
                reg = <0x00000000 0x1000>;
+               ranges;
+               #address-cells = <1>;
+               #size-cells = <1>;
 
-               vco1: vco1-clock {
+               vco1: clock-controller@0 {
                        compatible = "arm,impd1-vco1";
+                       reg = <0x00 0x04>;
                        #clock-cells = <0>;
                        lock-offset = <0x08>;
                        vco-offset = <0x00>;
@@ -38,8 +42,9 @@
                        clock-output-names = "IM-PD1-VCO1";
                };
 
-               vco2: vco2-clock {
+               vco2: clock-controller@4 {
                        compatible = "arm,impd1-vco2";
+                       reg = <0x04 0x04>;
                        #clock-cells = <0>;
                        lock-offset = <0x08>;
                        vco-offset = <0x04>;
index 67d1f9b..9b652cc 100644 (file)
@@ -88,8 +88,9 @@
                };
 
                /* Oscillator on the core module, clocks the CPU core */
-               cmosc: cmosc@24M {
+               cmosc: clock-controller@8 {
                        compatible = "arm,syscon-icst525-integratorap-cm";
+                       reg = <0x08 0x04>;
                        #clock-cells = <0>;
                        lock-offset = <0x14>;
                        vco-offset = <0x08>;
@@ -97,8 +98,9 @@
                };
 
                /* Auxilary oscillator on the core module, 32.369MHz at boot */
-               auxosc: auxosc@24M {
+               auxosc: clock-controller@1c {
                        compatible = "arm,syscon-icst525";
+                       reg = <0x1c 0x04>;
                        #clock-cells = <0>;
                        lock-offset = <0x14>;
                        vco-offset = <0x1c>;
        syscon {
                compatible = "arm,integrator-ap-syscon", "syscon";
                reg = <0x11000000 0x100>;
+               ranges = <0x0 0x11000000 0x100>;
+               #size-cells = <1>;
+               #address-cells = <1>;
 
                /*
                 * SYSCLK clocks PCIv3 bridge, system controller and the
                 * logic modules.
                 */
-               sysclk: apsys@24M {
+               sysclk: clock-controller@4 {
                        compatible = "arm,syscon-icst525-integratorap-sys";
+                       reg = <0x04 0x04>;
                        #clock-cells = <0>;
                        lock-offset = <0x1c>;
                        vco-offset = <0x04>;
                };
 
                /* One-bit control for the PCI bus clock (33 or 25 MHz) */
-               pciclk: pciclk@24M {
+               pciclk: clock-controller@4,8 {
                        compatible = "arm,syscon-icst525-integratorap-pci";
+                       reg = <0x04 0x04>;
                        #clock-cells = <0>;
                        lock-offset = <0x1c>;
                        vco-offset = <0x04>;
index 01fa229..38fc7e8 100644 (file)
@@ -92,8 +92,9 @@
                };
 
                /* Oscillator on the core module, clocks the CPU core */
-               cmcore: cmosc@24M {
+               cmcore: clock-controller@8 {
                        compatible = "arm,syscon-icst525-integratorcp-cm-core";
+                       reg = <0x08 0x04>;
                        #clock-cells = <0>;
                        lock-offset = <0x14>;
                        vco-offset = <0x08>;
                };
 
                /* Oscillator on the core module, clocks the memory bus */
-               cmmem: cmosc@24M {
+               cmmem: clock-controller@8,12 {
                        compatible = "arm,syscon-icst525-integratorcp-cm-mem";
+                       reg = <0x08 0x04>;
                        #clock-cells = <0>;
                        lock-offset = <0x14>;
                        vco-offset = <0x08>;
                };
 
                /* Auxilary oscillator on the core module, clocks the CLCD */
-               auxosc: auxosc@24M {
+               auxosc: clock-controller@1c {
                        compatible = "arm,syscon-icst525";
+                       reg = <0x1c 0x04>;
                        #clock-cells = <0>;
                        lock-offset = <0x14>;
                        vco-offset = <0x1c>;
index 44c017b..bd4230d 100644 (file)
@@ -63,6 +63,8 @@
                         * We have slots (IDSEL) 1 and 2 with one assigned IRQ
                         * each handling all IRQs.
                         */
+                       #interrupt-cells = <1>;
+                       interrupt-map-mask = <0xf800 0 0 7>;
                        interrupt-map =
                        /* IDSEL 1 */
                        <0x0800 0 0 1 &gpio0 6 IRQ_TYPE_LEVEL_LOW>, /* INT A on slot 1 is irq 6 */
index 7200126..92b987b 100644 (file)
                         * We have 2 slots (IDSEL) 1 and 2 with one dedicated interrupt
                         * per slot. This interrupt is shared (OR:ed) by all four pins.
                         */
+                       #interrupt-cells = <1>;
+                       interrupt-map-mask = <0xf800 0 0 7>;
                        interrupt-map =
                        /* IDSEL 1 */
                        <0x0800 0 0 1 &gpio0 2 IRQ_TYPE_LEVEL_LOW>, /* INT A on slot 1 is irq 2 */
index 8b32e9f..5ab09fb 100644 (file)
                         * We have slots (IDSEL) 1, 2, 3, 4 and pins 1, 2 and 3.
                         * Only slot 3 have three IRQs.
                         */
+                       #interrupt-cells = <1>;
+                       interrupt-map-mask = <0xf800 0 0 7>;
                        interrupt-map =
                        /* IDSEL 1 */
                        <0x0800 0 0 1 &gpio0 7  IRQ_TYPE_LEVEL_LOW>, /* INT E on slot 1 is irq 7 */
index 77e78c6..598586f 100644 (file)
                         * Written based on the FSG-3 PCI boardfile.
                         * We have slots 12, 13 & 14 (IDSEL) with one IRQ each.
                         */
+                       #interrupt-cells = <1>;
+                       interrupt-map-mask = <0xf800 0 0 7>;
                        interrupt-map =
                        /* IDSEL 12 */
                        <0x6000 0 0 1 &gpio0 5 IRQ_TYPE_LEVEL_LOW>, /* INT A on slot 12 is irq 5 */
index a20277f..a5943f5 100644 (file)
                         *
                         * We have up to 4 slots (IDSEL) with 4 swizzled IRQs.
                         */
+                       #interrupt-cells = <1>;
+                       interrupt-map-mask = <0xf800 0 0 7>;
                        interrupt-map =
                        /* IDSEL 1 */
                        <0x0800 0 0 1 &gpio0 11 IRQ_TYPE_LEVEL_LOW>, /* INT A on slot 1 is irq 11 */
index 8c18d80..cbc87b3 100644 (file)
                         * Taken from NAS 100D PCI boardfile (nas100d-pci.c)
                         * We have slots (IDSEL) 1, 2 and 3 and pins 1, 2 and 3.
                         */
+                       #interrupt-cells = <1>;
+                       interrupt-map-mask = <0xf800 0 0 7>;
                        interrupt-map =
                        /* IDSEL 1 */
                        <0x0800 0 0 1 &gpio0 11 IRQ_TYPE_LEVEL_LOW>, /* INT A on slot 1 is irq 11 */
index 002a870..f17cab1 100644 (file)
@@ -68,6 +68,8 @@
                         * We have slots (IDSEL) 12, 13 and 14 with one assigned IRQ
                         * for 12 & 13 and one for 14.
                         */
+                       #interrupt-cells = <1>;
+                       interrupt-map-mask = <0xf800 0 0 7>;
                        interrupt-map =
                        /* IDSEL 12 */
                        <0x6000 0 0 1 &gpio0 7 IRQ_TYPE_LEVEL_LOW>, /* INT A on slot 12 is irq 7 */
index e3a32b0..0edc592 100644 (file)
                         * Taken from NSLU2 PCI boardfile, INT A, B, C swizzled D constant
                         * We have slots (IDSEL) 1, 2 and 3.
                         */
+                       #interrupt-cells = <1>;
+                       interrupt-map-mask = <0xf800 0 0 7>;
                        interrupt-map =
                        /* IDSEL 1 */
                        <0x0800 0 0 1 &gpio0 11 IRQ_TYPE_LEVEL_LOW>, /* INT A on slot 1 is irq 11 */
index 6b28dda..5e7e31b 100644 (file)
                         * We have up to 2 slots (IDSEL) with 2 swizzled IRQs.
                         * Derived from the GTWX5715 PCI boardfile.
                         */
+                       #interrupt-cells = <1>;
+                       interrupt-map-mask = <0xf800 0 0 7>;
                        interrupt-map =
                        /* IDSEL 0 */
                        <0x0000 0 0 1 &gpio0 10 IRQ_TYPE_LEVEL_LOW>, /* INT A on slot 0 is irq 10 */
index 04a0f71..a570094 100644 (file)
@@ -62,6 +62,8 @@
                         * We have slots (IDSEL) 1 and 2 with one assigned IRQ
                         * each handling all IRQs.
                         */
+                       #interrupt-cells = <1>;
+                       interrupt-map-mask = <0xf800 0 0 7>;
                        interrupt-map =
                        /* IDSEL 1 */
                        <0x0800 0 0 1 &gpio0 8 IRQ_TYPE_LEVEL_LOW>, /* INT A on slot 1 is irq 8 */
index 84e6aec..cf4010d 100644 (file)
                         * have instead assumed that they are rotated (swizzled) like
                         * this with 11, 10, 9, 8 for the 4 pins on IDSEL 1 etc.
                         */
+                       #interrupt-cells = <1>;
+                       interrupt-map-mask = <0xf800 0 0 7>;
                        interrupt-map =
                        /* IDSEL 1 */
                        <0x0800 0 0 1 &gpio0 11 IRQ_TYPE_LEVEL_LOW>, /* INT A on slot 1 is irq 11 */
index b6ff614..1dd4a65 100644 (file)
                        queue-rx = <&qmgr 0>;
                        queue-txready = <&qmgr 0>;
                };
+
+               ptp-timer@c8010000 {
+                       compatible = "intel,ixp46x-ptp-timer";
+                       reg = <0xc8010000 0x1000>;
+                       interrupt-parent = <&gpio0>;
+                       interrupts = <8 IRQ_TYPE_EDGE_FALLING>, <7 IRQ_TYPE_EDGE_FALLING>;
+                       interrupt-names = "master", "slave";
+               };
        };
 };
index c1d9c49..146352b 100644 (file)
                         * PCI slots on the BIXMB425BD base card.
                         * We have up to 4 slots (IDSEL) with 4 swizzled IRQs.
                         */
+                       #interrupt-cells = <1>;
+                       interrupt-map-mask = <0xf800 0 0 7>;
                        interrupt-map =
                        /* IDSEL 1 */
                        <0x0800 0 0 1 &gpio0 11 IRQ_TYPE_LEVEL_LOW>, /* INT A on slot 1 is irq 11 */
index e5af2d4..46fede0 100644 (file)
@@ -78,8 +78,6 @@
                        dma-ranges =
                        <0x02000000 0 0x00000000 0x00000000 0 0x04000000>;
 
-                       #interrupt-cells = <1>;
-                       interrupt-map-mask = <0xf800 0 0 7>;
                        /* Each unique DTS using PCI must specify the swizzling */
                };
 
index bc85767..849034a 100644 (file)
        status = "okay";
 
        phy3: ethernet-phy@3 {
+               compatible = "ethernet-phy-id0022.1622",
+                            "ethernet-phy-ieee802.3-c22";
                reg = <3>;
                micrel,led-mode = <1>;
        };
index 74a6760..f1acb97 100644 (file)
@@ -1,49 +1,7 @@
+// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
 /*
  * Copyright 2013-2014 Freescale Semiconductor, Inc.
  * Copyright 2018 NXP
- *
- * This file is dual-licensed: you can use it either under the terms
- * of the GPL or the X11 license, at your option. Note that this dual
- * licensing only applies to this file, and not this project as a
- * whole.
- *
- *  a) This file is free software; you can redistribute it and/or
- *     modify it under the terms of the GNU General Public License as
- *     published by the Free Software Foundation; either version 2 of
- *     the License, or (at your option) any later version.
- *
- *     This file is distributed in the hope that it will be useful,
- *     but WITHOUT ANY WARRANTY; without even the implied warranty of
- *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *     GNU General Public License for more details.
- *
- *     You should have received a copy of the GNU General Public
- *     License along with this file; if not, write to the Free
- *     Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
- *     MA 02110-1301 USA
- *
- * Or, alternatively,
- *
- *  b) Permission is hereby granted, free of charge, to any person
- *     obtaining a copy of this software and associated documentation
- *     files (the "Software"), to deal in the Software without
- *     restriction, including without limitation the rights to use,
- *     copy, modify, merge, publish, distribute, sublicense, and/or
- *     sell copies of the Software, and to permit persons to whom the
- *     Software is furnished to do so, subject to the following
- *     conditions:
- *
- *     The above copyright notice and this permission notice shall be
- *     included in all copies or substantial portions of the Software.
- *
- *     THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- *     EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
- *     OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- *     NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
- *     HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
- *     WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- *     FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
- *     OTHER DEALINGS IN THE SOFTWARE.
  */
 
 /dts-v1/;
                clock-frequency = <24576000>;
        };
 
-       regulators {
-               compatible = "simple-bus";
-               #address-cells = <1>;
-               #size-cells = <0>;
-
-               reg_3p3v: regulator@0 {
-                       compatible = "regulator-fixed";
-                       reg = <0>;
-                       regulator-name = "3P3V";
-                       regulator-min-microvolt = <3300000>;
-                       regulator-max-microvolt = <3300000>;
-                       regulator-always-on;
-               };
+       reg_3p3v: regulator {
+               compatible = "regulator-fixed";
+               regulator-name = "3P3V";
+               regulator-min-microvolt = <3300000>;
+               regulator-max-microvolt = <3300000>;
+               regulator-always-on;
        };
 
        sound {
        #address-cells = <2>;
        #size-cells = <1>;
        /* NOR, NAND Flashes and FPGA on board */
-       ranges = <0x0 0x0 0x0 0x60000000 0x08000000
-                 0x2 0x0 0x0 0x7e800000 0x00010000
-                 0x3 0x0 0x0 0x7fb00000 0x00000100>;
+       ranges = <0x0 0x0 0x0 0x60000000 0x08000000>,
+                <0x2 0x0 0x0 0x7e800000 0x00010000>,
+                <0x3 0x0 0x0 0x7fb00000 0x00000100>;
        status = "okay";
 
        nor@0,0 {
        fpga: board-control@3,0 {
                #address-cells = <1>;
                #size-cells = <1>;
-               compatible = "simple-bus";
+               compatible = "simple-mfd";
                reg = <0x3 0x0 0x0000100>;
                bank-width = <1>;
                device-width = <1>;
        };
 };
 
+&qspi {
+       status = "okay";
+
+       flash@0 {
+               compatible = "jedec,spi-nor";
+               #address-cells = <1>;
+               #size-cells = <1>;
+               spi-max-frequency = <20000000>;
+               reg = <0>;
+               spi-rx-bus-width = <4>;
+               spi-tx-bus-width = <4>;
+       };
+};
+
 &sai2 {
        status = "okay";
 };
index 9d8f0c2..ff0ffb2 100644 (file)
@@ -8,6 +8,7 @@
 
 / {
        model = "NXP LS1021A-TSN Board";
+       compatible = "fsl,ls1021a-tsn", "fsl,ls1021a";
 
        sys_mclk: clock-mclk {
                compatible = "fixed-clock";
        /* 3 axis accelerometer */
        accelerometer@1e {
                compatible = "fsl,fxls8471";
-               position = <0>;
                reg = <0x1e>;
        };
 
 
        flash@0 {
                /* Rev. A uses 64MB flash, Rev. B & C use 32MB flash */
-               compatible = "jedec,spi-nor", "s25fl256s1", "s25fl512s";
+               compatible = "jedec,spi-nor";
                spi-max-frequency = <20000000>;
                #address-cells = <1>;
                #size-cells = <1>;
index 5edf001..f5c0387 100644 (file)
@@ -1,49 +1,7 @@
+// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
 /*
  * Copyright 2013-2014 Freescale Semiconductor, Inc.
  * Copyright 2018 NXP
- *
- * This file is dual-licensed: you can use it either under the terms
- * of the GPL or the X11 license, at your option. Note that this dual
- * licensing only applies to this file, and not this project as a
- * whole.
- *
- *  a) This file is free software; you can redistribute it and/or
- *     modify it under the terms of the GNU General Public License as
- *     published by the Free Software Foundation; either version 2 of
- *     the License, or (at your option) any later version.
- *
- *     This file is distributed in the hope that it will be useful,
- *     but WITHOUT ANY WARRANTY; without even the implied warranty of
- *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *     GNU General Public License for more details.
- *
- *     You should have received a copy of the GNU General Public
- *     License along with this file; if not, write to the Free
- *     Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
- *     MA 02110-1301 USA
- *
- * Or, alternatively,
- *
- *  b) Permission is hereby granted, free of charge, to any person
- *     obtaining a copy of this software and associated documentation
- *     files (the "Software"), to deal in the Software without
- *     restriction, including without limitation the rights to use,
- *     copy, modify, merge, publish, distribute, sublicense, and/or
- *     sell copies of the Software, and to permit persons to whom the
- *     Software is furnished to do so, subject to the following
- *     conditions:
- *
- *     The above copyright notice and this permission notice shall be
- *     included in all copies or substantial portions of the Software.
- *
- *     THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- *     EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
- *     OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- *     NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
- *     HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
- *     WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- *     FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
- *     OTHER DEALINGS IN THE SOFTWARE.
  */
 
 /dts-v1/;
                clock-frequency = <24576000>;
        };
 
-       regulators {
-               compatible = "simple-bus";
-               #address-cells = <1>;
-               #size-cells = <0>;
-
-               reg_3p3v: regulator@0 {
-                       compatible = "regulator-fixed";
-                       reg = <0>;
-                       regulator-name = "3P3V";
-                       regulator-min-microvolt = <3300000>;
-                       regulator-max-microvolt = <3300000>;
-                       regulator-always-on;
-               };
+       reg_3p3v: regulator {
+               compatible = "regulator-fixed";
+               regulator-name = "3P3V";
+               regulator-min-microvolt = <3300000>;
+               regulator-max-microvolt = <3300000>;
+               regulator-always-on;
        };
 
        sound {
index 4fce814..2e69d6e 100644 (file)
@@ -1,48 +1,6 @@
+// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
 /*
  * Copyright 2013-2014 Freescale Semiconductor, Inc.
- *
- * This file is dual-licensed: you can use it either under the terms
- * of the GPL or the X11 license, at your option. Note that this dual
- * licensing only applies to this file, and not this project as a
- * whole.
- *
- *  a) This file is free software; you can redistribute it and/or
- *     modify it under the terms of the GNU General Public License as
- *     published by the Free Software Foundation; either version 2 of
- *     the License, or (at your option) any later version.
- *
- *     This file is distributed in the hope that it will be useful,
- *     but WITHOUT ANY WARRANTY; without even the implied warranty of
- *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *     GNU General Public License for more details.
- *
- *     You should have received a copy of the GNU General Public
- *     License along with this file; if not, write to the Free
- *     Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
- *     MA 02110-1301 USA
- *
- * Or, alternatively,
- *
- *  b) Permission is hereby granted, free of charge, to any person
- *     obtaining a copy of this software and associated documentation
- *     files (the "Software"), to deal in the Software without
- *     restriction, including without limitation the rights to use,
- *     copy, modify, merge, publish, distribute, sublicense, and/or
- *     sell copies of the Software, and to permit persons to whom the
- *     Software is furnished to do so, subject to the following
- *     conditions:
- *
- *     The above copyright notice and this permission notice shall be
- *     included in all copies or substantial portions of the Software.
- *
- *     THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- *     EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
- *     OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- *     NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
- *     HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
- *     WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- *     FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
- *     OTHER DEALINGS IN THE SOFTWARE.
  */
 
 #include <dt-bindings/interrupt-controller/arm-gic.h>
@@ -51,7 +9,6 @@
 / {
        #address-cells = <2>;
        #size-cells = <2>;
-       compatible = "fsl,ls1021a";
        interrupt-parent = <&gic>;
 
        aliases {
@@ -90,7 +47,7 @@
                };
        };
 
-       memory {
+       memory@0 {
                device_type = "memory";
                reg = <0x0 0x0 0x0 0x0>;
        };
                        compatible = "fsl,ifc", "simple-bus";
                        reg = <0x0 0x1530000 0x0 0x10000>;
                        interrupts = <GIC_SPI 75 IRQ_TYPE_LEVEL_HIGH>;
+                       status = "disabled";
                };
 
                dcfg: dcfg@1ee0000 {
                        reg = <0x0 0x1f00000 0x0 0x10000>;
                        interrupts = <GIC_SPI 61 IRQ_TYPE_LEVEL_HIGH>;
                        fsl,tmu-range = <0xb0000 0x9002c 0x6004e 0x30066>;
-                       fsl,tmu-calibration = <0x00000000 0x00000020
-                                              0x00000001 0x00000024
-                                              0x00000002 0x0000002a
-                                              0x00000003 0x00000032
-                                              0x00000004 0x00000038
-                                              0x00000005 0x0000003e
-                                              0x00000006 0x00000043
-                                              0x00000007 0x0000004a
-                                              0x00000008 0x00000050
-                                              0x00000009 0x00000059
-                                              0x0000000a 0x0000005f
-                                              0x0000000b 0x00000066
-
-                                              0x00010000 0x00000023
-                                              0x00010001 0x0000002b
-                                              0x00010002 0x00000033
-                                              0x00010003 0x0000003a
-                                              0x00010004 0x00000042
-                                              0x00010005 0x0000004a
-                                              0x00010006 0x00000054
-                                              0x00010007 0x0000005c
-                                              0x00010008 0x00000065
-                                              0x00010009 0x0000006f
-
-                                              0x00020000 0x00000029
-                                              0x00020001 0x00000033
-                                              0x00020002 0x0000003d
-                                              0x00020003 0x00000048
-                                              0x00020004 0x00000054
-                                              0x00020005 0x00000060
-                                              0x00020006 0x0000006c
-
-                                              0x00030000 0x00000025
-                                              0x00030001 0x00000033
-                                              0x00030002 0x00000043
-                                              0x00030003 0x00000055>;
+                       fsl,tmu-calibration = <0x00000000 0x00000020>,
+                                             <0x00000001 0x00000024>,
+                                             <0x00000002 0x0000002a>,
+                                             <0x00000003 0x00000032>,
+                                             <0x00000004 0x00000038>,
+                                             <0x00000005 0x0000003e>,
+                                             <0x00000006 0x00000043>,
+                                             <0x00000007 0x0000004a>,
+                                             <0x00000008 0x00000050>,
+                                             <0x00000009 0x00000059>,
+                                             <0x0000000a 0x0000005f>,
+                                             <0x0000000b 0x00000066>,
+
+                                             <0x00010000 0x00000023>,
+                                             <0x00010001 0x0000002b>,
+                                             <0x00010002 0x00000033>,
+                                             <0x00010003 0x0000003a>,
+                                             <0x00010004 0x00000042>,
+                                             <0x00010005 0x0000004a>,
+                                             <0x00010006 0x00000054>,
+                                             <0x00010007 0x0000005c>,
+                                             <0x00010008 0x00000065>,
+                                             <0x00010009 0x0000006f>,
+
+                                             <0x00020000 0x00000029>,
+                                             <0x00020001 0x00000033>,
+                                             <0x00020002 0x0000003d>,
+                                             <0x00020003 0x00000048>,
+                                             <0x00020004 0x00000054>,
+                                             <0x00020005 0x00000060>,
+                                             <0x00020006 0x0000006c>,
+
+                                             <0x00030000 0x00000025>,
+                                             <0x00030001 0x00000033>,
+                                             <0x00030002 0x00000043>,
+                                             <0x00030003 0x00000055>;
                        #thermal-sensor-cells = <1>;
                };
 
-               thermal-zones {
-                       cpu_thermal: cpu-thermal {
-                               polling-delay-passive = <1000>;
-                               polling-delay = <5000>;
-
-                               thermal-sensors = <&tmu 0>;
-
-                               trips {
-                                       cpu_alert: cpu-alert {
-                                               temperature = <85000>;
-                                               hysteresis = <2000>;
-                                               type = "passive";
-                                       };
-                                       cpu_crit: cpu-crit {
-                                               temperature = <95000>;
-                                               hysteresis = <2000>;
-                                               type = "critical";
-                                       };
-                               };
-
-                               cooling-maps {
-                                       map0 {
-                                               trip = <&cpu_alert>;
-                                               cooling-device =
-                                                       <&cpu0 THERMAL_NO_LIMIT
-                                                       THERMAL_NO_LIMIT>,
-                                                       <&cpu1 THERMAL_NO_LIMIT
-                                                       THERMAL_NO_LIMIT>;
-                                       };
-                               };
-                       };
-               };
-
                dspi0: spi@2100000 {
                        compatible = "fsl,ls1021a-v1.0-dspi";
                        #address-cells = <1>;
                        #size-cells = <0>;
                        reg = <0x0 0x2180000 0x0 0x10000>;
                        interrupts = <GIC_SPI 88 IRQ_TYPE_LEVEL_HIGH>;
-                       clock-names = "i2c";
                        clocks = <&clockgen 4 1>;
-                       dma-names = "tx", "rx";
-                       dmas = <&edma0 1 39>, <&edma0 1 38>;
+                       dma-names = "rx", "tx";
+                       dmas = <&edma0 1 38>, <&edma0 1 39>;
                        status = "disabled";
                };
 
                        #size-cells = <0>;
                        reg = <0x0 0x2190000 0x0 0x10000>;
                        interrupts = <GIC_SPI 89 IRQ_TYPE_LEVEL_HIGH>;
-                       clock-names = "i2c";
                        clocks = <&clockgen 4 1>;
-                       dma-names = "tx", "rx";
-                       dmas = <&edma0 1 37>, <&edma0 1 36>;
+                       dma-names = "rx", "tx";
+                       dmas = <&edma0 1 36>, <&edma0 1 37>;
                        status = "disabled";
                };
 
                        #size-cells = <0>;
                        reg = <0x0 0x21a0000 0x0 0x10000>;
                        interrupts = <GIC_SPI 90 IRQ_TYPE_LEVEL_HIGH>;
-                       clock-names = "i2c";
                        clocks = <&clockgen 4 1>;
-                       dma-names = "tx", "rx";
-                       dmas = <&edma0 1 35>, <&edma0 1 34>;
+                       dma-names = "rx", "tx";
+                       dmas = <&edma0 1 34>, <&edma0 1 35>;
                        status = "disabled";
                };
 
 
                pcie@3400000 {
                        compatible = "fsl,ls1021a-pcie";
-                       reg = <0x00 0x03400000 0x0 0x00010000   /* controller registers */
-                              0x40 0x00000000 0x0 0x00002000>; /* configuration space */
+                       reg = <0x00 0x03400000 0x0 0x00010000>, /* controller registers */
+                             <0x40 0x00000000 0x0 0x00002000>; /* configuration space */
                        reg-names = "regs", "config";
                        interrupts = <GIC_SPI 177 IRQ_TYPE_LEVEL_HIGH>; /* controller interrupt */
                        fsl,pcie-scfg = <&scfg 0>;
                        device_type = "pci";
                        num-viewport = <6>;
                        bus-range = <0x0 0xff>;
-                       ranges = <0x81000000 0x0 0x00000000 0x40 0x00010000 0x0 0x00010000   /* downstream I/O */
-                                 0x82000000 0x0 0x40000000 0x40 0x40000000 0x0 0x40000000>; /* non-prefetchable memory */
+                       ranges = <0x81000000 0x0 0x00000000 0x40 0x00010000 0x0 0x00010000>, /* downstream I/O */
+                                <0x82000000 0x0 0x40000000 0x40 0x40000000 0x0 0x40000000>; /* non-prefetchable memory */
                        msi-parent = <&msi1>, <&msi2>;
                        #interrupt-cells = <1>;
                        interrupt-map-mask = <0 0 0 7>;
 
                pcie@3500000 {
                        compatible = "fsl,ls1021a-pcie";
-                       reg = <0x00 0x03500000 0x0 0x00010000   /* controller registers */
-                              0x48 0x00000000 0x0 0x00002000>; /* configuration space */
+                       reg = <0x00 0x03500000 0x0 0x00010000>, /* controller registers */
+                             <0x48 0x00000000 0x0 0x00002000>; /* configuration space */
                        reg-names = "regs", "config";
                        interrupts = <GIC_SPI 178 IRQ_TYPE_LEVEL_HIGH>;
                        fsl,pcie-scfg = <&scfg 1>;
                        device_type = "pci";
                        num-viewport = <6>;
                        bus-range = <0x0 0xff>;
-                       ranges = <0x81000000 0x0 0x00000000 0x48 0x00010000 0x0 0x00010000   /* downstream I/O */
-                                 0x82000000 0x0 0x40000000 0x48 0x40000000 0x0 0x40000000>; /* non-prefetchable memory */
+                       ranges = <0x81000000 0x0 0x00000000 0x48 0x00010000 0x0 0x00010000>, /* downstream I/O */
+                                <0x82000000 0x0 0x40000000 0x48 0x40000000 0x0 0x40000000>; /* non-prefetchable memory */
                        msi-parent = <&msi1>, <&msi2>;
                        #interrupt-cells = <1>;
                        interrupt-map-mask = <0 0 0 7>;
                                     <GIC_SPI 77 IRQ_TYPE_LEVEL_HIGH>;
                        interrupt-names = "qdma-error",
                                "qdma-queue0", "qdma-queue1";
+                       #dma-cells = <2>;
                        dma-channels = <8>;
                        block-number = <1>;
                        block-offset = <0x1000>;
                        compatible = "fsl,ls1021a-rcpm", "fsl,qoriq-rcpm-2.1+";
                        reg = <0x0 0x1ee2140 0x0 0x8>;
                        #fsl,rcpm-wakeup-cells = <2>;
+                       #power-domain-cells = <0>;
                };
 
                ftm_alarm0: timer0@29d0000 {
                        big-endian;
                };
        };
+
+       thermal-zones {
+               cpu_thermal: cpu-thermal {
+                       polling-delay-passive = <1000>;
+                       polling-delay = <5000>;
+
+                       thermal-sensors = <&tmu 0>;
+
+                       trips {
+                               cpu_alert: cpu-alert {
+                                       temperature = <85000>;
+                                       hysteresis = <2000>;
+                                       type = "passive";
+                               };
+                               cpu_crit: cpu-crit {
+                                       temperature = <95000>;
+                                       hysteresis = <2000>;
+                                       type = "critical";
+                               };
+                       };
+
+                       cooling-maps {
+                               map0 {
+                                       trip = <&cpu_alert>;
+                                       cooling-device =
+                                               <&cpu0 THERMAL_NO_LIMIT
+                                               THERMAL_NO_LIMIT>,
+                                               <&cpu1 THERMAL_NO_LIMIT
+                                               THERMAL_NO_LIMIT>;
+                               };
+                       };
+               };
+       };
 };
index 37f5023..b99577d 100644 (file)
                        compatible = "syscon", "simple-mfd";
                        reg = <0x8000 0x10>;
 
-                       led0 {
+                       ranges = <0x0 0x8000 0x10>;
+                       #address-cells = <1>;
+                       #size-cells = <1>;
+
+                       led@0,0 {
                                compatible = "register-bit-led";
+                               reg = <0x00 0x04>;
                                offset = <0x0>;
                                mask = <0x01>;
                                label = "userled:0";
                                default-state = "on";
                        };
 
-                       led1 {
+                       led@0,1 {
                                compatible = "register-bit-led";
+                               reg = <0x00 0x04>;
                                offset = <0x0>;
                                mask = <0x02>;
                                label = "userled:1";
index 2273295..89ebfe4 100644 (file)
@@ -39,6 +39,7 @@
                 * u-boot is broken
                 */
                clock-frequency = <6000000>;
+               arm,cpu-registers-not-fw-configured;
        };
 
        pmu: pmu {
                                mask = <0x79>;
                        };
 
+                       rtc@2400 {
+                               compatible = "mstar,msc313-rtc";
+                               reg = <0x2400 0x40>;
+                               clocks = <&xtal_div2>;
+                               interrupts-extended = <&intc_irq GIC_SPI 44 IRQ_TYPE_LEVEL_HIGH>;
+                       };
+
                        watchdog@6000 {
                                compatible = "mstar,msc313e-wdt";
                                reg = <0x6000 0x1f>;
                                clocks = <&xtal_div2>;
                        };
 
+
                        intc_fiq: interrupt-controller@201310 {
                                compatible = "mstar,mst-intc";
                                reg = <0x201310 0x40>;
index a7d62db..f484836 100644 (file)
                status = "disabled";
        };
 
+       usb0: usb@11200000 {
+               compatible = "mediatek,mt7623-musb",
+                            "mediatek,mtk-musb";
+               reg = <0 0x11200000 0 0x1000>;
+               interrupts = <GIC_SPI 32 IRQ_TYPE_LEVEL_LOW>;
+               interrupt-names = "mc";
+               phys = <&u2port2 PHY_TYPE_USB2>;
+               dr_mode = "otg";
+               clocks = <&pericfg CLK_PERI_USB0>,
+                        <&pericfg CLK_PERI_USB0_MCU>,
+                        <&pericfg CLK_PERI_USB_SLV>;
+               clock-names = "main","mcu","univpll";
+               power-domains = <&scpsys MT2701_POWER_DOMAIN_IFR_MSC>;
+               status = "disabled";
+       };
+
+       u2phy1: t-phy@11210000 {
+               compatible = "mediatek,mt7623-tphy",
+                            "mediatek,generic-tphy-v1";
+               reg = <0 0x11210000 0 0x0800>;
+               #address-cells = <2>;
+               #size-cells = <2>;
+               ranges;
+               status = "disabled";
+
+               u2port2: usb-phy@11210800 {
+                       reg = <0 0x11210800 0 0x0100>;
+                       clocks = <&topckgen CLK_TOP_USB_PHY48M>;
+                       clock-names = "ref";
+                       #phy-cells = <1>;
+               };
+       };
+
        audsys: clock-controller@11220000 {
                compatible = "mediatek,mt7623-audsys",
                             "mediatek,mt2701-audsys",
index 0735a1f..d304b62 100644 (file)
        clock-names = "ethif";
 };
 
+&usb0 {
+       power-domains = <&scpsys MT7623A_POWER_DOMAIN_IFR_MSC>;
+};
+
 &usb1 {
        power-domains = <&scpsys MT7623A_POWER_DOMAIN_HIF>;
 };
index e96aa0e..027c1b0 100644 (file)
        status = "okay";
 };
 
+&pio {
+       musb_pins: musb {
+               pins-musb {
+                       pinmux = <MT7623_PIN_237_EXT_SDIO2_FUNC_DRV_VBUS>;
+               };
+       };
+};
+
 &pwm {
        pinctrl-names = "default";
        pinctrl-0 = <&pwm_pins_a>;
        status = "okay";
 };
 
+&usb0 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&musb_pins>;
+       status = "okay";
+       usb-role-switch;
+
+       connector {
+               compatible = "gpio-usb-b-connector", "usb-b-connector";
+               type = "micro";
+               id-gpios = <&pio 44 GPIO_ACTIVE_HIGH>;
+       };
+};
+
 &usb1 {
        vusb33-supply = <&reg_3p3v>;
        vbus-supply = <&reg_5v>;
        status = "okay";
 };
 
+&u2phy1 {
+       status = "okay";
+};
+
 &u3phy1 {
        status = "okay";
 };
index 9980c10..eb536cb 100644 (file)
        };
 };
 
-&pcie {
+&pcie1 {
        pinctrl-names = "default";
        pinctrl-0 = <&pcie_pins>;
+       status = "okay";
 };
 
 &pciephy1 {
index 874043f..46fc236 100644 (file)
                        #reset-cells = <1>;
                };
 
-               pcie: pcie@1a140000 {
+               pciecfg: pciecfg@1a140000 {
+                       compatible = "mediatek,generic-pciecfg", "syscon";
+                       reg = <0x1a140000 0x1000>;
+               };
+
+               pcie1: pcie@1a145000 {
                        compatible = "mediatek,mt7629-pcie";
                        device_type = "pci";
-                       reg = <0x1a140000 0x1000>,
-                             <0x1a145000 0x1000>;
-                       reg-names = "subsys","port1";
+                       reg = <0x1a145000 0x1000>;
+                       reg-names = "port1";
+                       linux,pci-domain = <1>;
                        #address-cells = <3>;
                        #size-cells = <2>;
-                       interrupts = <GIC_SPI 176 IRQ_TYPE_LEVEL_LOW>,
-                                    <GIC_SPI 229 IRQ_TYPE_LEVEL_LOW>;
+                       interrupts = <GIC_SPI 229 IRQ_TYPE_LEVEL_LOW>;
+                       interrupt-names = "pcie_irq";
                        clocks = <&pciesys CLK_PCIE_P1_MAC_EN>,
                                 <&pciesys CLK_PCIE_P0_AHB_EN>,
                                 <&pciesys CLK_PCIE_P1_AUX_EN>,
                        power-domains = <&scpsys MT7622_POWER_DOMAIN_HIF0>;
                        bus-range = <0x00 0xff>;
                        ranges = <0x82000000 0 0x20000000 0x20000000 0 0x10000000>;
+                       status = "disabled";
 
-                       pcie1: pcie@1,0 {
-                               device_type = "pci";
-                               reg = <0x0800 0 0 0 0>;
-                               #address-cells = <3>;
-                               #size-cells = <2>;
+                       #interrupt-cells = <1>;
+                       interrupt-map-mask = <0 0 0 7>;
+                       interrupt-map = <0 0 0 1 &pcie_intc1 0>,
+                                       <0 0 0 2 &pcie_intc1 1>,
+                                       <0 0 0 3 &pcie_intc1 2>,
+                                       <0 0 0 4 &pcie_intc1 3>;
+                       pcie_intc1: interrupt-controller {
+                               interrupt-controller;
+                               #address-cells = <0>;
                                #interrupt-cells = <1>;
-                               ranges;
-                               num-lanes = <1>;
-                               interrupt-map-mask = <0 0 0 7>;
-                               interrupt-map = <0 0 0 1 &pcie_intc1 0>,
-                                               <0 0 0 2 &pcie_intc1 1>,
-                                               <0 0 0 3 &pcie_intc1 2>,
-                                               <0 0 0 4 &pcie_intc1 3>;
-
-                               pcie_intc1: interrupt-controller {
-                                       interrupt-controller;
-                                       #address-cells = <0>;
-                                       #interrupt-cells = <1>;
-                               };
                        };
                };
 
index ded7e8f..ce6c235 100644 (file)
@@ -25,8 +25,8 @@
                compatible = "smsc,lan9221", "smsc,lan9115";
                bank-width = <2>;
                gpmc,device-width = <1>;
-               gpmc,cycle2cycle-samecsen = <1>;
-               gpmc,cycle2cycle-diffcsen = <1>;
+               gpmc,cycle2cycle-samecsen;
+               gpmc,cycle2cycle-diffcsen;
                gpmc,cs-on-ns = <5>;
                gpmc,cs-rd-off-ns = <150>;
                gpmc,cs-wr-off-ns = <150>;
index 7f6aefd..e7534fe 100644 (file)
@@ -29,7 +29,7 @@
                compatible = "smsc,lan9221","smsc,lan9115";
                bank-width = <2>;
 
-               gpmc,mux-add-data;
+               gpmc,mux-add-data = <0>;
                gpmc,cs-on-ns = <0>;
                gpmc,cs-rd-off-ns = <42>;
                gpmc,cs-wr-off-ns = <36>;
index d4ad9e5..1e96c86 100644 (file)
@@ -27,8 +27,8 @@
                gpmc,mux-add-data = <0>;
                gpmc,device-width = <1>;
                gpmc,wait-pin = <1>;
-               gpmc,cycle2cycle-samecsen = <1>;
-               gpmc,cycle2cycle-diffcsen = <1>;
+               gpmc,cycle2cycle-samecsen;
+               gpmc,cycle2cycle-diffcsen;
                gpmc,cs-on-ns = <5>;
                gpmc,cs-rd-off-ns = <155>;
                gpmc,cs-wr-off-ns = <155>;
index 7d27e90..2070706 100644 (file)
@@ -43,8 +43,8 @@
                gpmc,sync-clk-ps = <0>;
                gpmc,mux-add-data = <2>;
                gpmc,device-width = <1>;
-               gpmc,cycle2cycle-samecsen = <1>;
-               gpmc,cycle2cycle-diffcsen = <1>;
+               gpmc,cycle2cycle-samecsen;
+               gpmc,cycle2cycle-diffcsen;
                gpmc,cs-on-ns = <6>;
                gpmc,cs-rd-off-ns = <187>;
                gpmc,cs-wr-off-ns = <187>;
index 1ed8378..a9069cc 100644 (file)
@@ -10,7 +10,7 @@
 
 #include <dt-bindings/thermal/thermal.h>
 
-cpu_thermal: cpu_thermal {
+cpu_thermal: cpu-thermal {
        polling-delay-passive = <250>; /* milliseconds */
        polling-delay = <1000>; /* milliseconds */
        coefficients = <0 20000>;
index 2c19d6e..5e55198 100644 (file)
                gpmc,mux-add-data = <0>;
                gpmc,device-width = <1>;
                gpmc,wait-pin = <0>;
-               gpmc,cycle2cycle-samecsen = <1>;
-               gpmc,cycle2cycle-diffcsen = <1>;
+               gpmc,cycle2cycle-samecsen;
+               gpmc,cycle2cycle-diffcsen;
 
                gpmc,cs-on-ns = <6>;
                gpmc,cs-rd-off-ns = <180>;
index 938cc69..7e3d814 100644 (file)
                #sound-dai-cells = <0>;
        };
 
-       spi_lcd: spi_lcd {
+       spi_lcd: spi {
                compatible = "spi-gpio";
                #address-cells = <0x1>;
                #size-cells = <0x0>;
                pinctrl-names = "default";
                pinctrl-0 = <&spi_gpio_pins>;
 
-               gpio-sck = <&gpio1 12 GPIO_ACTIVE_HIGH>;
-               gpio-miso = <&gpio1 18 GPIO_ACTIVE_HIGH>;
-               gpio-mosi = <&gpio1 20 GPIO_ACTIVE_HIGH>;
+               sck-gpios = <&gpio1 12 GPIO_ACTIVE_HIGH>;
+               miso-gpios = <&gpio1 18 GPIO_ACTIVE_HIGH>;
+               mosi-gpios = <&gpio1 20 GPIO_ACTIVE_HIGH>;
                cs-gpios = <&gpio1 19 GPIO_ACTIVE_LOW>;
                num-chipselects = <1>;
 
                pinctrl-0 = <&bmp085_pins>;
                interrupt-parent = <&gpio4>;
                interrupts = <17 IRQ_TYPE_EDGE_RISING>; /* GPIO_113 */
+               vdda-supply = <&vio>;
+               vddd-supply = <&vio>;
        };
 
        /* accelerometer */
                compatible = "bosch,bma180";
                reg = <0x41>;
                pinctrl-names = "default";
-               pintcrl-0 = <&bma180_pins>;
+               pinctrl-0 = <&bma180_pins>;
                interrupt-parent = <&gpio4>;
                interrupts = <19 IRQ_TYPE_LEVEL_HIGH>; /* GPIO_115 */
        };
                gpio-controller;
                #gpio-cells = <2>;
 
-               gta04_led0: red_aux@0 {
+               gta04_led0: led@0 {
                        label = "gta04:red:aux";
                        reg = <0x0>;
                };
 
-               gta04_led1: green_aux@1 {
+               gta04_led1: led@1 {
                        label = "gta04:green:aux";
                        reg = <0x1>;
                };
 
-               gta04_led3: red_power@3 {
+               gta04_led3: led@3 {
                        label = "gta04:red:power";
                        reg = <0x3>;
                        linux,default-trigger = "default-on";
                };
 
-               gta04_led4: green_power@4 {
+               gta04_led4: led@4 {
                        label = "gta04:green:power";
                        reg = <0x4>;
                };
 
-               wifi_reset: wifi_reset@6 { /* reference as <&tca_gpios 0 0> since it is currently the only GPIO */
+               wifi_reset: led@6 {
+                       /* reference as <&tca_gpios 0 0> since it is currently the only GPIO */
                        reg = <0x6>;
                        compatible = "gpio";
                };
index b4c4ca7..0b5bd73 100644 (file)
        bme280@76 {
                compatible = "bosch,bme280";
                reg = <0x76>;
+               vdda-supply = <&vio>;
+               vddd-supply = <&vio>;
        };
 };
index e5da3bc..218a10c 100644 (file)
@@ -22,7 +22,7 @@
                compatible = "smsc,lan9221","smsc,lan9115";
                bank-width = <2>;
 
-               gpmc,mux-add-data;
+               gpmc,mux-add-data = <0>;
                gpmc,cs-on-ns = <0>;
                gpmc,cs-rd-off-ns = <42>;
                gpmc,cs-wr-off-ns = <36>;
index fb9842f..5ec0893 100644 (file)
                reg = <4 0 0xff>;
                bank-width = <2>;
                gpmc,device-width = <1>;
-               gpmc,cycle2cycle-samecsen = <1>;
-               gpmc,cycle2cycle-diffcsen = <1>;
+               gpmc,cycle2cycle-samecsen;
+               gpmc,cycle2cycle-diffcsen;
                gpmc,cs-on-ns = <5>;
                gpmc,cs-rd-off-ns = <150>;
                gpmc,cs-wr-off-ns = <150>;
diff --git a/arch/arm/boot/dts/qcom-apq8026-lg-lenok.dts b/arch/arm/boot/dts/qcom-apq8026-lg-lenok.dts
new file mode 100644 (file)
index 0000000..f350c4e
--- /dev/null
@@ -0,0 +1,237 @@
+// SPDX-License-Identifier: BSD-3-Clause
+/*
+ * Copyright (c) 2021, Luca Weiss <luca@z3ntu.xyz>
+ */
+
+/dts-v1/;
+
+#include "qcom-msm8226.dtsi"
+#include "qcom-pm8226.dtsi"
+
+/ {
+       model = "LG G Watch R";
+       compatible = "lg,lenok", "qcom,apq8026";
+       qcom,board-id = <132 0x0a>;
+       qcom,msm-id = <199 0x20000>;
+
+       aliases {
+               serial0 = &blsp1_uart3;
+       };
+
+       chosen {
+               stdout-path = "serial0:115200n8";
+       };
+};
+
+&blsp1_i2c5 {
+       status = "okay";
+       clock-frequency = <384000>;
+
+       touchscreen@20 {
+               compatible = "syna,rmi4-i2c";
+               reg = <0x20>;
+
+               interrupts-extended = <&tlmm 17 IRQ_TYPE_EDGE_FALLING>;
+               vdd-supply = <&pm8226_l15>;
+               vio-supply = <&pm8226_l22>;
+
+               pinctrl-names = "default";
+               pinctrl-0 = <&touch_pins>;
+
+               #address-cells = <1>;
+               #size-cells = <0>;
+
+               rmi4-f01@1 {
+                       reg = <0x1>;
+                       syna,nosleep-mode = <1>;
+               };
+
+               rmi4-f12@12 {
+                       reg = <0x12>;
+                       syna,sensor-type = <1>;
+               };
+       };
+};
+
+&blsp1_uart3 {
+       status = "okay";
+};
+
+&rpm_requests {
+       pm8226-regulators {
+               compatible = "qcom,rpm-pm8226-regulators";
+
+               pm8226_s1: s1 {
+                       regulator-min-microvolt = <500000>;
+                       regulator-max-microvolt = <1275000>;
+               };
+               pm8226_s3: s3 {
+                       regulator-min-microvolt = <1200000>;
+                       regulator-max-microvolt = <1350000>;
+               };
+               pm8226_s4: s4 {
+                       regulator-min-microvolt = <1800000>;
+                       regulator-max-microvolt = <2200000>;
+               };
+               pm8226_s5: s5 {
+                       regulator-min-microvolt = <1150000>;
+                       regulator-max-microvolt = <1150000>;
+               };
+
+               pm8226_l1: l1 {
+                       regulator-min-microvolt = <1225000>;
+                       regulator-max-microvolt = <1225000>;
+               };
+               pm8226_l2: l2 {
+                       regulator-min-microvolt = <1200000>;
+                       regulator-max-microvolt = <1200000>;
+               };
+               pm8226_l3: l3 {
+                       regulator-min-microvolt = <750000>;
+                       regulator-max-microvolt = <1337500>;
+               };
+               pm8226_l4: l4 {
+                       regulator-min-microvolt = <1200000>;
+                       regulator-max-microvolt = <1200000>;
+               };
+               pm8226_l5: l5 {
+                       regulator-min-microvolt = <1200000>;
+                       regulator-max-microvolt = <1200000>;
+               };
+               pm8226_l6: l6 {
+                       regulator-min-microvolt = <1800000>;
+                       regulator-max-microvolt = <1800000>;
+               };
+               pm8226_l7: l7 {
+                       regulator-min-microvolt = <1850000>;
+                       regulator-max-microvolt = <1850000>;
+               };
+               pm8226_l8: l8 {
+                       regulator-min-microvolt = <1800000>;
+                       regulator-max-microvolt = <1800000>;
+               };
+               pm8226_l9: l9 {
+                       regulator-min-microvolt = <2050000>;
+                       regulator-max-microvolt = <2050000>;
+               };
+               pm8226_l10: l10 {
+                       regulator-min-microvolt = <1800000>;
+                       regulator-max-microvolt = <1800000>;
+               };
+               pm8226_l12: l12 {
+                       regulator-min-microvolt = <1800000>;
+                       regulator-max-microvolt = <1800000>;
+               };
+               pm8226_l14: l14 {
+                       regulator-min-microvolt = <2750000>;
+                       regulator-max-microvolt = <2750000>;
+               };
+               pm8226_l15: l15 {
+                       regulator-min-microvolt = <3300000>;
+                       regulator-max-microvolt = <3300000>;
+               };
+               pm8226_l16: l16 {
+                       regulator-min-microvolt = <3000000>;
+                       regulator-max-microvolt = <3350000>;
+               };
+               pm8226_l17: l17 {
+                       regulator-min-microvolt = <2950000>;
+                       regulator-max-microvolt = <2950000>;
+               };
+               pm8226_l18: l18 {
+                       regulator-min-microvolt = <3000000>;
+                       regulator-max-microvolt = <3300000>;
+               };
+               pm8226_l19: l19 {
+                       regulator-min-microvolt = <3000000>;
+                       regulator-max-microvolt = <3000000>;
+               };
+               pm8226_l20: l20 {
+                       regulator-min-microvolt = <3075000>;
+                       regulator-max-microvolt = <3075000>;
+               };
+               pm8226_l21: l21 {
+                       regulator-min-microvolt = <1800000>;
+                       regulator-max-microvolt = <2950000>;
+               };
+               pm8226_l22: l22 {
+                       regulator-min-microvolt = <1800000>;
+                       regulator-max-microvolt = <1800000>;
+               };
+               pm8226_l23: l23 {
+                       regulator-min-microvolt = <1800000>;
+                       regulator-max-microvolt = <2950000>;
+               };
+               pm8226_l24: l24 {
+                       regulator-min-microvolt = <1300000>;
+                       regulator-max-microvolt = <1350000>;
+               };
+               pm8226_l25: l25 {
+                       regulator-min-microvolt = <1775000>;
+                       regulator-max-microvolt = <2125000>;
+               };
+               pm8226_l26: l26 {
+                       regulator-min-microvolt = <1225000>;
+                       regulator-max-microvolt = <1225000>;
+               };
+               pm8226_l27: l27 {
+                       regulator-min-microvolt = <2050000>;
+                       regulator-max-microvolt = <2050000>;
+               };
+               pm8226_l28: l28 {
+                       regulator-min-microvolt = <2700000>;
+                       regulator-max-microvolt = <3000000>;
+               };
+
+               pm8226_lvs1: lvs1 {};
+       };
+};
+
+&sdhc_1 {
+       status = "okay";
+
+       vmmc-supply = <&pm8226_l17>;
+       vqmmc-supply = <&pm8226_l6>;
+
+       bus-width = <8>;
+       non-removable;
+
+       pinctrl-names = "default";
+       pinctrl-0 = <&sdhc1_pin_a>;
+};
+
+&tlmm {
+       sdhc1_pin_a: sdhc1-pin-active {
+               clk {
+                       pins = "sdc1_clk";
+                       drive-strength = <10>;
+                       bias-disable;
+               };
+
+               cmd-data {
+                       pins = "sdc1_cmd", "sdc1_data";
+                       drive-strength = <10>;
+                       bias-pull-up;
+               };
+       };
+
+       touch_pins: touch {
+               irq {
+                       pins = "gpio17";
+                       function = "gpio";
+
+                       drive-strength = <8>;
+                       bias-pull-down;
+                       input-enable;
+               };
+
+               reset {
+                       pins = "gpio16";
+                       function = "gpio";
+
+                       drive-strength = <8>;
+                       bias-disable;
+                       output-high;
+               };
+       };
+};
index e1189e9..d664ccd 100644 (file)
                                };
 
                                mpps@50 {
-                                       dragon_cm3605_mpps: cm3605-mpps {
-                                               pinconf {
+                                       dragon_cm3605_mpps: cm3605-mpps-state {
+                                               mpp5 {
                                                        pins = "mpp5";
                                                        function = "analog";
                                                        input-enable;
                };
                amba {
                        /* Internal 3.69 GiB eMMC */
-                       sdcc@12400000 {
+                       mmc@12400000 {
                                status = "okay";
                                pinctrl-names = "default";
                                pinctrl-0 = <&dragon_sdcc1_pins>;
                        };
 
                        /* External micro SD card, directly connected, pulled up to 2.85 V */
-                       sdcc@12180000 {
+                       mmc@12180000 {
                                status = "okay";
                                /* Enable SSBI GPIO 22 as input, use for card detect */
                                pinctrl-names = "default";
                         * Second external micro SD card, using two TXB104RGYR levelshifters
                         * to lift from 1.8 V to 2.85 V
                         */
-                       sdcc@12200000 {
+                       mmc@12200000 {
                                status = "okay";
                                /* Enable SSBI GPIO 26 as input, use for card detect */
                                pinctrl-names = "default";
index 3bce47d..9a83533 100644 (file)
 
                amba {
                        /* eMMC */
-                       sdcc@12400000 {
+                       mmc@12400000 {
                                status = "okay";
                                vmmc-supply = <&pm8921_l5>;
                                vqmmc-supply = <&pm8921_s4>;
index 0148148..e068a8d 100644 (file)
 
                amba {
                        /* eMMC */
-                       sdcc1: sdcc@12400000 {
+                       sdcc1: mmc@12400000 {
                                status = "okay";
                                vmmc-supply = <&pm8921_l5>;
                                vqmmc-supply = <&pm8921_s4>;
                        };
 
                        /* External micro SD card */
-                       sdcc3: sdcc@12180000 {
+                       sdcc3: mmc@12180000 {
                                status = "okay";
                                vmmc-supply = <&v3p3_fixed>;
                                pinctrl-names   = "default";
                                cd-gpios        = <&tlmm_pinmux 26 GPIO_ACTIVE_LOW>;
                        };
                        /* WLAN */
-                       sdcc4: sdcc@121c0000 {
+                       sdcc4: mmc@121c0000 {
                                status = "okay";
                                vmmc-supply = <&v3p3_fixed>;
                                vqmmc-supply = <&v3p3_fixed>;
index d0a17b5..2638b38 100644 (file)
 
                amba {
                        /* eMMC */
-                       sdcc1: sdcc@12400000 {
+                       sdcc1: mmc@12400000 {
                                status = "okay";
                                vmmc-supply = <&pm8921_l5>;
                                vqmmc-supply = <&pm8921_s4>;
                        };
 
                        /* External micro SD card */
-                       sdcc3: sdcc@12180000 {
+                       sdcc3: mmc@12180000 {
                                status = "okay";
                                vmmc-supply = <&pm8921_l6>;
                                pinctrl-names   = "default";
                                cd-gpios        = <&tlmm_pinmux 26 GPIO_ACTIVE_LOW>;
                        };
                        /* WLAN */
-                       sdcc4: sdcc@121c0000 {
+                       sdcc4: mmc@121c0000 {
                                status = "okay";
                                vmmc-supply = <&ext_3p3v>;
                                vqmmc-supply = <&pm8921_lvs1>;
index 72e47bd..f8c97ef 100644 (file)
                };
 
                amba {
-                       sdcc1: sdcc@12400000 {
+                       sdcc1: mmc@12400000 {
                                status = "okay";
 
                                vmmc-supply = <&pm8921_l5>;
                                vqmmc-supply = <&pm8921_s4>;
                        };
 
-                       sdcc3: sdcc@12180000 {
+                       sdcc3: mmc@12180000 {
                                status = "okay";
 
                                vmmc-supply = <&pm8921_l6>;
index d1c1c6a..4d562c9 100644 (file)
                };
        };
 
-       memory {
+       memory@0 {
                device_type = "memory";
                reg = <0x0 0x0>;
        };
 
        thermal-zones {
-               cpu-thermal0 {
+               cpu0-thermal {
                        polling-delay-passive = <250>;
                        polling-delay = <1000>;
 
                        };
                };
 
-               cpu-thermal1 {
+               cpu1-thermal {
                        polling-delay-passive = <250>;
                        polling-delay = <1000>;
 
                        };
                };
 
-               cpu-thermal2 {
+               cpu2-thermal {
                        polling-delay-passive = <250>;
                        polling-delay = <1000>;
 
                        };
                };
 
-               cpu-thermal3 {
+               cpu3-thermal {
                        polling-delay-passive = <250>;
                        polling-delay = <1000>;
 
                                pm8821_mpps: mpps@50 {
                                        compatible = "qcom,pm8821-mpp", "qcom,ssbi-mpp";
                                        reg = <0x50>;
-                                       interrupts = <24 IRQ_TYPE_NONE>,
-                                                    <25 IRQ_TYPE_NONE>,
-                                                    <26 IRQ_TYPE_NONE>,
-                                                    <27 IRQ_TYPE_NONE>;
+                                       interrupt-controller;
+                                       #interrupt-cells = <2>;
                                        gpio-controller;
                                        #gpio-cells = <2>;
+                                       gpio-ranges = <&pm8821_mpps 0 0 4>;
                                };
                        };
                };
                                        reg = <0x50>;
                                        gpio-controller;
                                        #gpio-cells = <2>;
-                                       interrupts =
-                                       <128 IRQ_TYPE_NONE>,
-                                       <129 IRQ_TYPE_NONE>,
-                                       <130 IRQ_TYPE_NONE>,
-                                       <131 IRQ_TYPE_NONE>,
-                                       <132 IRQ_TYPE_NONE>,
-                                       <133 IRQ_TYPE_NONE>,
-                                       <134 IRQ_TYPE_NONE>,
-                                       <135 IRQ_TYPE_NONE>,
-                                       <136 IRQ_TYPE_NONE>,
-                                       <137 IRQ_TYPE_NONE>,
-                                       <138 IRQ_TYPE_NONE>,
-                                       <139 IRQ_TYPE_NONE>;
+                                       gpio-ranges = <&pm8921_mpps 0 0 12>;
+                                       interrupt-controller;
+                                       #interrupt-cells = <2>;
                                };
 
                                rtc@11d {
                        #address-cells = <1>;
                        #size-cells = <1>;
                        ranges;
-                       sdcc1: sdcc@12400000 {
+                       sdcc1: mmc@12400000 {
                                status          = "disabled";
                                compatible      = "arm,pl18x", "arm,primecell";
                                pinctrl-names   = "default";
                                dma-names = "tx", "rx";
                        };
 
-                       sdcc3: sdcc@12180000 {
+                       sdcc3: mmc@12180000 {
                                compatible      = "arm,pl18x", "arm,primecell";
                                arm,primecell-periphid = <0x00051180>;
                                status          = "disabled";
                                dma-names = "tx", "rx";
                        };
 
-                       sdcc4: sdcc@121c0000 {
+                       sdcc4: mmc@121c0000 {
                                compatible      = "arm,pl18x", "arm,primecell";
                                arm,primecell-periphid = <0x00051180>;
                                status          = "disabled";
                                  &gfx3d1 30
                                  &gfx3d1 31>;
 
-                       qcom,gpu-pwrlevels {
-                               compatible = "qcom,gpu-pwrlevels";
-                               qcom,gpu-pwrlevel@0 {
-                                       qcom,gpu-freq = <450000000>;
+                       operating-points-v2 = <&gpu_opp_table>;
+
+                       gpu_opp_table: opp-table {
+                               compatible = "operating-points-v2";
+
+                               opp-320000000 {
+                                       opp-hz = /bits/ 64 <450000000>;
                                };
-                               qcom,gpu-pwrlevel@1 {
-                                       qcom,gpu-freq = <27000000>;
+
+                               opp-27000000 {
+                                       opp-hz = /bits/ 64 <27000000>;
                                };
                        };
                };
                        clocks = <&mmcc HDMI_APP_CLK>,
                                 <&mmcc HDMI_M_AHB_CLK>,
                                 <&mmcc HDMI_S_AHB_CLK>;
-                       clock-names = "core_clk",
-                                     "master_iface_clk",
-                                     "slave_iface_clk";
+                       clock-names = "core",
+                                     "master_iface",
+                                     "slave_iface";
 
                        phys = <&hdmi_phy>;
                        phy-names = "hdmi-phy";
                                    "hdmi_pll";
 
                        clocks = <&mmcc HDMI_S_AHB_CLK>;
-                       clock-names = "slave_iface_clk";
+                       clock-names = "slave_iface";
                        #phy-cells = <0>;
                };
 
index bf6a035..52240fc 100644 (file)
        };
 
        thermal-zones {
-               cpu-thermal0 {
+               cpu0-thermal {
                        polling-delay-passive = <250>;
                        polling-delay = <1000>;
 
                        };
                };
 
-               cpu-thermal1 {
+               cpu1-thermal {
                        polling-delay-passive = <250>;
                        polling-delay = <1000>;
 
                        };
                };
 
-               cpu-thermal2 {
+               cpu2-thermal {
                        polling-delay-passive = <250>;
                        polling-delay = <1000>;
 
                        };
                };
 
-               cpu-thermal3 {
+               cpu3-thermal {
                        polling-delay-passive = <250>;
                        polling-delay = <1000>;
 
index 0d92f1b..ddaa273 100644 (file)
@@ -18,5 +18,5 @@
 
 / {
        model = "Qualcomm Technologies, Inc. IPQ40xx/AP-DK01.1-C1";
-
+       compatible = "qcom,ipq4019-ap-dk01.1-c1", "qcom,ipq4019";
 };
index c93b216..0c10d9e 100644 (file)
@@ -18,7 +18,6 @@
 
 / {
        model = "Qualcomm Technologies, Inc. IPQ4019/AP-DK01.1";
-       compatible = "qcom,ipq4019";
 
        aliases {
                serial0 = &blsp1_uart1;
index b0f476f..a7b1201 100644 (file)
@@ -5,7 +5,7 @@
 
 / {
        model = "Qualcomm Technologies, Inc. IPQ4019/AP-DK04.1-C1";
-       compatible = "qcom,ipq4019-dk04.1-c1";
+       compatible = "qcom,ipq4019-dk04.1-c1", "qcom,ipq4019";
 
        soc {
                dma@7984000 {
index 2d1c4c6..7765247 100644 (file)
@@ -5,5 +5,5 @@
 
 / {
        model = "Qualcomm Technologies, Inc. IPQ4019/AP-DK04.1-C3";
-       compatible = "qcom,ipq4019-ap-dk04.1-c3";
+       compatible = "qcom,ipq4019-ap-dk04.1-c3", "qcom,ipq4019";
 };
index f343a22..06f9f2c 100644 (file)
@@ -5,7 +5,7 @@
 
 / {
        model = "Qualcomm Technologies, Inc. IPQ4019/AP-DK07.1-C1";
-       compatible = "qcom,ipq4019-ap-dk07.1-c1";
+       compatible = "qcom,ipq4019-ap-dk07.1-c1", "qcom,ipq4019";
 
        soc {
                pci@40000000 {
index 582acb6..bd3553d 100644 (file)
@@ -5,7 +5,7 @@
 
 / {
        model = "Qualcomm Technologies, Inc. IPQ4019/AP-DK07.1-C2";
-       compatible = "qcom,ipq4019-ap-dk07.1-c2";
+       compatible = "qcom,ipq4019-ap-dk07.1-c2", "qcom,ipq4019";
 
        soc {
                pinctrl@1000000 {
index e5b9b9c..b63d01d 100644 (file)
@@ -3,7 +3,7 @@
 
 / {
        model = "Qualcomm Technologies, Inc. IPQ8064/AP-148";
-       compatible = "qcom,ipq8064-ap148";
+       compatible = "qcom,ipq8064-ap148", "qcom,ipq8064";
 
        soc {
                pinmux@800000 {
index f7ea2e5..596d129 100644 (file)
                stdout-path = "serial0:115200n8";
        };
 
-       memory@0 {
+       memory@42000000 {
                reg = <0x42000000 0x3e000000>;
                device_type = "memory";
        };
 
-       mdio0: mdio@0 {
+       mdio0: mdio-0 {
                status = "okay";
                compatible = "virtual,mdio-gpio";
                gpios = <&qcom_pinmux 1 GPIO_ACTIVE_HIGH>,
@@ -91,7 +91,7 @@
                };
        };
 
-       mdio1: mdio@1 {
+       mdio1: mdio-1 {
                status = "okay";
                compatible = "virtual,mdio-gpio";
                gpios = <&qcom_pinmux 11 GPIO_ACTIVE_HIGH>,
 
                                cs-gpios = <&qcom_pinmux 20 GPIO_ACTIVE_HIGH>;
 
-                               norflash: s25fl016k@0 {
+                               norflash: flash@0 {
                                        compatible = "jedec,spi-nor";
                                        #address-cells = <1>;
                                        #size-cells = <1>;
index 4139d38..1148131 100644 (file)
@@ -49,7 +49,7 @@
        };
 
        thermal-zones {
-               tsens_tz_sensor0 {
+               sensor0-thermal {
                        polling-delay-passive = <0>;
                        polling-delay = <0>;
                        thermal-sensors = <&tsens 0>;
@@ -69,7 +69,7 @@
                        };
                };
 
-               tsens_tz_sensor1 {
+               sensor1-thermal {
                        polling-delay-passive = <0>;
                        polling-delay = <0>;
                        thermal-sensors = <&tsens 1>;
@@ -89,7 +89,7 @@
                        };
                };
 
-               tsens_tz_sensor2 {
+               sensor2-thermal {
                        polling-delay-passive = <0>;
                        polling-delay = <0>;
                        thermal-sensors = <&tsens 2>;
                        };
                };
 
-               tsens_tz_sensor3 {
+               sensor3-thermal {
                        polling-delay-passive = <0>;
                        polling-delay = <0>;
                        thermal-sensors = <&tsens 3>;
                        };
                };
 
-               tsens_tz_sensor4 {
+               sensor4-thermal {
                        polling-delay-passive = <0>;
                        polling-delay = <0>;
                        thermal-sensors = <&tsens 4>;
                        };
                };
 
-               tsens_tz_sensor5 {
+               sensor5-thermal {
                        polling-delay-passive = <0>;
                        polling-delay = <0>;
                        thermal-sensors = <&tsens 5>;
                        };
                };
 
-               tsens_tz_sensor6 {
+               sensor6-thermal {
                        polling-delay-passive = <0>;
                        polling-delay = <0>;
                        thermal-sensors = <&tsens 6>;
                        };
                };
 
-               tsens_tz_sensor7 {
+               sensor7-thermal {
                        polling-delay-passive = <0>;
                        polling-delay = <0>;
                        thermal-sensors = <&tsens 7>;
                        };
                };
 
-               tsens_tz_sensor8 {
+               sensor8-thermal {
                        polling-delay-passive = <0>;
                        polling-delay = <0>;
                        thermal-sensors = <&tsens 8>;
                        };
                };
 
-               tsens_tz_sensor9 {
+               sensor9-thermal {
                        polling-delay-passive = <0>;
                        polling-delay = <0>;
                        thermal-sensors = <&tsens 9>;
                        };
                };
 
-               tsens_tz_sensor10 {
+               sensor10-thermal {
                        polling-delay-passive = <0>;
                        polling-delay = <0>;
                        thermal-sensors = <&tsens 10>;
                        #size-cells = <1>;
                        ranges;
 
-                       sdcc1: sdcc@12400000 {
+                       sdcc1: mmc@12400000 {
                                status          = "disabled";
                                compatible      = "arm,pl18x", "arm,primecell";
                                arm,primecell-periphid = <0x00051180>;
                                dma-names = "tx", "rx";
                        };
 
-                       sdcc3: sdcc@12180000 {
+                       sdcc3: mmc@12180000 {
                                compatible      = "arm,pl18x", "arm,primecell";
                                arm,primecell-periphid = <0x00051180>;
                                status          = "disabled";
index a725b73..10ad929 100644 (file)
@@ -49,7 +49,7 @@
        model = "Sierra Wireless WP8548 Module";
        compatible = "swir,wp8548", "qcom,mdm9615";
 
-       memory {
+       memory@48000000 {
                device_type = "memory";
                reg = <0x48000000 0x7F00000>;
        };
index dda2cee..c32415f 100644 (file)
                                        pull-up;
                                };
 
-                               pmicmpp: mpp@50 {
+                               pmicmpp: mpps@50 {
                                        compatible = "qcom,pm8018-mpp", "qcom,ssbi-mpp";
-                                       interrupt-parent = <&pmicintc>;
-                                       interrupts = <24 IRQ_TYPE_NONE>,
-                                                    <25 IRQ_TYPE_NONE>,
-                                                    <26 IRQ_TYPE_NONE>,
-                                                    <27 IRQ_TYPE_NONE>,
-                                                    <28 IRQ_TYPE_NONE>,
-                                                    <29 IRQ_TYPE_NONE>;
+                                       interrupt-controller;
+                                       #interrupt-cells = <2>;
                                        reg = <0x50>;
                                        gpio-controller;
                                        #gpio-cells = <2>;
+                                       gpio-ranges = <&pmicmpp 0 0 6>;
                                };
 
                                rtc@11d {
                        #address-cells = <1>;
                        #size-cells = <1>;
                        ranges;
-                       sdcc1: sdcc@12180000 {
+                       sdcc1: mmc@12180000 {
                                status = "disabled";
                                compatible = "arm,pl18x", "arm,primecell";
                                arm,primecell-periphid = <0x00051180>;
                                assigned-clock-rates = <400000>;
                        };
 
-                       sdcc2: sdcc@12140000 {
+                       sdcc2: mmc@12140000 {
                                compatible = "arm,pl18x", "arm,primecell";
                                arm,primecell-periphid = <0x00051180>;
                                status = "disabled";
index 2de69d5..7d48599 100644 (file)
@@ -7,6 +7,7 @@
 
 #include <dt-bindings/interrupt-controller/arm-gic.h>
 #include <dt-bindings/clock/qcom,gcc-msm8974.h>
+#include <dt-bindings/gpio/gpio.h>
 
 / {
        #address-cells = <1>;
                reg = <0x0 0x0>;
        };
 
+       clocks {
+               xo_board: xo_board {
+                       compatible = "fixed-clock";
+                       #clock-cells = <0>;
+                       clock-frequency = <19200000>;
+               };
+
+               sleep_clk: sleep_clk {
+                       compatible = "fixed-clock";
+                       #clock-cells = <0>;
+                       clock-frequency = <32768>;
+               };
+       };
+
+       firmware {
+               scm {
+                       compatible = "qcom,scm-msm8226", "qcom,scm";
+                       clocks = <&gcc GCC_CE1_CLK>, <&gcc GCC_CE1_AXI_CLK>, <&gcc GCC_CE1_AHB_CLK>;
+                       clock-names = "core", "bus", "iface";
+               };
+       };
+
+       tcsr_mutex: hwlock {
+               compatible = "qcom,tcsr-mutex";
+               syscon = <&tcsr_mutex_block 0 0x80>;
+
+               #hwlock-cells = <1>;
+       };
+
+       reserved-memory {
+               #address-cells = <1>;
+               #size-cells = <1>;
+               ranges;
+
+               smem_region: smem@3000000 {
+                       reg = <0x3000000 0x100000>;
+                       no-map;
+               };
+       };
+
+       smd {
+               compatible = "qcom,smd";
+
+               rpm {
+                       interrupts = <GIC_SPI 168 IRQ_TYPE_EDGE_RISING>;
+                       qcom,ipc = <&apcs 8 0>;
+                       qcom,smd-edge = <15>;
+
+                       rpm_requests: rpm-requests {
+                               compatible = "qcom,rpm-msm8226";
+                               qcom,smd-channels = "rpm_requests";
+                       };
+               };
+       };
+
+       smem {
+               compatible = "qcom,smem";
+
+               memory-region = <&smem_region>;
+               qcom,rpm-msg-ram = <&rpm_msg_ram>;
+
+               hwlocks = <&tcsr_mutex 3>;
+       };
+
        soc: soc {
                compatible = "simple-bus";
                #address-cells = <1>;
                        #interrupt-cells = <3>;
                };
 
+               apcs: syscon@f9011000 {
+                       compatible = "syscon";
+                       reg = <0xf9011000 0x1000>;
+               };
+
+               sdhc_1: sdhci@f9824900 {
+                       compatible = "qcom,msm8226-sdhci", "qcom,sdhci-msm-v4";
+                       reg = <0xf9824900 0x11c>, <0xf9824000 0x800>;
+                       reg-names = "hc_mem", "core_mem";
+                       interrupts = <GIC_SPI 123 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 138 IRQ_TYPE_LEVEL_HIGH>;
+                       interrupt-names = "hc_irq", "pwr_irq";
+                       clocks = <&gcc GCC_SDCC1_APPS_CLK>,
+                                <&gcc GCC_SDCC1_AHB_CLK>,
+                                <&xo_board>;
+                       clock-names = "core", "iface", "xo";
+                       status = "disabled";
+               };
+
+               sdhc_2: sdhci@f98a4900 {
+                       compatible = "qcom,msm8226-sdhci", "qcom,sdhci-msm-v4";
+                       reg = <0xf98a4900 0x11c>, <0xf98a4000 0x800>;
+                       reg-names = "hc_mem", "core_mem";
+                       interrupts = <GIC_SPI 125 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 221 IRQ_TYPE_LEVEL_HIGH>;
+                       interrupt-names = "hc_irq", "pwr_irq";
+                       clocks = <&gcc GCC_SDCC2_APPS_CLK>,
+                                <&gcc GCC_SDCC2_AHB_CLK>,
+                                <&xo_board>;
+                       clock-names = "core", "iface", "xo";
+                       status = "disabled";
+               };
+
+               sdhc_3: sdhci@f9864900 {
+                       compatible = "qcom,msm8226-sdhci", "qcom,sdhci-msm-v4";
+                       reg = <0xf9864900 0x11c>, <0xf9864000 0x800>;
+                       reg-names = "hc_mem", "core_mem";
+                       interrupts = <GIC_SPI 127 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 224 IRQ_TYPE_LEVEL_HIGH>;
+                       interrupt-names = "hc_irq", "pwr_irq";
+                       clocks = <&gcc GCC_SDCC3_APPS_CLK>,
+                                <&gcc GCC_SDCC3_AHB_CLK>,
+                                <&xo_board>;
+                       clock-names = "core", "iface", "xo";
+                       status = "disabled";
+               };
+
+               blsp1_uart3: serial@f991f000 {
+                       compatible = "qcom,msm-uartdm-v1.4", "qcom,msm-uartdm";
+                       reg = <0xf991f000 0x1000>;
+                       interrupts = <GIC_SPI 109 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&gcc GCC_BLSP1_UART3_APPS_CLK>, <&gcc GCC_BLSP1_AHB_CLK>;
+                       clock-names = "core", "iface";
+                       status = "disabled";
+               };
+
+               blsp1_uart4: serial@f9920000 {
+                       compatible = "qcom,msm-uartdm-v1.4", "qcom,msm-uartdm";
+                       reg = <0xf9920000 0x1000>;
+                       interrupts = <GIC_SPI 110 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&gcc GCC_BLSP1_UART4_APPS_CLK>, <&gcc GCC_BLSP1_AHB_CLK>;
+                       clock-names = "core", "iface";
+                       status = "disabled";
+               };
+
+               blsp1_i2c1: i2c@f9923000 {
+                       status = "disabled";
+                       compatible = "qcom,i2c-qup-v2.1.1";
+                       reg = <0xf9923000 0x1000>;
+                       interrupts = <GIC_SPI 95 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&gcc GCC_BLSP1_QUP1_I2C_APPS_CLK>, <&gcc GCC_BLSP1_AHB_CLK>;
+                       clock-names = "core", "iface";
+                       pinctrl-names = "default";
+                       pinctrl-0 = <&blsp1_i2c1_pins>;
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+               };
+
+               blsp1_i2c2: i2c@f9924000 {
+                       status = "disabled";
+                       compatible = "qcom,i2c-qup-v2.1.1";
+                       reg = <0xf9924000 0x1000>;
+                       interrupts = <GIC_SPI 96 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&gcc GCC_BLSP1_QUP2_I2C_APPS_CLK>, <&gcc GCC_BLSP1_AHB_CLK>;
+                       clock-names = "core", "iface";
+                       pinctrl-names = "default";
+                       pinctrl-0 = <&blsp1_i2c2_pins>;
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+               };
+
+               blsp1_i2c3: i2c@f9925000 {
+                       status = "disabled";
+                       compatible = "qcom,i2c-qup-v2.1.1";
+                       reg = <0xf9925000 0x1000>;
+                       interrupts = <GIC_SPI 97 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&gcc GCC_BLSP1_QUP3_I2C_APPS_CLK>, <&gcc GCC_BLSP1_AHB_CLK>;
+                       clock-names = "core", "iface";
+                       pinctrl-names = "default";
+                       pinctrl-0 = <&blsp1_i2c3_pins>;
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+               };
+
+               blsp1_i2c4: i2c@f9926000 {
+                       status = "disabled";
+                       compatible = "qcom,i2c-qup-v2.1.1";
+                       reg = <0xf9926000 0x1000>;
+                       interrupts = <GIC_SPI 98 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&gcc GCC_BLSP1_QUP4_I2C_APPS_CLK>, <&gcc GCC_BLSP1_AHB_CLK>;
+                       clock-names = "core", "iface";
+                       pinctrl-names = "default";
+                       pinctrl-0 = <&blsp1_i2c4_pins>;
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+               };
+
+               blsp1_i2c5: i2c@f9927000 {
+                       status = "disabled";
+                       compatible = "qcom,i2c-qup-v2.1.1";
+                       reg = <0xf9927000 0x1000>;
+                       interrupts = <GIC_SPI 99 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&gcc GCC_BLSP1_QUP5_I2C_APPS_CLK>, <&gcc GCC_BLSP1_AHB_CLK>;
+                       clock-names = "core", "iface";
+                       pinctrl-names = "default";
+                       pinctrl-0 = <&blsp1_i2c5_pins>;
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+               };
+
                gcc: clock-controller@fc400000 {
                        compatible = "qcom,gcc-msm8226";
                        reg = <0xfc400000 0x4000>;
                        interrupt-controller;
                        #interrupt-cells = <2>;
                        interrupts = <GIC_SPI 208 IRQ_TYPE_LEVEL_HIGH>;
-               };
 
-               blsp1_uart3: serial@f991f000 {
-                       compatible = "qcom,msm-uartdm-v1.4", "qcom,msm-uartdm";
-                       reg = <0xf991f000 0x1000>;
-                       interrupts = <GIC_SPI 109 IRQ_TYPE_LEVEL_HIGH>;
-                       clocks = <&gcc GCC_BLSP1_UART3_APPS_CLK>, <&gcc GCC_BLSP1_AHB_CLK>;
-                       clock-names = "core", "iface";
-                       status = "disabled";
+                       blsp1_i2c1_pins: blsp1-i2c1 {
+                               pins = "gpio2", "gpio3";
+                               function = "blsp_i2c1";
+                               drive-strength = <2>;
+                               bias-disable;
+                       };
+
+                       blsp1_i2c2_pins: blsp1-i2c2 {
+                               pins = "gpio6", "gpio7";
+                               function = "blsp_i2c2";
+                               drive-strength = <2>;
+                               bias-disable;
+                       };
+
+                       blsp1_i2c3_pins: blsp1-i2c3 {
+                               pins = "gpio10", "gpio11";
+                               function = "blsp_i2c3";
+                               drive-strength = <2>;
+                               bias-disable;
+                       };
+
+                       blsp1_i2c4_pins: blsp1-i2c4 {
+                               pins = "gpio14", "gpio15";
+                               function = "blsp_i2c4";
+                               drive-strength = <2>;
+                               bias-disable;
+                       };
+
+                       blsp1_i2c5_pins: blsp1-i2c5 {
+                               pins = "gpio18", "gpio19";
+                               function = "blsp_i2c5";
+                               drive-strength = <2>;
+                               bias-disable;
+                       };
                };
 
                restart@fc4ab000 {
                        reg = <0xfc4ab000 0x4>;
                };
 
+               spmi_bus: spmi@fc4cf000 {
+                       compatible = "qcom,spmi-pmic-arb";
+                       reg-names = "core", "intr", "cnfg";
+                       reg = <0xfc4cf000 0x1000>,
+                             <0xfc4cb000 0x1000>,
+                             <0xfc4ca000 0x1000>;
+                       interrupt-names = "periph_irq";
+                       interrupts = <GIC_SPI 190 IRQ_TYPE_LEVEL_HIGH>;
+                       qcom,ee = <0>;
+                       qcom,channel = <0>;
+                       #address-cells = <2>;
+                       #size-cells = <0>;
+                       interrupt-controller;
+                       #interrupt-cells = <4>;
+               };
+
                rng@f9bff000 {
                        compatible = "qcom,prng";
                        reg = <0xf9bff000 0x200>;
                                status = "disabled";
                        };
                };
+
+               rpm_msg_ram: memory@fc428000 {
+                       compatible = "qcom,rpm-msg-ram";
+                       reg = <0xfc428000 0x4000>;
+               };
+
+               tcsr_mutex_block: syscon@fd484000 {
+                       compatible = "syscon";
+                       reg = <0xfd484000 0x2000>;
+               };
        };
 
        timer {
index 6a321cc..414280d 100644 (file)
 
                amba {
                        /* eMMC */
-                       sdcc1: sdcc@12400000 {
+                       sdcc1: mmc@12400000 {
                                status = "okay";
                                vmmc-supply = <&vsdcc_fixed>;
                        };
 
                        /* External micro SD card */
-                       sdcc3: sdcc@12180000 {
+                       sdcc3: mmc@12180000 {
                                status = "okay";
                                vmmc-supply = <&vsdcc_fixed>;
                        };
index 480fc08..1e8aab3 100644 (file)
                                        reg = <0x50>;
                                        gpio-controller;
                                        #gpio-cells = <2>;
-                                       interrupt-parent = <&pm8058>;
-                                       interrupts =
-                                       <128 IRQ_TYPE_NONE>,
-                                       <129 IRQ_TYPE_NONE>,
-                                       <130 IRQ_TYPE_NONE>,
-                                       <131 IRQ_TYPE_NONE>,
-                                       <132 IRQ_TYPE_NONE>,
-                                       <133 IRQ_TYPE_NONE>,
-                                       <134 IRQ_TYPE_NONE>,
-                                       <135 IRQ_TYPE_NONE>,
-                                       <136 IRQ_TYPE_NONE>,
-                                       <137 IRQ_TYPE_NONE>,
-                                       <138 IRQ_TYPE_NONE>,
-                                       <139 IRQ_TYPE_NONE>;
+                                       gpio-ranges = <&pm8058_mpps 0 0 12>;
+                                       interrupt-controller;
+                                       #interrupt-cells = <2>;
                                };
 
                                pwrkey@1c {
                        #address-cells = <1>;
                        #size-cells = <1>;
                        ranges;
-                       sdcc1: sdcc@12400000 {
+                       sdcc1: mmc@12400000 {
                                status          = "disabled";
                                compatible      = "arm,pl18x", "arm,primecell";
                                arm,primecell-periphid = <0x00051180>;
                                cap-mmc-highspeed;
                        };
 
-                       sdcc2: sdcc@12140000 {
+                       sdcc2: mmc@12140000 {
                                status          = "disabled";
                                compatible      = "arm,pl18x", "arm,primecell";
                                arm,primecell-periphid = <0x00051180>;
                                cap-mmc-highspeed;
                        };
 
-                       sdcc3: sdcc@12180000 {
+                       sdcc3: mmc@12180000 {
                                compatible      = "arm,pl18x", "arm,primecell";
                                arm,primecell-periphid = <0x00051180>;
                                status          = "disabled";
                                no-1-8-v;
                        };
 
-                       sdcc4: sdcc@121c0000 {
+                       sdcc4: mmc@121c0000 {
                                compatible      = "arm,pl18x", "arm,primecell";
                                arm,primecell-periphid = <0x00051180>;
                                status          = "disabled";
                                cap-mmc-highspeed;
                        };
 
-                       sdcc5: sdcc@12200000 {
+                       sdcc5: mmc@12200000 {
                                compatible      = "arm,pl18x", "arm,primecell";
                                arm,primecell-periphid = <0x00051180>;
                                status          = "disabled";
diff --git a/arch/arm/boot/dts/qcom-msm8916-samsung-serranove.dts b/arch/arm/boot/dts/qcom-msm8916-samsung-serranove.dts
new file mode 100644 (file)
index 0000000..dee2c20
--- /dev/null
@@ -0,0 +1,3 @@
+// SPDX-License-Identifier: GPL-2.0-only
+#include "arm64/qcom/msm8916-samsung-serranove.dts"
+#include "qcom-msm8916-smp.dtsi"
diff --git a/arch/arm/boot/dts/qcom-msm8916-smp.dtsi b/arch/arm/boot/dts/qcom-msm8916-smp.dtsi
new file mode 100644 (file)
index 0000000..36328db
--- /dev/null
@@ -0,0 +1,62 @@
+// SPDX-License-Identifier: GPL-2.0-only
+
+/ {
+       cpus {
+               cpu@0 {
+                       enable-method = "qcom,msm8916-smp";
+               };
+               cpu@1 {
+                       enable-method = "qcom,msm8916-smp";
+               };
+               cpu@2 {
+                       enable-method = "qcom,msm8916-smp";
+               };
+               cpu@3 {
+                       enable-method = "qcom,msm8916-smp";
+               };
+
+               idle-states {
+                       /delete-property/ entry-method;
+               };
+       };
+
+       psci {
+               status = "disabled";
+       };
+};
+
+&CPU_SLEEP_0 {
+       compatible = "qcom,idle-state-spc";
+};
+
+&cpu0_acc {
+       status = "okay";
+};
+
+&cpu0_saw {
+       status = "okay";
+};
+
+&cpu1_acc {
+       status = "okay";
+};
+
+&cpu1_saw {
+       status = "okay";
+};
+
+&cpu2_acc {
+       status = "okay";
+};
+
+&cpu2_saw {
+       status = "okay";
+};
+
+&cpu3_acc {
+       status = "okay";
+};
+
+&cpu3_saw {
+       status = "okay";
+};
index e7d2e93..4af0103 100644 (file)
 
                amba {
                        /* eMMC */
-                       sdcc1: sdcc@12400000 {
+                       sdcc1: mmc@12400000 {
                                status = "okay";
                        };
 
                        /* External micro SD card */
-                       sdcc3: sdcc@12180000 {
+                       sdcc3: mmc@12180000 {
                                status = "okay";
                        };
                };
index 172ea3c..2a0ec97 100644 (file)
                        #address-cells = <1>;
                        #size-cells = <1>;
                        ranges;
-                       sdcc1: sdcc@12400000 {
+                       sdcc1: mmc@12400000 {
                                status          = "disabled";
                                compatible      = "arm,pl18x", "arm,primecell";
                                arm,primecell-periphid = <0x00051180>;
                                vmmc-supply = <&vsdcc_fixed>;
                        };
 
-                       sdcc3: sdcc@12180000 {
+                       sdcc3: mmc@12180000 {
                                compatible      = "arm,pl18x", "arm,primecell";
                                arm,primecell-periphid = <0x00051180>;
                                status          = "disabled";
index 78ec496..412d947 100644 (file)
        };
 
        thermal-zones {
-               cpu-thermal0 {
+               cpu0-thermal {
                        polling-delay-passive = <250>;
                        polling-delay = <1000>;
 
                        };
                };
 
-               cpu-thermal1 {
+               cpu1-thermal {
                        polling-delay-passive = <250>;
                        polling-delay = <1000>;
 
                        };
                };
 
-               cpu-thermal2 {
+               cpu2-thermal {
                        polling-delay-passive = <250>;
                        polling-delay = <1000>;
 
                        };
                };
 
-               cpu-thermal3 {
+               cpu3-thermal {
                        polling-delay-passive = <250>;
                        polling-delay = <1000>;
 
                        };
                };
 
-               gpu-thermal-top {
+               gpu-top-thermal {
                        polling-delay-passive = <250>;
                        polling-delay = <1000>;
 
                        };
                };
 
-               gpu-thermal-bottom {
+               gpu-bottom-thermal {
                        polling-delay-passive = <250>;
                        polling-delay = <1000>;
 
                                #phy-cells = <0>;
                                qcom,dsi-phy-index = <0>;
 
-                               clocks = <&mmcc MDSS_AHB_CLK>;
-                               clock-names = "iface";
+                               clocks = <&mmcc MDSS_AHB_CLK>, <&xo_board>;
+                               clock-names = "iface", "ref";
                        };
                };
 
diff --git a/arch/arm/boot/dts/qcom-pm8226.dtsi b/arch/arm/boot/dts/qcom-pm8226.dtsi
new file mode 100644 (file)
index 0000000..dddb515
--- /dev/null
@@ -0,0 +1,27 @@
+// SPDX-License-Identifier: BSD-3-Clause
+#include <dt-bindings/interrupt-controller/irq.h>
+#include <dt-bindings/spmi/spmi.h>
+
+&spmi_bus {
+       pm8226_0: pm8226@0 {
+               compatible = "qcom,pm8226", "qcom,spmi-pmic";
+               reg = <0x0 SPMI_USID>;
+               #address-cells = <1>;
+               #size-cells = <0>;
+
+               pwrkey@800 {
+                       compatible = "qcom,pm8941-pwrkey";
+                       reg = <0x800>;
+                       interrupts = <0x0 0x8 0 IRQ_TYPE_EDGE_BOTH>;
+                       debounce = <15625>;
+                       bias-pull-up;
+               };
+       };
+
+       pm8226_1: pm8226@1 {
+               compatible = "qcom,pm8226", "qcom,spmi-pmic";
+               reg = <0x1 SPMI_USID>;
+               #address-cells = <1>;
+               #size-cells = <0>;
+       };
+};
index 2fd59c4..2caf71e 100644 (file)
                        reg = <0xa000>;
                        gpio-controller;
                        #gpio-cells = <2>;
-                       interrupts = <4 0xa0 0 IRQ_TYPE_NONE>,
-                                    <4 0xa1 0 IRQ_TYPE_NONE>,
-                                    <4 0xa2 0 IRQ_TYPE_NONE>,
-                                    <4 0xa3 0 IRQ_TYPE_NONE>;
+                       gpio-ranges = <&pm8841_mpps 0 0 4>;
+                       interrupt-controller;
+                       #interrupt-cells = <2>;
                };
 
                temp-alarm@2400 {
index c1f2012..da00b8f 100644 (file)
                        reg = <0xa000>;
                        gpio-controller;
                        #gpio-cells = <2>;
-                       interrupts = <0 0xa0 0 IRQ_TYPE_NONE>,
-                                    <0 0xa1 0 IRQ_TYPE_NONE>,
-                                    <0 0xa2 0 IRQ_TYPE_NONE>,
-                                    <0 0xa3 0 IRQ_TYPE_NONE>,
-                                    <0 0xa4 0 IRQ_TYPE_NONE>,
-                                    <0 0xa5 0 IRQ_TYPE_NONE>,
-                                    <0 0xa6 0 IRQ_TYPE_NONE>,
-                                    <0 0xa7 0 IRQ_TYPE_NONE>;
+                       gpio-ranges = <&pm8941_mpps 0 0 8>;
+                       interrupt-controller;
+                       #interrupt-cells = <2>;
                };
 
                pm8941_temp: temp-alarm@2400 {
index e921c5e..7b8a8d9 100644 (file)
                        reg = <0xa000>;
                        gpio-controller;
                        #gpio-cells = <2>;
-                       interrupts = <0 0xa0 0 IRQ_TYPE_NONE>,
-                                    <0 0xa1 0 IRQ_TYPE_NONE>,
-                                    <0 0xa2 0 IRQ_TYPE_NONE>,
-                                    <0 0xa3 0 IRQ_TYPE_NONE>,
-                                    <0 0xa4 0 IRQ_TYPE_NONE>,
-                                    <0 0xa5 0 IRQ_TYPE_NONE>,
-                                    <0 0xa6 0 IRQ_TYPE_NONE>,
-                                    <0 0xa7 0 IRQ_TYPE_NONE>;
+                       gpio-ranges = <&pma8084_mpps 0 0 8>;
+                       interrupt-controller;
+                       #interrupt-cells = <2>;
                };
 
                pma8084_temp: temp-alarm@2400 {
index 1e6ce03..44526ad 100644 (file)
                        compatible = "qcom,sdx55-qmp-usb3-uni-phy";
                        reg = <0x00ff6000 0x1c0>;
                        status = "disabled";
-                       #clock-cells = <1>;
                        #address-cells = <1>;
                        #size-cells = <1>;
                        ranges;
index 07d611d..1e84471 100644 (file)
        renesas,no-ether-link;
        phy-handle = <&phy0>;
        phy0: ethernet-phy@0 {
+               compatible = "ethernet-phy-idb824.2814",
+                            "ethernet-phy-ieee802.3-c22";
                reg = <0>;
        };
 };
index 2562cc9..105f9c7 100644 (file)
        phy-handle = <&phy0>;
 
        phy0: ethernet-phy@0 {
+               compatible = "ethernet-phy-id0007.c0f0",
+                            "ethernet-phy-ieee802.3-c22";
                reg = <0>;
 
                reset-gpios = <&port4 2 GPIO_ACTIVE_LOW>;
index 99acfe4..1c5acf6 100644 (file)
        renesas,no-ether-link;
        phy-handle = <&phy0>;
        phy0: ethernet-phy@0 {
+               compatible = "ethernet-phy-idb824.2814",
+                            "ethernet-phy-ieee802.3-c22";
                reg = <0>;
        };
 };
index 68498ce..9c0d968 100644 (file)
        renesas,no-ether-link;
        phy-handle = <&phy1>;
        phy1: ethernet-phy@1 {
+               compatible = "ethernet-phy-id001c.c816",
+                            "ethernet-phy-ieee802.3-c22";
                reg = <0>;
        };
 };
        clock-frequency = <24000000>;   /* 24MHz */
 };
 
+&i2c3 {
+       status = "okay";
+       clock-frequency = <400000>;
+
+       pinctrl-names = "default";
+       pinctrl-0 = <&i2c3_pins>;
+
+       eeprom@50 {
+               compatible = "renesas,r1ex24128", "atmel,24c128";
+               reg = <0x50>;
+               pagesize = <64>;
+       };
+};
+
 /* High resolution System tick timers */
 &ostm0 {
        status = "okay";
                         <RZA2_PINMUX(PORTL, 1, 5)>; /* IRQ5 */
        };
 
+       i2c3_pins: i2c3 {
+               pinmux = <RZA2_PINMUX(PORTD, 6, 1)>,    /* RIIC3SCL */
+                        <RZA2_PINMUX(PORTD, 7, 1)>;    /* RIIC3SDA */
+       };
+
        keyboard_pins: keyboard {
                pinmux = <RZA2_PINMUX(PORTJ, 1, 6)>;    /* IRQ0 */
        };
index b088e8e..e81a721 100644 (file)
                reg-io-width = <4>;
                smsc,irq-active-high;
                smsc,irq-push-pull;
+               reset-gpios = <&pfc 270 GPIO_ACTIVE_LOW>;
                vdd33a-supply = <&ape6evm_fixed_3v3>;
                vddvario-supply = <&ape6evm_fixed_1v8>;
        };
index d960c27..a01f3de 100644 (file)
        status = "okay";
 
        phy0: ethernet-phy@0 {
+               compatible = "ethernet-phy-id0007.c0f1",
+                            "ethernet-phy-ieee802.3-c22";
                reg = <0>;
+               reset-gpios = <&pfc 18 GPIO_ACTIVE_LOW>;
        };
 };
 
index 2bcb229..33db593 100644 (file)
@@ -66,6 +66,8 @@
        status = "okay";
 
        phy1: ethernet-phy@1 {
+               compatible = "ethernet-phy-id0022.1560",
+                            "ethernet-phy-ieee802.3-c22";
                reg = <1>;
                micrel,led-mode = <1>;
        };
index 94bf8a1..a5a79cd 100644 (file)
        status = "okay";
 
        phy3: ethernet-phy@3 {
+               compatible = "ethernet-phy-id0022.1622",
+                            "ethernet-phy-ieee802.3-c22";
                reg = <3>;
                micrel,led-mode = <1>;
        };
index 4ace117..ff274bf 100644 (file)
@@ -7,6 +7,7 @@
 
 /dts-v1/;
 #include "r8a7743.dtsi"
+#include <dt-bindings/gpio/gpio.h>
 
 / {
        model = "SK-RZG1M";
        status = "okay";
 
        phy1: ethernet-phy@1 {
+               compatible = "ethernet-phy-id0022.1537",
+                            "ethernet-phy-ieee802.3-c22";
                reg = <1>;
                interrupt-parent = <&irqc>;
                interrupts = <0 IRQ_TYPE_LEVEL_LOW>;
                micrel,led-mode = <1>;
+               reset-gpios = <&gpio5 22 GPIO_ACTIVE_LOW>;
        };
 };
index 73bd62d..c105932 100644 (file)
         * On some older versions of the platform (before R4.0) the phy address
         * may be 1 or 3. The address is fixed to 3 for R4.0 onwards.
         */
+               compatible = "ethernet-phy-id0022.1622",
+                            "ethernet-phy-ieee802.3-c22";
                reg = <3>;
                micrel,led-mode = <1>;
        };
index 59d1a9b..0a75e8c 100644 (file)
@@ -7,6 +7,7 @@
 
 /dts-v1/;
 #include "r8a7745.dtsi"
+#include <dt-bindings/gpio/gpio.h>
 
 / {
        model = "SK-RZG1E";
        status = "okay";
 
        phy1: ethernet-phy@1 {
+               compatible = "ethernet-phy-id0022.1537",
+                            "ethernet-phy-ieee802.3-c22";
                reg = <1>;
                interrupt-parent = <&irqc>;
                interrupts = <8 IRQ_TYPE_LEVEL_LOW>;
                micrel,led-mode = <1>;
+               reset-gpios = <&gpio1 24 GPIO_ACTIVE_LOW>;
        };
 };
index 8ac61b5..b024621 100644 (file)
@@ -79,6 +79,8 @@
        status = "okay";
 
        phy3: ethernet-phy@3 {
+               compatible = "ethernet-phy-id0022.1622",
+                            "ethernet-phy-ieee802.3-c22";
                reg = <3>;
                interrupt-parent = <&gpio5>;
                interrupts = <16 IRQ_TYPE_LEVEL_LOW>;
index 6c7b07c..9b65d24 100644 (file)
@@ -63,7 +63,7 @@
 
 &bsc {
        ethernet@18300000 {
-               compatible = "smsc,lan9220", "smsc,lan9115";
+               compatible = "smsc,lan89218", "smsc,lan9115";
                reg = <0x18300000 0x1000>;
 
                phy-mode = "mii";
index 4658453..5f05f2b 100644 (file)
@@ -52,7 +52,7 @@
        };
 
        ethernet@18000000 {
-               compatible = "smsc,lan9220", "smsc,lan9115";
+               compatible = "smsc,lan89218", "smsc,lan9115";
                reg = <0x18000000 0x100>;
                pinctrl-0 = <&ethernet_pins>;
                pinctrl-names = "default";
index fa6d986..57cd2fa 100644 (file)
        status = "okay";
 
        phy1: ethernet-phy@1 {
+               compatible = "ethernet-phy-id0022.1537",
+                            "ethernet-phy-ieee802.3-c22";
                reg = <1>;
                interrupt-parent = <&irqc0>;
                interrupts = <0 IRQ_TYPE_LEVEL_LOW>;
index d51f235..c802f9f 100644 (file)
        status = "okay";
 
        phy1: ethernet-phy@1 {
+               compatible = "ethernet-phy-id0022.1537",
+                            "ethernet-phy-ieee802.3-c22";
                reg = <1>;
                interrupt-parent = <&irqc0>;
                interrupts = <1 IRQ_TYPE_LEVEL_LOW>;
index 2a8b6fd..6e691b6 100644 (file)
        status = "okay";
 
        phy1: ethernet-phy@1 {
+               compatible = "ethernet-phy-id0022.1537",
+                            "ethernet-phy-ieee802.3-c22";
                reg = <1>;
                interrupt-parent = <&irqc0>;
                interrupts = <0 IRQ_TYPE_LEVEL_LOW>;
index c6ef636..38e2ab9 100644 (file)
        status = "okay";
 
        phy1: ethernet-phy@1 {
+               compatible = "ethernet-phy-id0022.1537",
+                            "ethernet-phy-ieee802.3-c22";
                reg = <1>;
                interrupt-parent = <&irqc0>;
                interrupts = <0 IRQ_TYPE_LEVEL_LOW>;
index 479e0fd..c8978f4 100644 (file)
        status = "okay";
 
        phy1: ethernet-phy@1 {
+               compatible = "ethernet-phy-id0022.1537",
+                            "ethernet-phy-ieee802.3-c22";
                reg = <1>;
                interrupt-parent = <&irqc0>;
                interrupts = <0 IRQ_TYPE_LEVEL_LOW>;
index f330d79..99d554f 100644 (file)
        status = "okay";
 
        phy1: ethernet-phy@1 {
+               compatible = "ethernet-phy-id0022.1537",
+                            "ethernet-phy-ieee802.3-c22";
                reg = <1>;
                interrupt-parent = <&irqc0>;
                interrupts = <8 IRQ_TYPE_LEVEL_LOW>;
index cafa304..92a7616 100644 (file)
        status = "okay";
 
        phy1: ethernet-phy@1 {
+               compatible = "ethernet-phy-id0022.1537",
+                            "ethernet-phy-ieee802.3-c22";
                reg = <1>;
                interrupt-parent = <&irqc0>;
                interrupts = <8 IRQ_TYPE_LEVEL_LOW>;
index ffa9bc7..ba2b889 100644 (file)
                compatible = "rockchip,rk3036-timer", "rockchip,rk3288-timer";
                reg = <0x20044000 0x20>;
                interrupts = <GIC_SPI 28 IRQ_TYPE_LEVEL_HIGH>;
-               clocks = <&xin24m>, <&cru PCLK_TIMER>;
-               clock-names = "timer", "pclk";
+               clocks = <&cru PCLK_TIMER>, <&xin24m>;
+               clock-names = "pclk", "timer";
        };
 
        pwm0: pwm@20050000 {
                #size-cells = <1>;
                ranges;
 
-               gpio0: gpio0@2007c000 {
+               gpio0: gpio@2007c000 {
                        compatible = "rockchip,gpio-bank";
                        reg = <0x2007c000 0x100>;
                        interrupts = <GIC_SPI 36 IRQ_TYPE_LEVEL_HIGH>;
                        #interrupt-cells = <2>;
                };
 
-               gpio1: gpio1@20080000 {
+               gpio1: gpio@20080000 {
                        compatible = "rockchip,gpio-bank";
                        reg = <0x20080000 0x100>;
                        interrupts = <GIC_SPI 37 IRQ_TYPE_LEVEL_HIGH>;
                        #interrupt-cells = <2>;
                };
 
-               gpio2: gpio2@20084000 {
+               gpio2: gpio@20084000 {
                        compatible = "rockchip,gpio-bank";
                        reg = <0x20084000 0x100>;
                        interrupts = <GIC_SPI 38 IRQ_TYPE_LEVEL_HIGH>;
index 9790bc6..667d57a 100644 (file)
@@ -4,6 +4,7 @@
  */
 
 /dts-v1/;
+#include <dt-bindings/input/input.h>
 #include "rk3066a.dtsi"
 
 / {
                device_type = "memory";
        };
 
+       adc-keys {
+               compatible = "adc-keys";
+               io-channels = <&saradc 1>;
+               io-channel-names = "buttons";
+               keyup-threshold-microvolt = <2500000>;
+               poll-interval = <100>;
+
+               recovery {
+                       label = "recovery";
+                       linux,code = <KEY_VENDOR>;
+                       press-threshold-microvolt = <0>;
+               };
+       };
+
        gpio-leds {
                compatible = "gpio-leds";
 
                };
        };
 
+       vcc_2v5: vcc-2v5 {
+               compatible = "regulator-fixed";
+               regulator-name = "vcc_2v5";
+               regulator-min-microvolt = <2500000>;
+               regulator-max-microvolt = <2500000>;
+       };
+
        vcc_io: vcc-io {
                compatible = "regulator-fixed";
                regulator-name = "vcc_io";
        };
 };
 
+&saradc {
+       vref-supply = <&vcc_2v5>;
+       status = "okay";
+};
+
 &uart2 {
        status = "okay";
 };
index ae40554..c25b969 100644 (file)
                        compatible = "arm,cortex-a9";
                        next-level-cache = <&L2>;
                        reg = <0x0>;
-                       operating-points = <
+                       operating-points =
                                /* kHz    uV */
-                               1416000 1300000
-                               1200000 1175000
-                               1008000 1125000
-                               816000  1125000
-                               600000  1100000
-                               504000  1100000
-                               312000  1075000
-                       >;
+                               <1416000 1300000>,
+                               <1200000 1175000>,
+                               <1008000 1125000>,
+                               <816000  1125000>,
+                               <600000  1100000>,
+                               <504000  1100000>,
+                               <312000  1075000>;
                        clock-latency = <40000>;
                        clocks = <&cru ARMCLK>;
                };
                #size-cells = <1>;
                ranges;
 
-               gpio0: gpio0@20034000 {
+               gpio0: gpio@20034000 {
                        compatible = "rockchip,gpio-bank";
                        reg = <0x20034000 0x100>;
                        interrupts = <GIC_SPI 54 IRQ_TYPE_LEVEL_HIGH>;
                        #interrupt-cells = <2>;
                };
 
-               gpio1: gpio1@2003c000 {
+               gpio1: gpio@2003c000 {
                        compatible = "rockchip,gpio-bank";
                        reg = <0x2003c000 0x100>;
                        interrupts = <GIC_SPI 55 IRQ_TYPE_LEVEL_HIGH>;
                        #interrupt-cells = <2>;
                };
 
-               gpio2: gpio2@2003e000 {
+               gpio2: gpio@2003e000 {
                        compatible = "rockchip,gpio-bank";
                        reg = <0x2003e000 0x100>;
                        interrupts = <GIC_SPI 56 IRQ_TYPE_LEVEL_HIGH>;
                        #interrupt-cells = <2>;
                };
 
-               gpio3: gpio3@20080000 {
+               gpio3: gpio@20080000 {
                        compatible = "rockchip,gpio-bank";
                        reg = <0x20080000 0x100>;
                        interrupts = <GIC_SPI 57 IRQ_TYPE_LEVEL_HIGH>;
                        #interrupt-cells = <2>;
                };
 
-               gpio4: gpio4@20084000 {
+               gpio4: gpio@20084000 {
                        compatible = "rockchip,gpio-bank";
                        reg = <0x20084000 0x100>;
                        interrupts = <GIC_SPI 58 IRQ_TYPE_LEVEL_HIGH>;
                        #interrupt-cells = <2>;
                };
 
-               gpio6: gpio6@2000a000 {
+               gpio6: gpio@2000a000 {
                        compatible = "rockchip,gpio-bank";
                        reg = <0x2000a000 0x100>;
                        interrupts = <GIC_SPI 60 IRQ_TYPE_LEVEL_HIGH>;
        compatible = "rockchip,rk3066-grf", "syscon", "simple-mfd";
 
        usbphy: usbphy {
-               compatible = "rockchip,rk3066a-usb-phy",
-                            "rockchip,rk3288-usb-phy";
+               compatible = "rockchip,rk3066a-usb-phy";
                #address-cells = <1>;
                #size-cells = <0>;
                status = "disabled";
index 2c60649..a94321e 100644 (file)
@@ -54,7 +54,7 @@
                };
        };
 
-       cpu0_opp_table: opp_table0 {
+       cpu0_opp_table: opp-table-0 {
                compatible = "operating-points-v2";
                opp-shared;
 
                #size-cells = <1>;
                ranges;
 
-               gpio0: gpio0@2000a000 {
+               gpio0: gpio@2000a000 {
                        compatible = "rockchip,rk3188-gpio-bank0";
                        reg = <0x2000a000 0x100>;
                        interrupts = <GIC_SPI 54 IRQ_TYPE_LEVEL_HIGH>;
                        #interrupt-cells = <2>;
                };
 
-               gpio1: gpio1@2003c000 {
+               gpio1: gpio@2003c000 {
                        compatible = "rockchip,gpio-bank";
                        reg = <0x2003c000 0x100>;
                        interrupts = <GIC_SPI 55 IRQ_TYPE_LEVEL_HIGH>;
                        #interrupt-cells = <2>;
                };
 
-               gpio2: gpio2@2003e000 {
+               gpio2: gpio@2003e000 {
                        compatible = "rockchip,gpio-bank";
                        reg = <0x2003e000 0x100>;
                        interrupts = <GIC_SPI 56 IRQ_TYPE_LEVEL_HIGH>;
                        #interrupt-cells = <2>;
                };
 
-               gpio3: gpio3@20080000 {
+               gpio3: gpio@20080000 {
                        compatible = "rockchip,gpio-bank";
                        reg = <0x20080000 0x100>;
                        interrupts = <GIC_SPI 57 IRQ_TYPE_LEVEL_HIGH>;
        };
 
        usbphy: usbphy {
-               compatible = "rockchip,rk3188-usb-phy",
-                            "rockchip,rk3288-usb-phy";
+               compatible = "rockchip,rk3188-usb-phy";
                #address-cells = <1>;
                #size-cells = <0>;
                status = "disabled";
index cb7d3fa..c340fb3 100644 (file)
@@ -10,7 +10,7 @@
 
        /delete-node/ opp-table0;
 
-       cpu0_opp_table: opp_table0 {
+       cpu0_opp_table: opp-table-0 {
                compatible = "operating-points-v2";
                opp-shared;
 
index 75af99c..8eed9e3 100644 (file)
@@ -68,7 +68,7 @@
                };
        };
 
-       cpu0_opp_table: opp_table0 {
+       cpu0_opp_table: opp-table-0 {
                compatible = "operating-points-v2";
                opp-shared;
 
                compatible = "rockchip,rk3228-timer", "rockchip,rk3288-timer";
                reg = <0x110c0000 0x20>;
                interrupts = <GIC_SPI 43 IRQ_TYPE_LEVEL_HIGH>;
-               clocks = <&xin24m>, <&cru PCLK_TIMER>;
-               clock-names = "timer", "pclk";
+               clocks = <&cru PCLK_TIMER>, <&xin24m>;
+               clock-names = "pclk", "timer";
        };
 
        cru: clock-controller@110e0000 {
                #size-cells = <1>;
                ranges;
 
-               gpio0: gpio0@11110000 {
+               gpio0: gpio@11110000 {
                        compatible = "rockchip,gpio-bank";
                        reg = <0x11110000 0x100>;
                        interrupts = <GIC_SPI 51 IRQ_TYPE_LEVEL_HIGH>;
                        #interrupt-cells = <2>;
                };
 
-               gpio1: gpio1@11120000 {
+               gpio1: gpio@11120000 {
                        compatible = "rockchip,gpio-bank";
                        reg = <0x11120000 0x100>;
                        interrupts = <GIC_SPI 52 IRQ_TYPE_LEVEL_HIGH>;
                        #interrupt-cells = <2>;
                };
 
-               gpio2: gpio2@11130000 {
+               gpio2: gpio@11130000 {
                        compatible = "rockchip,gpio-bank";
                        reg = <0x11130000 0x100>;
                        interrupts = <GIC_SPI 53 IRQ_TYPE_LEVEL_HIGH>;
                        #interrupt-cells = <2>;
                };
 
-               gpio3: gpio3@11140000 {
+               gpio3: gpio@11140000 {
                        compatible = "rockchip,gpio-bank";
                        reg = <0x11140000 0x100>;
                        interrupts = <GIC_SPI 54 IRQ_TYPE_LEVEL_HIGH>;
index 4dcdcf1..aaaa618 100644 (file)
                };
        };
 
-       cpu_opp_table: cpu-opp-table {
+       cpu_opp_table: opp-table-0 {
                compatible = "operating-points-v2";
                opp-shared;
 
                status = "disabled";
        };
 
-       gpu_opp_table: gpu-opp-table {
+       gpu_opp_table: opp-table-1 {
                compatible = "operating-points-v2";
 
                opp-100000000 {
                #size-cells = <2>;
                ranges;
 
-               gpio0: gpio0@ff750000 {
+               gpio0: gpio@ff750000 {
                        compatible = "rockchip,gpio-bank";
                        reg = <0x0 0xff750000 0x0 0x100>;
                        interrupts = <GIC_SPI 81 IRQ_TYPE_LEVEL_HIGH>;
                        #interrupt-cells = <2>;
                };
 
-               gpio1: gpio1@ff780000 {
+               gpio1: gpio@ff780000 {
                        compatible = "rockchip,gpio-bank";
                        reg = <0x0 0xff780000 0x0 0x100>;
                        interrupts = <GIC_SPI 82 IRQ_TYPE_LEVEL_HIGH>;
                        #interrupt-cells = <2>;
                };
 
-               gpio2: gpio2@ff790000 {
+               gpio2: gpio@ff790000 {
                        compatible = "rockchip,gpio-bank";
                        reg = <0x0 0xff790000 0x0 0x100>;
                        interrupts = <GIC_SPI 83 IRQ_TYPE_LEVEL_HIGH>;
                        #interrupt-cells = <2>;
                };
 
-               gpio3: gpio3@ff7a0000 {
+               gpio3: gpio@ff7a0000 {
                        compatible = "rockchip,gpio-bank";
                        reg = <0x0 0xff7a0000 0x0 0x100>;
                        interrupts = <GIC_SPI 84 IRQ_TYPE_LEVEL_HIGH>;
                        #interrupt-cells = <2>;
                };
 
-               gpio4: gpio4@ff7b0000 {
+               gpio4: gpio@ff7b0000 {
                        compatible = "rockchip,gpio-bank";
                        reg = <0x0 0xff7b0000 0x0 0x100>;
                        interrupts = <GIC_SPI 85 IRQ_TYPE_LEVEL_HIGH>;
                        #interrupt-cells = <2>;
                };
 
-               gpio5: gpio5@ff7c0000 {
+               gpio5: gpio@ff7c0000 {
                        compatible = "rockchip,gpio-bank";
                        reg = <0x0 0xff7c0000 0x0 0x100>;
                        interrupts = <GIC_SPI 86 IRQ_TYPE_LEVEL_HIGH>;
                        #interrupt-cells = <2>;
                };
 
-               gpio6: gpio6@ff7d0000 {
+               gpio6: gpio@ff7d0000 {
                        compatible = "rockchip,gpio-bank";
                        reg = <0x0 0xff7d0000 0x0 0x100>;
                        interrupts = <GIC_SPI 87 IRQ_TYPE_LEVEL_HIGH>;
                        #interrupt-cells = <2>;
                };
 
-               gpio7: gpio7@ff7e0000 {
+               gpio7: gpio@ff7e0000 {
                        compatible = "rockchip,gpio-bank";
                        reg = <0x0 0xff7e0000 0x0 0x100>;
                        interrupts = <GIC_SPI 88 IRQ_TYPE_LEVEL_HIGH>;
                        #interrupt-cells = <2>;
                };
 
-               gpio8: gpio8@ff7f0000 {
+               gpio8: gpio@ff7f0000 {
                        compatible = "rockchip,gpio-bank";
                        reg = <0x0 0xff7f0000 0x0 0x100>;
                        interrupts = <GIC_SPI 89 IRQ_TYPE_LEVEL_HIGH>;
index 24d5684..4482549 100644 (file)
@@ -40,7 +40,7 @@
                };
        };
 
-       cpu_opp_table: opp_table {
+       cpu_opp_table: opp-table-0 {
                compatible = "operating-points-v2";
 
                opp-408000000 {
                compatible = "rockchip,rv1108-timer", "rockchip,rk3288-timer";
                reg = <0x10350000 0x20>;
                interrupts = <GIC_SPI 35 IRQ_TYPE_LEVEL_HIGH>;
-               clocks = <&xin24m>, <&cru PCLK_TIMER>;
-               clock-names = "timer", "pclk";
+               clocks = <&cru PCLK_TIMER>, <&xin24m>;
+               clock-names = "pclk", "timer";
        };
 
        watchdog: watchdog@10360000 {
                status = "disabled";
        };
 
-       gmac: eth@30200000 {
+       gmac: ethernet@30200000 {
                compatible = "rockchip,rv1108-gmac";
                reg = <0x30200000 0x10000>;
                interrupts = <GIC_SPI 19 IRQ_TYPE_LEVEL_HIGH>,
                #size-cells = <1>;
                ranges;
 
-               gpio0: gpio0@20030000 {
+               gpio0: gpio@20030000 {
                        compatible = "rockchip,gpio-bank";
                        reg = <0x20030000 0x100>;
                        interrupts = <GIC_SPI 40 IRQ_TYPE_LEVEL_HIGH>;
                        #interrupt-cells = <2>;
                };
 
-               gpio1: gpio1@10310000 {
+               gpio1: gpio@10310000 {
                        compatible = "rockchip,gpio-bank";
                        reg = <0x10310000 0x100>;
                        interrupts = <GIC_SPI 41 IRQ_TYPE_LEVEL_HIGH>;
                        #interrupt-cells = <2>;
                };
 
-               gpio2: gpio2@10320000 {
+               gpio2: gpio@10320000 {
                        compatible = "rockchip,gpio-bank";
                        reg = <0x10320000 0x100>;
                        interrupts = <GIC_SPI 42 IRQ_TYPE_LEVEL_HIGH>;
                        #interrupt-cells = <2>;
                };
 
-               gpio3: gpio3@10330000 {
+               gpio3: gpio@10330000 {
                        compatible = "rockchip,gpio-bank";
                        reg = <0x10330000 0x100>;
                        interrupts = <GIC_SPI 43 IRQ_TYPE_LEVEL_HIGH>;
index b47d830..7427c84 100644 (file)
@@ -8,6 +8,7 @@
 / {
        model = "Samsung Galaxy S Fascinate 4G (SGH-T959P) based on S5PV210";
        compatible = "samsung,fascinate4g", "samsung,aries", "samsung,s5pv210";
+       chassis-type = "handset";
 
        chosen {
                stdout-path = &uart2;
index 560f830..eeec2bd 100644 (file)
@@ -8,6 +8,7 @@
 / {
        model = "Samsung Galaxy S1 (GT-I9000) based on S5PV210";
        compatible = "samsung,galaxys", "samsung,aries", "samsung,s5pv210";
+       chassis-type = "handset";
 
        chosen {
                stdout-path = &uart2;
diff --git a/arch/arm/boot/dts/sama5d29.dtsi b/arch/arm/boot/dts/sama5d29.dtsi
new file mode 100644 (file)
index 0000000..17991c2
--- /dev/null
@@ -0,0 +1,16 @@
+// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
+/*
+ * sama5d29.dtsi - Device Tree Include file for SAMA5D29 SoC of the SAMA5D2
+ * family.
+ *
+ *  Copyright (C) 2021 Microchip Technology, Inc. and its subsidiaries
+ *
+ *  Author: Hari Prasath <Hari.PrasathGE@microchip.com>
+ *
+ */
+
+#include "sama5d2.dtsi"
+
+&macb0 {
+       compatible = "atmel,sama5d29-gem";
+};
index 6c58c15..7039311 100644 (file)
                        reg = <0xe001d060 0x48>;
                };
 
+               rtc: rtc@e001d0a8 {
+                       compatible = "microchip,sama7g5-rtc", "microchip,sam9x60-rtc";
+                       reg = <0xe001d0a8 0x30>;
+                       interrupts = <GIC_SPI 7 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&clk32k 1>;
+               };
+
                ps_wdt: watchdog@e001d180 {
                        compatible = "microchip,sama7g5-wdt";
                        reg = <0xe001d180 0x24>;
                        reg = <0xe0020000 0x8>;
                };
 
+               tcb1: timer@e0800000 {
+                       compatible = "atmel,sama5d2-tcb", "simple-mfd", "syscon";
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       reg = <0xe0800000 0x100>;
+                       interrupts = <GIC_SPI 91 IRQ_TYPE_LEVEL_HIGH>, <GIC_SPI 92 IRQ_TYPE_LEVEL_HIGH>, <GIC_SPI 93 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&pmc PMC_TYPE_PERIPHERAL 91>, <&pmc PMC_TYPE_PERIPHERAL 92>, <&pmc PMC_TYPE_PERIPHERAL 93>, <&clk32k 1>;
+                       clock-names = "t0_clk", "t1_clk", "t2_clk", "slow_clk";
+               };
+
+               adc: adc@e1000000 {
+                       compatible = "microchip,sama7g5-adc";
+                       reg = <0xe1000000 0x200>;
+                       interrupts = <GIC_SPI 26 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&pmc PMC_TYPE_GCK 26>;
+                       assigned-clocks = <&pmc PMC_TYPE_GCK 26>;
+                       assigned-clock-rates = <100000000>;
+                       clock-names = "adc_clk";
+                       dmas = <&dma0 AT91_XDMAC_DT_PERID(0)>;
+                       dma-names = "rx";
+                       atmel,min-sample-rate-hz = <200000>;
+                       atmel,max-sample-rate-hz = <20000000>;
+                       atmel,startup-time-ms = <4>;
+                       status = "disabled";
+               };
+
                sdmmc0: mmc@e1204000 {
                        compatible = "microchip,sama7g5-sdhci", "microchip,sam9x60-sdhci";
                        reg = <0xe1204000 0x4000>;
                        status = "disabled";
                };
 
+               tcb0: timer@e2814000 {
+                       compatible = "atmel,sama5d2-tcb", "simple-mfd", "syscon";
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       reg = <0xe2814000 0x100>;
+                       interrupts = <GIC_SPI 88 IRQ_TYPE_LEVEL_HIGH>, <GIC_SPI 89 IRQ_TYPE_LEVEL_HIGH>, <GIC_SPI 90 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&pmc PMC_TYPE_PERIPHERAL 88>, <&pmc PMC_TYPE_PERIPHERAL 89>, <&pmc PMC_TYPE_PERIPHERAL 90>, <&clk32k 1>;
+                       clock-names = "t0_clk", "t1_clk", "t2_clk", "slow_clk";
+               };
+
                flx8: flexcom@e2818000 {
                        compatible = "atmel,sama5d2-flexcom";
                        reg = <0xe2818000 0x200>;
index 5a8d92a..98897f7 100644 (file)
 
 &bsc {
        ethernet@10000000 {
-               compatible = "smsc,lan9220", "smsc,lan9115";
+               compatible = "smsc,lan9221", "smsc,lan9115";
                reg = <0x10000000 0x100>;
                phy-mode = "mii";
                interrupt-parent = <&irqpin0>;
diff --git a/arch/arm/boot/dts/socfpga_arria10_mercury_aa1.dts b/arch/arm/boot/dts/socfpga_arria10_mercury_aa1.dts
new file mode 100644 (file)
index 0000000..2a3364b
--- /dev/null
@@ -0,0 +1,112 @@
+// SPDX-License-Identifier: GPL-2.0
+/dts-v1/;
+
+#include "socfpga_arria10.dtsi"
+
+/ {
+
+       model = "Enclustra Mercury AA1";
+       compatible = "altr,socfpga-arria10", "altr,socfpga";
+
+       aliases {
+               ethernet0 = &gmac0;
+               serial1 = &uart1;
+               i2c0 = &i2c0;
+               i2c1 = &i2c1;
+       };
+
+       memory@0 {
+               name = "memory";
+               device_type = "memory";
+               reg = <0x0 0x80000000>; /* 2GB */
+       };
+
+       chosen {
+               stdout-path = "serial1:115200n8";
+       };
+};
+
+&eccmgr {
+       sdmmca-ecc@ff8c2c00 {
+               compatible = "altr,socfpga-sdmmc-ecc";
+               reg = <0xff8c2c00 0x400>;
+               altr,ecc-parent = <&mmc>;
+               interrupts = <15 IRQ_TYPE_LEVEL_HIGH>,
+                            <47 IRQ_TYPE_LEVEL_HIGH>,
+                            <16 IRQ_TYPE_LEVEL_HIGH>,
+                            <48 IRQ_TYPE_LEVEL_HIGH>;
+       };
+};
+
+&gmac0 {
+       phy-mode = "rgmii";
+       phy-addr = <0xffffffff>; /* probe for phy addr */
+
+       max-frame-size = <3800>;
+       status = "okay";
+
+       phy-handle = <&phy3>;
+
+       mdio {
+               #address-cells = <1>;
+               #size-cells = <0>;
+               compatible = "snps,dwmac-mdio";
+               phy3: ethernet-phy@3 {
+                       txd0-skew-ps = <0>; /* -420ps */
+                       txd1-skew-ps = <0>; /* -420ps */
+                       txd2-skew-ps = <0>; /* -420ps */
+                       txd3-skew-ps = <0>; /* -420ps */
+                       rxd0-skew-ps = <420>; /* 0ps */
+                       rxd1-skew-ps = <420>; /* 0ps */
+                       rxd2-skew-ps = <420>; /* 0ps */
+                       rxd3-skew-ps = <420>; /* 0ps */
+                       txen-skew-ps = <0>; /* -420ps */
+                       txc-skew-ps = <1860>; /* 960ps */
+                       rxdv-skew-ps = <420>; /* 0ps */
+                       rxc-skew-ps = <1680>; /* 780ps */
+                       reg = <3>;
+               };
+       };
+};
+
+&gpio0 {
+       status = "okay";
+};
+
+&gpio1 {
+       status = "okay";
+};
+
+&gpio2 {
+       status = "okay";
+};
+
+&i2c1 {
+       status = "okay";
+       isl12022: isl12022@6f {
+               status = "okay";
+               compatible = "isil,isl12022";
+               reg = <0x6f>;
+       };
+};
+
+/* Following mappings are taken from arria10 socdk dts */
+&mmc {
+       status = "okay";
+       cap-sd-highspeed;
+       broken-cd;
+       bus-width = <4>;
+};
+
+&osc1 {
+       clock-frequency = <33330000>;
+};
+
+&uart1 {
+       status = "okay";
+};
+
+&usb0 {
+       status = "okay";
+       dr_mode = "host";
+};
index c4b49ba..2f746a9 100644 (file)
@@ -82,8 +82,6 @@
                        reg = <0xb1000000 0x4000>, <0x80000000 0x20000>;
                        reg-names = "dbi", "config";
                        interrupts = <0 68 0x4>;
-                       interrupt-map-mask = <0 0 0 0>;
-                       interrupt-map = <0x0 0 &gic 0 68 0x4>;
                        num-lanes = <1>;
                        phys = <&miphy0 1>;
                        phy-names = "pcie-phy";
                        reg = <0xb1800000 0x4000>, <0x90000000 0x20000>;
                        reg-names = "dbi", "config";
                        interrupts = <0 69 0x4>;
-                       interrupt-map-mask = <0 0 0 0>;
-                       interrupt-map = <0x0 0 &gic 0 69 0x4>;
                        num-lanes = <1>;
                        phys = <&miphy1 1>;
                        phy-names = "pcie-phy";
                        reg = <0xb4000000 0x4000>, <0xc0000000 0x20000>;
                        reg-names = "dbi", "config";
                        interrupts = <0 70 0x4>;
-                       interrupt-map-mask = <0 0 0 0>;
-                       interrupt-map = <0x0 0 &gic 0 70 0x4>;
                        num-lanes = <1>;
                        phys = <&miphy2 1>;
                        phy-names = "pcie-phy";
index 1a8f5e8..827e887 100644 (file)
@@ -47,8 +47,6 @@
                        reg = <0xb1000000 0x4000>, <0x80000000 0x20000>;
                        reg-names = "dbi", "config";
                        interrupts = <0 68 0x4>;
-                       interrupt-map-mask = <0 0 0 0>;
-                       interrupt-map = <0x0 0 &gic 0 68 0x4>;
                        num-lanes = <1>;
                        phys = <&miphy0 1>;
                        phy-names = "pcie-phy";
index 9baf927..2cf1938 100644 (file)
                                        io-channel-names = "aux1", "aux2";
                                };
 
-                               ab8500_battery: ab8500_battery {
-                                       stericsson,battery-type = "LIPO";
-                                       thermistor-on-batctrl;
-                               };
-
                                ab8500_fg {
                                        compatible = "stericsson,ab8500-fg";
                                        interrupts = <24 IRQ_TYPE_LEVEL_HIGH>,
                                                          "LOW_BAT_F",
                                                          "CC_INT_CALIB",
                                                          "CCEOC";
-                                       battery = <&ab8500_battery>;
+                                       monitored-battery = <&battery>;
                                        io-channels = <&gpadc 0x08>;
                                        io-channel-names = "main_bat_v";
                                };
                                                          "BTEMP_HIGH",
                                                          "BTEMP_LOW_MEDIUM",
                                                          "BTEMP_MEDIUM_HIGH";
-                                       battery = <&ab8500_battery>;
+                                       monitored-battery = <&battery>;
                                        io-channels = <&gpadc 0x02>,
                                                      <&gpadc 0x01>;
                                        io-channel-names = "btemp_ball",
                                                          "VBUS_OVV",
                                                          "CH_WD_EXP",
                                                          "VBUS_CH_DROP_END";
-                                       battery         = <&ab8500_battery>;
+                                       monitored-battery = <&battery>;
                                        vddadc-supply   = <&ab8500_ldo_tvout_reg>;
                                        io-channels = <&gpadc 0x03>,
                                                      <&gpadc 0x0a>,
 
                                ab8500_chargalg {
                                        compatible      = "stericsson,ab8500-chargalg";
-                                       battery         = <&ab8500_battery>;
+                                       monitored-battery       = <&battery>;
                                };
 
                                ab8500_usb: ab8500_usb {
index 8d01870..e98335e 100644 (file)
                                        };
                                };
 
-                               ab8500_battery: ab8500_battery {
-                                       stericsson,battery-type = "LIPO";
-                                       thermistor-on-batctrl;
-                               };
-
                                ab8500_fg {
                                        status = "disabled";
                                        compatible = "stericsson,ab8500-fg";
                                                          "LOW_BAT_F",
                                                          "CC_INT_CALIB",
                                                          "CCEOC";
-                                       battery = <&ab8500_battery>;
+                                       monitored-battery = <&battery>;
                                        io-channels = <&gpadc 0x08>;
                                        io-channel-names = "main_bat_v";
                                };
                                                          "BTEMP_HIGH",
                                                          "BTEMP_LOW_MEDIUM",
                                                          "BTEMP_MEDIUM_HIGH";
-                                       battery = <&ab8500_battery>;
+                                       monitored-battery = <&battery>;
                                        io-channels = <&gpadc 0x02>,
                                                      <&gpadc 0x01>;
                                        io-channel-names = "btemp_ball",
                                                          "VBUS_OVV",
                                                          "CH_WD_EXP",
                                                          "VBUS_CH_DROP_END";
-                                       battery = <&ab8500_battery>;
+                                       monitored-battery = <&battery>;
                                        vddadc-supply = <&ab8500_ldo_adc_reg>;
                                        io-channels = <&gpadc 0x09>,
                                                      <&gpadc 0x0b>;
                                ab8500_chargalg {
                                        status = "disabled";
                                        compatible = "stericsson,ab8500-chargalg";
-                                       battery = <&ab8500_battery>;
+                                       monitored-battery = <&battery>;
                                };
 
                                ab8500_usb: ab8500_usb {
index 961f2c7..718752a 100644 (file)
                reg = <0x00000000 0x20000000>;
        };
 
+       battery: battery {
+               compatible = "simple-battery";
+               battery-type = "lithium-ion-polymer";
+               thermistor-on-batctrl;
+       };
+
        soc {
                uart@80120000 {
                        pinctrl-names = "default", "sleep";
index 934fc78..fb719c8 100644 (file)
                reg = <0x00000000 0x20000000>;
        };
 
+       battery: battery {
+               compatible = "simple-battery";
+               battery-type = "lithium-ion-polymer";
+               thermistor-on-batctrl;
+       };
+
        en_3v3_reg: en_3v3 {
                compatible = "regulator-fixed";
                regulator-name = "en-3v3-fixed-supply";
index 952606e..fbd6006 100644 (file)
                stdout-path = &serial2;
        };
 
+       battery: battery {
+               compatible = "samsung,eb425161lu";
+       };
+
        /* TI TXS0206 level translator for 2.9 V */
        sd_level_translator: regulator-gpio {
                compatible = "regulator-fixed";
index fabc390..47bbf5a 100644 (file)
                stdout-path = &serial2;
        };
 
+       battery: battery {
+               compatible = "samsung,eb585157lu";
+       };
+
        /* TI TXS0206 level translator for 2.9 V */
        sd_level_translator: regulator-gpio {
                compatible = "regulator-fixed";
index ee6379a..fc4c516 100644 (file)
                stdout-path = &serial2;
        };
 
+       battery: battery {
+               compatible = "samsung,eb-l1m7flu";
+       };
+
        i2c-gpio-0 {
                compatible = "i2c-gpio";
                sda-gpios = <&gpio2 14 (GPIO_ACTIVE_HIGH|GPIO_OPEN_DRAIN)>;
index f14cf31..5ddcbc1 100644 (file)
                stdout-path = &serial2;
        };
 
+       battery: battery {
+               compatible = "samsung,eb535151vu";
+       };
+
        /* External LDO for eMMC LDO VMEM_3V3 controlled by GPIO6 */
        ldo_3v3_reg: regulator-gpio-ldo-3v3 {
                compatible = "regulator-fixed";
                        pinctrl-names = "default";
                        pinctrl-0 = <&panel_default_mode>;
                        spi-3wire;
+                       /* TYPE 3: inverse clock polarity and phase */
+                       spi-cpha;
+                       spi-cpol;
 
                        port {
                                panel_in: endpoint {
index 3b82566..9ec3f85 100644 (file)
                stdout-path = &serial2;
        };
 
+       battery: battery {
+               compatible = "samsung,eb425161la";
+       };
+
        /* TI TXS0206 level translator for 2.9 V */
        sd_level_translator: regulator-gpio {
                compatible = "regulator-fixed";
index 264f3e9..580ca49 100644 (file)
                stdout-path = &serial2;
        };
 
+       battery: battery {
+               compatible = "samsung,eb485159lu";
+       };
+
        /* TI TXS0206 level translator for 2.9 V */
        sd_level_translator: regulator-gpio {
                compatible = "regulator-fixed";
                        };
                };
 
-               // eMMC
+               /*
+                * eMMC seems to be mostly Samsung KLM4G1YE4C "4YMD1R"
+                */
                mmc@80005000 {
                        arm,primecell-periphid = <0x10480180>;
                        max-frequency = <100000000>;
                        mmc-ddr-1_8v;
                        no-sdio;
                        no-sd;
+                       /* From datasheet page 26 figure 9: 300 ms set-up time for 4GB */
+                       post-power-on-delay-ms = <300>;
                        vmmc-supply = <&ldo_3v3_reg>;
                        pinctrl-names = "default", "sleep";
                        pinctrl-0 = <&mc2_a_1_default>;
                                        };
 
                                        ab8500_ldo_aux2 {
-                                               /* Supplies the Cypress TMA140 touchscreen only with 3.3V */
+                                               /* Supplies the Cypress TMA140 touchscreen only with 3.0V */
                                                regulator-name = "AUX2";
-                                               regulator-min-microvolt = <3300000>;
-                                               regulator-max-microvolt = <3300000>;
+                                               regulator-min-microvolt = <3000000>;
+                                               regulator-max-microvolt = <3000000>;
                                        };
 
                                        ab8500_ldo_aux3 {
 
                                        ab8500_ldo_aux5 {
                                                regulator-name = "AUX5";
+                                               /* Intended for 1V8 for touchscreen but actually left unused */
                                                regulator-min-microvolt = <1050000>;
                                                regulator-max-microvolt = <2790000>;
-                                               regulator-always-on;
                                        };
 
                                        ab8500_ldo_aux6 {
 };
 
 &pinctrl {
-       /*
-        * This extends the MC0 default config to include DAT32DIR
-        * which is used by this machine. If we don't do this the
-        * SD card does not work.
-        */
        sdi0 {
                mc0_a_1_default {
-                       default_mux {
-                               function = "mc0";
-                               /* This machine uses the DAT31 pin */
-                               groups = "mc0_a_1", "mc0dat31dir_a_1";
-                       };
-                       default_cfg5 {
-                               pins = "GPIO21_AB3"; /* DAT31DIR */
-                               ste,config = <&out_hi>;
+                       default_cfg1 {
+                               /* GPIO18, 19 & 20 unused so pull down */
+                               ste,config = <&gpio_in_pd>;
                        };
                };
        };
 
-       /* The unused FBCLK needs to be pulled down on this machine */
+       /* This is a reset line for the eMMC */
        sdi2 {
                mc2_a_1_default {
                        default_cfg2 {
                                pins = "GPIO130_C8"; /* FBCLK */
-                               ste,config = <&in_pd>;
+                               ste,config = <&gpio_in_pd>;
                        };
                };
        };
diff --git a/arch/arm/boot/dts/stm32mp13-pinctrl.dtsi b/arch/arm/boot/dts/stm32mp13-pinctrl.dtsi
new file mode 100644 (file)
index 0000000..069f95f
--- /dev/null
@@ -0,0 +1,64 @@
+// SPDX-License-Identifier: (GPL-2.0+ OR BSD-3-Clause)
+/*
+ * Copyright (C) STMicroelectronics 2021 - All Rights Reserved
+ * Author: Alexandre Torgue <alexandre.torgue@foss.st.com>
+ */
+#include <dt-bindings/pinctrl/stm32-pinfunc.h>
+
+&pinctrl {
+       sdmmc1_b4_pins_a: sdmmc1-b4-0 {
+               pins1 {
+                       pinmux = <STM32_PINMUX('C', 8, AF12)>, /* SDMMC1_D0 */
+                                <STM32_PINMUX('C', 9, AF12)>, /* SDMMC1_D1 */
+                                <STM32_PINMUX('C', 10, AF12)>, /* SDMMC1_D2 */
+                                <STM32_PINMUX('C', 11, AF12)>, /* SDMMC1_D3 */
+                                <STM32_PINMUX('D', 2, AF12)>; /* SDMMC1_CMD */
+                       slew-rate = <1>;
+                       drive-push-pull;
+                       bias-disable;
+               };
+               pins2 {
+                       pinmux = <STM32_PINMUX('C', 12, AF12)>; /* SDMMC1_CK */
+                       slew-rate = <2>;
+                       drive-push-pull;
+                       bias-disable;
+               };
+       };
+
+       sdmmc1_b4_od_pins_a: sdmmc1-b4-od-0 {
+               pins1 {
+                       pinmux = <STM32_PINMUX('C', 8, AF12)>, /* SDMMC1_D0 */
+                                <STM32_PINMUX('C', 9, AF12)>, /* SDMMC1_D1 */
+                                <STM32_PINMUX('C', 10, AF12)>, /* SDMMC1_D2 */
+                                <STM32_PINMUX('C', 11, AF12)>; /* SDMMC1_D3 */
+                       slew-rate = <1>;
+                       drive-push-pull;
+                       bias-disable;
+               };
+               pins2 {
+                       pinmux = <STM32_PINMUX('C', 12, AF12)>; /* SDMMC1_CK */
+                       slew-rate = <2>;
+                       drive-push-pull;
+                       bias-disable;
+               };
+               pins3 {
+                       pinmux = <STM32_PINMUX('D', 2, AF12)>; /* SDMMC1_CMD */
+                       slew-rate = <1>;
+                       drive-open-drain;
+                       bias-disable;
+               };
+       };
+
+       uart4_pins_a: uart4-0 {
+               pins1 {
+                       pinmux = <STM32_PINMUX('D', 6, AF8)>; /* UART4_TX */
+                       bias-disable;
+                       drive-push-pull;
+                       slew-rate = <0>;
+               };
+               pins2 {
+                       pinmux = <STM32_PINMUX('D', 8, AF8)>; /* UART4_RX */
+                       bias-disable;
+               };
+       };
+};
diff --git a/arch/arm/boot/dts/stm32mp131.dtsi b/arch/arm/boot/dts/stm32mp131.dtsi
new file mode 100644 (file)
index 0000000..86126dc
--- /dev/null
@@ -0,0 +1,283 @@
+// SPDX-License-Identifier: (GPL-2.0+ OR BSD-3-Clause)
+/*
+ * Copyright (C) STMicroelectronics 2021 - All Rights Reserved
+ * Author: Alexandre Torgue <alexandre.torgue@foss.st.com> for STMicroelectronics.
+ */
+#include <dt-bindings/interrupt-controller/arm-gic.h>
+
+/ {
+       #address-cells = <1>;
+       #size-cells = <1>;
+
+       cpus {
+               #address-cells = <1>;
+               #size-cells = <0>;
+
+               cpu0: cpu@0 {
+                       compatible = "arm,cortex-a7";
+                       device_type = "cpu";
+                       reg = <0>;
+               };
+       };
+
+       arm-pmu {
+               compatible = "arm,cortex-a7-pmu";
+               interrupts = <GIC_SPI 133 IRQ_TYPE_LEVEL_HIGH>;
+               interrupt-affinity = <&cpu0>;
+               interrupt-parent = <&intc>;
+       };
+
+       clocks {
+               clk_axi: clk-axi {
+                       #clock-cells = <0>;
+                       compatible = "fixed-clock";
+                       clock-frequency = <266500000>;
+               };
+
+               clk_hse: clk-hse {
+                       #clock-cells = <0>;
+                       compatible = "fixed-clock";
+                       clock-frequency = <24000000>;
+               };
+
+               clk_hsi: clk-hsi {
+                       #clock-cells = <0>;
+                       compatible = "fixed-clock";
+                       clock-frequency = <64000000>;
+               };
+
+               clk_lsi: clk-lsi {
+                       #clock-cells = <0>;
+                       compatible = "fixed-clock";
+                       clock-frequency = <32000>;
+               };
+
+               clk_pclk3: clk-pclk3 {
+                       #clock-cells = <0>;
+                       compatible = "fixed-clock";
+                       clock-frequency = <104438965>;
+               };
+
+               clk_pclk4: clk-pclk4 {
+                       #clock-cells = <0>;
+                       compatible = "fixed-clock";
+                       clock-frequency = <133250000>;
+               };
+
+               clk_pll4_p: clk-pll4_p {
+                       #clock-cells = <0>;
+                       compatible = "fixed-clock";
+                       clock-frequency = <50000000>;
+               };
+
+               clk_pll4_r: clk-pll4_r {
+                       #clock-cells = <0>;
+                       compatible = "fixed-clock";
+                       clock-frequency = <99000000>;
+               };
+       };
+
+       intc: interrupt-controller@a0021000 {
+               compatible = "arm,cortex-a7-gic";
+               #interrupt-cells = <3>;
+               interrupt-controller;
+               reg = <0xa0021000 0x1000>,
+                     <0xa0022000 0x2000>;
+       };
+
+       psci {
+               compatible = "arm,psci-1.0";
+               method = "smc";
+       };
+
+       timer {
+               compatible = "arm,armv7-timer";
+               interrupts = <GIC_PPI 13 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>,
+                            <GIC_PPI 14 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>,
+                            <GIC_PPI 11 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>,
+                            <GIC_PPI 10 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>;
+               interrupt-parent = <&intc>;
+               always-on;
+       };
+
+       soc {
+               compatible = "simple-bus";
+               #address-cells = <1>;
+               #size-cells = <1>;
+               interrupt-parent = <&intc>;
+               ranges;
+
+               uart4: serial@40010000 {
+                       compatible = "st,stm32h7-uart";
+                       reg = <0x40010000 0x400>;
+                       interrupts = <GIC_SPI 53 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&clk_hsi>;
+                       status = "disabled";
+               };
+
+               syscfg: syscon@50020000 {
+                       compatible = "st,stm32mp157-syscfg", "syscon";
+                       reg = <0x50020000 0x400>;
+                       clocks = <&clk_pclk3>;
+               };
+
+               sdmmc1: mmc@58005000 {
+                       compatible = "arm,pl18x", "arm,primecell";
+                       arm,primecell-periphid = <0x00253180>;
+                       reg = <0x58005000 0x1000>, <0x58006000 0x1000>;
+                       interrupts = <GIC_SPI 50 IRQ_TYPE_LEVEL_HIGH>;
+                       interrupt-names = "cmd_irq";
+                       clocks = <&clk_pll4_p>;
+                       clock-names = "apb_pclk";
+                       cap-sd-highspeed;
+                       cap-mmc-highspeed;
+                       max-frequency = <120000000>;
+                       status = "disabled";
+               };
+
+               iwdg2: watchdog@5a002000 {
+                       compatible = "st,stm32mp1-iwdg";
+                       reg = <0x5a002000 0x400>;
+                       clocks = <&clk_pclk4>, <&clk_lsi>;
+                       clock-names = "pclk", "lsi";
+                       status = "disabled";
+               };
+
+               bsec: efuse@5c005000 {
+                       compatible = "st,stm32mp15-bsec";
+                       reg = <0x5c005000 0x400>;
+                       #address-cells = <1>;
+                       #size-cells = <1>;
+
+                       part_number_otp: part_number_otp@4 {
+                               reg = <0x4 0x2>;
+                       };
+                       ts_cal1: calib@5c {
+                               reg = <0x5c 0x2>;
+                       };
+                       ts_cal2: calib@5e {
+                               reg = <0x5e 0x2>;
+                       };
+               };
+
+               /*
+                * Break node order to solve dependency probe issue between
+                * pinctrl and exti.
+                */
+               pinctrl: pin-controller@50002000 {
+                       #address-cells = <1>;
+                       #size-cells = <1>;
+                       compatible = "st,stm32mp135-pinctrl";
+                       ranges = <0 0x50002000 0x8400>;
+                       pins-are-numbered;
+
+                       gpioa: gpio@50002000 {
+                               gpio-controller;
+                               #gpio-cells = <2>;
+                               interrupt-controller;
+                               #interrupt-cells = <2>;
+                               reg = <0x0 0x400>;
+                               clocks = <&clk_pclk4>;
+                               st,bank-name = "GPIOA";
+                               ngpios = <16>;
+                               gpio-ranges = <&pinctrl 0 0 16>;
+                       };
+
+                       gpiob: gpio@50003000 {
+                               gpio-controller;
+                               #gpio-cells = <2>;
+                               interrupt-controller;
+                               #interrupt-cells = <2>;
+                               reg = <0x1000 0x400>;
+                               clocks = <&clk_pclk4>;
+                               st,bank-name = "GPIOB";
+                               ngpios = <16>;
+                               gpio-ranges = <&pinctrl 0 16 16>;
+                       };
+
+                       gpioc: gpio@50004000 {
+                               gpio-controller;
+                               #gpio-cells = <2>;
+                               interrupt-controller;
+                               #interrupt-cells = <2>;
+                               reg = <0x2000 0x400>;
+                               clocks = <&clk_pclk4>;
+                               st,bank-name = "GPIOC";
+                               ngpios = <16>;
+                               gpio-ranges = <&pinctrl 0 32 16>;
+                       };
+
+                       gpiod: gpio@50005000 {
+                               gpio-controller;
+                               #gpio-cells = <2>;
+                               interrupt-controller;
+                               #interrupt-cells = <2>;
+                               reg = <0x3000 0x400>;
+                               clocks = <&clk_pclk4>;
+                               st,bank-name = "GPIOD";
+                               ngpios = <16>;
+                               gpio-ranges = <&pinctrl 0 48 16>;
+                       };
+
+                       gpioe: gpio@50006000 {
+                               gpio-controller;
+                               #gpio-cells = <2>;
+                               interrupt-controller;
+                               #interrupt-cells = <2>;
+                               reg = <0x4000 0x400>;
+                               clocks = <&clk_pclk4>;
+                               st,bank-name = "GPIOE";
+                               ngpios = <16>;
+                               gpio-ranges = <&pinctrl 0 64 16>;
+                       };
+
+                       gpiof: gpio@50007000 {
+                               gpio-controller;
+                               #gpio-cells = <2>;
+                               interrupt-controller;
+                               #interrupt-cells = <2>;
+                               reg = <0x5000 0x400>;
+                               clocks = <&clk_pclk4>;
+                               st,bank-name = "GPIOF";
+                               ngpios = <16>;
+                               gpio-ranges = <&pinctrl 0 80 16>;
+                       };
+
+                       gpiog: gpio@50008000 {
+                               gpio-controller;
+                               #gpio-cells = <2>;
+                               interrupt-controller;
+                               #interrupt-cells = <2>;
+                               reg = <0x6000 0x400>;
+                               clocks = <&clk_pclk4>;
+                               st,bank-name = "GPIOG";
+                               ngpios = <16>;
+                               gpio-ranges = <&pinctrl 0 96 16>;
+                       };
+
+                       gpioh: gpio@50009000 {
+                               gpio-controller;
+                               #gpio-cells = <2>;
+                               interrupt-controller;
+                               #interrupt-cells = <2>;
+                               reg = <0x7000 0x400>;
+                               clocks = <&clk_pclk4>;
+                               st,bank-name = "GPIOH";
+                               ngpios = <15>;
+                               gpio-ranges = <&pinctrl 0 112 15>;
+                       };
+
+                       gpioi: gpio@5000a000 {
+                               gpio-controller;
+                               #gpio-cells = <2>;
+                               interrupt-controller;
+                               #interrupt-cells = <2>;
+                               reg = <0x8000 0x400>;
+                               clocks = <&clk_pclk4>;
+                               st,bank-name = "GPIOI";
+                               ngpios = <8>;
+                               gpio-ranges = <&pinctrl 0 128 8>;
+                       };
+               };
+       };
+};
diff --git a/arch/arm/boot/dts/stm32mp133.dtsi b/arch/arm/boot/dts/stm32mp133.dtsi
new file mode 100644 (file)
index 0000000..0fb1386
--- /dev/null
@@ -0,0 +1,37 @@
+// SPDX-License-Identifier: (GPL-2.0+ OR BSD-3-Clause)
+/*
+ * Copyright (C) STMicroelectronics 2021 - All Rights Reserved
+ * Author: Alexandre Torgue <alexandre.torgue@foss.st.com> for STMicroelectronics.
+ */
+
+#include "stm32mp131.dtsi"
+
+/ {
+       soc {
+               m_can1: can@4400e000 {
+                       compatible = "bosch,m_can";
+                       reg = <0x4400e000 0x400>, <0x44011000 0x1400>;
+                       reg-names = "m_can", "message_ram";
+                       interrupts = <GIC_SPI 20 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 22 IRQ_TYPE_LEVEL_HIGH>;
+                       interrupt-names = "int0", "int1";
+                       clocks = <&clk_hse>, <&clk_pll4_r>;
+                       clock-names = "hclk", "cclk";
+                       bosch,mram-cfg = <0x0 0 0 32 0 0 2 2>;
+                       status = "disabled";
+               };
+
+               m_can2: can@4400f000 {
+                       compatible = "bosch,m_can";
+                       reg = <0x4400f000 0x400>, <0x44011000 0x2800>;
+                       reg-names = "m_can", "message_ram";
+                       interrupts = <GIC_SPI 21 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 23 IRQ_TYPE_LEVEL_HIGH>;
+                       interrupt-names = "int0", "int1";
+                       clocks = <&clk_hse>, <&clk_pll4_r>;
+                       clock-names = "hclk", "cclk";
+                       bosch,mram-cfg = <0x1400 0 0 32 0 0 2 2>;
+                       status = "disabled";
+               };
+       };
+};
diff --git a/arch/arm/boot/dts/stm32mp135.dtsi b/arch/arm/boot/dts/stm32mp135.dtsi
new file mode 100644 (file)
index 0000000..abf2acd
--- /dev/null
@@ -0,0 +1,12 @@
+// SPDX-License-Identifier: (GPL-2.0+ OR BSD-3-Clause)
+/*
+ * Copyright (C) STMicroelectronics 2021 - All Rights Reserved
+ * Author: Alexandre Torgue <alexandre.torgue@foss.st.com> for STMicroelectronics.
+ */
+
+#include "stm32mp133.dtsi"
+
+/ {
+       soc {
+       };
+};
diff --git a/arch/arm/boot/dts/stm32mp135f-dk.dts b/arch/arm/boot/dts/stm32mp135f-dk.dts
new file mode 100644 (file)
index 0000000..7e96d9e
--- /dev/null
@@ -0,0 +1,56 @@
+// SPDX-License-Identifier: (GPL-2.0+ OR BSD-3-Clause)
+/*
+ * Copyright (C) STMicroelectronics 2021 - All Rights Reserved
+ * Author: Alexandre Torgue <alexandre.torgue@foss.st.com> for STMicroelectronics.
+ */
+
+/dts-v1/;
+
+#include "stm32mp135.dtsi"
+#include "stm32mp13xf.dtsi"
+#include "stm32mp13-pinctrl.dtsi"
+
+/ {
+       model = "STMicroelectronics STM32MP135F-DK Discovery Board";
+       compatible = "st,stm32mp135f-dk", "st,stm32mp135";
+
+       aliases {
+               serial0 = &uart4;
+       };
+
+       memory@c0000000 {
+               device_type = "memory";
+               reg = <0xc0000000 0x20000000>;
+       };
+
+       vdd_sd: vdd-sd {
+               compatible = "regulator-fixed";
+               regulator-name = "vdd_sd";
+               regulator-min-microvolt = <2900000>;
+               regulator-max-microvolt = <2900000>;
+               regulator-always-on;
+       };
+};
+
+&iwdg2 {
+       timeout-sec = <32>;
+       status = "okay";
+};
+
+&sdmmc1 {
+       pinctrl-names = "default", "opendrain";
+       pinctrl-0 = <&sdmmc1_b4_pins_a>;
+       pinctrl-1 = <&sdmmc1_b4_od_pins_a>;
+       broken-cd;
+       disable-wp;
+       st,neg-edge;
+       bus-width = <4>;
+       vmmc-supply = <&vdd_sd>;
+       status = "okay";
+};
+
+&uart4 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&uart4_pins_a>;
+       status = "okay";
+};
diff --git a/arch/arm/boot/dts/stm32mp13xc.dtsi b/arch/arm/boot/dts/stm32mp13xc.dtsi
new file mode 100644 (file)
index 0000000..fa6889e
--- /dev/null
@@ -0,0 +1,17 @@
+// SPDX-License-Identifier: (GPL-2.0+ OR BSD-3-Clause)
+/*
+ * Copyright (C) STMicroelectronics 2021 - All Rights Reserved
+ * Author: Alexandre Torgue <alexandre.torgue@foss.st.com> for STMicroelectronics.
+ */
+
+/ {
+       soc {
+               cryp: crypto@54002000 {
+                       compatible = "st,stm32mp1-cryp";
+                       reg = <0x54002000 0x400>;
+                       interrupts = <GIC_SPI 80 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&clk_axi>;
+                       status = "disabled";
+               };
+       };
+};
diff --git a/arch/arm/boot/dts/stm32mp13xf.dtsi b/arch/arm/boot/dts/stm32mp13xf.dtsi
new file mode 100644 (file)
index 0000000..fa6889e
--- /dev/null
@@ -0,0 +1,17 @@
+// SPDX-License-Identifier: (GPL-2.0+ OR BSD-3-Clause)
+/*
+ * Copyright (C) STMicroelectronics 2021 - All Rights Reserved
+ * Author: Alexandre Torgue <alexandre.torgue@foss.st.com> for STMicroelectronics.
+ */
+
+/ {
+       soc {
+               cryp: crypto@54002000 {
+                       compatible = "st,stm32mp1-cryp";
+                       reg = <0x54002000 0x400>;
+                       interrupts = <GIC_SPI 80 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&clk_axi>;
+                       status = "disabled";
+               };
+       };
+};
index 5b60ecb..2ebafe2 100644 (file)
                };
        };
 
-       sai2a_pins_c: sai2a-4 {
+       sai2a_pins_c: sai2a-2 {
                pins {
                        pinmux = <STM32_PINMUX('D', 13, AF10)>, /* SAI2_SCK_A */
                                 <STM32_PINMUX('D', 11, AF10)>, /* SAI2_SD_A */
                };
        };
 
-       sai2a_sleep_pins_c: sai2a-5 {
+       sai2a_sleep_pins_c: sai2a-2 {
                pins {
                        pinmux = <STM32_PINMUX('D', 13, ANALOG)>, /* SAI2_SCK_A */
                                 <STM32_PINMUX('D', 11, ANALOG)>, /* SAI2_SD_A */
                };
        };
 
-       sai2b_pins_c: sai2a-4 {
+       sai2b_pins_c: sai2b-2 {
                pins1 {
                        pinmux = <STM32_PINMUX('F', 11, AF10)>; /* SAI2_SD_B */
                        bias-disable;
                };
        };
 
-       sai2b_sleep_pins_c: sai2a-sleep-5 {
+       sai2b_sleep_pins_c: sai2b-sleep-2 {
                pins {
                        pinmux = <STM32_PINMUX('F', 11, ANALOG)>; /* SAI2_SD_B */
                };
index bd289bf..f693a7d 100644 (file)
                                #sound-dai-cells = <0>;
 
                                compatible = "st,stm32-sai-sub-a";
-                               reg = <0x4 0x1c>;
+                               reg = <0x4 0x20>;
                                clocks = <&rcc SAI1_K>;
                                clock-names = "sai_ck";
                                dmas = <&dmamux1 87 0x400 0x01>;
                        sai1b: audio-controller@4400a024 {
                                #sound-dai-cells = <0>;
                                compatible = "st,stm32-sai-sub-b";
-                               reg = <0x24 0x1c>;
+                               reg = <0x24 0x20>;
                                clocks = <&rcc SAI1_K>;
                                clock-names = "sai_ck";
                                dmas = <&dmamux1 88 0x400 0x01>;
                        sai2a: audio-controller@4400b004 {
                                #sound-dai-cells = <0>;
                                compatible = "st,stm32-sai-sub-a";
-                               reg = <0x4 0x1c>;
+                               reg = <0x4 0x20>;
                                clocks = <&rcc SAI2_K>;
                                clock-names = "sai_ck";
                                dmas = <&dmamux1 89 0x400 0x01>;
                        sai2b: audio-controller@4400b024 {
                                #sound-dai-cells = <0>;
                                compatible = "st,stm32-sai-sub-b";
-                               reg = <0x24 0x1c>;
+                               reg = <0x24 0x20>;
                                clocks = <&rcc SAI2_K>;
                                clock-names = "sai_ck";
                                dmas = <&dmamux1 90 0x400 0x01>;
                        sai3a: audio-controller@4400c004 {
                                #sound-dai-cells = <0>;
                                compatible = "st,stm32-sai-sub-a";
-                               reg = <0x04 0x1c>;
+                               reg = <0x04 0x20>;
                                clocks = <&rcc SAI3_K>;
                                clock-names = "sai_ck";
                                dmas = <&dmamux1 113 0x400 0x01>;
                        sai3b: audio-controller@4400c024 {
                                #sound-dai-cells = <0>;
                                compatible = "st,stm32-sai-sub-b";
-                               reg = <0x24 0x1c>;
+                               reg = <0x24 0x20>;
                                clocks = <&rcc SAI3_K>;
                                clock-names = "sai_ck";
                                dmas = <&dmamux1 114 0x400 0x01>;
                        sai4a: audio-controller@50027004 {
                                #sound-dai-cells = <0>;
                                compatible = "st,stm32-sai-sub-a";
-                               reg = <0x04 0x1c>;
+                               reg = <0x04 0x20>;
                                clocks = <&rcc SAI4_K>;
                                clock-names = "sai_ck";
                                dmas = <&dmamux1 99 0x400 0x01>;
                        sai4b: audio-controller@50027024 {
                                #sound-dai-cells = <0>;
                                compatible = "st,stm32-sai-sub-b";
-                               reg = <0x24 0x1c>;
+                               reg = <0x24 0x20>;
                                clocks = <&rcc SAI4_K>;
                                clock-names = "sai_ck";
                                dmas = <&dmamux1 100 0x400 0x01>;
                usbh_ohci: usb@5800c000 {
                        compatible = "generic-ohci";
                        reg = <0x5800c000 0x1000>;
-                       clocks = <&rcc USBH>;
+                       clocks = <&rcc USBH>, <&usbphyc>;
                        resets = <&rcc USBH_R>;
                        interrupts = <GIC_SPI 74 IRQ_TYPE_LEVEL_HIGH>;
                        status = "disabled";
index be1dd5e..554f5d3 100644 (file)
        };
 };
 
+&dcmi {
+       pinctrl-names = "default", "sleep";
+       pinctrl-0 = <&dcmi_pins_b>;
+       pinctrl-1 = <&dcmi_sleep_pins_b>;
+};
+
 &ethernet0 {
        status = "okay";
        pinctrl-0 = <&ethernet0_rgmii_pins_a>;
index 2b0ac60..44ecc47 100644 (file)
                compatible = "jedec,spi-nor";
                reg = <0>;
                spi-rx-bus-width = <4>;
-               spi-max-frequency = <108000000>;
+               spi-max-frequency = <50000000>;
                #address-cells = <1>;
                #size-cells = <1>;
        };
index 899bfe0..48beed0 100644 (file)
        stusb1600@28 {
                compatible = "st,stusb1600";
                reg = <0x28>;
-               interrupts = <11 IRQ_TYPE_EDGE_FALLING>;
+               interrupts = <11 IRQ_TYPE_LEVEL_LOW>;
                interrupt-parent = <&gpioi>;
                pinctrl-names = "default";
                pinctrl-0 = <&stusb1600_pins_a>;
index ad0e25a..83d283c 100644 (file)
        /*
         * The A10-Lime is known to be unstable when running at 1008 MHz
         */
-       operating-points = <
-               /* kHz    uV */
-               912000  1350000
-               864000  1300000
-               624000  1250000
-               >;
+       operating-points =
+               /* kHz    uV */
+               <912000 1350000>,
+               <864000 1300000>,
+               <624000 1250000>;
 };
 
 &de {
index 1c5a666..51a6464 100644 (file)
                        reg = <0x0>;
                        clocks = <&ccu CLK_CPU>;
                        clock-latency = <244144>; /* 8 32k periods */
-                       operating-points = <
+                       operating-points =
                                /* kHz    uV */
-                               1008000 1400000
-                               912000  1350000
-                               864000  1300000
-                               624000  1250000
-                               >;
+                               <1008000 1400000>,
+                               <912000 1350000>,
+                               <864000 1300000>,
+                               <624000 1250000>;
                        #cooling-cells = <2>;
                };
        };
index 7075e10..3325ab0 100644 (file)
 
 &cpu0 {
        clock-latency = <244144>; /* 8 32k periods */
-       operating-points = <
+       operating-points =
                /* kHz    uV */
-               1008000 1400000
-               912000  1350000
-               864000  1300000
-               624000  1200000
-               576000  1200000
-               432000  1200000
-               >;
+               <1008000 1400000>,
+               <912000 1350000>,
+               <864000 1300000>,
+               <624000 1200000>,
+               <576000 1200000>,
+               <432000 1200000>;
        #cooling-cells = <2>;
 };
 
index a31f907..715d748 100644 (file)
                        reg = <0>;
                        clocks = <&ccu CLK_CPU>;
                        clock-latency = <244144>; /* 8 32k periods */
-                       operating-points = <
+                       operating-points =
                                /* kHz    uV */
-                               1008000 1200000
-                               864000  1200000
-                               720000  1100000
-                               480000  1000000
-                               >;
+                               <1008000 1200000>,
+                               <864000 1200000>,
+                               <720000 1100000>,
+                               <480000 1000000>;
                        #cooling-cells = <2>;
                };
 
                        reg = <1>;
                        clocks = <&ccu CLK_CPU>;
                        clock-latency = <244144>; /* 8 32k periods */
-                       operating-points = <
+                       operating-points =
                                /* kHz    uV */
-                               1008000 1200000
-                               864000  1200000
-                               720000  1100000
-                               480000  1000000
-                               >;
+                               <1008000 1200000>,
+                               <864000 1200000>,
+                               <720000 1100000>,
+                               <480000 1000000>;
                        #cooling-cells = <2>;
                };
 
                        reg = <2>;
                        clocks = <&ccu CLK_CPU>;
                        clock-latency = <244144>; /* 8 32k periods */
-                       operating-points = <
+                       operating-points =
                                /* kHz    uV */
-                               1008000 1200000
-                               864000  1200000
-                               720000  1100000
-                               480000  1000000
-                               >;
+                               <1008000 1200000>,
+                               <864000 1200000>,
+                               <720000 1100000>,
+                               <480000 1000000>;
                        #cooling-cells = <2>;
                };
 
                        reg = <3>;
                        clocks = <&ccu CLK_CPU>;
                        clock-latency = <244144>; /* 8 32k periods */
-                       operating-points = <
+                       operating-points =
                                /* kHz    uV */
-                               1008000 1200000
-                               864000  1200000
-                               720000  1100000
-                               480000  1000000
-                               >;
+                               <1008000 1200000>,
+                               <864000 1200000>,
+                               <720000 1100000>,
+                               <480000 1000000>;
                        #cooling-cells = <2>;
                };
        };
index 9d792d7..46ecf9d 100644 (file)
 
 &cpu0 {
        cpu-supply = <&reg_dcdc2>;
-       operating-points = <
+       operating-points =
                /* kHz    uV */
-               960000  1400000
-               912000  1400000
-               864000  1350000
-               720000  1250000
-               528000  1150000
-               312000  1100000
-               144000  1050000
-               >;
+               <960000 1400000>,
+               <912000 1400000>,
+               <864000 1350000>,
+               <720000 1250000>,
+               <528000 1150000>,
+               <312000 1100000>,
+               <144000 1050000>;
 };
 
 &de {
index 5a40e02..5574299 100644 (file)
                        reg = <0>;
                        clocks = <&ccu CLK_CPU>;
                        clock-latency = <244144>; /* 8 32k periods */
-                       operating-points = <
+                       operating-points =
                                /* kHz    uV */
-                               960000  1400000
-                               912000  1400000
-                               864000  1300000
-                               720000  1200000
-                               528000  1100000
-                               312000  1000000
-                               144000  1000000
-                               >;
+                               <960000 1400000>,
+                               <912000 1400000>,
+                               <864000 1300000>,
+                               <720000 1200000>,
+                               <528000 1100000>,
+                               <312000 1000000>,
+                               <144000 1000000>;
                        #cooling-cells = <2>;
                };
 
                        reg = <1>;
                        clocks = <&ccu CLK_CPU>;
                        clock-latency = <244144>; /* 8 32k periods */
-                       operating-points = <
+                       operating-points =
                                /* kHz    uV */
-                               960000  1400000
-                               912000  1400000
-                               864000  1300000
-                               720000  1200000
-                               528000  1100000
-                               312000  1000000
-                               144000  1000000
-                               >;
+                               <960000 1400000>,
+                               <912000 1400000>,
+                               <864000 1300000>,
+                               <720000 1200000>,
+                               <528000 1100000>,
+                               <312000 1000000>,
+                               <144000 1000000>;
                        #cooling-cells = <2>;
                };
        };
index 2beddbb..b3d1bdf 100644 (file)
@@ -46,7 +46,7 @@
 #include <dt-bindings/thermal/thermal.h>
 
 / {
-       cpu0_opp_table: opp_table0 {
+       cpu0_opp_table: opp-table-cpu {
                compatible = "operating-points-v2";
                opp-shared;
 
                io-channels = <&ths>;
        };
 
-       mali_opp_table: gpu-opp-table {
+       mali_opp_table: opp-table-gpu {
                compatible = "operating-points-v2";
 
                opp-144000000 {
index 7fe2a58..a7d4ca3 100644 (file)
        status = "okay";
 
        touchscreen@38 {
-               compatible = "edt,edt-ft5x06";
+               compatible = "edt,edt-ft5206";
                reg = <0x38>;
                interrupt-parent = <&r_pio>;
                interrupts = <0 7 IRQ_TYPE_EDGE_FALLING>; /* PL7 */
index ac97eac..82fdb04 100644 (file)
                status = "disabled";
        };
 
-       cpu0_opp_table: opp_table0 {
+       cpu0_opp_table: opp-table-cluster0 {
                compatible = "operating-points-v2";
                opp-shared;
 
                };
        };
 
-       cpu1_opp_table: opp_table1 {
+       cpu1_opp_table: opp-table-cluster1 {
                compatible = "operating-points-v2";
                opp-shared;
 
index 4e89701..ae4f933 100644 (file)
@@ -44,7 +44,7 @@
 #include <dt-bindings/thermal/thermal.h>
 
 / {
-       cpu0_opp_table: opp_table0 {
+       cpu0_opp_table: opp-table-cpu {
                compatible = "operating-points-v2";
                opp-shared;
 
                };
        };
 
-       gpu_opp_table: gpu-opp-table {
+       gpu_opp_table: opp-table-gpu {
                compatible = "operating-points-v2";
 
                opp-120000000 {
index 291f478..1d87fc0 100644 (file)
                        status = "disabled";
                };
 
+               i2s0: i2s@1c22000 {
+                       #sound-dai-cells = <0>;
+                       compatible = "allwinner,sun8i-r40-i2s",
+                                    "allwinner,sun8i-h3-i2s";
+                       reg = <0x01c22000 0x400>;
+                       interrupts = <GIC_SPI 16 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&ccu CLK_BUS_I2S0>, <&ccu CLK_I2S0>;
+                       clock-names = "apb", "mod";
+                       resets = <&ccu RST_BUS_I2S0>;
+                       dmas = <&dma 3>, <&dma 3>;
+                       dma-names = "rx", "tx";
+               };
+
+               i2s1: i2s@1c22400 {
+                       #sound-dai-cells = <0>;
+                       compatible = "allwinner,sun8i-r40-i2s",
+                                    "allwinner,sun8i-h3-i2s";
+                       reg = <0x01c22400 0x400>;
+                       interrupts = <GIC_SPI 87 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&ccu CLK_BUS_I2S1>, <&ccu CLK_I2S1>;
+                       clock-names = "apb", "mod";
+                       resets = <&ccu RST_BUS_I2S1>;
+                       dmas = <&dma 4>, <&dma 4>;
+                       dma-names = "rx", "tx";
+               };
+
+               i2s2: i2s@1c22800 {
+                       #sound-dai-cells = <0>;
+                       compatible = "allwinner,sun8i-r40-i2s",
+                                    "allwinner,sun8i-h3-i2s";
+                       reg = <0x01c22800 0x400>;
+                       interrupts = <GIC_SPI 90 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&ccu CLK_BUS_I2S2>, <&ccu CLK_I2S2>;
+                       clock-names = "apb", "mod";
+                       resets = <&ccu RST_BUS_I2S2>;
+                       dmas = <&dma 6>, <&dma 6>;
+                       dma-names = "rx", "tx";
+               };
+
                ths: thermal-sensor@1c24c00 {
                        compatible = "allwinner,sun8i-r40-ths";
                        reg = <0x01c24c00 0x100>;
index e0d2a31..6f93f8c 100644 (file)
 &spi0 {
        status = "okay";
 
-       spi-flash@0 {
+       flash@0 {
                reg = <0>;
                compatible = "jedec,spi-nor";
                spi-max-frequency = <50000000>;
index 1fe251e..c8ca8cb 100644 (file)
@@ -87,7 +87,7 @@
        };
 
        vga-dac {
-               compatible = "corpro,gm7123", "adi,adv7123", "dumb-vga-dac";
+               compatible = "corpro,gm7123", "adi,adv7123";
                vdd-supply = <&reg_dcdc1>;
 
                ports {
index 204fba3..50d328c 100644 (file)
 &spi0 {
        status = "okay";
 
-       spiflash@0 {
+       flash@0 {
                compatible = "jedec,spi-nor";
                reg = <0>;
                spi-max-frequency = <50000000>;
index fb99b3e..546272e 100644 (file)
        };
 
        usb@7d000000 {
-               compatible = "nvidia,tegra114-ehci", "nvidia,tegra30-ehci", "usb-ehci";
+               compatible = "nvidia,tegra114-ehci", "nvidia,tegra30-ehci";
                reg = <0x7d000000 0x4000>;
                interrupts = <GIC_SPI 20 IRQ_TYPE_LEVEL_HIGH>;
                phy_type = "utmi";
                compatible = "nvidia,tegra114-usb-phy", "nvidia,tegra30-usb-phy";
                reg = <0x7d000000 0x4000>,
                      <0x7d000000 0x4000>;
+               interrupts = <GIC_SPI 20 IRQ_TYPE_LEVEL_HIGH>;
                phy_type = "utmi";
                clocks = <&tegra_car TEGRA114_CLK_USBD>,
                         <&tegra_car TEGRA114_CLK_PLL_U>,
                nvidia,hsdiscon-level = <5>;
                nvidia,xcvr-hsslew = <12>;
                nvidia,has-utmi-pad-registers;
+               nvidia,pmc = <&tegra_pmc 0>;
                status = "disabled";
        };
 
        usb@7d008000 {
-               compatible = "nvidia,tegra114-ehci", "nvidia,tegra30-ehci", "usb-ehci";
+               compatible = "nvidia,tegra114-ehci", "nvidia,tegra30-ehci";
                reg = <0x7d008000 0x4000>;
                interrupts = <GIC_SPI 97 IRQ_TYPE_LEVEL_HIGH>;
                phy_type = "utmi";
                compatible = "nvidia,tegra114-usb-phy", "nvidia,tegra30-usb-phy";
                reg = <0x7d008000 0x4000>,
                      <0x7d000000 0x4000>;
+               interrupts = <GIC_SPI 97 IRQ_TYPE_LEVEL_HIGH>;
                phy_type = "utmi";
                clocks = <&tegra_car TEGRA114_CLK_USB3>,
                         <&tegra_car TEGRA114_CLK_PLL_U>,
                nvidia,hssquelch-level = <2>;
                nvidia,hsdiscon-level = <5>;
                nvidia,xcvr-hsslew = <12>;
+               nvidia,pmc = <&tegra_pmc 2>;
                status = "disabled";
        };
 
index 8b38f12..63a6417 100644 (file)
        };
 
        usb@7d000000 {
-               compatible = "nvidia,tegra124-ehci", "nvidia,tegra30-ehci", "usb-ehci";
+               compatible = "nvidia,tegra124-ehci", "nvidia,tegra30-ehci";
                reg = <0x0 0x7d000000 0x0 0x4000>;
                interrupts = <GIC_SPI 20 IRQ_TYPE_LEVEL_HIGH>;
                phy_type = "utmi";
                compatible = "nvidia,tegra124-usb-phy", "nvidia,tegra30-usb-phy";
                reg = <0x0 0x7d000000 0x0 0x4000>,
                      <0x0 0x7d000000 0x0 0x4000>;
+               interrupts = <GIC_SPI 20 IRQ_TYPE_LEVEL_HIGH>;
                phy_type = "utmi";
                clocks = <&tegra_car TEGRA124_CLK_USBD>,
                         <&tegra_car TEGRA124_CLK_PLL_U>,
                nvidia,hsdiscon-level = <5>;
                nvidia,xcvr-hsslew = <12>;
                nvidia,has-utmi-pad-registers;
+               nvidia,pmc = <&tegra_pmc 0>;
                status = "disabled";
        };
 
        usb@7d004000 {
-               compatible = "nvidia,tegra124-ehci", "nvidia,tegra30-ehci", "usb-ehci";
+               compatible = "nvidia,tegra124-ehci", "nvidia,tegra30-ehci";
                reg = <0x0 0x7d004000 0x0 0x4000>;
                interrupts = <GIC_SPI 21 IRQ_TYPE_LEVEL_HIGH>;
                phy_type = "utmi";
                compatible = "nvidia,tegra124-usb-phy", "nvidia,tegra30-usb-phy";
                reg = <0x0 0x7d004000 0x0 0x4000>,
                      <0x0 0x7d000000 0x0 0x4000>;
+               interrupts = <GIC_SPI 21 IRQ_TYPE_LEVEL_HIGH>;
                phy_type = "utmi";
                clocks = <&tegra_car TEGRA124_CLK_USB2>,
                         <&tegra_car TEGRA124_CLK_PLL_U>,
                nvidia,hssquelch-level = <2>;
                nvidia,hsdiscon-level = <5>;
                nvidia,xcvr-hsslew = <12>;
+               nvidia,pmc = <&tegra_pmc 1>;
                status = "disabled";
        };
 
        usb@7d008000 {
-               compatible = "nvidia,tegra124-ehci", "nvidia,tegra30-ehci", "usb-ehci";
+               compatible = "nvidia,tegra124-ehci", "nvidia,tegra30-ehci";
                reg = <0x0 0x7d008000 0x0 0x4000>;
                interrupts = <GIC_SPI 97 IRQ_TYPE_LEVEL_HIGH>;
                phy_type = "utmi";
                compatible = "nvidia,tegra124-usb-phy", "nvidia,tegra30-usb-phy";
                reg = <0x0 0x7d008000 0x0 0x4000>,
                      <0x0 0x7d000000 0x0 0x4000>;
+               interrupts = <GIC_SPI 97 IRQ_TYPE_LEVEL_HIGH>;
                phy_type = "utmi";
                clocks = <&tegra_car TEGRA124_CLK_USB3>,
                         <&tegra_car TEGRA124_CLK_PLL_U>,
                nvidia,hssquelch-level = <2>;
                nvidia,hsdiscon-level = <5>;
                nvidia,xcvr-hsslew = <12>;
+               nvidia,pmc = <&tegra_pmc 2>;
                status = "disabled";
        };
 
index 2280d75..23d3f8d 100644 (file)
                bluetooth {
                        compatible = "brcm,bcm4329-bt";
 
+                       interrupt-parent = <&gpio>;
+                       interrupts = <TEGRA_GPIO(U, 6) IRQ_TYPE_EDGE_RISING>;
+                       interrupt-names = "host-wakeup";
+
                        /* PLLP 216MHz / 16 / 4 */
                        max-speed = <3375000>;
 
                        vddio-supply = <&vdd_1v8_sys>;
 
                        device-wakeup-gpios = <&gpio TEGRA_GPIO(U, 1) GPIO_ACTIVE_HIGH>;
-                       host-wakeup-gpios =   <&gpio TEGRA_GPIO(U, 6) GPIO_ACTIVE_HIGH>;
                        shutdown-gpios =      <&gpio TEGRA_GPIO(U, 0) GPIO_ACTIVE_HIGH>;
                };
        };
                status = "okay";
 
                magnetometer@c {
-                       compatible = "ak,ak8975";
+                       compatible = "asahi-kasei,ak8975";
                        reg = <0x0c>;
 
                        interrupt-parent = <&gpio>;
index acc816b..5b38b06 100644 (file)
 
                brightness-levels = <0 16 32 48 64 80 96 112 128 144 160 176 192 208 224 240 255>;
                default-brightness-level = <10>;
-
-               backlight-boot-off;
        };
 
        clk32k_in: clock@0 {
index 6ce4981..9508248 100644 (file)
        };
 
        usb@c5000000 {
-               compatible = "nvidia,tegra20-ehci", "usb-ehci";
+               compatible = "nvidia,tegra20-ehci";
                reg = <0xc5000000 0x4000>;
                interrupts = <GIC_SPI 20 IRQ_TYPE_LEVEL_HIGH>;
                phy_type = "utmi";
-               nvidia,has-legacy-mode;
                clocks = <&tegra_car TEGRA20_CLK_USBD>;
                resets = <&tegra_car 22>;
                reset-names = "usb";
                compatible = "nvidia,tegra20-usb-phy";
                reg = <0xc5000000 0x4000>,
                      <0xc5000000 0x4000>;
+               interrupts = <GIC_SPI 20 IRQ_TYPE_LEVEL_HIGH>;
                phy_type = "utmi";
                clocks = <&tegra_car TEGRA20_CLK_USBD>,
                         <&tegra_car TEGRA20_CLK_PLL_U>,
                nvidia,xcvr-lsfslew = <1>;
                nvidia,xcvr-lsrslew = <1>;
                nvidia,has-utmi-pad-registers;
+               nvidia,pmc = <&tegra_pmc 0>;
                status = "disabled";
        };
 
        usb@c5004000 {
-               compatible = "nvidia,tegra20-ehci", "usb-ehci";
+               compatible = "nvidia,tegra20-ehci";
                reg = <0xc5004000 0x4000>;
                interrupts = <GIC_SPI 21 IRQ_TYPE_LEVEL_HIGH>;
                phy_type = "ulpi";
        phy2: usb-phy@c5004000 {
                compatible = "nvidia,tegra20-usb-phy";
                reg = <0xc5004000 0x4000>;
+               interrupts = <GIC_SPI 21 IRQ_TYPE_LEVEL_HIGH>;
                phy_type = "ulpi";
                clocks = <&tegra_car TEGRA20_CLK_USB2>,
                         <&tegra_car TEGRA20_CLK_PLL_U>,
                resets = <&tegra_car 58>, <&tegra_car 22>;
                reset-names = "usb", "utmi-pads";
                #phy-cells = <0>;
+               nvidia,pmc = <&tegra_pmc 1>;
                status = "disabled";
        };
 
        usb@c5008000 {
-               compatible = "nvidia,tegra20-ehci", "usb-ehci";
+               compatible = "nvidia,tegra20-ehci";
                reg = <0xc5008000 0x4000>;
                interrupts = <GIC_SPI 97 IRQ_TYPE_LEVEL_HIGH>;
                phy_type = "utmi";
                compatible = "nvidia,tegra20-usb-phy";
                reg = <0xc5008000 0x4000>,
                      <0xc5000000 0x4000>;
+               interrupts = <GIC_SPI 97 IRQ_TYPE_LEVEL_HIGH>;
                phy_type = "utmi";
                clocks = <&tegra_car TEGRA20_CLK_USB3>,
                         <&tegra_car TEGRA20_CLK_PLL_U>,
                nvidia,xcvr-setup = <9>;
                nvidia,xcvr-lsfslew = <2>;
                nvidia,xcvr-lsrslew = <2>;
+               nvidia,pmc = <&tegra_pmc 2>;
                status = "disabled";
        };
 
index 9732cd6..07d4ea1 100644 (file)
                bluetooth {
                        compatible = "brcm,bcm4330-bt";
 
+                       interrupt-parent = <&gpio>;
+                       interrupts = <TEGRA_GPIO(U, 6) IRQ_TYPE_EDGE_RISING>;
+                       interrupt-names = "host-wakeup";
+
                        max-speed = <4000000>;
 
                        clocks = <&tegra_pmc TEGRA_PMC_CLK_BLINK>;
                        vddio-supply = <&vdd_1v8>;
 
                        device-wakeup-gpios = <&gpio TEGRA_GPIO(U, 1) GPIO_ACTIVE_HIGH>;
-                       host-wakeup-gpios =   <&gpio TEGRA_GPIO(U, 6) GPIO_ACTIVE_HIGH>;
                        shutdown-gpios =      <&gpio TEGRA_GPIO(U, 0) GPIO_ACTIVE_HIGH>;
                };
        };
                        interrupts = <TEGRA_GPIO(V, 1) IRQ_TYPE_EDGE_BOTH>;
 
                        summit,enable-charge-control = <SMB3XX_CHG_ENABLE_PIN_ACTIVE_LOW>;
+                       summit,inok-polarity = <SMB3XX_SYSOK_INOK_ACTIVE_LOW>;
                        summit,enable-usb-charging;
 
                        monitored-battery = <&battery_cell>;
+
+                       usb_vbus: usb-vbus {
+                               regulator-name = "usb_vbus";
+                               regulator-min-microvolt = <5000000>;
+                               regulator-max-microvolt = <5000000>;
+                               regulator-min-microamp = <750000>;
+                               regulator-max-microamp = <750000>;
+
+                               /*
+                                * SMB347 INOK input pin is connected to PMIC's
+                                * ACOK output, which is fixed to ACTIVE_LOW as
+                                * long as battery voltage is in a good range.
+                                *
+                                * Active INOK disables SMB347 output, so polarity
+                                * needs to be toggled when we want to get the
+                                * output.
+                                */
+                               summit,needs-inok-toggle;
+                       };
                };
        };
 
        usb@7d000000 {
                compatible = "nvidia,tegra30-udc";
                status = "okay";
-               dr_mode = "peripheral";
+               dr_mode = "otg";
+               vbus-supply = <&usb_vbus>;
        };
 
        usb-phy@7d000000 {
                status = "okay";
-               dr_mode = "peripheral";
+               dr_mode = "otg";
                nvidia,hssync-start-delay = <0>;
                nvidia,xcvr-lsfslew = <2>;
                nvidia,xcvr-lsrslew = <2>;
index 90db5ff..4259871 100644 (file)
                bluetooth {
                        compatible = "brcm,bcm4330-bt";
 
+                       interrupt-parent = <&gpio>;
+                       interrupts = <TEGRA_GPIO(U, 6) IRQ_TYPE_EDGE_RISING>;
+                       interrupt-names = "host-wakeup";
+
                        max-speed = <4000000>;
 
                        clocks = <&tegra_pmc TEGRA_PMC_CLK_BLINK>;
 
                        shutdown-gpios = <&gpio TEGRA_GPIO(U, 0) GPIO_ACTIVE_HIGH>;
                        device-wakeup-gpios = <&gpio TEGRA_GPIO(U, 1) GPIO_ACTIVE_HIGH>;
-                       host-wakeup-gpios = <&gpio TEGRA_GPIO(U, 6) GPIO_ACTIVE_HIGH>;
                };
        };
 
index eaf4951..ae3df73 100644 (file)
        };
 
        usb@7d000000 {
-               compatible = "nvidia,tegra30-ehci", "usb-ehci";
+               compatible = "nvidia,tegra30-ehci";
                reg = <0x7d000000 0x4000>;
                interrupts = <GIC_SPI 20 IRQ_TYPE_LEVEL_HIGH>;
                phy_type = "utmi";
                compatible = "nvidia,tegra30-usb-phy";
                reg = <0x7d000000 0x4000>,
                      <0x7d000000 0x4000>;
+               interrupts = <GIC_SPI 20 IRQ_TYPE_LEVEL_HIGH>;
                phy_type = "utmi";
                clocks = <&tegra_car TEGRA30_CLK_USBD>,
                         <&tegra_car TEGRA30_CLK_PLL_U>,
                nvidia,hssquelch-level = <2>;
                nvidia,hsdiscon-level = <5>;
                nvidia,has-utmi-pad-registers;
+               nvidia,pmc = <&tegra_pmc 0>;
                status = "disabled";
        };
 
        usb@7d004000 {
-               compatible = "nvidia,tegra30-ehci", "usb-ehci";
+               compatible = "nvidia,tegra30-ehci";
                reg = <0x7d004000 0x4000>;
                interrupts = <GIC_SPI 21 IRQ_TYPE_LEVEL_HIGH>;
                phy_type = "utmi";
                compatible = "nvidia,tegra30-usb-phy";
                reg = <0x7d004000 0x4000>,
                      <0x7d000000 0x4000>;
+               interrupts = <GIC_SPI 21 IRQ_TYPE_LEVEL_HIGH>;
                phy_type = "utmi";
                clocks = <&tegra_car TEGRA30_CLK_USB2>,
                         <&tegra_car TEGRA30_CLK_PLL_U>,
                nvidia,xcvr-hsslew = <32>;
                nvidia,hssquelch-level = <2>;
                nvidia,hsdiscon-level = <5>;
+               nvidia,pmc = <&tegra_pmc 2>;
                status = "disabled";
        };
 
        usb@7d008000 {
-               compatible = "nvidia,tegra30-ehci", "usb-ehci";
+               compatible = "nvidia,tegra30-ehci";
                reg = <0x7d008000 0x4000>;
                interrupts = <GIC_SPI 97 IRQ_TYPE_LEVEL_HIGH>;
                phy_type = "utmi";
                compatible = "nvidia,tegra30-usb-phy";
                reg = <0x7d008000 0x4000>,
                      <0x7d000000 0x4000>;
+               interrupts = <GIC_SPI 97 IRQ_TYPE_LEVEL_HIGH>;
                phy_type = "utmi";
                clocks = <&tegra_car TEGRA30_CLK_USB3>,
                         <&tegra_car TEGRA30_CLK_PLL_U>,
                nvidia,xcvr-hsslew = <32>;
                nvidia,hssquelch-level = <2>;
                nvidia,hsdiscon-level = <5>;
+               nvidia,pmc = <&tegra_pmc 1>;
                status = "disabled";
        };
 
index c577ff4..7ebb0df 100644 (file)
        syscon@27000000 {
                compatible = "arm,versatile-ib2-syscon", "syscon", "simple-mfd";
                reg = <0x27000000 0x4>;
+               ranges = <0x0 0x27000000 0x4>;
+               #address-cells = <1>;
+               #size-cells = <1>;
 
-               led@00.4 {
+               led@0,4 {
                        compatible = "register-bit-led";
+                       reg = <0x00 0x04>;
                        offset = <0x00>;
                        mask = <0x10>;
                        label = "versatile-ib2:0";
index 151c022..79f7cc2 100644 (file)
        core-module@10000000 {
                compatible = "arm,core-module-versatile", "syscon", "simple-mfd";
                reg = <0x10000000 0x200>;
+               ranges = <0x0 0x10000000 0x200>;
+               #address-cells = <1>;
+               #size-cells = <1>;
 
-               led@08.0 {
+               led@8,0 {
                        compatible = "register-bit-led";
+                       reg = <0x08 0x04>;
                        offset = <0x08>;
                        mask = <0x01>;
                        label = "versatile:0";
                        linux,default-trigger = "heartbeat";
                        default-state = "on";
                };
-               led@08.1 {
+               led@8,1 {
                        compatible = "register-bit-led";
+                       reg = <0x08 0x04>;
                        offset = <0x08>;
                        mask = <0x02>;
                        label = "versatile:1";
                        linux,default-trigger = "mmc0";
                        default-state = "off";
                };
-               led@08.2 {
+               led@8,2 {
                        compatible = "register-bit-led";
+                       reg = <0x08 0x04>;
                        offset = <0x08>;
                        mask = <0x04>;
                        label = "versatile:2";
                        linux,default-trigger = "cpu0";
                        default-state = "off";
                };
-               led@08.3 {
+               led@8,3 {
                        compatible = "register-bit-led";
+                       reg = <0x08 0x04>;
                        offset = <0x08>;
                        mask = <0x08>;
                        label = "versatile:3";
                        default-state = "off";
                };
-               led@08.4 {
+               led@8,4 {
                        compatible = "register-bit-led";
+                       reg = <0x08 0x04>;
                        offset = <0x08>;
                        mask = <0x10>;
                        label = "versatile:4";
                        default-state = "off";
                };
-               led@08.5 {
+               led@8,5 {
                        compatible = "register-bit-led";
+                       reg = <0x08 0x04>;
                        offset = <0x08>;
                        mask = <0x20>;
                        label = "versatile:5";
                        default-state = "off";
                };
-               led@08.6 {
+               led@8,6 {
                        compatible = "register-bit-led";
+                       reg = <0x08 0x04>;
                        offset = <0x08>;
                        mask = <0x40>;
                        label = "versatile:6";
                        default-state = "off";
                };
-               led@08.7 {
+               led@8,7 {
                        compatible = "register-bit-led";
+                       reg = <0x08 0x04>;
                        offset = <0x08>;
                        mask = <0x80>;
                        label = "versatile:7";
index 1772ecc..466acc4 100644 (file)
@@ -21,6 +21,16 @@ config ARCH_MSM8X60
        bool "Enable support for MSM8X60"
        select CLKSRC_QCOM
 
+config ARCH_MSM8916
+       bool "Enable support for MSM8916"
+       select HAVE_ARM_ARCH_TIMER
+       help
+         Enable support for the Qualcomm Snapdragon 410 (MSM8916/APQ8016).
+
+         Note that ARM64 is the main supported architecture for MSM8916.
+         The ARM32 option is intended for a few devices with signed firmware
+         that does not allow booting ARM64 kernels.
+
 config ARCH_MSM8960
        bool "Enable support for MSM8960"
        select CLKSRC_QCOM
index 10e9186..578ef36 100644 (file)
@@ -10,7 +10,7 @@
        interrupt-controller;
        #interrupt-cells = <1>;
 
-       ac_power_supply: ac-power-supply {
+       ac_power_supply: ac-power {
                compatible = "x-powers,axp803-ac-power-supply",
                             "x-powers,axp813-ac-power-supply";
                status = "disabled";
                gpio-controller;
                #gpio-cells = <2>;
 
-               gpio0_ldo: gpio0-ldo {
+               gpio0_ldo: gpio0-ldo-pin {
                        pins = "GPIO0";
                        function = "ldo";
                };
 
-               gpio1_ldo: gpio1-ldo {
+               gpio1_ldo: gpio1-ldo-pin {
                        pins = "GPIO1";
                        function = "ldo";
                };
        };
 
-       battery_power_supply: battery-power-supply {
+       battery_power_supply: battery-power {
                compatible = "x-powers,axp803-battery-power-supply",
                             "x-powers,axp813-battery-power-supply";
                status = "disabled";
                };
        };
 
-       usb_power_supply: usb-power-supply {
+       usb_power_supply: usb-power {
                compatible = "x-powers,axp803-usb-power-supply",
                             "x-powers,axp813-usb-power-supply";
                status = "disabled";
index cc321c0..f6d7d7f 100644 (file)
        };
 
        thermal-zones {
-               cpu-thermal-zone {
+               cpu-thermal {
                        polling-delay-passive = <0>;
                        polling-delay = <0>;
                        thermal-sensors = <&ths 0>;
                };
 
-               ddr-thermal-zone {
+               ddr-thermal {
                        polling-delay-passive = <0>;
                        polling-delay = <0>;
                        thermal-sensors = <&ths 2>;
                };
 
-               gpu-thermal-zone {
+               gpu-thermal {
                        polling-delay-passive = <0>;
                        polling-delay = <0>;
                        thermal-sensors = <&ths 1>;
index 578c374..e39db51 100644 (file)
@@ -4,7 +4,7 @@
  */
 
 / {
-       cpu0_opp_table: opp_table0 {
+       cpu0_opp_table: opp-table-cpu {
                compatible = "operating-points-v2";
                opp-shared;
 
index 097a551..c519d9f 100644 (file)
 &spi0 {
        status = "okay";
 
-       spi-flash@0 {
+       flash@0 {
                compatible = "mxicy,mx25l1606e", "jedec,spi-nor";
                reg = <0>;
                spi-max-frequency = <80000000>;
index 7ef96f9..adb0b28 100644 (file)
                stdout-path = "serial0:115200n8";
        };
 
+       hdmi-connector {
+               compatible = "hdmi-connector";
+               type = "c";
+
+               port {
+                       hdmi_con_in: endpoint {
+                               remote-endpoint = <&hdmi_out_con>;
+                       };
+               };
+       };
+
        i2c-csi {
                compatible = "i2c-gpio";
                sda-gpios = <&pio 4 13 GPIO_ACTIVE_HIGH>; /* PE13 */
@@ -77,7 +88,7 @@
                sound-name-prefix = "Speaker Amp";
        };
 
-       vdd_bl: regulator@0 {
+       vdd_bl: regulator {
                compatible = "regulator-fixed";
                regulator-name = "bl-3v3";
                regulator-min-microvolt = <3300000>;
        regulator-name = "vcc-rtc";
 };
 
+&simplefb_hdmi {
+       vcc-hdmi-supply = <&reg_dldo1>;
+};
+
+&hdmi {
+       hvcc-supply = <&reg_dldo1>;
+       status = "okay";
+};
+
+&hdmi_out {
+       hdmi_out_con: endpoint {
+               remote-endpoint = <&hdmi_con_in>;
+       };
+};
+
 &sound {
        status = "okay";
        simple-audio-card,aux-devs = <&codec_analog>, <&speaker_amp>;
index 45e1abd..aef571a 100644 (file)
                        #size-cells = <0>;
 
                        port@0 {
+                               reg = <0>;
+
                                anx6345_in: endpoint {
                                        remote-endpoint = <&tcon0_out_anx6345>;
                                };
                reg = <0x3a3>;
                interrupt-parent = <&r_intc>;
                interrupts = <GIC_SPI 32 IRQ_TYPE_LEVEL_LOW>;
-               wakeup-source;
        };
 };
 
index 6ddb717..5ba3790 100644 (file)
                status = "disabled";
        };
 
+       gpu_opp_table: opp-table-gpu {
+               compatible = "operating-points-v2";
+
+               opp-120000000 {
+                       opp-hz = /bits/ 64 <120000000>;
+               };
+
+               opp-312000000 {
+                       opp-hz = /bits/ 64 <312000000>;
+               };
+
+               opp-432000000 {
+                       opp-hz = /bits/ 64 <432000000>;
+               };
+       };
+
        osc24M: osc24M_clk {
                #clock-cells = <0>;
                compatible = "fixed-clock";
                        clocks = <&ccu CLK_BUS_GPU>, <&ccu CLK_GPU>;
                        clock-names = "bus", "core";
                        resets = <&ccu RST_BUS_GPU>;
+                       operating-points-v2 = <&gpu_opp_table>;
                };
 
                gic: interrupt-controller@1c81000 {
index b265720..1afad8b 100644 (file)
@@ -2,7 +2,7 @@
 // Copyright (C) 2020 Chen-Yu Tsai <wens@csie.org>
 
 / {
-       cpu_opp_table: cpu-opp-table {
+       cpu_opp_table: opp-table-cpu {
                compatible = "operating-points-v2";
                opp-shared;
 
index 55bcdf8..55b3695 100644 (file)
        status = "okay";
 
        eeprom@51 {
-               compatible = "microchip,24c02";
+               compatible = "microchip,24c02", "atmel,24c02";
                reg = <0x51>;
                pagesize = <16>;
+               read-only;
+               #address-cells = <1>;
+               #size-cells = <1>;
+
+               eth_mac1: mac-address@fa {
+                       reg = <0xfa 0x06>;
+               };
        };
 };
 
index 578a63d..9988e87 100644 (file)
                        };
                };
 
-               gpu_thermal {
+               gpu-thermal {
                        polling-delay-passive = <0>;
                        polling-delay = <0>;
                        thermal-sensors = <&ths 1>;
index 8c6e853..0baf0f8 100644 (file)
@@ -3,7 +3,7 @@
 // Copyright (C) 2020 Clément Péron <peron.clem@gmail.com>
 
 / {
-       cpu_opp_table: cpu-opp-table {
+       cpu_opp_table: opp-table-cpu {
                compatible = "allwinner,sun50i-h6-operating-points";
                nvmem-cells = <&cpu_speed_grade>;
                opp-shared;
index 30d396e..46ed529 100644 (file)
                        display_clocks: clock@0 {
                                compatible = "allwinner,sun50i-h6-de3-clk";
                                reg = <0x0 0x10000>;
-                               clocks = <&ccu CLK_DE>,
-                                        <&ccu CLK_BUS_DE>;
-                               clock-names = "mod",
-                                             "bus";
+                               clocks = <&ccu CLK_BUS_DE>,
+                                        <&ccu CLK_DE>;
+                               clock-names = "bus",
+                                             "mod";
                                resets = <&ccu RST_BUS_DE>;
                                #clock-cells = <1>;
                                #reset-cells = <1>;
index faa0a79..5148cd9 100644 (file)
@@ -1,5 +1,7 @@
 # SPDX-License-Identifier: GPL-2.0
 dtb-$(CONFIG_ARCH_MESON) += meson-axg-s400.dtb
+dtb-$(CONFIG_ARCH_MESON) += meson-axg-jethome-jethub-j100.dtb
+dtb-$(CONFIG_ARCH_MESON) += meson-g12a-radxa-zero.dtb
 dtb-$(CONFIG_ARCH_MESON) += meson-g12a-sei510.dtb
 dtb-$(CONFIG_ARCH_MESON) += meson-g12a-u200.dtb
 dtb-$(CONFIG_ARCH_MESON) += meson-g12a-x96-max.dtb
@@ -38,6 +40,7 @@ dtb-$(CONFIG_ARCH_MESON) += meson-gxl-s805x-p241.dtb
 dtb-$(CONFIG_ARCH_MESON) += meson-gxl-s905w-p281.dtb
 dtb-$(CONFIG_ARCH_MESON) += meson-gxl-s905w-tx3-mini.dtb
 dtb-$(CONFIG_ARCH_MESON) += meson-gxl-s905d-libretech-pc.dtb
+dtb-$(CONFIG_ARCH_MESON) += meson-gxl-s905w-jethome-jethub-j80.dtb
 dtb-$(CONFIG_ARCH_MESON) += meson-gxm-khadas-vim2.dtb
 dtb-$(CONFIG_ARCH_MESON) += meson-gxm-mecool-kiii-pro.dtb
 dtb-$(CONFIG_ARCH_MESON) += meson-gxm-minix-neo-u9h.dtb
diff --git a/arch/arm64/boot/dts/amlogic/meson-axg-jethome-jethub-j100.dts b/arch/arm64/boot/dts/amlogic/meson-axg-jethome-jethub-j100.dts
new file mode 100644 (file)
index 0000000..52ebe37
--- /dev/null
@@ -0,0 +1,362 @@
+// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
+/*
+ * Copyright (c) 2021 Vyacheslav Bocharov <adeep@lexina.in>
+ * Copyright (c) 2020 JetHome
+ * Author: Aleksandr Kazantsev <ak@tvip.ru>
+ * Author: Alexey Shevelkin <ash@tvip.ru>
+ * Author: Vyacheslav Bocharov <adeep@lexina.in>
+ */
+
+/dts-v1/;
+
+#include "meson-axg.dtsi"
+#include <dt-bindings/input/input.h>
+#include <dt-bindings/thermal/thermal.h>
+
+/ {
+       compatible = "jethome,jethub-j100", "amlogic,a113d", "amlogic,meson-axg";
+       model = "JetHome JetHub J100";
+       aliases {
+               serial0 = &uart_AO;   /* Console */
+               serial1 = &uart_AO_B; /* External UART (Wireless Module) */
+               ethernet0 = &ethmac;
+       };
+
+       chosen {
+               stdout-path = "serial0:115200n8";
+       };
+
+       /* 1024MB RAM */
+       memory@0 {
+               device_type = "memory";
+               reg = <0x0 0x0 0x0 0x40000000>;
+       };
+
+       reserved-memory {
+               linux,cma {
+                       size = <0x0 0x400000>;
+               };
+       };
+
+       emmc_pwrseq: emmc-pwrseq {
+               compatible = "mmc-pwrseq-emmc";
+               reset-gpios = <&gpio BOOT_9 GPIO_ACTIVE_LOW>;
+       };
+
+       vcc_3v3: regulator-vcc_3v3 {
+               compatible = "regulator-fixed";
+               regulator-name = "VCC_3V3";
+               regulator-min-microvolt = <3300000>;
+               regulator-max-microvolt = <3300000>;
+               vin-supply = <&vddao_3v3>;
+               regulator-always-on;
+       };
+
+       vcc_5v: regulator-vcc_5v {
+               compatible = "regulator-fixed";
+               regulator-name = "VCC5V";
+               regulator-min-microvolt = <5000000>;
+               regulator-max-microvolt = <5000000>;
+               regulator-always-on;
+       };
+
+       vddao_3v3: regulator-vddao_3v3 {
+               compatible = "regulator-fixed";
+               regulator-name = "VDDAO_3V3";
+               regulator-min-microvolt = <3300000>;
+               regulator-max-microvolt = <3300000>;
+               vin-supply = <&vcc_5v>;
+               regulator-always-on;
+       };
+
+       vddio_ao18: regulator-vddio_ao18 {
+               compatible = "regulator-fixed";
+               regulator-name = "VDDIO_AO18";
+               regulator-min-microvolt = <1800000>;
+               regulator-max-microvolt = <1800000>;
+               vin-supply = <&vddao_3v3>;
+               regulator-always-on;
+       };
+
+       vddio_boot: regulator-vddio_boot {
+               compatible = "regulator-fixed";
+               regulator-name = "VDDIO_BOOT";
+               regulator-min-microvolt = <1800000>;
+               regulator-max-microvolt = <1800000>;
+               vin-supply = <&vddao_3v3>;
+               regulator-always-on;
+       };
+
+       usb_pwr: regulator-usb_pwr {
+               compatible = "regulator-fixed";
+               regulator-name = "USB_PWR";
+               regulator-min-microvolt = <5000000>;
+               regulator-max-microvolt = <5000000>;
+               vin-supply = <&vcc_5v>;
+               regulator-always-on;
+       };
+
+       sdio_pwrseq: sdio-pwrseq {
+               compatible = "mmc-pwrseq-simple";
+               reset-gpios = <&gpio GPIOX_7 GPIO_ACTIVE_LOW>;
+               clocks = <&wifi32k>;
+               clock-names = "ext_clock";
+       };
+
+       wifi32k: wifi32k {
+               compatible = "pwm-clock";
+               #clock-cells = <0>;
+               clock-frequency = <32768>;
+               pwms = <&pwm_ab 0 30518 0>; /* PWM_A at 32.768KHz */
+       };
+
+       thermal-zones {
+               cpu_thermal: cpu-thermal {
+                       polling-delay-passive = <250>;
+                       polling-delay = <1000>;
+                       thermal-sensors = <&scpi_sensors 0>;
+                       trips {
+                               cpu_passive: cpu-passive {
+                                       temperature = <70000>; /* millicelsius */
+                                       hysteresis = <2000>; /* millicelsius */
+                                       type = "passive";
+                               };
+
+                               cpu_hot: cpu-hot {
+                                       temperature = <80000>; /* millicelsius */
+                                       hysteresis = <2000>; /* millicelsius */
+                                       type = "hot";
+                               };
+
+                               cpu_critical: cpu-critical {
+                                       temperature = <100000>; /* millicelsius */
+                                       hysteresis = <2000>; /* millicelsius */
+                                       type = "critical";
+                               };
+                       };
+               };
+
+               cpu_cooling_maps: cooling-maps {
+                       map0 {
+                               trip = <&cpu_passive>;
+                               cooling-device = <&cpu0 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
+                                               <&cpu1 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
+                                               <&cpu2 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
+                                               <&cpu3 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>;
+                       };
+
+                       map1 {
+                               trip = <&cpu_hot>;
+                               cooling-device = <&cpu0 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
+                                               <&cpu1 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
+                                               <&cpu2 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
+                                               <&cpu3 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>;
+                       };
+               };
+       };
+
+       onewire {
+               compatible = "w1-gpio";
+               gpios = <&gpio GPIOA_14 GPIO_ACTIVE_HIGH>;
+               #gpio-cells = <1>;
+       };
+};
+
+&efuse {
+       sn: sn@32 {
+               reg = <0x32 0x20>;
+       };
+
+       eth_mac: eth_mac@0 {
+               reg = <0x0 0x6>;
+       };
+
+       bt_mac: bt_mac@6 {
+               reg = <0x6 0x6>;
+       };
+
+       wifi_mac: wifi_mac@c {
+               reg = <0xc 0x6>;
+       };
+
+       bid: bid@12 {
+               reg = <0x12 0x20>;
+       };
+};
+
+&ethmac {
+       status = "okay";
+       pinctrl-0 = <&eth_rmii_x_pins>;
+       pinctrl-names = "default";
+       phy-handle = <&eth_phy0>;
+       phy-mode = "rmii";
+
+       mdio {
+               compatible = "snps,dwmac-mdio";
+               #address-cells = <1>;
+               #size-cells = <0>;
+
+               /* ICPlus IP101A/G Ethernet PHY (vendor_id=0x0243, model_id=0x0c54) */
+               eth_phy0: ethernet-phy@0 {
+                       /* compatible = "ethernet-phy-id0243.0c54";*/
+                       max-speed = <100>;
+                       reg = <0>;
+
+                       reset-assert-us = <10000>;
+                       reset-deassert-us = <10000>;
+                       reset-gpios = <&gpio GPIOZ_5 GPIO_ACTIVE_LOW>;
+               };
+       };
+};
+
+/* Internal I2C bus (on CPU module) */
+&i2c1 {
+       status = "okay";
+       pinctrl-0 = <&i2c1_z_pins>;
+       pinctrl-names = "default";
+
+       /* RTC */
+       pcf8563: pcf8563@51 {
+               compatible = "nxp,pcf8563";
+               reg = <0x51>;
+               status = "okay";
+       };
+};
+
+/* Peripheral I2C bus (on motherboard) */
+&i2c_AO {
+       status = "okay";
+       pinctrl-0 = <&i2c_ao_sck_10_pins>, <&i2c_ao_sda_11_pins>;
+       pinctrl-names = "default";
+};
+
+&pwm_ab {
+       status = "okay";
+       pinctrl-0 = <&pwm_a_x20_pins>;
+       pinctrl-names = "default";
+};
+
+/* wifi module */
+&sd_emmc_b {
+       status = "okay";
+       #address-cells = <1>;
+       #size-cells = <0>;
+
+       pinctrl-0 = <&sdio_pins>;
+       pinctrl-1 = <&sdio_clk_gate_pins>;
+       pinctrl-names = "default", "clk-gate";
+
+       bus-width = <4>;
+       cap-sd-highspeed;
+       sd-uhs-sdr104;
+       max-frequency = <200000000>;
+       non-removable;
+       disable-wp;
+
+       mmc-pwrseq = <&sdio_pwrseq>;
+
+       vmmc-supply = <&vddao_3v3>;
+       vqmmc-supply = <&vddio_boot>;
+
+       brcmf: wifi@1 {
+               reg = <1>;
+               compatible = "brcm,bcm4329-fmac";
+       };
+};
+
+/* emmc storage */
+&sd_emmc_c {
+       status = "okay";
+       pinctrl-0 = <&emmc_pins>, <&emmc_ds_pins>;
+       pinctrl-1 = <&emmc_clk_gate_pins>;
+       pinctrl-names = "default", "clk-gate";
+
+       bus-width = <8>;
+       cap-mmc-highspeed;
+       max-frequency = <200000000>;
+       non-removable;
+       disable-wp;
+       mmc-ddr-1_8v;
+       mmc-hs200-1_8v;
+
+       mmc-pwrseq = <&emmc_pwrseq>;
+
+       vmmc-supply = <&vcc_3v3>;
+       vqmmc-supply = <&vddio_boot>;
+};
+
+/* UART Bluetooth */
+&uart_B {
+       status = "okay";
+       pinctrl-0 = <&uart_b_z_pins>, <&uart_b_z_cts_rts_pins>;
+       pinctrl-names = "default";
+       uart-has-rtscts;
+
+       bluetooth {
+               compatible = "brcm,bcm43438-bt";
+               shutdown-gpios = <&gpio GPIOZ_7 GPIO_ACTIVE_HIGH>;
+       };
+};
+
+/* UART Console */
+&uart_AO {
+       status = "okay";
+       pinctrl-0 = <&uart_ao_a_pins>;
+       pinctrl-names = "default";
+};
+
+/* UART Wireless module */
+&uart_AO_B {
+       status = "okay";
+       pinctrl-0 = <&uart_ao_b_pins>;
+       pinctrl-names = "default";
+};
+
+&usb {
+       status = "okay";
+       phy-supply = <&usb_pwr>;
+};
+
+&spicc1 {
+       status = "okay";
+       pinctrl-0 = <&spi1_x_pins>, <&spi1_ss0_x_pins>;
+       pinctrl-names = "default";
+};
+
+&gpio {
+       gpio-line-names =
+               "", "", "", "", "", // 0 - 4
+               "", "", "", "", "", // 5 - 9
+               "UserButton", "", "", "", "", // 10 - 14
+               "", "", "", "", "", // 15 - 19
+               "", "", "", "", "", // 20 - 24
+               "", "LedRed", "LedGreen", "Output3", "Output2", // 25 - 29
+               "Output1", "", "", "", "", // 30 - 34
+               "", "ZigBeeBOOT", "", "", "", // 35 - 39
+               "1Wire", "ZigBeeRESET", "", "Input4", "Input3", // 40 - 44
+               "Input2", "Input1", "", "", "", // 45 - 49
+               "", "", "", "", "", // 50 - 54
+               "", "", "", "", "", // 55 - 59
+               "", "", "", "", "", // 60 - 64
+               "", "", "", "", "", // 65 - 69
+               "", "", "", "", "", // 70 - 74
+               "", "", "", "", "", // 75 - 79
+               "", "", "", "", "", // 80 - 84
+               "", ""; // 85-86
+};
+
+&cpu0 {
+       #cooling-cells = <2>;
+};
+
+&cpu1 {
+       #cooling-cells = <2>;
+};
+
+&cpu2 {
+       #cooling-cells = <2>;
+};
+
+&cpu3 {
+       #cooling-cells = <2>;
+};
diff --git a/arch/arm64/boot/dts/amlogic/meson-g12a-radxa-zero.dts b/arch/arm64/boot/dts/amlogic/meson-g12a-radxa-zero.dts
new file mode 100644 (file)
index 0000000..e3bb6df
--- /dev/null
@@ -0,0 +1,405 @@
+// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
+/*
+ * Copyright (c) 2018 BayLibre SAS. All rights reserved.
+ */
+
+/dts-v1/;
+
+#include "meson-g12a.dtsi"
+#include <dt-bindings/gpio/meson-g12a-gpio.h>
+#include <dt-bindings/sound/meson-g12a-tohdmitx.h>
+
+/ {
+       compatible = "radxa,zero", "amlogic,g12a";
+       model = "Radxa Zero";
+
+       aliases {
+               serial0 = &uart_AO;
+       };
+
+       chosen {
+               stdout-path = "serial0:115200n8";
+       };
+
+       memory@0 {
+               device_type = "memory";
+               reg = <0x0 0x0 0x0 0x40000000>;
+       };
+
+       cvbs-connector {
+               status = "disabled";
+               compatible = "composite-video-connector";
+
+               port {
+                       cvbs_connector_in: endpoint {
+                               remote-endpoint = <&cvbs_vdac_out>;
+                       };
+               };
+       };
+
+       hdmi-connector {
+               compatible = "hdmi-connector";
+               type = "a";
+
+               port {
+                       hdmi_connector_in: endpoint {
+                               remote-endpoint = <&hdmi_tx_tmds_out>;
+                       };
+               };
+       };
+
+       emmc_pwrseq: emmc-pwrseq {
+               compatible = "mmc-pwrseq-emmc";
+               reset-gpios = <&gpio BOOT_12 GPIO_ACTIVE_LOW>;
+       };
+
+       sdio_pwrseq: sdio-pwrseq {
+               compatible = "mmc-pwrseq-simple";
+               reset-gpios = <&gpio GPIOX_6 GPIO_ACTIVE_LOW>;
+               clocks = <&wifi32k>;
+               clock-names = "ext_clock";
+       };
+
+       ao_5v: regulator-ao_5v {
+               compatible = "regulator-fixed";
+               regulator-name = "AO_5V";
+               regulator-min-microvolt = <5000000>;
+               regulator-max-microvolt = <5000000>;
+               regulator-always-on;
+       };
+
+       vcc_1v8: regulator-vcc_1v8 {
+               compatible = "regulator-fixed";
+               regulator-name = "VCC_1V8";
+               regulator-min-microvolt = <1800000>;
+               regulator-max-microvolt = <1800000>;
+               vin-supply = <&vcc_3v3>;
+               regulator-always-on;
+       };
+
+       vcc_3v3: regulator-vcc_3v3 {
+               compatible = "regulator-fixed";
+               regulator-name = "VCC_3V3";
+               regulator-min-microvolt = <3300000>;
+               regulator-max-microvolt = <3300000>;
+               vin-supply = <&vddao_3v3>;
+               regulator-always-on;
+       };
+
+       hdmi_pw: regulator-hdmi_pw {
+               compatible = "regulator-fixed";
+               regulator-name = "HDMI_PW";
+               regulator-min-microvolt = <5000000>;
+               regulator-max-microvolt = <5000000>;
+               vin-supply = <&ao_5v>;
+               regulator-always-on;
+       };
+
+       vddao_1v8: regulator-vddao_1v8 {
+               compatible = "regulator-fixed";
+               regulator-name = "VDDAO_1V8";
+               regulator-min-microvolt = <1800000>;
+               regulator-max-microvolt = <1800000>;
+               vin-supply = <&vddao_3v3>;
+               regulator-always-on;
+       };
+
+       vddao_3v3: regulator-vddao_3v3 {
+               compatible = "regulator-fixed";
+               regulator-name = "VDDAO_3V3";
+               regulator-min-microvolt = <3300000>;
+               regulator-max-microvolt = <3300000>;
+               vin-supply = <&ao_5v>;
+               regulator-always-on;
+       };
+
+       vddcpu: regulator-vddcpu {
+               compatible = "pwm-regulator";
+
+               regulator-name = "VDDCPU";
+               regulator-min-microvolt = <721000>;
+               regulator-max-microvolt = <1022000>;
+
+               vin-supply = <&ao_5v>;
+
+               pwms = <&pwm_AO_cd 1 1250 0>;
+               pwm-dutycycle-range = <100 0>;
+
+               regulator-boot-on;
+               regulator-always-on;
+       };
+
+       sound {
+               compatible = "amlogic,axg-sound-card";
+               model = "RADXA-ZERO";
+               audio-aux-devs = <&tdmout_b>;
+               audio-routing = "TDMOUT_B IN 0", "FRDDR_A OUT 1",
+                               "TDMOUT_B IN 1", "FRDDR_B OUT 1",
+                               "TDMOUT_B IN 2", "FRDDR_C OUT 1",
+                               "TDM_B Playback", "TDMOUT_B OUT";
+
+               assigned-clocks = <&clkc CLKID_MPLL2>,
+                                 <&clkc CLKID_MPLL0>,
+                                 <&clkc CLKID_MPLL1>;
+               assigned-clock-parents = <0>, <0>, <0>;
+               assigned-clock-rates = <294912000>,
+                                      <270950400>,
+                                      <393216000>;
+               status = "okay";
+
+               dai-link-0 {
+                       sound-dai = <&frddr_a>;
+               };
+
+               dai-link-1 {
+                       sound-dai = <&frddr_b>;
+               };
+
+               dai-link-2 {
+                       sound-dai = <&frddr_c>;
+               };
+
+               /* 8ch hdmi interface */
+               dai-link-3 {
+                       sound-dai = <&tdmif_b>;
+                       dai-format = "i2s";
+                       dai-tdm-slot-tx-mask-0 = <1 1>;
+                       dai-tdm-slot-tx-mask-1 = <1 1>;
+                       dai-tdm-slot-tx-mask-2 = <1 1>;
+                       dai-tdm-slot-tx-mask-3 = <1 1>;
+                       mclk-fs = <256>;
+
+                       codec {
+                               sound-dai = <&tohdmitx TOHDMITX_I2S_IN_B>;
+                       };
+               };
+
+               dai-link-4 {
+                       sound-dai = <&tohdmitx TOHDMITX_I2S_OUT>;
+
+                       codec {
+                               sound-dai = <&hdmi_tx>;
+                       };
+               };
+       };
+
+       wifi32k: wifi32k {
+               compatible = "pwm-clock";
+               #clock-cells = <0>;
+               clock-frequency = <32768>;
+               pwms = <&pwm_ef 0 30518 0>; /* PWM_E at 32.768KHz */
+       };
+};
+
+&arb {
+       status = "okay";
+};
+
+&cec_AO {
+       pinctrl-0 = <&cec_ao_a_h_pins>;
+       pinctrl-names = "default";
+       status = "disabled";
+       hdmi-phandle = <&hdmi_tx>;
+};
+
+&cecb_AO {
+       pinctrl-0 = <&cec_ao_b_h_pins>;
+       pinctrl-names = "default";
+       status = "okay";
+       hdmi-phandle = <&hdmi_tx>;
+};
+
+&clkc_audio {
+       status = "okay";
+};
+
+&cpu0 {
+       cpu-supply = <&vddcpu>;
+       operating-points-v2 = <&cpu_opp_table>;
+       clocks = <&clkc CLKID_CPU_CLK>;
+       clock-latency = <50000>;
+};
+
+&cpu1 {
+       cpu-supply = <&vddcpu>;
+       operating-points-v2 = <&cpu_opp_table>;
+       clocks = <&clkc CLKID_CPU_CLK>;
+       clock-latency = <50000>;
+};
+
+&cpu2 {
+       cpu-supply = <&vddcpu>;
+       operating-points-v2 = <&cpu_opp_table>;
+       clocks = <&clkc CLKID_CPU_CLK>;
+       clock-latency = <50000>;
+};
+
+&cpu3 {
+       cpu-supply = <&vddcpu>;
+       operating-points-v2 = <&cpu_opp_table>;
+       clocks = <&clkc CLKID_CPU_CLK>;
+       clock-latency = <50000>;
+};
+
+&cvbs_vdac_port {
+       cvbs_vdac_out: endpoint {
+               remote-endpoint = <&cvbs_connector_in>;
+       };
+};
+
+&frddr_a {
+       status = "okay";
+};
+
+&frddr_b {
+       status = "okay";
+};
+
+&frddr_c {
+       status = "okay";
+};
+
+&hdmi_tx {
+       status = "okay";
+       pinctrl-0 = <&hdmitx_hpd_pins>, <&hdmitx_ddc_pins>;
+       pinctrl-names = "default";
+       hdmi-supply = <&hdmi_pw>;
+};
+
+&hdmi_tx_tmds_port {
+       hdmi_tx_tmds_out: endpoint {
+               remote-endpoint = <&hdmi_connector_in>;
+       };
+};
+
+&ir {
+       status = "disabled";
+       pinctrl-0 = <&remote_input_ao_pins>;
+       pinctrl-names = "default";
+};
+
+&pwm_AO_cd {
+       pinctrl-0 = <&pwm_ao_d_e_pins>;
+       pinctrl-names = "default";
+       clocks = <&xtal>;
+       clock-names = "clkin1";
+       status = "okay";
+};
+
+&pwm_ef {
+       status = "okay";
+       pinctrl-0 = <&pwm_e_pins>;
+       pinctrl-names = "default";
+       clocks = <&xtal>;
+       clock-names = "clkin0";
+};
+
+&saradc {
+       status = "okay";
+       vref-supply = <&vddao_1v8>;
+};
+
+/* SDIO */
+&sd_emmc_a {
+       status = "okay";
+       pinctrl-0 = <&sdio_pins>;
+       pinctrl-1 = <&sdio_clk_gate_pins>;
+       pinctrl-names = "default", "clk-gate";
+       #address-cells = <1>;
+       #size-cells = <0>;
+
+       bus-width = <4>;
+       cap-sd-highspeed;
+       sd-uhs-sdr50;
+       max-frequency = <100000000>;
+
+       non-removable;
+       disable-wp;
+
+       /* WiFi firmware requires power to be kept while in suspend */
+       keep-power-in-suspend;
+
+       mmc-pwrseq = <&sdio_pwrseq>;
+
+       vmmc-supply = <&vddao_3v3>;
+       vqmmc-supply = <&vddao_1v8>;
+
+       brcmf: wifi@1 {
+               reg = <1>;
+               compatible = "brcm,bcm4329-fmac";
+       };
+};
+
+/* SD card */
+&sd_emmc_b {
+       status = "okay";
+       pinctrl-0 = <&sdcard_c_pins>;
+       pinctrl-1 = <&sdcard_clk_gate_c_pins>;
+       pinctrl-names = "default", "clk-gate";
+
+       bus-width = <4>;
+       cap-sd-highspeed;
+       max-frequency = <100000000>;
+       disable-wp;
+
+       cd-gpios = <&gpio GPIOC_6 GPIO_ACTIVE_LOW>;
+       vmmc-supply = <&vddao_3v3>;
+       vqmmc-supply = <&vddao_3v3>;
+};
+
+/* eMMC */
+&sd_emmc_c {
+       status = "okay";
+       pinctrl-0 = <&emmc_ctrl_pins>, <&emmc_data_8b_pins>, <&emmc_ds_pins>;
+       pinctrl-1 = <&emmc_clk_gate_pins>;
+       pinctrl-names = "default", "clk-gate";
+
+       bus-width = <8>;
+       cap-mmc-highspeed;
+       mmc-ddr-1_8v;
+       mmc-hs200-1_8v;
+       max-frequency = <200000000>;
+       disable-wp;
+
+       mmc-pwrseq = <&emmc_pwrseq>;
+       vmmc-supply = <&vcc_3v3>;
+       vqmmc-supply = <&vcc_1v8>;
+};
+
+&tdmif_b {
+       status = "okay";
+};
+
+&tdmout_b {
+       status = "okay";
+};
+
+&tohdmitx {
+       status = "okay";
+};
+
+&uart_A {
+       status = "okay";
+       pinctrl-0 = <&uart_a_pins>, <&uart_a_cts_rts_pins>;
+       pinctrl-names = "default";
+       uart-has-rtscts;
+
+       bluetooth {
+               compatible = "brcm,bcm43438-bt";
+               shutdown-gpios = <&gpio GPIOX_17 GPIO_ACTIVE_HIGH>;
+               max-speed = <2000000>;
+               clocks = <&wifi32k>;
+               clock-names = "lpo";
+       };
+};
+
+&uart_AO {
+       status = "okay";
+       pinctrl-0 = <&uart_ao_a_pins>;
+       pinctrl-names = "default";
+};
+
+&usb {
+       status = "okay";
+       dr_mode = "host";
+};
index 81269cc..d8838dd 100644 (file)
                regulator-min-microvolt = <721000>;
                regulator-max-microvolt = <1022000>;
 
-               vin-supply = <&dc_in>;
+               pwm-supply = <&dc_in>;
 
                pwms = <&pwm_AO_cd 1 1250 0>;
                pwm-dutycycle-range = <100 0>;
index a26bfe7..4b5d11e 100644 (file)
                regulator-min-microvolt = <721000>;
                regulator-max-microvolt = <1022000>;
 
-               vin-supply = <&main_12v>;
+               pwm-supply = <&main_12v>;
 
                pwms = <&pwm_AO_cd 1 1250 0>;
                pwm-dutycycle-range = <100 0>;
index 579f3d0..b4e8619 100644 (file)
                regulator-min-microvolt = <721000>;
                regulator-max-microvolt = <1022000>;
 
-               vin-supply = <&dc_in>;
+               pwm-supply = <&dc_in>;
 
                pwms = <&pwm_AO_cd 1 1250 0>;
                pwm-dutycycle-range = <100 0>;
index f42cf4b..16dd409 100644 (file)
@@ -18,7 +18,7 @@
                regulator-min-microvolt = <690000>;
                regulator-max-microvolt = <1050000>;
 
-               vin-supply = <&dc_in>;
+               pwm-supply = <&dc_in>;
 
                pwms = <&pwm_ab 0 1250 0>;
                pwm-dutycycle-range = <100 0>;
@@ -37,7 +37,7 @@
                regulator-min-microvolt = <690000>;
                regulator-max-microvolt = <1050000>;
 
-               vin-supply = <&vsys_3v3>;
+               pwm-supply = <&vsys_3v3>;
 
                pwms = <&pwm_AO_cd 1 1250 0>;
                pwm-dutycycle-range = <100 0>;
index 344573e..e8a00a2 100644 (file)
@@ -99,6 +99,8 @@
                regulator-max-microvolt = <5000000>;
                regulator-always-on;
                vin-supply = <&main_12v>;
+               gpio = <&gpio GPIOH_8 GPIO_OPEN_DRAIN>;
+               enable-active-high;
        };
 
        vcc_1v8: regulator-vcc_1v8 {
                regulator-min-microvolt = <721000>;
                regulator-max-microvolt = <1022000>;
 
-               vin-supply = <&main_12v>;
+               pwm-supply = <&main_12v>;
 
                pwms = <&pwm_ab 0 1250 0>;
                pwm-dutycycle-range = <100 0>;
                regulator-min-microvolt = <721000>;
                regulator-max-microvolt = <1022000>;
 
-               vin-supply = <&main_12v>;
+               pwm-supply = <&main_12v>;
 
                pwms = <&pwm_AO_cd 1 1250 0>;
                pwm-dutycycle-range = <100 0>;
index feb0885..b40d2c1 100644 (file)
@@ -96,7 +96,7 @@
                regulator-min-microvolt = <721000>;
                regulator-max-microvolt = <1022000>;
 
-               vin-supply = <&main_12v>;
+               pwm-supply = <&main_12v>;
 
                pwms = <&pwm_ab 0 1250 0>;
                pwm-dutycycle-range = <100 0>;
                regulator-min-microvolt = <721000>;
                regulator-max-microvolt = <1022000>;
 
-               vin-supply = <&main_12v>;
+               pwm-supply = <&main_12v>;
 
                pwms = <&pwm_AO_cd 1 1250 0>;
                pwm-dutycycle-range = <100 0>;
diff --git a/arch/arm64/boot/dts/amlogic/meson-gxl-s905w-jethome-jethub-j80.dts b/arch/arm64/boot/dts/amlogic/meson-gxl-s905w-jethome-jethub-j80.dts
new file mode 100644 (file)
index 0000000..6eafb90
--- /dev/null
@@ -0,0 +1,241 @@
+// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
+/*
+ * Copyright (c) 2021 Vyacheslav Bocharov <adeep@lexina.in>
+ * Copyright (c) 2020 JetHome
+ * Author: Aleksandr Kazantsev <ak@tvip.ru>
+ * Author: Alexey Shevelkin <ash@tvip.ru>
+ * Author: Vyacheslav Bocharov <adeep@lexina.in>
+ */
+
+/dts-v1/;
+
+#include "meson-gxl.dtsi"
+
+/ {
+       compatible = "jethome,jethub-j80", "amlogic,s905w", "amlogic,meson-gxl";
+       model = "JetHome JetHub J80";
+       memory@0 {
+               device_type = "memory";
+               reg = <0x0 0x0 0x0 0x40000000>;
+       };
+
+       reserved-memory {
+               linux,cma {
+                       size = <0x0 0x1000000>;
+               };
+       };
+
+       aliases {
+               serial0 = &uart_AO;   /* Console */
+               serial1 = &uart_A;    /* Bluetooth */
+               serial2 = &uart_AO_B; /* Wireless module 1 */
+               serial3 = &uart_C;    /* Wireless module 2 */
+               ethernet0 = &ethmac;
+       };
+
+       chosen {
+               stdout-path = "serial0:115200n8";
+       };
+
+       vddio_ao18: regulator-vddio_ao18 {
+               compatible = "regulator-fixed";
+               regulator-name = "VDDIO_AO18";
+               regulator-min-microvolt = <1800000>;
+               regulator-max-microvolt = <1800000>;
+       };
+
+       vddio_boot: regulator-vddio_boot {
+               compatible = "regulator-fixed";
+               regulator-name = "VDDIO_BOOT";
+               regulator-min-microvolt = <1800000>;
+               regulator-max-microvolt = <1800000>;
+       };
+
+       vddao_3v3: regulator-vddao_3v3 {
+               compatible = "regulator-fixed";
+               regulator-name = "VDDAO_3V3";
+               regulator-min-microvolt = <3300000>;
+               regulator-max-microvolt = <3300000>;
+       };
+
+       vcc_3v3: regulator-vcc_3v3 {
+               compatible = "regulator-fixed";
+               regulator-name = "VCC_3V3";
+               regulator-min-microvolt = <3300000>;
+               regulator-max-microvolt = <3300000>;
+       };
+
+       emmc_pwrseq: emmc-pwrseq {
+               compatible = "mmc-pwrseq-emmc";
+               reset-gpios = <&gpio BOOT_9 GPIO_ACTIVE_LOW>;
+       };
+
+       wifi32k: wifi32k {
+               compatible = "pwm-clock";
+               #clock-cells = <0>;
+               clock-frequency = <32768>;
+               pwms = <&pwm_ef 0 30518 0>; /* PWM_E at 32.768KHz */
+       };
+
+       sdio_pwrseq: sdio-pwrseq {
+               compatible = "mmc-pwrseq-simple";
+               reset-gpios = <&gpio GPIOX_6 GPIO_ACTIVE_LOW>;
+               clocks = <&wifi32k>;
+               clock-names = "ext_clock";
+       };
+};
+
+&efuse {
+       bt_mac: bt_mac@6 {
+               reg = <0x6 0x6>;
+       };
+
+       wifi_mac: wifi_mac@C {
+               reg = <0xc 0x6>;
+       };
+};
+
+&sn {
+       reg = <0x32 0x20>;
+};
+
+&eth_mac {
+       reg = <0x0 0x6>;
+};
+
+&bid {
+       reg = <0x12 0x20>;
+};
+
+&usb {
+       status = "okay";
+       dr_mode = "host";
+};
+
+&pwm_ef {
+       status = "okay";
+       pinctrl-0 = <&pwm_e_pins>;
+       pinctrl-names = "default";
+       clocks = <&clkc CLKID_FCLK_DIV4>;
+       clock-names = "clkin0";
+};
+
+&saradc {
+       status = "okay";
+       vref-supply = <&vddio_ao18>;
+};
+
+/* Wireless SDIO Module */
+&sd_emmc_a {
+       status = "okay";
+       pinctrl-0 = <&sdio_pins>;
+       pinctrl-1 = <&sdio_clk_gate_pins>;
+       pinctrl-names = "default", "clk-gate";
+       #address-cells = <1>;
+       #size-cells = <0>;
+
+       bus-width = <4>;
+       cap-sd-highspeed;
+       max-frequency = <50000000>;
+
+       non-removable;
+       disable-wp;
+
+       /* WiFi firmware requires power to be kept while in suspend */
+       keep-power-in-suspend;
+
+       mmc-pwrseq = <&sdio_pwrseq>;
+
+       vmmc-supply = <&vddao_3v3>;
+       vqmmc-supply = <&vddio_boot>;
+};
+
+/* SD card */
+&sd_emmc_b {
+       status = "okay";
+       pinctrl-0 = <&sdcard_pins>;
+       pinctrl-1 = <&sdcard_clk_gate_pins>;
+       pinctrl-names = "default", "clk-gate";
+
+       bus-width = <4>;
+       cap-sd-highspeed;
+       max-frequency = <50000000>;
+       disable-wp;
+
+       cd-gpios = <&gpio CARD_6 GPIO_ACTIVE_LOW>;
+
+       vmmc-supply = <&vddao_3v3>;
+       vqmmc-supply = <&vddio_boot>;
+};
+
+/* eMMC */
+&sd_emmc_c {
+       status = "okay";
+       pinctrl-0 = <&emmc_pins>, <&emmc_ds_pins>;
+       pinctrl-1 = <&emmc_clk_gate_pins>;
+       pinctrl-names = "default", "clk-gate";
+
+       bus-width = <8>;
+       cap-mmc-highspeed;
+       max-frequency = <200000000>;
+       non-removable;
+       disable-wp;
+       mmc-ddr-1_8v;
+       mmc-hs200-1_8v;
+
+       mmc-pwrseq = <&emmc_pwrseq>;
+       vmmc-supply = <&vcc_3v3>;
+       vqmmc-supply = <&vddio_boot>;
+};
+
+/* Console UART */
+&uart_AO {
+       status = "okay";
+       pinctrl-0 = <&uart_ao_a_pins>;
+       pinctrl-names = "default";
+};
+
+/* S905W only has access to its internal PHY */
+&ethmac {
+       status = "okay";
+       phy-mode = "rmii";
+       phy-handle = <&internal_phy>;
+};
+
+&internal_phy {
+       status = "okay";
+       pinctrl-0 = <&eth_link_led_pins>, <&eth_act_led_pins>;
+       pinctrl-names = "default";
+};
+
+&uart_A {
+       status = "okay";
+       pinctrl-0 = <&uart_a_pins>, <&uart_a_cts_rts_pins>;
+       pinctrl-names = "default";
+       uart-has-rtscts;
+};
+
+&uart_C {
+       status = "okay";
+       pinctrl-0 = <&uart_c_pins>;
+       pinctrl-names = "default";
+};
+
+&uart_AO_B {
+       status = "okay";
+       pinctrl-0 = <&uart_ao_b_pins>, <&uart_ao_b_cts_rts_pins>;
+       pinctrl-names = "default";
+       uart-has-rtscts;
+};
+
+&i2c_B {
+       status = "okay";
+       pinctrl-names = "default";
+       pinctrl-0 = <&i2c_b_pins>;
+
+       pcf8563: pcf8563@51 {
+               compatible = "nxp,pcf8563";
+               reg = <0x51>;
+               status = "okay";
+       };
+};
index dde7cfe..50137aa 100644 (file)
@@ -14,6 +14,7 @@
 /dts-v1/;
 
 #include "meson-gxm.dtsi"
+#include <dt-bindings/sound/meson-aiu.h>
 
 / {
        compatible = "kingnovel,r-box-pro", "amlogic,s912", "amlogic,meson-gxm";
                reg = <0x0 0x0 0x0 0x80000000>; /* 2 GiB or 3 GiB */
        };
 
+       spdif_dit: audio-codec-0 {
+               #sound-dai-cells = <0>;
+               compatible = "linux,spdif-dit";
+               status = "okay";
+               sound-name-prefix = "DIT";
+       };
+
        leds {
                compatible = "gpio-leds";
 
                clocks = <&wifi32k>;
                clock-names = "ext_clock";
        };
+
+       sound {
+               compatible = "amlogic,gx-sound-card";
+               model = "RBOX-PRO";
+               assigned-clocks = <&clkc CLKID_MPLL0>,
+                                 <&clkc CLKID_MPLL1>,
+                                 <&clkc CLKID_MPLL2>;
+               assigned-clock-parents = <0>, <0>, <0>;
+               assigned-clock-rates = <294912000>,
+                                      <270950400>,
+                                      <393216000>;
+               status = "okay";
+
+               dai-link-0 {
+                       sound-dai = <&aiu AIU_CPU CPU_I2S_FIFO>;
+               };
+
+               dai-link-1 {
+                       sound-dai = <&aiu AIU_CPU CPU_SPDIF_FIFO>;
+               };
+
+               dai-link-2 {
+                       sound-dai = <&aiu AIU_CPU CPU_I2S_ENCODER>;
+                       dai-format = "i2s";
+                       mclk-fs = <256>;
+
+                       codec-0 {
+                               sound-dai = <&aiu AIU_HDMI CTRL_I2S>;
+                       };
+               };
+
+               dai-link-3 {
+                       sound-dai = <&aiu AIU_CPU CPU_SPDIF_ENCODER>;
+
+                       codec-0 {
+                               sound-dai = <&spdif_dit>;
+                       };
+               };
+
+               dai-link-4 {
+                       sound-dai = <&aiu AIU_HDMI CTRL_OUT>;
+
+                       codec-0 {
+                               sound-dai = <&hdmi_tx>;
+                       };
+               };
+       };
+};
+
+&aiu {
+       status = "okay";
+       pinctrl-0 = <&spdif_out_h_pins>;
+       pinctrl-names = "default";
 };
 
 &ethmac {
index effaa13..212c6aa 100644 (file)
                regulator-min-microvolt = <690000>;
                regulator-max-microvolt = <1050000>;
 
-               vin-supply = <&dc_in>;
+               pwm-supply = <&dc_in>;
 
                pwms = <&pwm_AO_cd 1 1250 0>;
                pwm-dutycycle-range = <100 0>;
index f2c0981..9c0b544 100644 (file)
@@ -24,7 +24,7 @@
                regulator-min-microvolt = <690000>;
                regulator-max-microvolt = <1050000>;
 
-               vin-supply = <&vsys_3v3>;
+               pwm-supply = <&vsys_3v3>;
 
                pwms = <&pwm_AO_cd 1 1250 0>;
                pwm-dutycycle-range = <100 0>;
index fd0ad85..5779e70 100644 (file)
                regulator-min-microvolt = <721000>;
                regulator-max-microvolt = <1022000>;
 
-               vin-supply = <&main_12v>;
+               pwm-supply = <&main_12v>;
 
                pwms = <&pwm_AO_cd 1 1250 0>;
                pwm-dutycycle-range = <100 0>;
                reg = <0>;
                max-speed = <1000>;
 
+               reset-assert-us = <10000>;
+               reset-deassert-us = <80000>;
+               reset-gpios = <&gpio GPIOZ_15 (GPIO_ACTIVE_LOW | GPIO_OPEN_DRAIN)>;
+
                interrupt-parent = <&gpio_intc>;
                /* MAC_INTR on GPIOZ_14 */
                interrupts = <26 IRQ_TYPE_LEVEL_LOW>;
index 2194a77..4274758 100644 (file)
                regulator-min-microvolt = <690000>;
                regulator-max-microvolt = <1050000>;
 
-               vin-supply = <&dc_in>;
+               pwm-supply = <&dc_in>;
 
                pwms = <&pwm_AO_cd 1 1500 0>;
                pwm-dutycycle-range = <100 0>;
index e0f6775..33a80f9 100644 (file)
@@ -17,6 +17,7 @@
 
        aliases {
                serial0 = &serial0;
+               ethernet0 = &ethernet0;
        };
 
        chosen {
 &serial0 {
        status = "okay";
 };
+
+/*
+ * Force the bus number assignments so that we can declare some of the
+ * on-board devices and properties that are populated by the bootloader
+ * (such as MAC addresses).
+ */
+&port00 {
+       bus-range = <1 1>;
+};
+
+&port01 {
+       bus-range = <2 2>;
+};
+
+&port02 {
+       bus-range = <3 3>;
+       ethernet0: pci@0,0 {
+               reg = <0x30000 0x0 0x0 0x0 0x0>;
+               /* To be filled by the loader */
+               local-mac-address = [00 10 18 00 00 00];
+       };
+};
index a1e22a2..fc8b2bb 100644 (file)
@@ -9,6 +9,7 @@
 
 #include <dt-bindings/interrupt-controller/apple-aic.h>
 #include <dt-bindings/interrupt-controller/irq.h>
+#include <dt-bindings/pinctrl/apple.h>
 
 / {
        compatible = "apple,t8103", "apple,arm-platform";
                        interrupt-controller;
                        reg = <0x2 0x3b100000 0x0 0x8000>;
                };
+
+               pinctrl_ap: pinctrl@23c100000 {
+                       compatible = "apple,t8103-pinctrl", "apple,pinctrl";
+                       reg = <0x2 0x3c100000 0x0 0x100000>;
+
+                       gpio-controller;
+                       #gpio-cells = <2>;
+                       gpio-ranges = <&pinctrl_ap 0 0 212>;
+                       apple,npins = <212>;
+
+                       interrupt-controller;
+                       interrupt-parent = <&aic>;
+                       interrupts = <AIC_IRQ 190 IRQ_TYPE_LEVEL_HIGH>,
+                                    <AIC_IRQ 191 IRQ_TYPE_LEVEL_HIGH>,
+                                    <AIC_IRQ 192 IRQ_TYPE_LEVEL_HIGH>,
+                                    <AIC_IRQ 193 IRQ_TYPE_LEVEL_HIGH>,
+                                    <AIC_IRQ 194 IRQ_TYPE_LEVEL_HIGH>,
+                                    <AIC_IRQ 195 IRQ_TYPE_LEVEL_HIGH>,
+                                    <AIC_IRQ 196 IRQ_TYPE_LEVEL_HIGH>;
+
+                       pcie_pins: pcie-pins {
+                               pinmux = <APPLE_PINMUX(150, 1)>,
+                                        <APPLE_PINMUX(151, 1)>,
+                                        <APPLE_PINMUX(32, 1)>;
+                       };
+               };
+
+               pinctrl_aop: pinctrl@24a820000 {
+                       compatible = "apple,t8103-pinctrl", "apple,pinctrl";
+                       reg = <0x2 0x4a820000 0x0 0x4000>;
+
+                       gpio-controller;
+                       #gpio-cells = <2>;
+                       gpio-ranges = <&pinctrl_aop 0 0 42>;
+                       apple,npins = <42>;
+
+                       interrupt-controller;
+                       interrupt-parent = <&aic>;
+                       interrupts = <AIC_IRQ 268 IRQ_TYPE_LEVEL_HIGH>,
+                                    <AIC_IRQ 269 IRQ_TYPE_LEVEL_HIGH>,
+                                    <AIC_IRQ 270 IRQ_TYPE_LEVEL_HIGH>,
+                                    <AIC_IRQ 271 IRQ_TYPE_LEVEL_HIGH>,
+                                    <AIC_IRQ 272 IRQ_TYPE_LEVEL_HIGH>,
+                                    <AIC_IRQ 273 IRQ_TYPE_LEVEL_HIGH>,
+                                    <AIC_IRQ 274 IRQ_TYPE_LEVEL_HIGH>;
+               };
+
+               pinctrl_nub: pinctrl@23d1f0000 {
+                       compatible = "apple,t8103-pinctrl", "apple,pinctrl";
+                       reg = <0x2 0x3d1f0000 0x0 0x4000>;
+
+                       gpio-controller;
+                       #gpio-cells = <2>;
+                       gpio-ranges = <&pinctrl_nub 0 0 23>;
+                       apple,npins = <23>;
+
+                       interrupt-controller;
+                       interrupt-parent = <&aic>;
+                       interrupts = <AIC_IRQ 330 IRQ_TYPE_LEVEL_HIGH>,
+                                    <AIC_IRQ 331 IRQ_TYPE_LEVEL_HIGH>,
+                                    <AIC_IRQ 332 IRQ_TYPE_LEVEL_HIGH>,
+                                    <AIC_IRQ 333 IRQ_TYPE_LEVEL_HIGH>,
+                                    <AIC_IRQ 334 IRQ_TYPE_LEVEL_HIGH>,
+                                    <AIC_IRQ 335 IRQ_TYPE_LEVEL_HIGH>,
+                                    <AIC_IRQ 336 IRQ_TYPE_LEVEL_HIGH>;
+               };
+
+               pinctrl_smc: pinctrl@23e820000 {
+                       compatible = "apple,t8103-pinctrl", "apple,pinctrl";
+                       reg = <0x2 0x3e820000 0x0 0x4000>;
+
+                       gpio-controller;
+                       #gpio-cells = <2>;
+                       gpio-ranges = <&pinctrl_smc 0 0 16>;
+                       apple,npins = <16>;
+
+                       interrupt-controller;
+                       interrupt-parent = <&aic>;
+                       interrupts = <AIC_IRQ 391 IRQ_TYPE_LEVEL_HIGH>,
+                                    <AIC_IRQ 392 IRQ_TYPE_LEVEL_HIGH>,
+                                    <AIC_IRQ 393 IRQ_TYPE_LEVEL_HIGH>,
+                                    <AIC_IRQ 394 IRQ_TYPE_LEVEL_HIGH>,
+                                    <AIC_IRQ 395 IRQ_TYPE_LEVEL_HIGH>,
+                                    <AIC_IRQ 396 IRQ_TYPE_LEVEL_HIGH>,
+                                    <AIC_IRQ 397 IRQ_TYPE_LEVEL_HIGH>;
+               };
+
+               pcie0_dart_0: dart@681008000 {
+                       compatible = "apple,t8103-dart";
+                       reg = <0x6 0x81008000 0x0 0x4000>;
+                       #iommu-cells = <1>;
+                       interrupt-parent = <&aic>;
+                       interrupts = <AIC_IRQ 696 IRQ_TYPE_LEVEL_HIGH>;
+               };
+
+               pcie0_dart_1: dart@682008000 {
+                       compatible = "apple,t8103-dart";
+                       reg = <0x6 0x82008000 0x0 0x4000>;
+                       #iommu-cells = <1>;
+                       interrupt-parent = <&aic>;
+                       interrupts = <AIC_IRQ 699 IRQ_TYPE_LEVEL_HIGH>;
+               };
+
+               pcie0_dart_2: dart@683008000 {
+                       compatible = "apple,t8103-dart";
+                       reg = <0x6 0x83008000 0x0 0x4000>;
+                       #iommu-cells = <1>;
+                       interrupt-parent = <&aic>;
+                       interrupts = <AIC_IRQ 702 IRQ_TYPE_LEVEL_HIGH>;
+               };
+
+               pcie0: pcie@690000000 {
+                       compatible = "apple,t8103-pcie", "apple,pcie";
+                       device_type = "pci";
+
+                       reg = <0x6 0x90000000 0x0 0x1000000>,
+                             <0x6 0x80000000 0x0 0x100000>,
+                             <0x6 0x81000000 0x0 0x4000>,
+                             <0x6 0x82000000 0x0 0x4000>,
+                             <0x6 0x83000000 0x0 0x4000>;
+                       reg-names = "config", "rc", "port0", "port1", "port2";
+
+                       interrupt-parent = <&aic>;
+                       interrupts = <AIC_IRQ 695 IRQ_TYPE_LEVEL_HIGH>,
+                                    <AIC_IRQ 698 IRQ_TYPE_LEVEL_HIGH>,
+                                    <AIC_IRQ 701 IRQ_TYPE_LEVEL_HIGH>;
+
+                       msi-controller;
+                       msi-parent = <&pcie0>;
+                       msi-ranges = <&aic AIC_IRQ 704 IRQ_TYPE_EDGE_RISING 32>;
+
+
+                       iommu-map = <0x100 &pcie0_dart_0 1 1>,
+                                   <0x200 &pcie0_dart_1 1 1>,
+                                   <0x300 &pcie0_dart_2 1 1>;
+                       iommu-map-mask = <0xff00>;
+
+                       bus-range = <0 3>;
+                       #address-cells = <3>;
+                       #size-cells = <2>;
+                       ranges = <0x43000000 0x6 0xa0000000 0x6 0xa0000000 0x0 0x20000000>,
+                                <0x02000000 0x0 0xc0000000 0x6 0xc0000000 0x0 0x40000000>;
+
+                       pinctrl-0 = <&pcie_pins>;
+                       pinctrl-names = "default";
+
+                       port00: pci@0,0 {
+                               device_type = "pci";
+                               reg = <0x0 0x0 0x0 0x0 0x0>;
+                               reset-gpios = <&pinctrl_ap 152 0>;
+                               max-link-speed = <2>;
+
+                               #address-cells = <3>;
+                               #size-cells = <2>;
+                               ranges;
+
+                               interrupt-controller;
+                               #interrupt-cells = <1>;
+
+                               interrupt-map-mask = <0 0 0 7>;
+                               interrupt-map = <0 0 0 1 &port00 0 0 0 0>,
+                                               <0 0 0 2 &port00 0 0 0 1>,
+                                               <0 0 0 3 &port00 0 0 0 2>,
+                                               <0 0 0 4 &port00 0 0 0 3>;
+                       };
+
+                       port01: pci@1,0 {
+                               device_type = "pci";
+                               reg = <0x800 0x0 0x0 0x0 0x0>;
+                               reset-gpios = <&pinctrl_ap 153 0>;
+                               max-link-speed = <2>;
+
+                               #address-cells = <3>;
+                               #size-cells = <2>;
+                               ranges;
+
+                               interrupt-controller;
+                               #interrupt-cells = <1>;
+
+                               interrupt-map-mask = <0 0 0 7>;
+                               interrupt-map = <0 0 0 1 &port01 0 0 0 0>,
+                                               <0 0 0 2 &port01 0 0 0 1>,
+                                               <0 0 0 3 &port01 0 0 0 2>,
+                                               <0 0 0 4 &port01 0 0 0 3>;
+                       };
+
+                       port02: pci@2,0 {
+                               device_type = "pci";
+                               reg = <0x1000 0x0 0x0 0x0 0x0>;
+                               reset-gpios = <&pinctrl_ap 33 0>;
+                               max-link-speed = <1>;
+
+                               #address-cells = <3>;
+                               #size-cells = <2>;
+                               ranges;
+
+                               interrupt-controller;
+                               #interrupt-cells = <1>;
+
+                               interrupt-map-mask = <0 0 0 7>;
+                               interrupt-map = <0 0 0 1 &port02 0 0 0 0>,
+                                               <0 0 0 2 &port02 0 0 0 1>,
+                                               <0 0 0 3 &port02 0 0 0 2>,
+                                               <0 0 0 4 &port02 0 0 0 3>;
+                       };
+               };
        };
 };
index fefd2b5..be42932 100644 (file)
                                apbregs@10000 {
                                        compatible = "syscon", "simple-mfd";
                                        reg = <0x010000 0x1000>;
+                                       ranges = <0x0 0x10000 0x1000>;
+                                       #address-cells = <1>;
+                                       #size-cells = <1>;
 
-                                       led0 {
+                                       led@8,0 {
                                                compatible = "register-bit-led";
+                                               reg = <0x08 0x04>;
                                                offset = <0x08>;
                                                mask = <0x01>;
                                                label = "vexpress:0";
                                                linux,default-trigger = "heartbeat";
                                                default-state = "on";
                                        };
-                                       led1 {
+                                       led@8,1 {
                                                compatible = "register-bit-led";
+                                               reg = <0x08 0x04>;
                                                offset = <0x08>;
                                                mask = <0x02>;
                                                label = "vexpress:1";
                                                linux,default-trigger = "mmc0";
                                                default-state = "off";
                                        };
-                                       led2 {
+                                       led@8,2 {
                                                compatible = "register-bit-led";
+                                               reg = <0x08 0x04>;
                                                offset = <0x08>;
                                                mask = <0x04>;
                                                label = "vexpress:2";
                                                linux,default-trigger = "cpu0";
                                                default-state = "off";
                                        };
-                                       led3 {
+                                       led@8,3 {
                                                compatible = "register-bit-led";
+                                               reg = <0x08 0x04>;
                                                offset = <0x08>;
                                                mask = <0x08>;
                                                label = "vexpress:3";
                                                linux,default-trigger = "cpu1";
                                                default-state = "off";
                                        };
-                                       led4 {
+                                       led@8,4 {
                                                compatible = "register-bit-led";
+                                               reg = <0x08 0x04>;
                                                offset = <0x08>;
                                                mask = <0x10>;
                                                label = "vexpress:4";
                                                linux,default-trigger = "cpu2";
                                                default-state = "off";
                                        };
-                                       led5 {
+                                       led@8,5 {
                                                compatible = "register-bit-led";
+                                               reg = <0x08 0x04>;
                                                offset = <0x08>;
                                                mask = <0x20>;
                                                label = "vexpress:5";
                                                linux,default-trigger = "cpu3";
                                                default-state = "off";
                                        };
-                                       led6 {
+                                       led@8,6 {
                                                compatible = "register-bit-led";
+                                               reg = <0x08 0x04>;
                                                offset = <0x08>;
                                                mask = <0x40>;
                                                label = "vexpress:6";
                                                default-state = "off";
                                        };
-                                       led7 {
+                                       led@8,7 {
                                                compatible = "register-bit-led";
+                                               reg = <0x08 0x04>;
                                                offset = <0x08>;
                                                mask = <0x80>;
                                                label = "vexpress:7";
index 11eae3e..c688203 100644 (file)
@@ -1,6 +1,7 @@
 # SPDX-License-Identifier: GPL-2.0
 dtb-$(CONFIG_ARCH_BCM2835) += bcm2711-rpi-400.dtb \
                              bcm2711-rpi-4-b.dtb \
+                             bcm2711-rpi-cm4-io.dtb \
                              bcm2837-rpi-3-a-plus.dtb \
                              bcm2837-rpi-3-b.dtb \
                              bcm2837-rpi-3-b-plus.dtb \
diff --git a/arch/arm64/boot/dts/broadcom/bcm2711-rpi-cm4-io.dts b/arch/arm64/boot/dts/broadcom/bcm2711-rpi-cm4-io.dts
new file mode 100644 (file)
index 0000000..e36d395
--- /dev/null
@@ -0,0 +1,2 @@
+// SPDX-License-Identifier: GPL-2.0
+#include "arm/bcm2711-rpi-cm4-io.dts"
index a5a64d1..984c737 100644 (file)
                        reg = <0x640 0x18>;
                        interrupts = <GIC_SPI 32 IRQ_TYPE_LEVEL_HIGH>;
                        clocks = <&periph_clk>;
-                       clock-names = "periph";
+                       clock-names = "refclk";
                        status = "okay";
                };
 
-               nand@1800 {
+               nand-controller@1800 {
                        #address-cells = <1>;
                        #size-cells = <0>;
                        compatible = "brcm,nand-bcm63138", "brcm,brcmnand-v7.1", "brcm,brcmnand";
                                #reset-cells = <1>;
                        };
                };
+       };
 
-               reboot {
-                       compatible = "syscon-reboot";
-                       regmap = <&timer>;
-                       offset = <0x34>;
-                       mask = <1>;
-               };
+       reboot {
+               compatible = "syscon-reboot";
+               regmap = <&timer>;
+               offset = <0x34>;
+               mask = <1>;
        };
 };
index e0a2fac..b41e86d 100644 (file)
@@ -2,4 +2,5 @@
 dtb-$(CONFIG_ARCH_EXYNOS) += \
        exynos5433-tm2.dtb      \
        exynos5433-tm2e.dtb     \
-       exynos7-espresso.dtb
+       exynos7-espresso.dtb    \
+       exynosautov9-sadk.dtb
index 8997f8f..72ccf18 100644 (file)
@@ -87,7 +87,7 @@
                status = "disabled";
        };
 
-       bus_g2d_400_opp_table: opp-table2 {
+       bus_g2d_400_opp_table: opp-table-2 {
                compatible = "operating-points-v2";
                opp-shared;
 
                };
        };
 
-       bus_g2d_266_opp_table: opp-table3 {
+       bus_g2d_266_opp_table: opp-table-3 {
                compatible = "operating-points-v2";
 
                opp-267000000 {
                };
        };
 
-       bus_gscl_opp_table: opp-table4 {
+       bus_gscl_opp_table: opp-table-4 {
                compatible = "operating-points-v2";
 
                opp-333000000 {
                };
        };
 
-       bus_hevc_opp_table: opp-table5 {
+       bus_hevc_opp_table: opp-table-5 {
                compatible = "operating-points-v2";
                opp-shared;
 
                };
        };
 
-       bus_noc2_opp_table: opp-table6 {
+       bus_noc2_opp_table: opp-table-6 {
                compatible = "operating-points-v2";
 
                opp-400000000 {
index fdd0796..aca0170 100644 (file)
@@ -13,6 +13,7 @@
 / {
        model = "Samsung TM2 board";
        compatible = "samsung,tm2", "samsung,exynos5433";
+       chassis-type = "handset";
 };
 
 &cmu_disp {
index 089fc7a..22d2646 100644 (file)
@@ -13,6 +13,7 @@
 / {
        model = "Samsung TM2E board";
        compatible = "samsung,tm2e", "samsung,exynos5433";
+       chassis-type = "handset";
 };
 
 &cmu_disp {
index 6a6f7dd..4422021 100644 (file)
                };
        };
 
-       cluster_a53_opp_table: opp-table0 {
+       cluster_a53_opp_table: opp-table-0 {
                compatible = "operating-points-v2";
                opp-shared;
 
                };
        };
 
-       cluster_a57_opp_table: opp-table1 {
+       cluster_a57_opp_table: opp-table-1 {
                compatible = "operating-points-v2";
                opp-shared;
 
                };
 
                syscon_fsys: syscon@156f0000 {
-                       compatible = "syscon";
+                       compatible = "samsung,exynos5433-sysreg", "syscon";
                        reg = <0x156f0000 0x1044>;
                };
 
diff --git a/arch/arm64/boot/dts/exynos/exynosautov9-pinctrl.dtsi b/arch/arm64/boot/dts/exynos/exynosautov9-pinctrl.dtsi
new file mode 100644 (file)
index 0000000..2407b03
--- /dev/null
@@ -0,0 +1,1189 @@
+// SPDX-License-Identifier: GPL-2.0
+/*
+ * Samsung's ExynosAutov9 SoC pin-mux and pin-config device tree source
+ *
+ * Copyright (c) 2021 Samsung Electronics Co., Ltd.
+ *
+ * Samsung's ExynosAutov9 SoC pin-mux and pin-config options are listed as
+ * device tree nodes in this file.
+ */
+
+#include <dt-bindings/pinctrl/samsung.h>
+
+&pinctrl_alive {
+       gpa0: gpa0 {
+               gpio-controller;
+               #gpio-cells = <2>;
+               interrupt-controller;
+               #interrupt-cells = <2>;
+               interrupt-parent = <&gic>;
+               interrupts = <GIC_SPI 13 IRQ_TYPE_LEVEL_HIGH>,
+                            <GIC_SPI 14 IRQ_TYPE_LEVEL_HIGH>,
+                            <GIC_SPI 15 IRQ_TYPE_LEVEL_HIGH>,
+                            <GIC_SPI 16 IRQ_TYPE_LEVEL_HIGH>,
+                            <GIC_SPI 17 IRQ_TYPE_LEVEL_HIGH>,
+                            <GIC_SPI 18 IRQ_TYPE_LEVEL_HIGH>,
+                            <GIC_SPI 19 IRQ_TYPE_LEVEL_HIGH>,
+                            <GIC_SPI 20 IRQ_TYPE_LEVEL_HIGH>;
+       };
+
+       gpa1: gpa1 {
+               gpio-controller;
+               #gpio-cells = <2>;
+               interrupt-controller;
+               #interrupt-cells = <2>;
+               interrupt-parent = <&gic>;
+               interrupts = <GIC_SPI 21 IRQ_TYPE_LEVEL_HIGH>,
+                            <GIC_SPI 22 IRQ_TYPE_LEVEL_HIGH>;
+       };
+
+       dp0_hpd: dp0-hpd-pins {
+               samsung,pins = "gpa1-0";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
+       };
+
+       dp1_hpd: dp1-hpd-pins {
+               samsung,pins = "gpa1-1";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
+       };
+
+       gpq0: gpq0 {
+               gpio-controller;
+               #gpio-cells = <2>;
+
+               interrupt-controller;
+               #interrupt-cells = <2>;
+       };
+
+       speedy0_bus: speedy0-bus-pins {
+               samsung,pins = "gpq0-0";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_UP>;
+       };
+
+       speedy1_bus: speedy1-bus-pins {
+               samsung,pins = "gpa0-3";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_UP>;
+       };
+};
+
+&pinctrl_aud {
+       gpb0: gpb0 {
+               gpio-controller;
+               #gpio-cells = <2>;
+
+               interrupt-controller;
+               #interrupt-cells = <2>;
+       };
+
+       gpb1: gpb1 {
+               gpio-controller;
+               #gpio-cells = <2>;
+
+               interrupt-controller;
+               #interrupt-cells = <2>;
+       };
+
+       gpb2: gpb2 {
+               gpio-controller;
+               #gpio-cells = <2>;
+
+               interrupt-controller;
+               #interrupt-cells = <2>;
+       };
+
+       gpb3: gpb3 {
+               gpio-controller;
+               #gpio-cells = <2>;
+
+               interrupt-controller;
+               #interrupt-cells = <2>;
+       };
+
+       aud_codec_mclk: aud-codec-mclk-pins {
+               samsung,pins = "gpb0-4";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_DOWN>;
+       };
+
+       aud_codec_mclk_idle: aud-codec-mclk-idle-pins {
+               samsung,pins = "gpb0-4";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_INPUT>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_DOWN>;
+       };
+
+       aud_i2s0_bus: aud-i2s0-pins {
+               samsung,pins = "gpb0-0", "gpb0-1", "gpb0-2", "gpb0-3";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_DOWN>;
+       };
+
+       aud_i2s0_idle: aud-i2s0-idle-pins {
+               samsung,pins = "gpb0-0", "gpb0-1", "gpb0-2", "gpb0-3";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_INPUT>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_DOWN>;
+       };
+
+       aud_i2s1_bus: aud-i2s1-pins {
+               samsung,pins = "gpb1-0", "gpb1-1", "gpb1-2", "gpb1-3";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_DOWN>;
+       };
+
+       aud_i2s1_idle: aud-i2s1-idle-pins {
+               samsung,pins = "gpb1-0", "gpb1-1", "gpb1-2", "gpb1-3";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_INPUT>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_DOWN>;
+       };
+
+       aud_i2s2_bus: aud-i2s2-pins {
+               samsung,pins = "gpb1-4", "gpb1-5", "gpb1-6", "gpb1-7";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_DOWN>;
+       };
+
+       aud_i2s2_idle: aud-i2s2-idle-pins {
+               samsung,pins = "gpb1-4", "gpb1-5", "gpb1-6", "gpb1-7";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_INPUT>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_DOWN>;
+       };
+
+       aud_i2s3_bus: aud-i2s3-pins {
+               samsung,pins = "gpb2-0", "gpb2-1", "gpb2-2", "gpb2-3";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_DOWN>;
+       };
+
+       aud_i2s3_idle: aud-i2s3-idle-pins {
+               samsung,pins = "gpb2-0", "gpb2-1", "gpb2-2", "gpb2-3";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_INPUT>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_DOWN>;
+       };
+
+       aud_i2s4_bus: aud-i2s4-pins {
+               samsung,pins = "gpb2-4", "gpb2-5", "gpb2-6", "gpb2-7";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_DOWN>;
+       };
+
+       aud_i2s4_idle: aud-i2s4-idle-pins {
+               samsung,pins = "gpb2-4", "gpb2-5", "gpb2-6", "gpb2-7";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_INPUT>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_DOWN>;
+       };
+
+       aud_i2s5_bus: aud-i2s5-pins {
+               samsung,pins = "gpb3-0", "gpb3-1", "gpb3-2", "gpb3-3";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_DOWN>;
+       };
+
+       aud_i2s5_idle: aaud-i2s5-idle-pins {
+               samsung,pins = "gpb3-0", "gpb3-1", "gpb3-2", "gpb3-3";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_INPUT>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_DOWN>;
+       };
+
+       aud_i2s6_bus: aud-i2s6-pins {
+               samsung,pins = "gpb3-4", "gpb3-5", "gpb3-6", "gpb3-7";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_DOWN>;
+       };
+
+       aud_i2s6_idle: aaud-i2s6-idle-pins {
+               samsung,pins = "gpb3-4", "gpb3-5", "gpb3-6", "gpb3-7";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_INPUT>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_DOWN>;
+       };
+};
+
+&pinctrl_fsys0 {
+       gpf0: gpf0 {
+               gpio-controller;
+               #gpio-cells = <2>;
+
+               interrupt-controller;
+               #interrupt-cells = <2>;
+       };
+
+       gpf1: gpf1 {
+               gpio-controller;
+               #gpio-cells = <2>;
+
+               interrupt-controller;
+               #interrupt-cells = <2>;
+       };
+
+       pcie_clkreq0: pcie-clkreq0-pins {
+               samsung,pins = "gpf0-0";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_UP>;
+               samsung,pin-drv = <EXYNOS5420_PIN_DRV_LV4>;
+               samsung,pin-con-pdn = <EXYNOS_PIN_PDN_PREV>;
+               samsung,pin-pud-pdn = <EXYNOS_PIN_PULL_UP>;
+       };
+
+       pcie_perst0_out: pcie-perst0-out-pins {
+               samsung,pins = "gpf0-1";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_OUTPUT>;
+               samsung,pin-drv = <EXYNOS5420_PIN_DRV_LV4>;
+               samsung,pin-con-pdn = <EXYNOS_PIN_PDN_PREV>;
+       };
+
+       pcie_perst0_in: pcie-perst0-in-pins {
+               samsung,pins = "gpf0-1";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_3>;
+               samsung,pin-drv = <EXYNOS5420_PIN_DRV_LV4>;
+               samsung,pin-con-pdn = <EXYNOS_PIN_PDN_PREV>;
+       };
+
+       pcie_clkreq1: pcie-clkreq1-pins {
+               samsung,pins = "gpf0-2";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_UP>;
+               samsung,pin-drv = <EXYNOS5420_PIN_DRV_LV4>;
+               samsung,pin-con-pdn = <EXYNOS_PIN_PDN_PREV>;
+               samsung,pin-pud-pdn = <EXYNOS_PIN_PULL_UP>;
+       };
+
+       pcie_perst1_out: pcie-perst1-out-pins {
+               samsung,pins = "gpf0-3";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_OUTPUT>;
+               samsung,pin-drv = <EXYNOS5420_PIN_DRV_LV4>;
+               samsung,pin-con-pdn = <EXYNOS_PIN_PDN_PREV>;
+       };
+
+       pcie_perst1_in: pcie-perst1-in-pins {
+               samsung,pins = "gpf0-3";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_3>;
+               samsung,pin-drv = <EXYNOS5420_PIN_DRV_LV4>;
+               samsung,pin-con-pdn = <EXYNOS_PIN_PDN_PREV>;
+       };
+
+       pcie_clkreq2: pcie-clkreq2-pins {
+               samsung,pins = "gpf0-4";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_UP>;
+               samsung,pin-drv = <EXYNOS5420_PIN_DRV_LV4>;
+               samsung,pin-con-pdn = <EXYNOS_PIN_PDN_PREV>;
+               samsung,pin-pud-pdn = <EXYNOS_PIN_PULL_UP>;
+       };
+
+       pcie_perst2_out: pcie-perst2-out-pins {
+               samsung,pins = "gpf0-5";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_OUTPUT>;
+               samsung,pin-drv = <EXYNOS5420_PIN_DRV_LV4>;
+               samsung,pin-con-pdn = <EXYNOS_PIN_PDN_PREV>;
+       };
+
+       pcie_perst2_in: pcie-perst2-in-pins {
+               samsung,pins = "gpf0-5";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_3>;
+               samsung,pin-drv = <EXYNOS5420_PIN_DRV_LV4>;
+               samsung,pin-con-pdn = <EXYNOS_PIN_PDN_PREV>;
+       };
+
+       pcie_clkreq3: pcie-clkreq3-pins {
+               samsung,pins = "gpf1-0";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_UP>;
+               samsung,pin-drv = <EXYNOS5420_PIN_DRV_LV4>;
+               samsung,pin-con-pdn = <EXYNOS_PIN_PDN_PREV>;
+               samsung,pin-pud-pdn = <EXYNOS_PIN_PULL_UP>;
+       };
+
+       pcie_perst3_out: pcie-perst3-out-pins {
+               samsung,pins = "gpf1-1";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_OUTPUT>;
+               samsung,pin-drv = <EXYNOS5420_PIN_DRV_LV4>;
+               samsung,pin-con-pdn = <EXYNOS_PIN_PDN_PREV>;
+       };
+
+       pcie_perst3_in: pcie-perst3-in-pins {
+               samsung,pins = "gpf1-1";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_3>;
+               samsung,pin-drv = <EXYNOS5420_PIN_DRV_LV4>;
+               samsung,pin-con-pdn = <EXYNOS_PIN_PDN_PREV>;
+       };
+
+       pcie_clkreq4: pcie-clkreq4-pins {
+               samsung,pins = "gpf1-2";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_UP>;
+               samsung,pin-drv = <EXYNOS5420_PIN_DRV_LV4>;
+               samsung,pin-con-pdn = <EXYNOS_PIN_PDN_PREV>;
+               samsung,pin-pud-pdn = <EXYNOS_PIN_PULL_UP>;
+       };
+
+       pcie_perst4_out: pcie-perst4-out-pins {
+               samsung,pins = "gpf1-3";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_OUTPUT>;
+               samsung,pin-drv = <EXYNOS5420_PIN_DRV_LV4>;
+               samsung,pin-con-pdn = <EXYNOS_PIN_PDN_PREV>;
+       };
+
+       pcie_perst4_in: pcie-perst4-in-pins {
+               samsung,pins = "gpf1-1";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_3>;
+               samsung,pin-drv = <EXYNOS5420_PIN_DRV_LV4>;
+               samsung,pin-con-pdn = <EXYNOS_PIN_PDN_PREV>;
+       };
+
+       pcie_clkreq5: pcie-clkreq5-pins {
+               samsung,pins = "gpf1-4";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_UP>;
+               samsung,pin-drv = <EXYNOS5420_PIN_DRV_LV4>;
+               samsung,pin-con-pdn = <EXYNOS_PIN_PDN_PREV>;
+               samsung,pin-pud-pdn = <EXYNOS_PIN_PULL_UP>;
+       };
+
+       pcie_perst5_out: pcie-perst5-out-pins {
+               samsung,pins = "gpf1-5";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_OUTPUT>;
+               samsung,pin-drv = <EXYNOS5420_PIN_DRV_LV4>;
+               samsung,pin-con-pdn = <EXYNOS_PIN_PDN_PREV>;
+       };
+
+       pcie_perst5_in: pcie-perst5-in-pins {
+               samsung,pins = "gpf1-5";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_3>;
+               samsung,pin-drv = <EXYNOS5420_PIN_DRV_LV4>;
+               samsung,pin-con-pdn = <EXYNOS_PIN_PDN_PREV>;
+       };
+};
+
+&pinctrl_fsys1 {
+       gpf8: gpf8 {
+               gpio-controller;
+               #gpio-cells = <2>;
+
+               interrupt-controller;
+               #interrupt-cells = <2>;
+       };
+
+       sd2_clk: sd2-clk-pins {
+               samsung,pins = "gpf8-0";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
+               samsung,pin-drv = <2>;  /* 2x drive strength */
+       };
+
+       sd2_cmd: sd2-cmd-pins {
+               samsung,pins = "gpf8-1";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_UP>;
+               samsung,pin-drv = <2>;  /* 2x drive strength */
+       };
+
+       sd2_bus1: sd2-bus-width1-pins {
+               samsung,pins = "gpf8-2";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_UP>;
+               samsung,pin-drv = <2>;  /* 2x drive strength */
+       };
+
+       sd2_bus4: sd2-bus-width4-pins {
+               samsung,pins = "gpf8-3", "gpf8-4", "gpf8-5";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_UP>;
+               samsung,pin-drv = <2>;  /* 2x drive strength */
+       };
+};
+
+&pinctrl_fsys2 {
+       gpf2: gpf2 {
+               gpio-controller;
+               #gpio-cells = <2>;
+
+               interrupt-controller;
+               #interrupt-cells = <2>;
+       };
+
+       gpf3: gpf3 {
+               gpio-controller;
+               #gpio-cells = <2>;
+
+               interrupt-controller;
+               #interrupt-cells = <2>;
+       };
+
+       gpf4: gpf4 {
+               gpio-controller;
+               #gpio-cells = <2>;
+
+               interrupt-controller;
+               #interrupt-cells = <2>;
+       };
+
+       gpf5: gpf5 {
+               gpio-controller;
+               #gpio-cells = <2>;
+
+               interrupt-controller;
+               #interrupt-cells = <2>;
+       };
+
+       gpf6: gpf6 {
+               gpio-controller;
+               #gpio-cells = <2>;
+
+               interrupt-controller;
+               #interrupt-cells = <2>;
+       };
+
+       ufs_rst_n: ufs-rst-n-pins {
+               samsung,pins = "gpf2-1";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
+               samsung,pin-con-pdn = <EXYNOS_PIN_PDN_PREV>;
+       };
+
+       ufs_refclk_out: ufs-refclk-out-pins {
+               samsung,pins = "gpf2-0";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
+               samsung,pin-con-pdn = <EXYNOS_PIN_PDN_PREV>;
+       };
+
+       ufs_rst_n_1: ufs-rst-n-1-pins {
+               samsung,pins = "gpf2-3";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
+               samsung,pin-con-pdn = <EXYNOS_PIN_PDN_PREV>;
+       };
+
+       ufs_refclk_out_1: ufs-refclk-out-1-pins {
+               samsung,pins = "gpf2-2";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
+               samsung,pin-con-pdn = <EXYNOS_PIN_PDN_PREV>;
+       };
+
+       eth0_mdc_mdio: eth0-mdc-mdio-pins {
+               samsung,pins = "gpf4-5", "gpf4-6";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
+       };
+
+       eth0_rgmii: eth0-rgmii-pins {
+               samsung,pins = "gpf3-1", "gpf3-2", "gpf3-3", "gpf3-4",
+                              "gpf3-5", "gpf3-6", "gpf3-7", "gpf4-0",
+                              "gpf4-1", "gpf4-2", "gpf4-3", "gpf4-4";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
+       };
+
+       eth0_pps_out: eth0-pps-out-pins {
+               samsung,pins = "gpf3-0";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_OUTPUT>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
+       };
+
+       eth1_mdc_mdio: eth1-mdc-mdio-pins {
+               samsung,pins = "gpf6-5", "gpf6-6";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
+       };
+
+       eth1_rgmii: eth1-rgmii-pins {
+               samsung,pins = "gpf5-1", "gpf5-2", "gpf5-3", "gpf5-4",
+                              "gpf5-5", "gpf5-6", "gpf5-7", "gpf6-0",
+                              "gpf6-1", "gpf6-2", "gpf6-3", "gpf6-4";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
+       };
+
+       eth1_pps_out: eth1-pps-out-pins {
+               samsung,pins = "gpf5-0";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_OUTPUT>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
+       };
+};
+
+&pinctrl_peric0 {
+       gpp0: gpp0 {
+               gpio-controller;
+               #gpio-cells = <2>;
+
+               interrupt-controller;
+               #interrupt-cells = <2>;
+       };
+
+       gpp1: gpp1 {
+               gpio-controller;
+               #gpio-cells = <2>;
+
+               interrupt-controller;
+               #interrupt-cells = <2>;
+       };
+
+       gpp2: gpp2 {
+               gpio-controller;
+               #gpio-cells = <2>;
+
+               interrupt-controller;
+               #interrupt-cells = <2>;
+       };
+
+       gpg0: gpg0 {
+               gpio-controller;
+               #gpio-cells = <2>;
+
+               interrupt-controller;
+               #interrupt-cells = <2>;
+       };
+
+       pwm_tout0: pwm-tout0-pins {
+               samsung,pins = "gpg0-0";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_4>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
+       };
+
+       pwm_tout1: pwm-tout1-pins {
+               samsung,pins = "gpg0-1";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_4>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
+       };
+
+       pwm_tout2: pwm-tout2-pins {
+               samsung,pins = "gpg0-2";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_4>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
+       };
+
+       pwm_tout3: pwm-tout3-pins {
+               samsung,pins = "gpg0-3";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_4>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
+       };
+
+       /* PERIC0 USI00  */
+       hsi2c0_bus: hsi2c0-bus-pins {
+               samsung,pins = "gpp0-0", "gpp0-1";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
+       };
+
+       /* PERIC0 USI00_I2C */
+       hsi2c1_bus: hsi2c1-bus-pins {
+               samsung,pins = "gpp0-2", "gpp0-3";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_3>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
+       };
+
+       /* PERIC0 USI01 */
+       hsi2c2_bus: hsi2c2-bus-pins {
+               samsung,pins = "gpp0-4", "gpp0-5";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
+       };
+
+       /* PERIC0 USI01_I2C */
+       hsi2c3_bus: hsi2c3-bus-pins {
+               samsung,pins = "gpp0-6", "gpp0-7";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_3>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
+       };
+
+       /* PERIC0 USI02 */
+       hsi2c4_bus: hsi2c4-bus-pins {
+               samsung,pins = "gpp1-0", "gpp1-1";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
+       };
+
+       /* PERIC0 USI02_I2C */
+       hsi2c5_bus: hsi2c5-bus-pins {
+               samsung,pins = "gpp1-2", "gpp1-3";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_3>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
+       };
+
+       /* PERIC0 USI03 */
+       hsi2c6_bus: hsi2c6-bus-pins {
+               samsung,pins = "gpp1-4", "gpp1-5";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
+       };
+
+       /* PERIC0 USI03_I2C */
+       hsi2c7_bus: hsi2c7-bus-pins {
+               samsung,pins = "gpp1-6", "gpp1-7";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_3>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
+       };
+
+       /* PERIC0 USI04 */
+       hsi2c8_bus: hsi2c8-bus-pins {
+               samsung,pins = "gpp2-0", "gpp2-1";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
+       };
+
+       /* PERIC0 USI04_I2C */
+       hsi2c9_bus: hsi2c9-bus-pins {
+               samsung,pins = "gpp2-2", "gpp2-3";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_3>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
+       };
+
+       /* PERIC0 USI05 */
+       hsi2c10_bus: hsi2c10-bus-pins {
+               samsung,pins = "gpp2-4", "gpp2-5";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
+       };
+
+       /* PERIC0 USI05_I2C */
+       hsi2c11_bus: hsi2c11-bus-pins {
+               samsung,pins = "gpp2-6", "gpp2-7";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_3>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
+       };
+
+       /* SPI USI_PERIC0_USI00_SPI */
+       spi0_bus: spi0-bus-pins {
+               samsung,pins = "gpp0-2", "gpp0-1", "gpp0-0";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
+       };
+
+       spi0_cs: spi0-cs-pins {
+               samsung,pins = "gpp0-3";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_OUTPUT>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
+       };
+
+       spi0_cs_func: spi0-cs-func-pins {
+               samsung,pins = "gpp0-3";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
+       };
+
+       /* PERIC0 USI01_SPI */
+       spi1_bus: spi1-bus-pins {
+               samsung,pins = "gpp0-6", "gpp0-5", "gpp0-4";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
+       };
+
+       spi1_cs: spi1-cs-pins {
+               samsung,pins = "gpp0-7";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_OUTPUT>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
+       };
+
+       spi1_cs_func: spi1-cs-func-pins {
+               samsung,pins = "gpp0-7";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
+       };
+
+       /* PERIC0 USI02_SPI */
+       spi2_bus: spi2-bus-pins {
+               samsung,pins = "gpp1-2", "gpp1-1", "gpp1-0";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
+       };
+
+       spi2_cs: spi2-cs-pins {
+               samsung,pins = "gpp1-3";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_OUTPUT>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
+       };
+
+       spi2_cs_func: spi2-cs-func-pins {
+               samsung,pins = "gpp1-3";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
+       };
+
+       /* PERIC0 USI03_SPI */
+       spi3_bus: spi3-bus-pins {
+               samsung,pins = "gpp1-6", "gpp1-5", "gpp1-4";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
+       };
+
+       spi3_cs: spi3-cs-pins {
+               samsung,pins = "gpp1-7";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_OUTPUT>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
+       };
+
+       spi3_cs_func: spi3-cs-func-pins {
+               samsung,pins = "gpp1-7";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
+       };
+
+       /* PERIC0 USI04_SPI */
+       spi4_bus: spi4-bus-pins {
+               samsung,pins = "gpp2-2", "gpp2-1", "gpp2-0";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
+       };
+
+       spi4_cs: spi4-cs-pins {
+               samsung,pins = "gpp2-3";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_OUTPUT>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
+       };
+
+       spi4_cs_func: spi4-cs-func-pins {
+               samsung,pins = "gpp2-3";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
+       };
+
+       /* PERIC0 USI05_SPI */
+       spi5_bus: spi5-bus-pins {
+               samsung,pins = "gpp2-6", "gpp2-5", "gpp2-4";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
+       };
+
+       spi5_cs: spi5-cs-pins {
+               samsung,pins = "gpp2-7";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_OUTPUT>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
+       };
+
+       spi5_cs_func: spi5-cs-func-pins {
+               samsung,pins = "gpp2-7";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
+       };
+
+       /* USI_PERIC0_USI00_UART */
+       uart0_bus: uart0-bus-pins {
+               samsung,pins = "gpp0-0", "gpp0-1", "gpp0-2", "gpp0-3";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
+       };
+
+       uart0_bus_dual: uart0-bus-dual-pins {
+               samsung,pins = "gpp0-0", "gpp0-1";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
+       };
+
+       /* USI_PERIC0_USI01_UART */
+       uart1_bus: uart1-bus-pins {
+               samsung,pins = "gpp0-4", "gpp0-5", "gpp0-6", "gpp0-7";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
+       };
+
+       uart1_bus_dual: uart1-bus-dual-pins {
+               samsung,pins = "gpp0-4", "gpp0-5";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
+       };
+
+       /* USI_PERIC0_USI02_UART */
+       uart2_bus: uart2-bus-pins {
+               samsung,pins = "gpp1-0", "gpp1-1", "gpp1-2", "gpp1-3";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
+       };
+
+       uart2_bus_dual: uart2-bus-dual-pins {
+               samsung,pins = "gpp1-0", "gpp1-1";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
+       };
+
+       /* USI_PERIC0_USI03_UART */
+       uart3_bus: uart3-bus-pins {
+               samsung,pins = "gpp1-4", "gpp1-5", "gpp1-6", "gpp1-7";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
+       };
+
+       uart3_bus_dual: uart3-bus-dual-pins {
+               samsung,pins = "gpp1-4", "gpp1-5";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
+       };
+
+       /* USI_PERIC0_USI04_UART */
+       uart4_bus: uart4-bus-pins {
+               samsung,pins = "gpp2-0", "gpp2-1", "gpp2-2", "gpp2-3";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
+       };
+
+       uart4_bus_dual: uart4-bus-dual-pins {
+               samsung,pins = "gpp2-0", "gpp2-1";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
+       };
+
+       /* USI_PERIC0_USI05_UART */
+       uart5_bus: uart5-bus-pins {
+               samsung,pins = "gpp2-4", "gpp2-5", "gpp2-6", "gpp2-7";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
+       };
+
+       uart5_bus_dual: uart5-bus-dual-pins {
+               samsung,pins = "gpp2-4", "gpp2-5";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
+       };
+};
+
+&pinctrl_peric1 {
+       gpp3: gpp3 {
+               gpio-controller;
+               #gpio-cells = <2>;
+
+               interrupt-controller;
+               #interrupt-cells = <2>;
+       };
+
+       gpp4: gpp4 {
+               gpio-controller;
+               #gpio-cells = <2>;
+
+               interrupt-controller;
+               #interrupt-cells = <2>;
+       };
+
+       gpp5: gpp5 {
+               gpio-controller;
+               #gpio-cells = <2>;
+
+               interrupt-controller;
+               #interrupt-cells = <2>;
+       };
+
+       gpg1: gpg1 {
+               gpio-controller;
+               #gpio-cells = <2>;
+
+               interrupt-controller;
+               #interrupt-cells = <2>;
+       };
+
+       gpg2: gpg2 {
+               gpio-controller;
+               #gpio-cells = <2>;
+
+               interrupt-controller;
+               #interrupt-cells = <2>;
+       };
+
+       gpg3: gpg3 {
+               gpio-controller;
+               #gpio-cells = <2>;
+
+               interrupt-controller;
+               #interrupt-cells = <2>;
+       };
+
+       /* PERIC1 USI06 */
+       hsi2c12_bus: hsi2c12-bus-pins {
+               samsung,pins = "gpp3-0", "gpp3-1";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
+               samsung,pin-drv = <EXYNOS5420_PIN_DRV_LV1>;
+       };
+
+       /* PERIC1 USI06_I2C */
+       hsi2c13_bus: hsi2c13-bus-pins {
+               samsung,pins = "gpp3-2", "gpp3-3";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_3>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
+               samsung,pin-drv = <EXYNOS5420_PIN_DRV_LV1>;
+       };
+
+       /* PERIC1 USI07 */
+       hsi2c14_bus: hsi2c14-bus-pins {
+               samsung,pins = "gpp3-4", "gpp3-5";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
+               samsung,pin-drv = <EXYNOS5420_PIN_DRV_LV1>;
+       };
+
+       /* PERIC1 USI07_I2C */
+       hsi2c15_bus: hsi2c15-bus-pins {
+               samsung,pins = "gpp3-6", "gpp3-7";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_3>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
+               samsung,pin-drv = <EXYNOS5420_PIN_DRV_LV1>;
+       };
+
+       /* PERIC1 USI08 */
+       hsi2c16_bus: hsi2c16-bus-pins {
+               samsung,pins = "gpp4-0", "gpp4-1";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
+               samsung,pin-drv = <EXYNOS5420_PIN_DRV_LV1>;
+       };
+
+       /* PERIC1 USI08_I2C */
+       hsi2c17_bus: hsi2c17-bus-pins {
+               samsung,pins = "gpp4-2", "gpp4-3";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_3>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
+               samsung,pin-drv = <EXYNOS5420_PIN_DRV_LV1>;
+       };
+
+       /* PERIC1 USI09 */
+       hsi2c18_bus: hsi2c18-bus-pins {
+               samsung,pins = "gpp4-4", "gpp4-5";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
+               samsung,pin-drv = <EXYNOS5420_PIN_DRV_LV1>;
+       };
+
+       /* PERIC1 USI09_I2C */
+       hsi2c19_bus: hsi2c19-bus-pins {
+               samsung,pins = "gpp4-6", "gpp4-7";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_3>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
+               samsung,pin-drv = <EXYNOS5420_PIN_DRV_LV1>;
+       };
+
+       /* PERIC1 USI10 */
+       hsi2c20_bus: hsi2c20-bus-pins {
+               samsung,pins = "gpp5-0", "gpp5-1";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
+               samsung,pin-drv = <EXYNOS5420_PIN_DRV_LV1>;
+       };
+
+       /* PERIC1 USI10_I2C */
+       hsi2c21_bus: hsi2c21-bus-pins {
+               samsung,pins = "gpp5-2", "gpp5-3";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_3>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
+               samsung,pin-drv = <EXYNOS5420_PIN_DRV_LV1>;
+       };
+
+       /* PERIC1 USI11 */
+       hsi2c22_bus: hsi2c22-bus-pins {
+               samsung,pins = "gpp5-4", "gpp5-5";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
+               samsung,pin-drv = <EXYNOS5420_PIN_DRV_LV1>;
+       };
+
+       /* PERIC1 USI11_I2C */
+       hsi2c23_bus: hsi2c23-bus-pins {
+               samsung,pins = "gpp5-6", "gpp5-7";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_3>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
+               samsung,pin-drv = <EXYNOS5420_PIN_DRV_LV1>;
+       };
+
+       /* PERIC1 USI06_SPI */
+       spi6_bus: spi6-bus-pins {
+               samsung,pins = "gpp3-2", "gpp3-1", "gpp3-0";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
+               samsung,pin-drv = <EXYNOS5420_PIN_DRV_LV1>;
+       };
+
+       spi6_cs: spi6-cs-pins {
+               samsung,pins = "gpp3-3";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_OUTPUT>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
+               samsung,pin-drv = <EXYNOS5420_PIN_DRV_LV1>;
+       };
+
+       spi6_cs_func: spi6-cs-func-pins {
+               samsung,pins = "gpp3-3";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
+               samsung,pin-drv = <EXYNOS5420_PIN_DRV_LV1>;
+       };
+
+       /* PERIC1 USI07_SPI */
+       spi7_bus: spi7-bus-pins {
+               samsung,pins = "gpp3-6", "gpp3-5", "gpp3-4";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
+               samsung,pin-drv = <EXYNOS5420_PIN_DRV_LV1>;
+       };
+
+       spi7_cs: spi7-cs-pins {
+               samsung,pins = "gpp3-7";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_OUTPUT>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
+               samsung,pin-drv = <EXYNOS5420_PIN_DRV_LV1>;
+       };
+
+       spi7_cs_func: spi7-cs-func-pins {
+               samsung,pins = "gpp3-7";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
+               samsung,pin-drv = <EXYNOS5420_PIN_DRV_LV1>;
+       };
+
+       /* PERIC1 USI08_SPI */
+       spi8_bus: spi8-bus-pins {
+               samsung,pins = "gpp4-2", "gpp4-1", "gpp4-0";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
+               samsung,pin-drv = <EXYNOS5420_PIN_DRV_LV1>;
+       };
+
+       spi8_cs: spi8-cs-pins {
+               samsung,pins = "gpp4-3";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_OUTPUT>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
+               samsung,pin-drv = <EXYNOS5420_PIN_DRV_LV1>;
+       };
+
+       spi8_cs_func: spi8-cs-func-pins {
+               samsung,pins = "gpp4-3";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
+               samsung,pin-drv = <EXYNOS5420_PIN_DRV_LV1>;
+       };
+
+       /* PERIC1 USI09_SPI */
+       spi9_bus: spi9-bus-pins {
+               samsung,pins = "gpp4-6", "gpp4-5", "gpp4-4";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
+               samsung,pin-drv = <EXYNOS5420_PIN_DRV_LV1>;
+       };
+
+       spi9_cs: spi9-cs-pins {
+               samsung,pins = "gpp4-7";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_OUTPUT>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
+               samsung,pin-drv = <EXYNOS5420_PIN_DRV_LV1>;
+       };
+
+       spi9_cs_func: spi9-cs-func-pins {
+               samsung,pins = "gpp4-7";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
+               samsung,pin-drv = <EXYNOS5420_PIN_DRV_LV1>;
+       };
+
+       /* PERIC1 USI10_SPI */
+       spi10_bus: spi10-pins {
+               samsung,pins = "gpp5-2", "gpp5-1", "gpp5-0";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
+               samsung,pin-drv = <EXYNOS5420_PIN_DRV_LV1>;
+       };
+
+       spi10_cs: spi10-cs-pins {
+               samsung,pins = "gpp5-3";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_OUTPUT>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
+               samsung,pin-drv = <EXYNOS5420_PIN_DRV_LV1>;
+       };
+
+       spi10_cs_func: spi10-cs-func-pins {
+               samsung,pins = "gpp5-3";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
+               samsung,pin-drv = <EXYNOS5420_PIN_DRV_LV1>;
+       };
+
+       /* PERIC1 USI11_SPI */
+       spi11_bus: spi11-pins {
+               samsung,pins = "gpp3-6", "gpp3-5", "gpp3-4";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
+               samsung,pin-drv = <EXYNOS5420_PIN_DRV_LV1>;
+       };
+
+       spi11_cs: spi11-cs-pins {
+               samsung,pins = "gpp3-7";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_OUTPUT>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
+               samsung,pin-drv = <EXYNOS5420_PIN_DRV_LV1>;
+       };
+
+       spi11_cs_func: spi11-cs-func-pins {
+               samsung,pins = "gpp3-7";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
+               samsung,pin-drv = <EXYNOS5420_PIN_DRV_LV1>;
+       };
+
+       /* USI_PERIC1_USI06_UART */
+       uart6_bus: uart6-bus-pins {
+               samsung,pins = "gpp3-3", "gpp3-2", "gpp3-1", "gpp3-0";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
+       };
+
+       uart6_bus_dual: uart6-bus-dual-pins {
+               samsung,pins = "gpp3-0", "gpp3-1";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
+       };
+
+       /* USI_PERIC1_USI07_UART */
+       uart7_bus: uart7-bus-pins {
+               samsung,pins = "gpp3-7", "gpp3-6", "gpp3-5", "gpp3-4";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
+       };
+
+       uart7_bus_dual: uart7-bus-dual-pins {
+               samsung,pins = "gpp3-4", "gpp3-5";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
+       };
+
+       /* USI_PERIC1_USI08_UART */
+       uart8_bus: uart8-bus-pins {
+               samsung,pins = "gpp4-3", "gpp4-2", "gpp4-1", "gpp4-0";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
+       };
+
+       uart8_bus_dual: uart8-bus-dual-pins {
+               samsung,pins = "gpp4-0", "gpp4-1";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
+       };
+
+       /* USI_PERIC1_USI09_UART */
+       uart9_bus: uart9-bus-pins {
+               samsung,pins = "gpp4-7", "gpp4-6", "gpp4-5", "gpp4-4";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
+       };
+
+       uart9_bus_dual: uart9-bus-dual-pins {
+               samsung,pins = "gpp4-4", "gpp4-5";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
+       };
+
+       /* USI_PERIC1_USI10_UART */
+       uart10_bus: uart10-bus-pins {
+               samsung,pins = "gpp5-3", "gpp5-2", "gpp5-1", "gpp5-0";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
+       };
+
+       uart10_bus_dual: uart10-bus-dual-pins {
+               samsung,pins = "gpp5-0", "gpp5-1";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
+       };
+
+       /* USI_PERIC1_USI11_UART */
+       uart11_bus: uart11-bus-pins {
+               samsung,pins = "gpp5-7", "gpp5-6", "gpp5-5", "gpp5-4";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
+       };
+
+       uart11_bus_dual: uart11-bus-dual-pins {
+               samsung,pins = "gpp5-4", "gpp5-5";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
+       };
+};
diff --git a/arch/arm64/boot/dts/exynos/exynosautov9-sadk.dts b/arch/arm64/boot/dts/exynos/exynosautov9-sadk.dts
new file mode 100644 (file)
index 0000000..ef46d7a
--- /dev/null
@@ -0,0 +1,56 @@
+// SPDX-License-Identifier: GPL-2.0
+/*
+ * Samsung ExynosAutov9 SADK board device tree source
+ *
+ * Copyright (c) 2021 Samsung Electronics Co., Ltd.
+ *
+ */
+
+/dts-v1/;
+#include "exynosautov9.dtsi"
+#include <dt-bindings/gpio/gpio.h>
+
+/ {
+       model = "Samsung ExynosAuto v9 SADK board";
+       compatible = "samsung,exynosautov9-sadk", "samsung,exynosautov9";
+
+       #address-cells = <2>;
+       #size-cells = <2>;
+
+       aliases {
+               serial0 = &serial_0;
+       };
+
+       chosen {
+               stdout-path = &serial_0;
+       };
+
+       memory@80000000 {
+               device_type = "memory";
+               reg = <0x0 0x80000000 0x0 0x77000000>,
+                     <0x8 0x80000000 0x1 0x7ba00000>,
+                     <0xa 0x00000000 0x2 0x00000000>;
+       };
+
+       ufs_0_fixed_vcc_reg: regulator-0 {
+               compatible = "regulator-fixed";
+               regulator-name = "ufs-vcc";
+               gpio = <&gpq0 1 GPIO_ACTIVE_HIGH>;
+               regulator-boot-on;
+               enable-active-high;
+       };
+};
+
+&serial_0 {
+       status = "okay";
+};
+
+&ufs_0_phy {
+       status = "okay";
+};
+
+&ufs_0 {
+       status = "okay";
+       vcc-supply = <&ufs_0_fixed_vcc_reg>;
+       vcc-fixed-regulator;
+};
diff --git a/arch/arm64/boot/dts/exynos/exynosautov9.dtsi b/arch/arm64/boot/dts/exynos/exynosautov9.dtsi
new file mode 100644 (file)
index 0000000..3e47273
--- /dev/null
@@ -0,0 +1,306 @@
+// SPDX-License-Identifier: GPL-2.0
+/*
+ * Samsung's ExynosAuto v9 SoC device tree source
+ *
+ * Copyright (c) 2021 Samsung Electronics Co., Ltd.
+ *
+ */
+
+#include <dt-bindings/interrupt-controller/arm-gic.h>
+
+/ {
+       compatible = "samsung,exynosautov9";
+       #address-cells = <2>;
+       #size-cells = <1>;
+
+       interrupt-parent = <&gic>;
+
+       aliases {
+               pinctrl0 = &pinctrl_alive;
+               pinctrl1 = &pinctrl_aud;
+               pinctrl2 = &pinctrl_fsys0;
+               pinctrl3 = &pinctrl_fsys1;
+               pinctrl4 = &pinctrl_fsys2;
+               pinctrl5 = &pinctrl_peric0;
+               pinctrl6 = &pinctrl_peric1;
+       };
+
+       arm-pmu {
+               compatible = "arm,cortex-a76-pmu";
+               interrupts = <GIC_SPI 84 IRQ_TYPE_LEVEL_HIGH>,
+                            <GIC_SPI 85 IRQ_TYPE_LEVEL_HIGH>,
+                            <GIC_SPI 86 IRQ_TYPE_LEVEL_HIGH>,
+                            <GIC_SPI 87 IRQ_TYPE_LEVEL_HIGH>,
+                            <GIC_SPI 107 IRQ_TYPE_LEVEL_HIGH>,
+                            <GIC_SPI 108 IRQ_TYPE_LEVEL_HIGH>,
+                            <GIC_SPI 109 IRQ_TYPE_LEVEL_HIGH>,
+                            <GIC_SPI 110 IRQ_TYPE_LEVEL_HIGH>;
+               interrupt-affinity = <&cpu0>, <&cpu1>, <&cpu2>, <&cpu3>,
+                                    <&cpu4>, <&cpu5>, <&cpu6>, <&cpu7>;
+       };
+
+       cpus {
+               #address-cells = <1>;
+               #size-cells = <0>;
+
+               cpu-map {
+                       cluster0 {
+                               core0 {
+                                       cpu = <&cpu0>;
+                               };
+                               core1 {
+                                       cpu = <&cpu1>;
+                               };
+                               core2 {
+                                       cpu = <&cpu2>;
+                               };
+                               core3 {
+                                       cpu = <&cpu3>;
+                               };
+                       };
+
+                       cluster1 {
+                               core0 {
+                                       cpu = <&cpu4>;
+                               };
+                               core1 {
+                                       cpu = <&cpu5>;
+                               };
+                               core2 {
+                                       cpu = <&cpu6>;
+                               };
+                               core3 {
+                                       cpu = <&cpu7>;
+                               };
+                       };
+               };
+
+               cpu0: cpu@0 {
+                       device_type = "cpu";
+                       compatible = "arm,cortex-a76";
+                       reg = <0x0>;
+                       enable-method = "psci";
+               };
+
+               cpu1: cpu@100 {
+                       device_type = "cpu";
+                       compatible = "arm,cortex-a76";
+                       reg = <0x100>;
+                       enable-method = "psci";
+               };
+
+               cpu2: cpu@200 {
+                       device_type = "cpu";
+                       compatible = "arm,cortex-a76";
+                       reg = <0x200>;
+                       enable-method = "psci";
+               };
+
+               cpu3: cpu@300 {
+                       device_type = "cpu";
+                       compatible = "arm,cortex-a76";
+                       reg = <0x300>;
+                       enable-method = "psci";
+               };
+
+               cpu4: cpu@10000 {
+                       device_type = "cpu";
+                       compatible = "arm,cortex-a76";
+                       reg = <0x10000>;
+                       enable-method = "psci";
+               };
+
+               cpu5: cpu@10100 {
+                       device_type = "cpu";
+                       compatible = "arm,cortex-a76";
+                       reg = <0x10100>;
+                       enable-method = "psci";
+               };
+
+               cpu6: cpu@10200 {
+                       device_type = "cpu";
+                       compatible = "arm,cortex-a76";
+                       reg = <0x10200>;
+                       enable-method = "psci";
+               };
+
+               cpu7: cpu@10300 {
+                       device_type = "cpu";
+                       compatible = "arm,cortex-a76";
+                       reg = <0x10300>;
+                       enable-method = "psci";
+               };
+       };
+
+       psci {
+               compatible = "arm,psci-1.0";
+               method = "smc";
+               cpu_suspend = <0xc4000001>;
+               cpu_off = <0x84000002>;
+               cpu_on = <0xc4000003>;
+       };
+
+       timer {
+               compatible = "arm,armv8-timer";
+               interrupts = <GIC_PPI 13 (GIC_CPU_MASK_SIMPLE(8) | IRQ_TYPE_LEVEL_LOW)>,
+                            <GIC_PPI 14 (GIC_CPU_MASK_SIMPLE(8) | IRQ_TYPE_LEVEL_LOW)>,
+                            <GIC_PPI 11 (GIC_CPU_MASK_SIMPLE(8) | IRQ_TYPE_LEVEL_LOW)>,
+                            <GIC_PPI 10 (GIC_CPU_MASK_SIMPLE(8) | IRQ_TYPE_LEVEL_LOW)>;
+       };
+
+       fixed-rate-clocks {
+               xtcxo: clock {
+                       compatible = "fixed-clock";
+                       #clock-cells = <0>;
+                       clock-frequency = <26000000>;
+                       clock-output-names = "oscclk";
+               };
+
+               /*
+                * Keep the stub clock for serial driver, until proper clock
+                * driver is implemented.
+                */
+               uart_clock: uart-clock {
+                       compatible = "fixed-clock";
+                       #clock-cells = <0>;
+                       clock-frequency = <133250000>;
+                       clock-output-names = "uart";
+               };
+
+               /*
+                * Keep the stub clock for ufs driver, until proper clock
+                * driver is implemented.
+                */
+               ufs_core_clock: ufs-core-clock {
+                       compatible = "fixed-clock";
+                       #clock-cells = <0>;
+                       clock-frequency = <166562500>;
+               };
+       };
+
+       soc: soc@0 {
+               compatible = "simple-bus";
+               #address-cells = <1>;
+               #size-cells = <1>;
+               ranges = <0x0 0x0 0x0 0x20000000>;
+
+               chipid@10000000 {
+                       compatible = "samsung,exynos850-chipid";
+                       reg = <0x10000000 0x24>;
+               };
+
+               gic: interrupt-controller@10101000 {
+                       compatible = "arm,gic-400";
+                       #interrupt-cells = <3>;
+                       #address-cells = <0>;
+                       interrupt-controller;
+                       reg = <0x10101000 0x1000>,
+                             <0x10102000 0x2000>,
+                             <0x10104000 0x2000>,
+                             <0x10106000 0x2000>;
+                       interrupts = <GIC_PPI 9 (GIC_CPU_MASK_SIMPLE(8) |
+                                                IRQ_TYPE_LEVEL_HIGH)>;
+               };
+
+               pinctrl_alive: pinctrl@10450000 {
+                       compatible = "samsung,exynosautov9-pinctrl";
+                       reg = <0x10450000 0x1000>;
+
+                       wakeup-interrupt-controller {
+                               compatible = "samsung,exynos7-wakeup-eint";
+                       };
+               };
+
+               pinctrl_aud: pinctrl@19c60000{
+                       compatible = "samsung,exynosautov9-pinctrl";
+                       reg = <0x19c60000 0x1000>;
+               };
+
+               pinctrl_fsys0: pinctrl@17740000 {
+                       compatible = "samsung,exynosautov9-pinctrl";
+                       reg = <0x17740000 0x1000>;
+                       interrupts = <GIC_SPI 163 IRQ_TYPE_LEVEL_HIGH>;
+               };
+
+               pinctrl_fsys1: pinctrl@17060000 {
+                       compatible = "samsung,exynosautov9-pinctrl";
+                       reg = <0x17060000 0x1000>;
+                       interrupts = <GIC_SPI 188 IRQ_TYPE_LEVEL_HIGH>;
+               };
+
+               pinctrl_fsys2: pinctrl@17c30000 {
+                       compatible = "samsung,exynosautov9-pinctrl";
+                       reg = <0x17c30000 0x1000>;
+                       interrupts = <GIC_SPI 217 IRQ_TYPE_LEVEL_HIGH>;
+               };
+
+               pinctrl_peric0: pinctrl@10230000 {
+                       compatible = "samsung,exynosautov9-pinctrl";
+                       reg = <0x10230000 0x1000>;
+                       interrupts = <GIC_SPI 338 IRQ_TYPE_LEVEL_HIGH>;
+               };
+
+               pinctrl_peric1: pinctrl@10830000 {
+                       compatible = "samsung,exynosautov9-pinctrl";
+                       reg = <0x10830000 0x1000>;
+                       interrupts = <GIC_SPI 356 IRQ_TYPE_LEVEL_HIGH>;
+               };
+
+               pmu_system_controller: system-controller@10460000 {
+                       compatible = "samsung,exynos7-pmu", "syscon";
+                       reg = <0x10460000 0x10000>;
+               };
+
+               syscon_fsys2: syscon@17c20000 {
+                       compatible = "samsung,exynosautov9-sysreg", "syscon";
+                       reg = <0x17c20000 0x1000>;
+               };
+
+               /* USI: UART */
+               serial_0: uart@10300000 {
+                       compatible = "samsung,exynos850-uart";
+                       reg = <0x10300000 0x100>;
+                       interrupts = <GIC_SPI 345 IRQ_TYPE_LEVEL_HIGH>;
+                       pinctrl-names = "default";
+                       pinctrl-0 = <&uart0_bus_dual>;
+                       clocks = <&uart_clock>, <&uart_clock>;
+                       clock-names = "uart", "clk_uart_baud0";
+                       status = "disabled";
+               };
+
+               ufs_0_phy: ufs0-phy@17e04000 {
+                       compatible = "samsung,exynosautov9-ufs-phy";
+                       reg = <0x17e04000 0xc00>;
+                       reg-names = "phy-pma";
+                       samsung,pmu-syscon = <&pmu_system_controller>;
+                       #phy-cells = <0>;
+                       clocks = <&xtcxo>;
+                       clock-names = "ref_clk";
+                       status = "disabled";
+               };
+
+               ufs_0: ufs0@17e00000 {
+                       compatible ="samsung,exynosautov9-ufs";
+
+                       reg = <0x17e00000 0x100>,  /* 0: HCI standard */
+                               <0x17e01100 0x410>,  /* 1: Vendor-specific */
+                               <0x17e80000 0x8000>,  /* 2: UNIPRO */
+                               <0x17dc0000 0x2200>;  /* 3: UFS protector */
+                       reg-names = "hci", "vs_hci", "unipro", "ufsp";
+                       interrupts = <GIC_SPI 227 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&ufs_core_clock>,
+                               <&ufs_core_clock>;
+                       clock-names = "core_clk", "sclk_unipro_main";
+                       freq-table-hz = <0 0>, <0 0>;
+                       pinctrl-names = "default";
+                       pinctrl-0 = <&ufs_rst_n &ufs_refclk_out>;
+                       phys = <&ufs_0_phy>;
+                       phy-names = "ufs-phy";
+                       samsung,sysreg = <&syscon_fsys2>;
+                       samsung,ufs-shareability-reg-offset = <0x710>;
+                       status = "disabled";
+               };
+       };
+};
+
+#include "exynosautov9-pinctrl.dtsi"
index db9e36e..a14a617 100644 (file)
@@ -25,6 +25,8 @@ dtb-$(CONFIG_ARCH_LAYERSCAPE) += fsl-ls2080a-rdb.dtb
 dtb-$(CONFIG_ARCH_LAYERSCAPE) += fsl-ls2080a-simu.dtb
 dtb-$(CONFIG_ARCH_LAYERSCAPE) += fsl-ls2088a-qds.dtb
 dtb-$(CONFIG_ARCH_LAYERSCAPE) += fsl-ls2088a-rdb.dtb
+dtb-$(CONFIG_ARCH_LAYERSCAPE) += fsl-lx2160a-bluebox3.dtb
+dtb-$(CONFIG_ARCH_LAYERSCAPE) += fsl-lx2160a-bluebox3-rev-a.dtb
 dtb-$(CONFIG_ARCH_LAYERSCAPE) += fsl-lx2160a-clearfog-cx.dtb
 dtb-$(CONFIG_ARCH_LAYERSCAPE) += fsl-lx2160a-honeycomb.dtb
 dtb-$(CONFIG_ARCH_LAYERSCAPE) += fsl-lx2160a-qds.dtb
@@ -70,4 +72,6 @@ dtb-$(CONFIG_ARCH_MXC) += imx8qxp-ai_ml.dtb
 dtb-$(CONFIG_ARCH_MXC) += imx8qxp-colibri-eval-v3.dtb
 dtb-$(CONFIG_ARCH_MXC) += imx8qxp-mek.dtb
 
+dtb-$(CONFIG_ARCH_S32) += s32g274a-evb.dtb
+dtb-$(CONFIG_ARCH_S32) += s32g274a-rdb2.dtb
 dtb-$(CONFIG_ARCH_S32) += s32v234-evb.dtb
index 79f155d..e662677 100644 (file)
@@ -15,6 +15,7 @@
        compatible = "fsl,ls1012a-rdb", "fsl,ls1012a";
 
        aliases {
+               serial0 = &duart0;
                mmc0 = &esdhc0;
                mmc1 = &esdhc1;
        };
index e8d3127..7cd29ab 100644 (file)
@@ -8,7 +8,7 @@
  * None of the  four SerDes lanes are used by the module, instead they are
  * all led out to the carrier for customer use.
  *
- * Copyright (C) 2020 Michael Walle <michael@walle.cc>
+ * Copyright (C) 2021 Michael Walle <michael@walle.cc>
  *
  */
 
        compatible = "kontron,sl28-var1", "kontron,sl28", "fsl,ls1028a";
 };
 
+&enetc_mdio_pf3 {
+       /* Delete unused phy node */
+       /delete-node/ ethernet-phy@5;
+
+       phy0: ethernet-phy@4 {
+               reg = <0x4>;
+               eee-broken-1000t;
+               eee-broken-100tx;
+               qca,clk-out-frequency = <125000000>;
+               qca,clk-out-strength = <AR803X_STRENGTH_FULL>;
+               qca,keep-pll-enabled;
+               vddio-supply = <&vddio>;
+
+               vddio: vddio-regulator {
+                       regulator-name = "VDDIO";
+                       regulator-min-microvolt = <1800000>;
+                       regulator-max-microvolt = <1800000>;
+               };
+
+               vddh: vddh-regulator {
+                       regulator-name = "VDDH";
+               };
+       };
+};
+
 &enetc_port0 {
        status = "disabled";
-       /*
-        * Delete both the phy-handle to the old phy0 label as well as
-        * the mdio node with the old phy node with the old phy0 label.
-        */
+       /* Delete the phy-handle to the old phy0 label */
        /delete-property/ phy-handle;
-       /delete-node/ mdio;
 };
 
 &enetc_port1 {
        phy-handle = <&phy0>;
-       phy-connection-type = "rgmii-id";
+       phy-mode = "rgmii-id";
        status = "okay";
-
-       mdio {
-               #address-cells = <1>;
-               #size-cells = <0>;
-
-               phy0: ethernet-phy@4 {
-                       reg = <0x4>;
-                       eee-broken-1000t;
-                       eee-broken-100tx;
-                       qca,clk-out-frequency = <125000000>;
-                       qca,clk-out-strength = <AR803X_STRENGTH_FULL>;
-                       qca,keep-pll-enabled;
-                       vddio-supply = <&vddio>;
-
-                       vddio: vddio-regulator {
-                               regulator-name = "VDDIO";
-                               regulator-min-microvolt = <1800000>;
-                               regulator-max-microvolt = <1800000>;
-                       };
-
-                       vddh: vddh-regulator {
-                               regulator-name = "VDDH";
-                       };
-               };
-       };
 };
index f6a79c8..330e34f 100644 (file)
@@ -5,7 +5,7 @@
  * This is for the network variant 2 which has two ethernet ports. These
  * ports are connected to the internal switch.
  *
- * Copyright (C) 2020 Michael Walle <michael@walle.cc>
+ * Copyright (C) 2021 Michael Walle <michael@walle.cc>
  *
  */
 
 };
 
 &enetc_mdio_pf3 {
-       phy0: ethernet-phy@5 {
-               reg = <0x5>;
-               eee-broken-1000t;
-               eee-broken-100tx;
-       };
-
        phy1: ethernet-phy@4 {
                reg = <0x4>;
                eee-broken-1000t;
 &enetc_port0 {
        status = "disabled";
        /*
-        * In the base device tree the PHY was registered in the mdio
-        * subnode as it is PHY for this port. On this module this PHY
-        * is connected to a switch port instead and registered above.
-        * Therefore, delete the mdio subnode as well as the phy-handle
-        * property here.
+        * In the base device tree the PHY at address 5 was assigned for
+        * this port. On this module this PHY is connected to a switch
+        * port instead. Therefore, delete the phy-handle property here.
         */
        /delete-property/ phy-handle;
-       /delete-node/ mdio;
 };
 
 &enetc_port2 {
index e65d1c4..9b5e92f 100644 (file)
@@ -5,7 +5,7 @@
  * This is for the network variant 4 which has two ethernet ports. It
  * extends the base and provides one more port connected via RGMII.
  *
- * Copyright (C) 2019 Michael Walle <michael@walle.cc>
+ * Copyright (C) 2021 Michael Walle <michael@walle.cc>
  *
  */
 
        compatible = "kontron,sl28-var4", "kontron,sl28", "fsl,ls1028a";
 };
 
-&enetc_port1 {
-       phy-handle = <&phy1>;
-       phy-connection-type = "rgmii-id";
-       status = "okay";
+&enetc_mdio_pf3 {
+       phy1: ethernet-phy@4 {
+               reg = <0x4>;
+               eee-broken-1000t;
+               eee-broken-100tx;
+               qca,clk-out-frequency = <125000000>;
+               qca,clk-out-strength = <AR803X_STRENGTH_FULL>;
+               qca,keep-pll-enabled;
+               vddio-supply = <&vddio>;
 
-       mdio {
-               #address-cells = <1>;
-               #size-cells = <0>;
-
-               phy1: ethernet-phy@4 {
-                       reg = <0x4>;
-                       eee-broken-1000t;
-                       eee-broken-100tx;
-                       qca,clk-out-frequency = <125000000>;
-                       qca,clk-out-strength = <AR803X_STRENGTH_FULL>;
-                       qca,keep-pll-enabled;
-                       vddio-supply = <&vddio>;
-
-                       vddio: vddio-regulator {
-                               regulator-name = "VDDIO";
-                               regulator-min-microvolt = <1800000>;
-                               regulator-max-microvolt = <1800000>;
-                       };
+               vddio: vddio-regulator {
+                       regulator-name = "VDDIO";
+                       regulator-min-microvolt = <1800000>;
+                       regulator-max-microvolt = <1800000>;
+               };
 
-                       vddh: vddh-regulator {
-                               regulator-name = "VDDH";
-                       };
+               vddh: vddh-regulator {
+                       regulator-name = "VDDH";
                };
        };
 };
+
+&enetc_port1 {
+       phy-handle = <&phy1>;
+       phy-mode = "rgmii-id";
+       status = "okay";
+};
index a92ecb3..d74e738 100644 (file)
@@ -2,7 +2,7 @@
 /*
  * Device Tree file for the Kontron SMARC-sAL28 board.
  *
- * Copyright (C) 2019 Michael Walle <michael@walle.cc>
+ * Copyright (C) 2021 Michael Walle <michael@walle.cc>
  *
  */
 
        status = "okay";
 };
 
+&enetc_mdio_pf3 {
+       phy0: ethernet-phy@5 {
+               reg = <0x5>;
+               eee-broken-1000t;
+               eee-broken-100tx;
+       };
+};
+
 &enetc_port0 {
        phy-handle = <&phy0>;
-       phy-connection-type = "sgmii";
+       phy-mode = "sgmii";
        managed = "in-band-status";
        status = "okay";
-
-       mdio {
-               #address-cells = <1>;
-               #size-cells = <0>;
-
-               phy0: ethernet-phy@5 {
-                       reg = <0x5>;
-                       eee-broken-1000t;
-                       eee-broken-100tx;
-               };
-       };
 };
 
 &esdhc {
 &lpuart1 {
        status = "okay";
 };
+
+&usb0 {
+       status = "okay";
+};
+
+&usb1 {
+       status = "okay";
+};
index bfd14b6..6e2a1da 100644 (file)
 
 &enetc_port1 {
        phy-handle = <&qds_phy1>;
-       phy-connection-type = "rgmii-id";
+       phy-mode = "rgmii-id";
        status = "okay";
 };
 
 &sata {
        status = "okay";
 };
+
+&usb0 {
+       status = "okay";
+};
+
+&usb1 {
+       status = "okay";
+};
index d7b5272..7719f44 100644 (file)
 };
 
 &enetc_mdio_pf3 {
+       sgmii_phy0: ethernet-phy@2 {
+               reg = <0x2>;
+       };
+
        /* VSC8514 QSGMII quad PHY */
        qsgmii_phy0: ethernet-phy@10 {
                reg = <0x10>;
 
 &enetc_port0 {
        phy-handle = <&sgmii_phy0>;
-       phy-connection-type = "sgmii";
+       phy-mode = "sgmii";
        managed = "in-band-status";
        status = "okay";
-
-       mdio {
-               #address-cells = <1>;
-               #size-cells = <0>;
-               sgmii_phy0: ethernet-phy@2 {
-                       reg = <0x2>;
-               };
-       };
 };
 
 &enetc_port2 {
        status = "okay";
 };
 
+&usb0 {
+       status = "okay";
+};
+
 &usb1 {
        dr_mode = "otg";
+       status = "okay";
 };
index 06b36cc..fd3f3e8 100644 (file)
                clock-output-names = "phy_27m";
        };
 
-       dpclk: clock-controller@f1f0000 {
-               compatible = "fsl,ls1028a-plldig";
-               reg = <0x0 0xf1f0000 0x0 0xffff>;
-               #clock-cells = <0>;
-               clocks = <&osc_27m>;
-       };
-
        firmware {
                optee: optee  {
                        compatible = "linaro,optee-tz";
                        snps,dis_rxdet_inp3_quirk;
                        snps,quirk-frame-length-adjustment = <0x20>;
                        snps,incr-burst-type-adjustment = <1>, <4>, <8>, <16>;
+                       status = "disabled";
                };
 
                usb1: usb@3110000 {
                        snps,dis_rxdet_inp3_quirk;
                        snps,quirk-frame-length-adjustment = <0x20>;
                        snps,incr-burst-type-adjustment = <1>, <4>, <8>, <16>;
+                       status = "disabled";
                };
 
                sata: sata@3200000 {
                        clock-names = "wdog_clk", "apb_pclk";
                };
 
+               malidp0: display@f080000 {
+                       compatible = "arm,mali-dp500";
+                       reg = <0x0 0xf080000 0x0 0x10000>;
+                       interrupts = <0 222 IRQ_TYPE_LEVEL_HIGH>,
+                                    <0 223 IRQ_TYPE_LEVEL_HIGH>;
+                       interrupt-names = "DE", "SE";
+                       clocks = <&dpclk>,
+                                <&clockgen QORIQ_CLK_HWACCEL 2>,
+                                <&clockgen QORIQ_CLK_HWACCEL 2>,
+                                <&clockgen QORIQ_CLK_HWACCEL 2>;
+                       clock-names = "pxlclk", "mclk", "aclk", "pclk";
+                       arm,malidp-output-port-lines = /bits/ 8 <8 8 8>;
+                       arm,malidp-arqos-value = <0xd000d000>;
+
+                       port {
+                               dpi0_out: endpoint {
+
+                               };
+                       };
+               };
+
+               gpu: gpu@f0c0000 {
+                       compatible = "vivante,gc";
+                       reg = <0x0 0xf0c0000 0x0 0x10000>;
+                       interrupts = <GIC_SPI 220 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&clockgen QORIQ_CLK_HWACCEL 2>,
+                                <&clockgen QORIQ_CLK_HWACCEL 2>,
+                                <&clockgen QORIQ_CLK_HWACCEL 2>;
+                       clock-names = "core", "shader", "bus";
+                       #cooling-cells = <2>;
+               };
+
                sai1: audio-controller@f100000 {
                        #sound-dai-cells = <0>;
                        compatible = "fsl,vf610-sai";
                        status = "disabled";
                };
 
+               dpclk: clock-controller@f1f0000 {
+                       compatible = "fsl,ls1028a-plldig";
+                       reg = <0x0 0xf1f0000 0x0 0x10000>;
+                       #clock-cells = <0>;
+                       clocks = <&osc_27m>;
+               };
+
                tmu: tmu@1f80000 {
                        compatible = "fsl,qoriq-tmu";
                        reg = <0x0 0x1f80000 0x0 0x10000>;
                                fixed-link {
                                        speed = <2500>;
                                        full-duplex;
+                                       pause;
                                };
                        };
 
                                                fixed-link {
                                                        speed = <2500>;
                                                        full-duplex;
+                                                       pause;
                                                };
                                        };
 
                                                fixed-link {
                                                        speed = <1000>;
                                                        full-duplex;
+                                                       pause;
                                                };
                                        };
                                };
                                fixed-link {
                                        speed = <1000>;
                                        full-duplex;
+                                       pause;
                                };
                        };
 
                };
        };
 
-       malidp0: display@f080000 {
-               compatible = "arm,mali-dp500";
-               reg = <0x0 0xf080000 0x0 0x10000>;
-               interrupts = <0 222 IRQ_TYPE_LEVEL_HIGH>,
-                            <0 223 IRQ_TYPE_LEVEL_HIGH>;
-               interrupt-names = "DE", "SE";
-               clocks = <&dpclk>,
-                        <&clockgen QORIQ_CLK_HWACCEL 2>,
-                        <&clockgen QORIQ_CLK_HWACCEL 2>,
-                        <&clockgen QORIQ_CLK_HWACCEL 2>;
-               clock-names = "pxlclk", "mclk", "aclk", "pclk";
-               arm,malidp-output-port-lines = /bits/ 8 <8 8 8>;
-               arm,malidp-arqos-value = <0xd000d000>;
-
-               port {
-                       dp0_out: endpoint {
-
-                       };
-               };
-       };
 };
index f85e437..f891ef6 100644 (file)
                                interrupt-controller;
                                reg = <0x14 4>;
                                interrupt-map =
-                                       <0 0 &gic GIC_SPI 0 IRQ_TYPE_LEVEL_HIGH>,
-                                       <1 0 &gic GIC_SPI 1 IRQ_TYPE_LEVEL_HIGH>,
-                                       <2 0 &gic GIC_SPI 2 IRQ_TYPE_LEVEL_HIGH>,
-                                       <3 0 &gic GIC_SPI 3 IRQ_TYPE_LEVEL_HIGH>,
-                                       <4 0 &gic GIC_SPI 4 IRQ_TYPE_LEVEL_HIGH>,
-                                       <5 0 &gic GIC_SPI 5 IRQ_TYPE_LEVEL_HIGH>,
-                                       <6 0 &gic GIC_SPI 6 IRQ_TYPE_LEVEL_HIGH>,
-                                       <7 0 &gic GIC_SPI 7 IRQ_TYPE_LEVEL_HIGH>,
-                                       <8 0 &gic GIC_SPI 8 IRQ_TYPE_LEVEL_HIGH>,
-                                       <9 0 &gic GIC_SPI 9 IRQ_TYPE_LEVEL_HIGH>,
-                                       <10 0 &gic GIC_SPI 10 IRQ_TYPE_LEVEL_HIGH>,
-                                       <11 0 &gic GIC_SPI 11 IRQ_TYPE_LEVEL_HIGH>;
+                                       <0 0 &gic 0 0 GIC_SPI 0 IRQ_TYPE_LEVEL_HIGH>,
+                                       <1 0 &gic 0 0 GIC_SPI 1 IRQ_TYPE_LEVEL_HIGH>,
+                                       <2 0 &gic 0 0 GIC_SPI 2 IRQ_TYPE_LEVEL_HIGH>,
+                                       <3 0 &gic 0 0 GIC_SPI 3 IRQ_TYPE_LEVEL_HIGH>,
+                                       <4 0 &gic 0 0 GIC_SPI 4 IRQ_TYPE_LEVEL_HIGH>,
+                                       <5 0 &gic 0 0 GIC_SPI 5 IRQ_TYPE_LEVEL_HIGH>,
+                                       <6 0 &gic 0 0 GIC_SPI 6 IRQ_TYPE_LEVEL_HIGH>,
+                                       <7 0 &gic 0 0 GIC_SPI 7 IRQ_TYPE_LEVEL_HIGH>,
+                                       <8 0 &gic 0 0 GIC_SPI 8 IRQ_TYPE_LEVEL_HIGH>,
+                                       <9 0 &gic 0 0 GIC_SPI 9 IRQ_TYPE_LEVEL_HIGH>,
+                                       <10 0 &gic 0 0 GIC_SPI 10 IRQ_TYPE_LEVEL_HIGH>,
+                                       <11 0 &gic 0 0 GIC_SPI 11 IRQ_TYPE_LEVEL_HIGH>;
                                interrupt-map-mask = <0xffffffff 0x0>;
                        };
                };
                };
 
                cluster1_core0_watchdog: wdt@c000000 {
-                       compatible = "arm,sp805-wdt", "arm,primecell";
+                       compatible = "arm,sp805", "arm,primecell";
                        reg = <0x0 0xc000000 0x0 0x1000>;
                        clocks = <&clockgen QORIQ_CLK_PLATFORM_PLL
                                            QORIQ_CLK_PLL_DIV(16)>,
                };
 
                cluster1_core1_watchdog: wdt@c010000 {
-                       compatible = "arm,sp805-wdt", "arm,primecell";
+                       compatible = "arm,sp805", "arm,primecell";
                        reg = <0x0 0xc010000 0x0 0x1000>;
                        clocks = <&clockgen QORIQ_CLK_PLATFORM_PLL
                                            QORIQ_CLK_PLL_DIV(16)>,
                };
 
                cluster1_core2_watchdog: wdt@c020000 {
-                       compatible = "arm,sp805-wdt", "arm,primecell";
+                       compatible = "arm,sp805", "arm,primecell";
                        reg = <0x0 0xc020000 0x0 0x1000>;
                        clocks = <&clockgen QORIQ_CLK_PLATFORM_PLL
                                            QORIQ_CLK_PLL_DIV(16)>,
                };
 
                cluster1_core3_watchdog: wdt@c030000 {
-                       compatible = "arm,sp805-wdt", "arm,primecell";
+                       compatible = "arm,sp805", "arm,primecell";
                        reg = <0x0 0xc030000 0x0 0x1000>;
                        clocks = <&clockgen QORIQ_CLK_PLATFORM_PLL
                                            QORIQ_CLK_PLL_DIV(16)>,
                };
 
                cluster2_core0_watchdog: wdt@c100000 {
-                       compatible = "arm,sp805-wdt", "arm,primecell";
+                       compatible = "arm,sp805", "arm,primecell";
                        reg = <0x0 0xc100000 0x0 0x1000>;
                        clocks = <&clockgen QORIQ_CLK_PLATFORM_PLL
                                            QORIQ_CLK_PLL_DIV(16)>,
                };
 
                cluster2_core1_watchdog: wdt@c110000 {
-                       compatible = "arm,sp805-wdt", "arm,primecell";
+                       compatible = "arm,sp805", "arm,primecell";
                        reg = <0x0 0xc110000 0x0 0x1000>;
                        clocks = <&clockgen QORIQ_CLK_PLATFORM_PLL
                                            QORIQ_CLK_PLL_DIV(16)>,
                };
 
                cluster2_core2_watchdog: wdt@c120000 {
-                       compatible = "arm,sp805-wdt", "arm,primecell";
+                       compatible = "arm,sp805", "arm,primecell";
                        reg = <0x0 0xc120000 0x0 0x1000>;
                        clocks = <&clockgen QORIQ_CLK_PLATFORM_PLL
                                            QORIQ_CLK_PLL_DIV(16)>,
                };
 
                cluster2_core3_watchdog: wdt@c130000 {
-                       compatible = "arm,sp805-wdt", "arm,primecell";
+                       compatible = "arm,sp805", "arm,primecell";
                        reg = <0x0 0xc130000 0x0 0x1000>;
                        clocks = <&clockgen QORIQ_CLK_PLATFORM_PLL
                                            QORIQ_CLK_PLL_DIV(16)>,
index 801ba96..3cb9c21 100644 (file)
                                interrupt-controller;
                                reg = <0x14 4>;
                                interrupt-map =
-                                       <0 0 &gic GIC_SPI 0 IRQ_TYPE_LEVEL_HIGH>,
-                                       <1 0 &gic GIC_SPI 1 IRQ_TYPE_LEVEL_HIGH>,
-                                       <2 0 &gic GIC_SPI 2 IRQ_TYPE_LEVEL_HIGH>,
-                                       <3 0 &gic GIC_SPI 3 IRQ_TYPE_LEVEL_HIGH>,
-                                       <4 0 &gic GIC_SPI 4 IRQ_TYPE_LEVEL_HIGH>,
-                                       <5 0 &gic GIC_SPI 5 IRQ_TYPE_LEVEL_HIGH>,
-                                       <6 0 &gic GIC_SPI 6 IRQ_TYPE_LEVEL_HIGH>,
-                                       <7 0 &gic GIC_SPI 7 IRQ_TYPE_LEVEL_HIGH>,
-                                       <8 0 &gic GIC_SPI 8 IRQ_TYPE_LEVEL_HIGH>,
-                                       <9 0 &gic GIC_SPI 9 IRQ_TYPE_LEVEL_HIGH>,
-                                       <10 0 &gic GIC_SPI 10 IRQ_TYPE_LEVEL_HIGH>,
-                                       <11 0 &gic GIC_SPI 11 IRQ_TYPE_LEVEL_HIGH>;
+                                       <0 0 &gic 0 0 GIC_SPI 0 IRQ_TYPE_LEVEL_HIGH>,
+                                       <1 0 &gic 0 0 GIC_SPI 1 IRQ_TYPE_LEVEL_HIGH>,
+                                       <2 0 &gic 0 0 GIC_SPI 2 IRQ_TYPE_LEVEL_HIGH>,
+                                       <3 0 &gic 0 0 GIC_SPI 3 IRQ_TYPE_LEVEL_HIGH>,
+                                       <4 0 &gic 0 0 GIC_SPI 4 IRQ_TYPE_LEVEL_HIGH>,
+                                       <5 0 &gic 0 0 GIC_SPI 5 IRQ_TYPE_LEVEL_HIGH>,
+                                       <6 0 &gic 0 0 GIC_SPI 6 IRQ_TYPE_LEVEL_HIGH>,
+                                       <7 0 &gic 0 0 GIC_SPI 7 IRQ_TYPE_LEVEL_HIGH>,
+                                       <8 0 &gic 0 0 GIC_SPI 8 IRQ_TYPE_LEVEL_HIGH>,
+                                       <9 0 &gic 0 0 GIC_SPI 9 IRQ_TYPE_LEVEL_HIGH>,
+                                       <10 0 &gic 0 0 GIC_SPI 10 IRQ_TYPE_LEVEL_HIGH>,
+                                       <11 0 &gic 0 0 GIC_SPI 11 IRQ_TYPE_LEVEL_HIGH>;
                                interrupt-map-mask = <0xffffffff 0x0>;
                        };
                };
                };
 
                cluster1_core0_watchdog: wdt@c000000 {
-                       compatible = "arm,sp805-wdt", "arm,primecell";
+                       compatible = "arm,sp805", "arm,primecell";
                        reg = <0x0 0xc000000 0x0 0x1000>;
                        clocks = <&clockgen QORIQ_CLK_PLATFORM_PLL
                                            QORIQ_CLK_PLL_DIV(4)>,
                };
 
                cluster1_core1_watchdog: wdt@c010000 {
-                       compatible = "arm,sp805-wdt", "arm,primecell";
+                       compatible = "arm,sp805", "arm,primecell";
                        reg = <0x0 0xc010000 0x0 0x1000>;
                        clocks = <&clockgen QORIQ_CLK_PLATFORM_PLL
                                            QORIQ_CLK_PLL_DIV(4)>,
                };
 
                cluster2_core0_watchdog: wdt@c100000 {
-                       compatible = "arm,sp805-wdt", "arm,primecell";
+                       compatible = "arm,sp805", "arm,primecell";
                        reg = <0x0 0xc100000 0x0 0x1000>;
                        clocks = <&clockgen QORIQ_CLK_PLATFORM_PLL
                                            QORIQ_CLK_PLL_DIV(4)>,
                };
 
                cluster2_core1_watchdog: wdt@c110000 {
-                       compatible = "arm,sp805-wdt", "arm,primecell";
+                       compatible = "arm,sp805", "arm,primecell";
                        reg = <0x0 0xc110000 0x0 0x1000>;
                        clocks = <&clockgen QORIQ_CLK_PLATFORM_PLL
                                            QORIQ_CLK_PLL_DIV(4)>,
                };
 
                cluster3_core0_watchdog: wdt@c200000 {
-                       compatible = "arm,sp805-wdt", "arm,primecell";
+                       compatible = "arm,sp805", "arm,primecell";
                        reg = <0x0 0xc200000 0x0 0x1000>;
                        clocks = <&clockgen QORIQ_CLK_PLATFORM_PLL
                                            QORIQ_CLK_PLL_DIV(4)>,
                };
 
                cluster3_core1_watchdog: wdt@c210000 {
-                       compatible = "arm,sp805-wdt", "arm,primecell";
+                       compatible = "arm,sp805", "arm,primecell";
                        reg = <0x0 0xc210000 0x0 0x1000>;
                        clocks = <&clockgen QORIQ_CLK_PLATFORM_PLL
                                            QORIQ_CLK_PLL_DIV(4)>,
                };
 
                cluster4_core0_watchdog: wdt@c300000 {
-                       compatible = "arm,sp805-wdt", "arm,primecell";
+                       compatible = "arm,sp805", "arm,primecell";
                        reg = <0x0 0xc300000 0x0 0x1000>;
                        clocks = <&clockgen QORIQ_CLK_PLATFORM_PLL
                                            QORIQ_CLK_PLL_DIV(4)>,
                };
 
                cluster4_core1_watchdog: wdt@c310000 {
-                       compatible = "arm,sp805-wdt", "arm,primecell";
+                       compatible = "arm,sp805", "arm,primecell";
                        reg = <0x0 0xc310000 0x0 0x1000>;
                        clocks = <&clockgen QORIQ_CLK_PLATFORM_PLL
                                            QORIQ_CLK_PLL_DIV(4)>,
diff --git a/arch/arm64/boot/dts/freescale/fsl-lx2160a-bluebox3-rev-a.dts b/arch/arm64/boot/dts/freescale/fsl-lx2160a-bluebox3-rev-a.dts
new file mode 100644 (file)
index 0000000..15d273c
--- /dev/null
@@ -0,0 +1,34 @@
+// SPDX-License-Identifier: (GPL-2.0 OR MIT)
+//
+// Device Tree file for LX2160A BLUEBOX3
+//
+// Copyright 2020-2021 NXP
+
+/dts-v1/;
+
+#include "fsl-lx2160a-bluebox3.dts"
+
+/ {
+       compatible = "fsl,lx2160a-bluebox3-rev-a", "fsl,lx2160a";
+};
+
+/* The RGMII PHYs have a different MDIO address */
+&emdio1 {
+       /delete-node/ ethernet-phy@5;
+
+       sw1_mii3_phy: ethernet-phy@1 {
+               /* AR8035 */
+               compatible = "ethernet-phy-id004d.d072";
+               reg = <0x1>;
+               interrupts-extended = <&extirq 6 IRQ_TYPE_LEVEL_LOW>;
+       };
+
+       /delete-node/ ethernet-phy@6;
+
+       sw2_mii3_phy: ethernet-phy@2 {
+               /* AR8035 */
+               compatible = "ethernet-phy-id004d.d072";
+               reg = <0x2>;
+               interrupts-extended = <&extirq 7 IRQ_TYPE_LEVEL_LOW>;
+       };
+};
diff --git a/arch/arm64/boot/dts/freescale/fsl-lx2160a-bluebox3.dts b/arch/arm64/boot/dts/freescale/fsl-lx2160a-bluebox3.dts
new file mode 100644 (file)
index 0000000..b21be03
--- /dev/null
@@ -0,0 +1,658 @@
+// SPDX-License-Identifier: (GPL-2.0 OR MIT)
+//
+// Device Tree file for LX2160A BLUEBOX3
+//
+// Copyright 2020-2021 NXP
+
+/dts-v1/;
+
+#include "fsl-lx2160a.dtsi"
+
+/ {
+       model = "NXP Layerscape LX2160ABLUEBOX3";
+       compatible = "fsl,lx2160a-bluebox3", "fsl,lx2160a";
+
+       aliases {
+               crypto = &crypto;
+               mmc0 = &esdhc0;
+               mmc1 = &esdhc1;
+               serial0 = &uart0;
+       };
+
+       chosen {
+               stdout-path = "serial0:115200n8";
+       };
+
+       sb_3v3: regulator-sb3v3 {
+               compatible = "regulator-fixed";
+               regulator-name = "MC34717-3.3VSB";
+               regulator-min-microvolt = <3300000>;
+               regulator-max-microvolt = <3300000>;
+               regulator-boot-on;
+               regulator-always-on;
+       };
+};
+
+&can0 {
+       status = "okay";
+
+       can-transceiver {
+               max-bitrate = <5000000>;
+       };
+};
+
+&can1 {
+       status = "okay";
+
+       can-transceiver {
+               max-bitrate = <5000000>;
+       };
+};
+
+&crypto {
+       status = "okay";
+};
+
+&dpmac5 {
+       phy-handle = <&aqr113c_phy1>;
+       phy-mode = "usxgmii";
+       managed = "in-band-status";
+};
+
+&dpmac6 {
+       phy-handle = <&aqr113c_phy2>;
+       phy-mode = "usxgmii";
+       managed = "in-band-status";
+};
+
+&dpmac9 {
+       phy-handle = <&aqr113c_phy3>;
+       phy-mode = "usxgmii";
+       managed = "in-band-status";
+};
+
+&dpmac10 {
+       phy-handle = <&aqr113c_phy4>;
+       phy-mode = "usxgmii";
+       managed = "in-band-status";
+};
+
+&dpmac17 {
+       phy-mode = "rgmii";
+       status = "okay";
+
+       fixed-link {
+               speed = <1000>;
+               full-duplex;
+       };
+};
+
+&dpmac18 {
+       phy-mode = "rgmii";
+       status = "okay";
+
+       fixed-link {
+               speed = <1000>;
+               full-duplex;
+       };
+};
+
+&emdio1 {
+       status = "okay";
+
+       aqr113c_phy2: ethernet-phy@0 {
+               compatible = "ethernet-phy-ieee802.3-c45";
+               reg = <0x0>;
+               /* IRQ_10G_PHY2 */
+               interrupts-extended = <&extirq 3 IRQ_TYPE_LEVEL_LOW>;
+       };
+
+       aqr113c_phy1: ethernet-phy@8 {
+               compatible = "ethernet-phy-ieee802.3-c45";
+               reg = <0x8>;
+               /* IRQ_10G_PHY1 */
+               interrupts-extended = <&extirq 2 IRQ_TYPE_LEVEL_LOW>;
+       };
+
+       sw1_mii3_phy: ethernet-phy@5 {
+               /* AR8035 */
+               compatible = "ethernet-phy-id004d.d072";
+               reg = <0x5>;
+               interrupts-extended = <&extirq 6 IRQ_TYPE_LEVEL_LOW>;
+       };
+
+       sw2_mii3_phy: ethernet-phy@6 {
+               /* AR8035 */
+               compatible = "ethernet-phy-id004d.d072";
+               reg = <0x6>;
+               interrupts-extended = <&extirq 7 IRQ_TYPE_LEVEL_LOW>;
+       };
+};
+
+&emdio2 {
+       status = "okay";
+
+       aqr113c_phy4: ethernet-phy@0 {
+               compatible = "ethernet-phy-ieee802.3-c45";
+               reg = <0x0>;
+               /* IRQ_10G_PHY4 */
+               interrupts-extended = <&extirq 5 IRQ_TYPE_LEVEL_LOW>;
+       };
+
+       aqr113c_phy3: ethernet-phy@8 {
+               compatible = "ethernet-phy-ieee802.3-c45";
+               reg = <0x8>;
+               /* IRQ_10G_PHY3 */
+               interrupts-extended = <&extirq 4 IRQ_TYPE_LEVEL_LOW>;
+       };
+};
+
+&esdhc0 {
+       sd-uhs-sdr104;
+       sd-uhs-sdr50;
+       sd-uhs-sdr25;
+       sd-uhs-sdr12;
+       status = "okay";
+};
+
+&esdhc1 {
+       mmc-hs200-1_8v;
+       mmc-hs400-1_8v;
+       bus-width = <8>;
+       status = "okay";
+};
+
+&fspi {
+       status = "okay";
+
+       mt35xu512aba0: flash@0 {
+               compatible = "jedec,spi-nor";
+               #address-cells = <1>;
+               #size-cells = <1>;
+               reg = <0>;
+               m25p,fast-read;
+               spi-max-frequency = <50000000>;
+               spi-rx-bus-width = <8>;
+               spi-tx-bus-width = <8>;
+       };
+
+       mt35xu512aba1: flash@1 {
+               compatible = "jedec,spi-nor";
+               #address-cells = <1>;
+               #size-cells = <1>;
+               reg = <1>;
+               m25p,fast-read;
+               spi-max-frequency = <50000000>;
+               spi-rx-bus-width = <8>;
+               spi-tx-bus-width = <8>;
+       };
+};
+
+&i2c0 {
+       status = "okay";
+
+       i2c-mux@77 {
+               compatible = "nxp,pca9547";
+               reg = <0x77>;
+               #address-cells = <1>;
+               #size-cells = <0>;
+
+               i2c@2 {
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       reg = <0x2>;
+
+                       power-monitor@40 {
+                               compatible = "ti,ina220";
+                               reg = <0x40>;
+                               shunt-resistor = <500>;
+                       };
+               };
+
+               i2c@3 {
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       reg = <0x3>;
+
+                       temp2: temperature-sensor@48 {
+                               compatible = "nxp,sa56004";
+                               reg = <0x48>;
+                               vcc-supply = <&sb_3v3>;
+                               #thermal-sensor-cells = <1>;
+                       };
+
+                       temp1: temperature-sensor@4c {
+                               compatible = "nxp,sa56004";
+                               reg = <0x4c>;
+                               vcc-supply = <&sb_3v3>;
+                               #thermal-sensor-cells = <1>;
+                       };
+               };
+
+               i2c@4 {
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       reg = <0x4>;
+
+                       rtc@51 {
+                               compatible = "nxp,pcf2129";
+                               reg = <0x51>;
+                               interrupts-extended = <&extirq 11 IRQ_TYPE_LEVEL_LOW>;
+                       };
+               };
+
+               i2c@7 {
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       reg = <0x7>;
+
+                       i2c-mux@75 {
+                               compatible = "nxp,pca9547";
+                               reg = <0x75>;
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+
+                               i2c@0 {
+                                       #address-cells = <1>;
+                                       #size-cells = <0>;
+                                       reg = <0x0>;
+
+                                       spi_bridge: spi@28 {
+                                               compatible = "nxp,sc18is602b";
+                                               reg = <0x28>;
+                                               #address-cells = <1>;
+                                               #size-cells = <0>;
+                                       };
+                               };
+                       };
+               };
+       };
+};
+
+&i2c5 {
+       status = "okay";
+
+       i2c-mux@77 {
+               compatible = "nxp,pca9846";
+               reg = <0x77>;
+               #address-cells = <1>;
+               #size-cells = <0>;
+
+               i2c@1 {
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       reg = <0x1>;
+
+                       /* The I2C multiplexer and temperature sensors are on
+                        * the T6 riser card.
+                        */
+                       i2c-mux@70 {
+                               compatible = "nxp,pca9548";
+                               reg = <0x70>;
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+
+                               i2c@6 {
+                                       #address-cells = <1>;
+                                       #size-cells = <0>;
+                                       reg = <0x6>;
+
+                                       q12: temperature-sensor@4c {
+                                               compatible = "nxp,sa56004";
+                                               reg = <0x4c>;
+                                               vcc-supply = <&sb_3v3>;
+                                               #thermal-sensor-cells = <1>;
+                                       };
+                               };
+
+                               i2c@7 {
+                                       #address-cells = <1>;
+                                       #size-cells = <0>;
+                                       reg = <0x7>;
+
+                                       q11: temperature-sensor@4c {
+                                               compatible = "nxp,sa56004";
+                                               reg = <0x4c>;
+                                               vcc-supply = <&sb_3v3>;
+                                               #thermal-sensor-cells = <1>;
+                                       };
+
+                                       q13: temperature-sensor@48 {
+                                               compatible = "nxp,sa56004";
+                                               reg = <0x48>;
+                                               vcc-supply = <&sb_3v3>;
+                                               #thermal-sensor-cells = <1>;
+                                       };
+
+                                       q14: temperature-sensor@4a {
+                                               compatible = "nxp,sa56004";
+                                               reg = <0x4a>;
+                                               vcc-supply = <&sb_3v3>;
+                                               #thermal-sensor-cells = <1>;
+                                       };
+                               };
+                       };
+               };
+       };
+};
+
+&pcs_mdio5 {
+       status = "okay";
+};
+
+&pcs_mdio6 {
+       status = "okay";
+};
+
+&pcs_mdio9 {
+       status = "okay";
+};
+
+&pcs_mdio10 {
+       status = "okay";
+};
+
+&spi_bridge {
+       sw1: ethernet-switch@0 {
+               compatible = "nxp,sja1110a";
+               reg = <0>;
+               spi-max-frequency = <4000000>;
+               spi-cpol;
+               dsa,member = <0 0>;
+
+               ethernet-ports {
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+
+                       /* Microcontroller port */
+                       port@0 {
+                               reg = <0>;
+                               status = "disabled";
+                       };
+
+                       /* SW1_P1 */
+                       port@1 {
+                               reg = <1>;
+                               label = "con_2x20";
+                               phy-mode = "sgmii";
+
+                               fixed-link {
+                                       speed = <1000>;
+                                       full-duplex;
+                               };
+                       };
+
+                       port@2 {
+                               reg = <2>;
+                               ethernet = <&dpmac17>;
+                               phy-mode = "rgmii-id";
+
+                               fixed-link {
+                                       speed = <1000>;
+                                       full-duplex;
+                               };
+                       };
+
+                       port@3 {
+                               reg = <3>;
+                               label = "1ge_p1";
+                               phy-mode = "rgmii-id";
+                               phy-handle = <&sw1_mii3_phy>;
+                       };
+
+                       sw1p4: port@4 {
+                               reg = <4>;
+                               link = <&sw2p1>;
+                               phy-mode = "sgmii";
+
+                               fixed-link {
+                                       speed = <1000>;
+                                       full-duplex;
+                               };
+                       };
+
+                       port@5 {
+                               reg = <5>;
+                               label = "trx1";
+                               phy-mode = "internal";
+                               phy-handle = <&sw1_port5_base_t1_phy>;
+                       };
+
+                       port@6 {
+                               reg = <6>;
+                               label = "trx2";
+                               phy-mode = "internal";
+                               phy-handle = <&sw1_port6_base_t1_phy>;
+                       };
+
+                       port@7 {
+                               reg = <7>;
+                               label = "trx3";
+                               phy-mode = "internal";
+                               phy-handle = <&sw1_port7_base_t1_phy>;
+                       };
+
+                       port@8 {
+                               reg = <8>;
+                               label = "trx4";
+                               phy-mode = "internal";
+                               phy-handle = <&sw1_port8_base_t1_phy>;
+                       };
+
+                       port@9 {
+                               reg = <9>;
+                               label = "trx5";
+                               phy-mode = "internal";
+                               phy-handle = <&sw1_port9_base_t1_phy>;
+                       };
+
+                       port@a {
+                               reg = <10>;
+                               label = "trx6";
+                               phy-mode = "internal";
+                               phy-handle = <&sw1_port10_base_t1_phy>;
+                       };
+               };
+
+               mdios {
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+
+                       mdio@0 {
+                               compatible = "nxp,sja1110-base-t1-mdio";
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+                               reg = <0>;
+
+                               sw1_port5_base_t1_phy: ethernet-phy@1 {
+                                       compatible = "ethernet-phy-ieee802.3-c45";
+                                       reg = <0x1>;
+                               };
+
+                               sw1_port6_base_t1_phy: ethernet-phy@2 {
+                                       compatible = "ethernet-phy-ieee802.3-c45";
+                                       reg = <0x2>;
+                               };
+
+                               sw1_port7_base_t1_phy: ethernet-phy@3 {
+                                       compatible = "ethernet-phy-ieee802.3-c45";
+                                       reg = <0x3>;
+                               };
+
+                               sw1_port8_base_t1_phy: ethernet-phy@4 {
+                                       compatible = "ethernet-phy-ieee802.3-c45";
+                                       reg = <0x4>;
+                               };
+
+                               sw1_port9_base_t1_phy: ethernet-phy@5 {
+                                       compatible = "ethernet-phy-ieee802.3-c45";
+                                       reg = <0x5>;
+                               };
+
+                               sw1_port10_base_t1_phy: ethernet-phy@6 {
+                                       compatible = "ethernet-phy-ieee802.3-c45";
+                                       reg = <0x6>;
+                               };
+                       };
+               };
+       };
+
+       sw2: ethernet-switch@2 {
+               compatible = "nxp,sja1110a";
+               reg = <2>;
+               spi-max-frequency = <4000000>;
+               spi-cpol;
+               dsa,member = <0 1>;
+
+               ethernet-ports {
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+
+                       /* Microcontroller port */
+                       port@0 {
+                               reg = <0>;
+                               status = "disabled";
+                       };
+
+                       sw2p1: port@1 {
+                               reg = <1>;
+                               link = <&sw1p4>;
+                               phy-mode = "sgmii";
+
+                               fixed-link {
+                                       speed = <1000>;
+                                       full-duplex;
+                               };
+                       };
+
+                       port@2 {
+                               reg = <2>;
+                               ethernet = <&dpmac18>;
+                               phy-mode = "rgmii-id";
+
+                               fixed-link {
+                                       speed = <1000>;
+                                       full-duplex;
+                               };
+                       };
+
+                       port@3 {
+                               reg = <3>;
+                               label = "1ge_p2";
+                               phy-mode = "rgmii-id";
+                               phy-handle = <&sw2_mii3_phy>;
+                       };
+
+                       port@4 {
+                               reg = <4>;
+                               label = "to_sw3";
+                               phy-mode = "2500base-x";
+
+                               fixed-link {
+                                       speed = <2500>;
+                                       full-duplex;
+                               };
+                       };
+
+                       port@5 {
+                               reg = <5>;
+                               label = "trx7";
+                               phy-mode = "internal";
+                               phy-handle = <&sw2_port5_base_t1_phy>;
+                       };
+
+                       port@6 {
+                               reg = <6>;
+                               label = "trx8";
+                               phy-mode = "internal";
+                               phy-handle = <&sw2_port6_base_t1_phy>;
+                       };
+
+                       port@7 {
+                               reg = <7>;
+                               label = "trx9";
+                               phy-mode = "internal";
+                               phy-handle = <&sw2_port7_base_t1_phy>;
+                       };
+
+                       port@8 {
+                               reg = <8>;
+                               label = "trx10";
+                               phy-mode = "internal";
+                               phy-handle = <&sw2_port8_base_t1_phy>;
+                       };
+
+                       port@9 {
+                               reg = <9>;
+                               label = "trx11";
+                               phy-mode = "internal";
+                               phy-handle = <&sw2_port9_base_t1_phy>;
+                       };
+
+                       port@a {
+                               reg = <10>;
+                               label = "trx12";
+                               phy-mode = "internal";
+                               phy-handle = <&sw2_port10_base_t1_phy>;
+                       };
+               };
+
+               mdios {
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+
+                       mdio@0 {
+                               compatible = "nxp,sja1110-base-t1-mdio";
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+                               reg = <0>;
+
+                               sw2_port5_base_t1_phy: ethernet-phy@1 {
+                                       compatible = "ethernet-phy-ieee802.3-c45";
+                                       reg = <0x1>;
+                               };
+
+                               sw2_port6_base_t1_phy: ethernet-phy@2 {
+                                       compatible = "ethernet-phy-ieee802.3-c45";
+                                       reg = <0x2>;
+                               };
+
+                               sw2_port7_base_t1_phy: ethernet-phy@3 {
+                                       compatible = "ethernet-phy-ieee802.3-c45";
+                                       reg = <0x3>;
+                               };
+
+                               sw2_port8_base_t1_phy: ethernet-phy@4 {
+                                       compatible = "ethernet-phy-ieee802.3-c45";
+                                       reg = <0x4>;
+                               };
+
+                               sw2_port9_base_t1_phy: ethernet-phy@5 {
+                                       compatible = "ethernet-phy-ieee802.3-c45";
+                                       reg = <0x5>;
+                               };
+
+                               sw2_port10_base_t1_phy: ethernet-phy@6 {
+                                       compatible = "ethernet-phy-ieee802.3-c45";
+                                       reg = <0x6>;
+                               };
+                       };
+               };
+       };
+};
+
+&uart0 {
+       status = "okay";
+};
+
+&uart1 {
+       status = "okay";
+};
+
+&usb0 {
+       status = "okay";
+};
+
+&usb1 {
+       status = "okay";
+};
index c4b1a59..dc8661e 100644 (file)
                                interrupt-controller;
                                reg = <0x14 4>;
                                interrupt-map =
-                                       <0 0 &gic GIC_SPI 0 IRQ_TYPE_LEVEL_HIGH>,
-                                       <1 0 &gic GIC_SPI 1 IRQ_TYPE_LEVEL_HIGH>,
-                                       <2 0 &gic GIC_SPI 2 IRQ_TYPE_LEVEL_HIGH>,
-                                       <3 0 &gic GIC_SPI 3 IRQ_TYPE_LEVEL_HIGH>,
-                                       <4 0 &gic GIC_SPI 4 IRQ_TYPE_LEVEL_HIGH>,
-                                       <5 0 &gic GIC_SPI 5 IRQ_TYPE_LEVEL_HIGH>,
-                                       <6 0 &gic GIC_SPI 6 IRQ_TYPE_LEVEL_HIGH>,
-                                       <7 0 &gic GIC_SPI 7 IRQ_TYPE_LEVEL_HIGH>,
-                                       <8 0 &gic GIC_SPI 8 IRQ_TYPE_LEVEL_HIGH>,
-                                       <9 0 &gic GIC_SPI 9 IRQ_TYPE_LEVEL_HIGH>,
-                                       <10 0 &gic GIC_SPI 10 IRQ_TYPE_LEVEL_HIGH>,
-                                       <11 0 &gic GIC_SPI 11 IRQ_TYPE_LEVEL_HIGH>;
+                                       <0 0 &gic 0 0 GIC_SPI 0 IRQ_TYPE_LEVEL_HIGH>,
+                                       <1 0 &gic 0 0 GIC_SPI 1 IRQ_TYPE_LEVEL_HIGH>,
+                                       <2 0 &gic 0 0 GIC_SPI 2 IRQ_TYPE_LEVEL_HIGH>,
+                                       <3 0 &gic 0 0 GIC_SPI 3 IRQ_TYPE_LEVEL_HIGH>,
+                                       <4 0 &gic 0 0 GIC_SPI 4 IRQ_TYPE_LEVEL_HIGH>,
+                                       <5 0 &gic 0 0 GIC_SPI 5 IRQ_TYPE_LEVEL_HIGH>,
+                                       <6 0 &gic 0 0 GIC_SPI 6 IRQ_TYPE_LEVEL_HIGH>,
+                                       <7 0 &gic 0 0 GIC_SPI 7 IRQ_TYPE_LEVEL_HIGH>,
+                                       <8 0 &gic 0 0 GIC_SPI 8 IRQ_TYPE_LEVEL_HIGH>,
+                                       <9 0 &gic 0 0 GIC_SPI 9 IRQ_TYPE_LEVEL_HIGH>,
+                                       <10 0 &gic 0 0 GIC_SPI 10 IRQ_TYPE_LEVEL_HIGH>,
+                                       <11 0 &gic 0 0 GIC_SPI 11 IRQ_TYPE_LEVEL_HIGH>;
                                interrupt-map-mask = <0xffffffff 0x0>;
                        };
                };
index e99e764..d40caf1 100644 (file)
 
                ethphy: ethernet-phy@0 {
                        reg = <0>;
-                       reset-assert-us = <100>;
-                       reset-deassert-us = <100>;
+                       reset-assert-us = <1>;
+                       reset-deassert-us = <15000>;
                        reset-gpios = <&gpio4 27 GPIO_ACTIVE_LOW>;
                };
        };
 };
 
 &usdhc2 {
-       pinctrl-names = "default";
+       pinctrl-names = "default", "state_100mhz", "state_200mhz";
        pinctrl-0 = <&pinctrl_usdhc2>;
+       pinctrl-1 = <&pinctrl_usdhc2_100mhz>;
+       pinctrl-2 = <&pinctrl_usdhc2_200mhz>;
        vmmc-supply = <&reg_vdd_3v3>;
        vqmmc-supply = <&reg_nvcc_sd>;
        cd-gpios = <&gpio2 12 GPIO_ACTIVE_LOW>;
                        MX8MM_IOMUXC_SD2_CD_B_GPIO2_IO12                0x019
                >;
        };
+
+       pinctrl_usdhc2_100mhz: usdhc2-100mhzgrp {
+               fsl,pins = <
+                       MX8MM_IOMUXC_SD2_CLK_USDHC2_CLK                 0x194
+                       MX8MM_IOMUXC_SD2_CMD_USDHC2_CMD                 0x1d4
+                       MX8MM_IOMUXC_SD2_DATA0_USDHC2_DATA0             0x1d4
+                       MX8MM_IOMUXC_SD2_DATA1_USDHC2_DATA1             0x1d4
+                       MX8MM_IOMUXC_SD2_DATA2_USDHC2_DATA2             0x1d4
+                       MX8MM_IOMUXC_SD2_DATA3_USDHC2_DATA3             0x1d4
+                       MX8MM_IOMUXC_SD2_CD_B_GPIO2_IO12                0x019
+               >;
+       };
+
+       pinctrl_usdhc2_200mhz: usdhc2-200mhzgrp {
+               fsl,pins = <
+                       MX8MM_IOMUXC_SD2_CLK_USDHC2_CLK                 0x196
+                       MX8MM_IOMUXC_SD2_CMD_USDHC2_CMD                 0x1d6
+                       MX8MM_IOMUXC_SD2_DATA0_USDHC2_DATA0             0x1d6
+                       MX8MM_IOMUXC_SD2_DATA1_USDHC2_DATA1             0x1d6
+                       MX8MM_IOMUXC_SD2_DATA2_USDHC2_DATA2             0x1d6
+                       MX8MM_IOMUXC_SD2_DATA3_USDHC2_DATA3             0x1d6
+                       MX8MM_IOMUXC_SD2_CD_B_GPIO2_IO12                0x019
+               >;
+       };
 };
index 42bbbb3..22a5ef7 100644 (file)
@@ -63,7 +63,7 @@
 &ecspi1 {
        pinctrl-names = "default";
        pinctrl-0 = <&pinctrl_ecspi1>;
-       cs-gpios = <&gpio5 9 GPIO_ACTIVE_HIGH>;
+       cs-gpios = <&gpio5 9 GPIO_ACTIVE_LOW>;
        status = "okay";
 
        spi-flash@0 {
@@ -86,6 +86,7 @@
                pinctrl-0 = <&pinctrl_pmic>;
                interrupt-parent = <&gpio1>;
                interrupts = <0 IRQ_TYPE_LEVEL_LOW>;
+               sd-vsel-gpios = <&gpio1 4 GPIO_ACTIVE_HIGH>;
 
                regulators {
                        reg_vdd_soc: BUCK1 {
        pinctrl_pmic: pmicgrp {
                fsl,pins = <
                        MX8MM_IOMUXC_GPIO1_IO00_GPIO1_IO0               0x141
+                       MX8MM_IOMUXC_GPIO1_IO04_GPIO1_IO4               0x141
                >;
        };
 
index 8e4a0ce..2801227 100644 (file)
@@ -57,7 +57,7 @@
 &ecspi2 {
        pinctrl-names = "default";
        pinctrl-0 = <&pinctrl_spi2>;
-       cs-gpios = <&gpio5 13 GPIO_ACTIVE_HIGH>;
+       cs-gpios = <&gpio5 13 GPIO_ACTIVE_LOW>;
        status = "okay";
 };
 
index b7c91bd..27afa46 100644 (file)
@@ -76,7 +76,7 @@
 &ecspi2 {
        pinctrl-names = "default";
        pinctrl-0 = <&pinctrl_spi2>;
-       cs-gpios = <&gpio5 13 GPIO_ACTIVE_HIGH>;
+       cs-gpios = <&gpio5 13 GPIO_ACTIVE_LOW>;
        status = "okay";
 };
 
index d2ffd62..a59e849 100644 (file)
@@ -96,7 +96,7 @@
 &ecspi2 {
        pinctrl-names = "default";
        pinctrl-0 = <&pinctrl_spi2>;
-       cs-gpios = <&gpio5 13 GPIO_ACTIVE_HIGH>;
+       cs-gpios = <&gpio5 13 GPIO_ACTIVE_LOW>;
        status = "okay";
 };
 
index bafd5c8..21c546c 100644 (file)
        };
 };
 
+&disp_blk_ctrl {
+       status = "disabled";
+};
+
 &ecspi1 {
        pinctrl-names = "default";
        pinctrl-0 = <&pinctrl_spi1>;
        };
 };
 
+&gpu_2d {
+       status = "disabled";
+};
+
+&gpu_3d {
+       status = "disabled";
+};
+
 &i2c1 {
        clock-frequency = <100000>;
        pinctrl-names = "default";
        status = "okay";
 };
 
+&pgc_gpu {
+       status = "disabled";
+};
+
+&pgc_gpumix {
+       status = "disabled";
+};
+
+&pgc_mipi {
+       status = "disabled";
+};
+
 &uart1 {
        pinctrl-names = "default";
        pinctrl-0 = <&pinctrl_uart1>, <&pinctrl_uart1_gpio>;
index 2f632e8..c2f3f11 100644 (file)
@@ -7,6 +7,8 @@
 #include <dt-bindings/gpio/gpio.h>
 #include <dt-bindings/input/input.h>
 #include <dt-bindings/interrupt-controller/arm-gic.h>
+#include <dt-bindings/power/imx8mm-power.h>
+#include <dt-bindings/reset/imx8mq-reset.h>
 #include <dt-bindings/thermal/thermal.h>
 
 #include "imx8mm-pinfunc.h"
                                interrupts = <GIC_SPI 89 IRQ_TYPE_LEVEL_HIGH>;
                                #reset-cells = <1>;
                        };
+
+                       gpc: gpc@303a0000 {
+                               compatible = "fsl,imx8mm-gpc";
+                               reg = <0x303a0000 0x10000>;
+                               interrupts = <GIC_SPI 87 IRQ_TYPE_LEVEL_HIGH>;
+                               interrupt-parent = <&gic>;
+                               interrupt-controller;
+                               #interrupt-cells = <3>;
+
+                               pgc {
+                                       #address-cells = <1>;
+                                       #size-cells = <0>;
+
+                                       pgc_hsiomix: power-domain@0 {
+                                               #power-domain-cells = <0>;
+                                               reg = <IMX8MM_POWER_DOMAIN_HSIOMIX>;
+                                               clocks = <&clk IMX8MM_CLK_USB_BUS>;
+                                               assigned-clocks = <&clk IMX8MM_CLK_USB_BUS>;
+                                               assigned-clock-parents = <&clk IMX8MM_SYS_PLL2_500M>;
+                                       };
+
+                                       pgc_pcie: power-domain@1 {
+                                               #power-domain-cells = <0>;
+                                               reg = <IMX8MM_POWER_DOMAIN_PCIE>;
+                                               power-domains = <&pgc_hsiomix>;
+                                               clocks = <&clk IMX8MM_CLK_PCIE1_ROOT>;
+                                       };
+
+                                       pgc_otg1: power-domain@2 {
+                                               #power-domain-cells = <0>;
+                                               reg = <IMX8MM_POWER_DOMAIN_OTG1>;
+                                               power-domains = <&pgc_hsiomix>;
+                                       };
+
+                                       pgc_otg2: power-domain@3 {
+                                               #power-domain-cells = <0>;
+                                               reg = <IMX8MM_POWER_DOMAIN_OTG2>;
+                                               power-domains = <&pgc_hsiomix>;
+                                       };
+
+                                       pgc_gpumix: power-domain@4 {
+                                               #power-domain-cells = <0>;
+                                               reg = <IMX8MM_POWER_DOMAIN_GPUMIX>;
+                                               clocks = <&clk IMX8MM_CLK_GPU_BUS_ROOT>,
+                                                        <&clk IMX8MM_CLK_GPU_AHB>;
+                                               assigned-clocks = <&clk IMX8MM_CLK_GPU_AXI>,
+                                                                 <&clk IMX8MM_CLK_GPU_AHB>;
+                                               assigned-clock-parents = <&clk IMX8MM_SYS_PLL1_800M>,
+                                                                        <&clk IMX8MM_SYS_PLL1_800M>;
+                                               assigned-clock-rates = <800000000>, <400000000>;
+                                       };
+
+                                       pgc_gpu: power-domain@5 {
+                                               #power-domain-cells = <0>;
+                                               reg = <IMX8MM_POWER_DOMAIN_GPU>;
+                                               clocks = <&clk IMX8MM_CLK_GPU_AHB>,
+                                                        <&clk IMX8MM_CLK_GPU_BUS_ROOT>,
+                                                        <&clk IMX8MM_CLK_GPU2D_ROOT>,
+                                                        <&clk IMX8MM_CLK_GPU3D_ROOT>;
+                                               resets = <&src IMX8MQ_RESET_GPU_RESET>;
+                                               power-domains = <&pgc_gpumix>;
+                                       };
+
+                                       pgc_vpumix: power-domain@6 {
+                                               #power-domain-cells = <0>;
+                                               reg = <IMX8MM_POWER_DOMAIN_VPUMIX>;
+                                               clocks = <&clk IMX8MM_CLK_VPU_DEC_ROOT>;
+                                               assigned-clocks = <&clk IMX8MM_CLK_VPU_BUS>;
+                                               assigned-clock-parents = <&clk IMX8MM_SYS_PLL1_800M>;
+                                               resets = <&src IMX8MQ_RESET_VPU_RESET>;
+                                       };
+
+                                       pgc_vpu_g1: power-domain@7 {
+                                               #power-domain-cells = <0>;
+                                               reg = <IMX8MM_POWER_DOMAIN_VPUG1>;
+                                       };
+
+                                       pgc_vpu_g2: power-domain@8 {
+                                               #power-domain-cells = <0>;
+                                               reg = <IMX8MM_POWER_DOMAIN_VPUG2>;
+                                       };
+
+                                       pgc_vpu_h1: power-domain@9 {
+                                               #power-domain-cells = <0>;
+                                               reg = <IMX8MM_POWER_DOMAIN_VPUH1>;
+                                       };
+
+                                       pgc_dispmix: power-domain@10 {
+                                               #power-domain-cells = <0>;
+                                               reg = <IMX8MM_POWER_DOMAIN_DISPMIX>;
+                                               clocks = <&clk IMX8MM_CLK_DISP_APB_ROOT>,
+                                                        <&clk IMX8MM_CLK_DISP_AXI_ROOT>;
+                                               assigned-clocks = <&clk IMX8MM_CLK_DISP_AXI>,
+                                                                 <&clk IMX8MM_CLK_DISP_APB>;
+                                               assigned-clock-parents = <&clk IMX8MM_SYS_PLL2_1000M>,
+                                                                        <&clk IMX8MM_SYS_PLL1_800M>;
+                                               assigned-clock-rates = <500000000>, <200000000>;
+                                       };
+
+                                       pgc_mipi: power-domain@11 {
+                                               #power-domain-cells = <0>;
+                                               reg = <IMX8MM_POWER_DOMAIN_MIPI>;
+                                       };
+                               };
+                       };
                };
 
                aips2: bus@30400000 {
                        #size-cells = <1>;
                        ranges = <0x32c00000 0x32c00000 0x400000>;
 
+                       disp_blk_ctrl: blk-ctrl@32e28000 {
+                               compatible = "fsl,imx8mm-disp-blk-ctrl", "syscon";
+                               reg = <0x32e28000 0x100>;
+                               power-domains = <&pgc_dispmix>, <&pgc_dispmix>,
+                                               <&pgc_dispmix>, <&pgc_mipi>,
+                                               <&pgc_mipi>;
+                               power-domain-names = "bus", "csi-bridge",
+                                                    "lcdif", "mipi-dsi",
+                                                    "mipi-csi";
+                               clocks = <&clk IMX8MM_CLK_DISP_AXI_ROOT>,
+                                        <&clk IMX8MM_CLK_DISP_APB_ROOT>,
+                                        <&clk IMX8MM_CLK_CSI1_ROOT>,
+                                        <&clk IMX8MM_CLK_DISP_AXI_ROOT>,
+                                        <&clk IMX8MM_CLK_DISP_APB_ROOT>,
+                                        <&clk IMX8MM_CLK_DISP_ROOT>,
+                                        <&clk IMX8MM_CLK_DSI_CORE>,
+                                        <&clk IMX8MM_CLK_DSI_PHY_REF>,
+                                        <&clk IMX8MM_CLK_CSI1_CORE>,
+                                        <&clk IMX8MM_CLK_CSI1_PHY_REF>;
+                               clock-names = "csi-bridge-axi","csi-bridge-apb",
+                                             "csi-bridge-core", "lcdif-axi",
+                                             "lcdif-apb", "lcdif-pix",
+                                             "dsi-pclk", "dsi-ref",
+                                             "csi-aclk", "csi-pclk";
+                               #power-domain-cells = <1>;
+                       };
+
                        usbotg1: usb@32e40000 {
                                compatible = "fsl,imx8mm-usb", "fsl,imx7d-usb";
                                reg = <0x32e40000 0x200>;
                                assigned-clock-parents = <&clk IMX8MM_SYS_PLL2_500M>;
                                phys = <&usbphynop1>;
                                fsl,usbmisc = <&usbmisc1 0>;
+                               power-domains = <&pgc_otg1>;
                                status = "disabled";
                        };
 
                                assigned-clock-parents = <&clk IMX8MM_SYS_PLL2_500M>;
                                phys = <&usbphynop2>;
                                fsl,usbmisc = <&usbmisc2 0>;
+                               power-domains = <&pgc_otg2>;
                                status = "disabled";
                        };
 
                        status = "disabled";
                };
 
+               gpu_3d: gpu@38000000 {
+                       compatible = "vivante,gc";
+                       reg = <0x38000000 0x8000>;
+                       interrupts = <GIC_SPI 3 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&clk IMX8MM_CLK_GPU_AHB>,
+                                <&clk IMX8MM_CLK_GPU_BUS_ROOT>,
+                                <&clk IMX8MM_CLK_GPU3D_ROOT>,
+                                <&clk IMX8MM_CLK_GPU3D_ROOT>;
+                       clock-names = "reg", "bus", "core", "shader";
+                       assigned-clocks = <&clk IMX8MM_CLK_GPU3D_CORE>,
+                                         <&clk IMX8MM_GPU_PLL_OUT>;
+                       assigned-clock-parents = <&clk IMX8MM_GPU_PLL_OUT>;
+                       assigned-clock-rates = <0>, <1000000000>;
+                       power-domains = <&pgc_gpu>;
+               };
+
+               gpu_2d: gpu@38008000 {
+                       compatible = "vivante,gc";
+                       reg = <0x38008000 0x8000>;
+                       interrupts = <GIC_SPI 25 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&clk IMX8MM_CLK_GPU_AHB>,
+                                <&clk IMX8MM_CLK_GPU_BUS_ROOT>,
+                                <&clk IMX8MM_CLK_GPU2D_ROOT>;
+                       clock-names = "reg", "bus", "core";
+                       assigned-clocks = <&clk IMX8MM_CLK_GPU2D_CORE>,
+                                         <&clk IMX8MM_GPU_PLL_OUT>;
+                       assigned-clock-parents = <&clk IMX8MM_GPU_PLL_OUT>;
+                       assigned-clock-rates = <0>, <1000000000>;
+                       power-domains = <&pgc_gpu>;
+               };
+
+               vpu_blk_ctrl: blk-ctrl@38330000 {
+                       compatible = "fsl,imx8mm-vpu-blk-ctrl", "syscon";
+                       reg = <0x38330000 0x100>;
+                       power-domains = <&pgc_vpumix>, <&pgc_vpu_g1>,
+                                       <&pgc_vpu_g2>, <&pgc_vpu_h1>;
+                       power-domain-names = "bus", "g1", "g2", "h1";
+                       clocks = <&clk IMX8MM_CLK_VPU_G1_ROOT>,
+                                <&clk IMX8MM_CLK_VPU_G2_ROOT>,
+                                <&clk IMX8MM_CLK_VPU_H1_ROOT>;
+                       clock-names = "g1", "g2", "h1";
+                       #power-domain-cells = <1>;
+               };
+
                gic: interrupt-controller@38800000 {
                        compatible = "arm,gic-v3";
                        reg = <0x38800000 0x10000>, /* GIC Dist */
index 9b07b26..04d259d 100644 (file)
                                interrupts = <GIC_SPI 107 IRQ_TYPE_LEVEL_HIGH>;
                                clocks = <&clk IMX8MP_CLK_QSPI_ROOT>,
                                         <&clk IMX8MP_CLK_QSPI_ROOT>;
-                               clock-names = "fspi", "fspi_en";
+                               clock-names = "fspi_en", "fspi";
                                assigned-clock-rates = <80000000>;
                                assigned-clocks = <&clk IMX8MP_CLK_QSPI>;
                                #address-cells = <1>;
index 460ef0d..60d47c7 100644 (file)
                        label = "VOL_DOWN";
                        gpios = <&gpio1 17 GPIO_ACTIVE_LOW>;
                        linux,code = <KEY_VOLUMEDOWN>;
+                       debounce-interval = <50>;
                };
 
                vol-up {
                        label = "VOL_UP";
                        gpios = <&gpio1 16 GPIO_ACTIVE_LOW>;
                        linux,code = <KEY_VOLUMEUP>;
+                       debounce-interval = <50>;
                };
        };
 
 
        reg_wifi_3v3: regulator-wifi-3v3 {
                compatible = "regulator-fixed";
+               pinctrl-names = "default";
+               pinctrl-0 = <&pinctrl_wifi_pwr>;
                regulator-name = "3V3_WIFI";
                regulator-min-microvolt = <3300000>;
                regulator-max-microvolt = <3300000>;
+               gpio = <&gpio3 10 GPIO_ACTIVE_HIGH>;
+               enable-active-high;
+               vin-supply = <&reg_vdd_3v3>;
        };
 
        sound {
                };
        };
 
+       usdhc2_pwrseq: pwrseq {
+               pinctrl-names = "default";
+               pinctrl-0 = <&pinctrl_bt>, <&pinctrl_wifi_disable>;
+               compatible = "mmc-pwrseq-simple";
+               reset-gpios = <&gpio3 25 GPIO_ACTIVE_HIGH>,
+                             <&gpio4 29 GPIO_ACTIVE_HIGH>;
+       };
+
        bm818_codec: sound-wwan-codec {
                compatible = "broadmobi,bm818", "option,gtm601";
                #sound-dai-cells = <0>;
 &ddrc {
        operating-points-v2 = <&ddrc_opp_table>;
 
-       ddrc_opp_table: ddrc-opp-table {
+       ddrc_opp_table: opp-table {
                compatible = "operating-points-v2";
 
                opp-25M {
                >;
        };
 
+       pinctrl_bt: btgrp {
+               fsl,pins = <
+                       /* BT_REG_ON */
+                       MX8MQ_IOMUXC_SAI5_MCLK_GPIO3_IO25       0x83
+               >;
+       };
+
        pinctrl_charger_in: chargeringrp {
                fsl,pins = <
                        /* CHRG_INT */
                >;
        };
 
+       pinctrl_wifi_disable: wifidisablegrp {
+               fsl,pins = <
+                       /* WIFI_REG_ON */
+                       MX8MQ_IOMUXC_SAI3_RXC_GPIO4_IO29        0x83
+               >;
+       };
+
+       pinctrl_wifi_pwr: wifipwrgrp {
+               fsl,pins = <
+                       /* WIFI3V3_EN */
+                       MX8MQ_IOMUXC_NAND_DATA04_GPIO3_IO10     0x83
+               >;
+       };
+
        pinctrl_wdog: wdoggrp {
                fsl,pins = <
                        /* nWDOG */
                vddi-supply = <&reg_lcd_1v8>;
                backlight = <&backlight_dsi>;
                reset-gpios = <&gpio1 29 GPIO_ACTIVE_LOW>;
+               mantix,tp-rstn-gpios = <&gpio1 24 GPIO_ACTIVE_LOW>;
 
                port {
                        panel_in: endpoint {
 
 &pwm3 {
        pinctrl-names = "default";
-       pinctrl-0 = <&pinctrl_led_g>;
+       pinctrl-0 = <&pinctrl_led_r>;
        status = "okay";
 };
 
 &pwm4 {
        pinctrl-names = "default";
-       pinctrl-0 = <&pinctrl_led_r>;
+       pinctrl-0 = <&pinctrl_led_g>;
        status = "okay";
 };
 
        pinctrl-2 = <&pinctrl_usdhc2_200mhz>;
        bus-width = <4>;
        vmmc-supply = <&reg_wifi_3v3>;
+       mmc-pwrseq = <&usdhc2_pwrseq>;
+       post-power-on-delay-ms = <1000>;
        cd-gpios = <&gpio2 12 GPIO_ACTIVE_LOW>;
+       max-frequency = <50000000>;
        disable-wp;
        cap-sdio-irq;
        keep-power-in-suspend;
index 2535268..4f2db61 100644 (file)
 
        pinctrl_usdhc2: usdhc2grp {
                fsl,pins = <
+                       MX8MQ_IOMUXC_SD2_CD_B_USDHC2_CD_B               0x0
                        MX8MQ_IOMUXC_SD2_CLK_USDHC2_CLK                 0x83
                        MX8MQ_IOMUXC_SD2_CMD_USDHC2_CMD                 0xc3
                        MX8MQ_IOMUXC_SD2_DATA0_USDHC2_DATA0             0xc3
index a08a568..2222ef7 100644 (file)
                 <&clk IMX8MQ_CLK_PCIE1_PHY>,
                 <&pcie0_refclk>;
        clock-names = "pcie", "pcie_aux", "pcie_phy", "pcie_bus";
+       vph-supply = <&vgen5_reg>;
        status = "okay";
 };
 
                 <&clk IMX8MQ_CLK_PCIE2_PHY>,
                 <&pcie1_refclk>;
        clock-names = "pcie", "pcie_aux", "pcie_phy", "pcie_bus";
+       vph-supply = <&vgen5_reg>;
        status = "okay";
 };
 
index 4066b16..972766b 100644 (file)
                        #size-cells = <2>;
                        device_type = "pci";
                        bus-range = <0x00 0xff>;
-                       ranges = <0x81000000 0 0x00000000 0x1ff80000 0 0x00010000 /* downstream I/O 64KB */
-                                 0x82000000 0 0x18000000 0x18000000 0 0x07f00000>; /* non-prefetchable memory */
+                       ranges = <0x81000000 0 0x00000000 0x1ff80000 0 0x00010000>, /* downstream I/O 64KB */
+                                <0x82000000 0 0x18000000 0x18000000 0 0x07f00000>; /* non-prefetchable memory */
                        num-lanes = <1>;
-                       num-viewport = <4>;
                        interrupts = <GIC_SPI 122 IRQ_TYPE_LEVEL_HIGH>;
                        interrupt-names = "msi";
                        #interrupt-cells = <1>;
                        #address-cells = <3>;
                        #size-cells = <2>;
                        device_type = "pci";
-                       ranges =  <0x81000000 0 0x00000000 0x27f80000 0 0x00010000 /* downstream I/O 64KB */
-                                  0x82000000 0 0x20000000 0x20000000 0 0x07f00000>; /* non-prefetchable memory */
+                       ranges =  <0x81000000 0 0x00000000 0x27f80000 0 0x00010000>, /* downstream I/O 64KB */
+                                 <0x82000000 0 0x20000000 0x20000000 0 0x07f00000>; /* non-prefetchable memory */
                        num-lanes = <1>;
-                       num-viewport = <4>;
                        interrupts = <GIC_SPI 74 IRQ_TYPE_LEVEL_HIGH>;
                        interrupt-names = "msi";
                        #interrupt-cells = <1>;
diff --git a/arch/arm64/boot/dts/freescale/s32g2.dtsi b/arch/arm64/boot/dts/freescale/s32g2.dtsi
new file mode 100644 (file)
index 0000000..59ea8a2
--- /dev/null
@@ -0,0 +1,124 @@
+// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
+/*
+ * NXP S32G2 SoC family
+ *
+ * Copyright (c) 2021 SUSE LLC
+ * Copyright (c) 2017-2021 NXP
+ */
+
+#include <dt-bindings/interrupt-controller/arm-gic.h>
+
+/ {
+       compatible = "nxp,s32g2";
+       interrupt-parent = <&gic>;
+       #address-cells = <2>;
+       #size-cells = <2>;
+
+       cpus {
+               #address-cells = <1>;
+               #size-cells = <0>;
+
+               cpu0: cpu@0 {
+                       device_type = "cpu";
+                       compatible = "arm,cortex-a53";
+                       reg = <0x0>;
+                       enable-method = "psci";
+                       next-level-cache = <&cluster0_l2>;
+               };
+
+               cpu1: cpu@1 {
+                       device_type = "cpu";
+                       compatible = "arm,cortex-a53";
+                       reg = <0x1>;
+                       enable-method = "psci";
+                       next-level-cache = <&cluster0_l2>;
+               };
+
+               cpu2: cpu@100 {
+                       device_type = "cpu";
+                       compatible = "arm,cortex-a53";
+                       reg = <0x100>;
+                       enable-method = "psci";
+                       next-level-cache = <&cluster1_l2>;
+               };
+
+               cpu3: cpu@101 {
+                       device_type = "cpu";
+                       compatible = "arm,cortex-a53";
+                       reg = <0x101>;
+                       enable-method = "psci";
+                       next-level-cache = <&cluster1_l2>;
+               };
+
+               cluster0_l2: l2-cache0 {
+                       compatible = "cache";
+               };
+
+               cluster1_l2: l2-cache1 {
+                       compatible = "cache";
+               };
+       };
+
+       pmu {
+               compatible = "arm,cortex-a53-pmu";
+               interrupts = <GIC_PPI 7 IRQ_TYPE_LEVEL_HIGH>;
+       };
+
+       timer {
+               compatible = "arm,armv8-timer";
+               interrupts = <GIC_PPI 13 IRQ_TYPE_LEVEL_LOW>,
+                            <GIC_PPI 14 IRQ_TYPE_LEVEL_LOW>,
+                            <GIC_PPI 11 IRQ_TYPE_LEVEL_LOW>,
+                            <GIC_PPI 10 IRQ_TYPE_LEVEL_LOW>;
+       };
+
+       firmware {
+               psci {
+                       compatible = "arm,psci-1.0";
+                       method = "smc";
+               };
+       };
+
+       soc {
+               compatible = "simple-bus";
+               #address-cells = <1>;
+               #size-cells = <1>;
+               ranges = <0 0 0 0x80000000>;
+
+               uart0: serial@401c8000 {
+                       compatible = "nxp,s32g2-linflexuart",
+                                    "fsl,s32v234-linflexuart";
+                       reg = <0x401c8000 0x3000>;
+                       interrupts = <GIC_SPI 82 IRQ_TYPE_EDGE_RISING>;
+                       status = "disabled";
+               };
+
+               uart1: serial@401cc000 {
+                       compatible = "nxp,s32g2-linflexuart",
+                                    "fsl,s32v234-linflexuart";
+                       reg = <0x401cc000 0x3000>;
+                       interrupts = <GIC_SPI 83 IRQ_TYPE_EDGE_RISING>;
+                       status = "disabled";
+               };
+
+               uart2: serial@402bc000 {
+                       compatible = "nxp,s32g2-linflexuart",
+                                    "fsl,s32v234-linflexuart";
+                       reg = <0x402bc000 0x3000>;
+                       interrupts = <GIC_SPI 84 IRQ_TYPE_EDGE_RISING>;
+                       status = "disabled";
+               };
+
+               gic: interrupt-controller@50800000 {
+                       compatible = "arm,gic-v3";
+                       reg = <0x50800000 0x10000>,
+                             <0x50880000 0x80000>,
+                             <0x50400000 0x2000>,
+                             <0x50410000 0x2000>,
+                             <0x50420000 0x2000>;
+                       interrupts = <GIC_PPI 9 IRQ_TYPE_LEVEL_HIGH>;
+                       interrupt-controller;
+                       #interrupt-cells = <3>;
+               };
+       };
+};
diff --git a/arch/arm64/boot/dts/freescale/s32g274a-evb.dts b/arch/arm64/boot/dts/freescale/s32g274a-evb.dts
new file mode 100644 (file)
index 0000000..9118d8d
--- /dev/null
@@ -0,0 +1,34 @@
+// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
+/*
+ * Copyright (c) 2021 SUSE LLC
+ * Copyright (c) 2019-2021 NXP
+ */
+
+/dts-v1/;
+
+#include "s32g2.dtsi"
+
+/ {
+       model = "NXP S32G2 Evaluation Board (S32G-VNP-EVB)";
+       compatible = "nxp,s32g274a-evb", "nxp,s32g2";
+
+       aliases {
+               serial0 = &uart0;
+       };
+
+       chosen {
+               stdout-path = "serial0:115200n8";
+       };
+
+       /* 4GiB RAM */
+       memory@80000000 {
+               device_type = "memory";
+               reg = <0x0 0x80000000 0 0x80000000>,
+                     <0x8 0x80000000 0 0x80000000>;
+       };
+};
+
+/* UART (J58) to Micro USB port */
+&uart0 {
+       status = "okay";
+};
diff --git a/arch/arm64/boot/dts/freescale/s32g274a-rdb2.dts b/arch/arm64/boot/dts/freescale/s32g274a-rdb2.dts
new file mode 100644 (file)
index 0000000..e05ee85
--- /dev/null
@@ -0,0 +1,40 @@
+// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
+/*
+ * Copyright (c) 2021 SUSE LLC
+ * Copyright (c) 2019-2021 NXP
+ */
+
+/dts-v1/;
+
+#include "s32g2.dtsi"
+
+/ {
+       model = "NXP S32G2 Reference Design Board 2 (S32G-VNP-RDB2)";
+       compatible = "nxp,s32g274a-rdb2", "nxp,s32g2";
+
+       aliases {
+               serial0 = &uart0;
+               serial1 = &uart1;
+       };
+
+       chosen {
+               stdout-path = "serial0:115200n8";
+       };
+
+       /* 4GiB RAM */
+       memory@80000000 {
+               device_type = "memory";
+               reg = <0x0 0x80000000 0 0x80000000>,
+                     <0x8 0x80000000 0 0x80000000>;
+       };
+};
+
+/* UART (J2) to Micro USB port */
+&uart0 {
+       status = "okay";
+};
+
+/* UART (J1) to Micro USB port */
+&uart1 {
+       status = "okay";
+};
index 2d5c1a3..8bd6d7e 100644 (file)
                };
        };
 
-       cluster0_opp: opp_table0 {
+       cluster0_opp: opp-table-0 {
                compatible = "operating-points-v2";
                opp-shared;
 
                };
        };
 
-       cluster1_opp: opp_table1 {
+       cluster1_opp: opp-table-1 {
                compatible = "operating-points-v2";
                opp-shared;
 
                };
 
                watchdog0: watchdog@e8a06000 {
-                       compatible = "arm,sp805-wdt", "arm,primecell";
+                       compatible = "arm,sp805", "arm,primecell";
                        reg = <0x0 0xe8a06000 0x0 0x1000>;
                        interrupts = <GIC_SPI 44 IRQ_TYPE_LEVEL_HIGH>;
                        clocks = <&crg_ctrl HI3660_OSC32K>,
                };
 
                watchdog1: watchdog@e8a07000 {
-                       compatible = "arm,sp805-wdt", "arm,primecell";
+                       compatible = "arm,sp805", "arm,primecell";
                        reg = <0x0 0xe8a07000 0x0 0x1000>;
                        interrupts = <GIC_SPI 45 IRQ_TYPE_LEVEL_HIGH>;
                        clocks = <&crg_ctrl HI3660_OSC32K>,
index d8abf44..7c32f5f 100644 (file)
@@ -12,6 +12,7 @@
 
 #include "hi3670.dtsi"
 #include "hikey970-pinctrl.dtsi"
+#include "hikey970-pmic.dtsi"
 
 / {
        model = "HiKey970";
                reg = <0x0 0x0 0x0 0x0>;
        };
 
-       sd_1v8: regulator-1v8 {
-               compatible = "regulator-fixed";
-               regulator-name = "fixed-1.8V";
-               regulator-min-microvolt = <1800000>;
-               regulator-max-microvolt = <1800000>;
-               regulator-always-on;
-       };
-
-       sd_3v3: regulator-3v3 {
-               compatible = "regulator-fixed";
-               regulator-name = "fixed-3.3V";
-               regulator-min-microvolt = <3300000>;
-               regulator-max-microvolt = <3300000>;
-               regulator-boot-on;
-               regulator-always-on;
-       };
-
        wlan_en: wlan-en-1-8v {
                compatible = "regulator-fixed";
                regulator-name = "wlan-en-regulator";
        pinctrl-0 = <&sd_pmx_func
                     &sd_clk_cfg_func
                     &sd_cfg_func>;
-       vmmc-supply = <&sd_3v3>;
-       vqmmc-supply = <&sd_1v8>;
+       vmmc-supply = <&ldo16>;
+       vqmmc-supply = <&ldo9>;
        status = "okay";
 };
 
index 20698cf..636c881 100644 (file)
                        interrupt-parent = <&gic>;
                        interrupts = <GIC_SPI 278 IRQ_TYPE_LEVEL_HIGH>;
                        clocks = <&crg_ctrl HI3670_CLK_GATE_UFSIO_REF>,
-                               <&crg_ctrl HI3670_CLK_GATE_UFS_SUBSYS>;
+                                <&crg_ctrl HI3670_CLK_GATE_UFS_SUBSYS>;
                        clock-names = "ref_clk", "phy_clk";
                        freq-table-hz = <0 0
                                         0 0>;
index dde9371..ae0a7cf 100644 (file)
                };
        };
 
-       cpu_opp_table: cpu_opp_table {
+       cpu_opp_table: opp-table-0 {
                compatible = "operating-points-v2";
                opp-shared;
 
                };
 
                watchdog0: watchdog@f8005000 {
-                       compatible = "arm,sp805-wdt", "arm,primecell";
+                       compatible = "arm,sp805", "arm,primecell";
                        reg = <0x0 0xf8005000 0x0 0x1000>;
                        interrupts = <GIC_SPI 13 IRQ_TYPE_LEVEL_HIGH>;
                        clocks = <&ao_ctrl HI6220_WDT0_PCLK>,
diff --git a/arch/arm64/boot/dts/hisilicon/hikey970-pmic.dtsi b/arch/arm64/boot/dts/hisilicon/hikey970-pmic.dtsi
new file mode 100644 (file)
index 0000000..970047f
--- /dev/null
@@ -0,0 +1,86 @@
+// SPDX-License-Identifier: GPL-2.0
+/*
+ * dts file for Hi6421v600 SPMI PMIC used at the HiKey970 Development Board
+ *
+ * Copyright (C) 2020, Huawei Tech. Co., Ltd.
+ */
+
+#include <dt-bindings/spmi/spmi.h>
+
+/ {
+       spmi: spmi@fff24000 {
+               compatible = "hisilicon,kirin970-spmi-controller";
+               #address-cells = <2>;
+               #size-cells = <0>;
+               status = "okay";
+               reg = <0x0 0xfff24000 0x0 0x1000>;
+               hisilicon,spmi-channel = <2>;
+
+               pmic: pmic@0 {
+                       compatible = "hisilicon,hi6421-spmi";
+                       reg = <0 SPMI_USID>;
+
+                       #interrupt-cells = <2>;
+                       interrupt-controller;
+                       gpios = <&gpio28 0 0>;
+
+                       regulators {
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+
+                               ldo3: ldo3 { /* HDMI */
+                                       regulator-name = "ldo3";
+                                       regulator-min-microvolt = <1500000>;
+                                       regulator-max-microvolt = <2000000>;
+                                       regulator-boot-on;
+                               };
+
+                               ldo4: ldo4 { /* 40 PIN */
+                                       regulator-name = "ldo4";
+                                       regulator-min-microvolt = <1725000>;
+                                       regulator-max-microvolt = <1900000>;
+                                       regulator-boot-on;
+                               };
+
+                               ldo9: ldo9 { /* SDCARD I/O */
+                                       regulator-name = "ldo9";
+                                       regulator-min-microvolt = <1750000>;
+                                       regulator-max-microvolt = <3300000>;
+                                       regulator-boot-on;
+                               };
+
+                               ldo15: ldo15 { /* UFS */
+                                       regulator-name = "ldo15";
+                                       regulator-min-microvolt = <1800000>;
+                                       regulator-max-microvolt = <3000000>;
+                                       regulator-always-on;
+                               };
+
+                               ldo16: ldo16 { /* SD */
+                                       regulator-name = "ldo16";
+                                       regulator-min-microvolt = <1800000>;
+                                       regulator-max-microvolt = <3000000>;
+                                       regulator-boot-on;
+                               };
+
+                               ldo17: ldo17 { /* USB HUB */
+                                       regulator-name = "ldo17";
+                                       regulator-min-microvolt = <2500000>;
+                                       regulator-max-microvolt = <3300000>;
+                               };
+
+                               ldo33: ldo33 { /* PEX8606 */
+                                       regulator-name = "ldo33";
+                                       regulator-min-microvolt = <2500000>;
+                                       regulator-max-microvolt = <3300000>;
+                               };
+
+                               ldo34: ldo34 { /* GPS AUX IN VDD */
+                                       regulator-name = "ldo34";
+                                       regulator-min-microvolt = <2600000>;
+                                       regulator-max-microvolt = <3300000>;
+                               };
+                       };
+               };
+       };
+};
index c686a8d..1c794cd 100644 (file)
@@ -9,6 +9,7 @@ dtb-$(CONFIG_ARCH_MVEBU) += armada-3720-espressobin-v7-emmc.dtb
 dtb-$(CONFIG_ARCH_MVEBU) += armada-3720-turris-mox.dtb
 dtb-$(CONFIG_ARCH_MVEBU) += armada-3720-uDPU.dtb
 dtb-$(CONFIG_ARCH_MVEBU) += armada-7040-db.dtb
+dtb-$(CONFIG_ARCH_MVEBU) += armada-7040-mochabin.dtb
 dtb-$(CONFIG_ARCH_MVEBU) += armada-8040-clearfog-gt-8k.dtb
 dtb-$(CONFIG_ARCH_MVEBU) += armada-8040-db.dtb
 dtb-$(CONFIG_ARCH_MVEBU) += armada-8040-mcbin.dtb
diff --git a/arch/arm64/boot/dts/marvell/armada-7040-mochabin.dts b/arch/arm64/boot/dts/marvell/armada-7040-mochabin.dts
new file mode 100644 (file)
index 0000000..f3b0d57
--- /dev/null
@@ -0,0 +1,458 @@
+// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
+/*
+ * Device Tree file for Globalscale MOCHAbin
+ * Copyright (C) 2019 Globalscale technologies, Inc.
+ * Copyright (C) 2021 Sartura Ltd.
+ *
+ */
+
+/dts-v1/;
+
+#include <dt-bindings/gpio/gpio.h>
+#include "armada-7040.dtsi"
+
+/ {
+       model = "Globalscale MOCHAbin";
+       compatible = "globalscale,mochabin", "marvell,armada7040",
+                    "marvell,armada-ap806-quad", "marvell,armada-ap806";
+
+       chosen {
+               stdout-path = "serial0:115200n8";
+       };
+
+       aliases {
+               ethernet0 = &cp0_eth0;
+               ethernet1 = &cp0_eth1;
+               ethernet2 = &cp0_eth2;
+               ethernet3 = &swport1;
+               ethernet4 = &swport2;
+               ethernet5 = &swport3;
+               ethernet6 = &swport4;
+       };
+
+       /* SFP+ 10G */
+       sfp_eth0: sfp-eth0 {
+               compatible = "sff,sfp";
+               i2c-bus = <&cp0_i2c1>;
+               los-gpio = <&sfp_gpio 3 GPIO_ACTIVE_HIGH>;
+               mod-def0-gpio = <&sfp_gpio 2 GPIO_ACTIVE_LOW>;
+               tx-disable-gpio = <&sfp_gpio 1 GPIO_ACTIVE_HIGH>;
+               tx-fault-gpio  = <&sfp_gpio 0 GPIO_ACTIVE_HIGH>;
+       };
+
+       /* SFP 1G */
+       sfp_eth2: sfp-eth2 {
+               compatible = "sff,sfp";
+               i2c-bus = <&cp0_i2c0>;
+               los-gpio = <&sfp_gpio 7 GPIO_ACTIVE_HIGH>;
+               mod-def0-gpio = <&sfp_gpio 6 GPIO_ACTIVE_LOW>;
+               tx-disable-gpio = <&sfp_gpio 5 GPIO_ACTIVE_HIGH>;
+               tx-fault-gpio  = <&sfp_gpio 4 GPIO_ACTIVE_HIGH>;
+       };
+};
+
+/* microUSB UART console */
+&uart0 {
+       status = "okay";
+
+       pinctrl-0 = <&uart0_pins>;
+       pinctrl-names = "default";
+};
+
+/* eMMC */
+&ap_sdhci0 {
+       status = "okay";
+
+       bus-width = <4>;
+       non-removable;
+       /delete-property/ marvell,xenon-phy-slow-mode;
+       no-1-8-v;
+};
+
+&cp0_pinctrl {
+       cp0_uart0_pins: cp0-uart0-pins {
+               marvell,pins = "mpp6", "mpp7";
+               marvell,function = "uart0";
+       };
+
+       cp0_spi0_pins: cp0-spi0-pins {
+               marvell,pins = "mpp56", "mpp57", "mpp58", "mpp59";
+               marvell,function = "spi0";
+       };
+
+       cp0_spi1_pins: cp0-spi1-pins {
+               marvell,pins = "mpp13", "mpp14", "mpp15", "mpp16";
+               marvell,function = "spi1";
+       };
+
+       cp0_i2c0_pins: cp0-i2c0-pins {
+               marvell,pins = "mpp37", "mpp38";
+               marvell,function = "i2c0";
+       };
+
+       cp0_i2c1_pins: cp0-i2c1-pins {
+               marvell,pins = "mpp2", "mpp3";
+               marvell,function = "i2c1";
+       };
+
+       pca9554_int_pins: pca9554-int-pins {
+               marvell,pins = "mpp27";
+               marvell,function = "gpio";
+       };
+
+       cp0_rgmii1_pins: cp0-rgmii1-pins {
+               marvell,pins = "mpp44", "mpp45", "mpp46", "mpp47", "mpp48", "mpp49",
+                              "mpp50", "mpp51", "mpp52", "mpp53", "mpp54", "mpp55";
+               marvell,function = "ge1";
+       };
+
+       is31_sdb_pins: is31-sdb-pins {
+               marvell,pins = "mpp30";
+               marvell,function = "gpio";
+       };
+
+       cp0_pcie_reset_pins: cp0-pcie-reset-pins {
+               marvell,pins = "mpp9";
+               marvell,function = "gpio";
+       };
+
+       cp0_pcie_clkreq_pins: cp0-pcie-clkreq-pins {
+               marvell,pins = "mpp5";
+               marvell,function = "pcie1";
+       };
+
+       cp0_switch_pins: cp0-switch-pins {
+               marvell,pins = "mpp0", "mpp1";
+               marvell,function = "gpio";
+       };
+
+       cp0_phy_pins: cp0-phy-pins {
+               marvell,pins = "mpp12";
+               marvell,function = "gpio";
+       };
+};
+
+/* mikroBUS UART */
+&cp0_uart0 {
+       status = "okay";
+
+       pinctrl-names = "default";
+       pinctrl-0 = <&cp0_uart0_pins>;
+};
+
+/* mikroBUS SPI */
+&cp0_spi0 {
+       status = "okay";
+
+       pinctrl-names = "default";
+       pinctrl-0 = <&cp0_spi0_pins>;
+};
+
+/* SPI-NOR */
+&cp0_spi1{
+       status = "okay";
+
+       pinctrl-names = "default";
+       pinctrl-0 = <&cp0_spi1_pins>;
+
+       spi-flash@0 {
+               #address-cells = <1>;
+               #size-cells = <1>;
+               compatible = "jedec,spi-nor";
+               reg = <0>;
+               spi-max-frequency = <20000000>;
+
+               partitions {
+                       compatible = "fixed-partitions";
+                       #address-cells = <1>;
+                       #size-cells = <1>;
+
+                       partition@0 {
+                               label = "firmware";
+                               reg = <0x0 0x3e0000>;
+                               read-only;
+                       };
+
+                       partition@3e0000 {
+                               label = "hw-info";
+                               reg = <0x3e0000 0x10000>;
+                               read-only;
+                       };
+
+                       partition@3f0000 {
+                               label = "u-boot-env";
+                               reg = <0x3f0000 0x10000>;
+                       };
+               };
+       };
+};
+
+/* mikroBUS, 1G SFP and GPIO expander */
+&cp0_i2c0 {
+       status = "okay";
+
+       pinctrl-names = "default";
+       pinctrl-0 = <&cp0_i2c0_pins>;
+       clock-frequency = <100000>;
+
+       sfp_gpio: pca9554@39 {
+               compatible = "nxp,pca9554";
+               pinctrl-names = "default";
+               pinctrl-0 = <&pca9554_int_pins>;
+               reg = <0x39>;
+
+               interrupt-parent = <&cp0_gpio1>;
+               interrupts = <27 IRQ_TYPE_LEVEL_LOW>;
+               interrupt-controller;
+               #interrupt-cells = <2>;
+
+               gpio-controller;
+               #gpio-cells = <2>;
+
+               /*
+                * IO0_0: SFP+_TX_FAULT
+                * IO0_1: SFP+_TX_DISABLE
+                * IO0_2: SFP+_PRSNT
+                * IO0_3: SFP+_LOSS
+                * IO0_4: SFP_TX_FAULT
+                * IO0_5: SFP_TX_DISABLE
+                * IO0_6: SFP_PRSNT
+                * IO0_7: SFP_LOSS
+                */
+       };
+};
+
+/* IS31FL3199, mini-PCIe and 10G SFP+ */
+&cp0_i2c1 {
+       status = "okay";
+
+       pinctrl-names = "default";
+       pinctrl-0 = <&cp0_i2c1_pins>;
+       clock-frequency = <100000>;
+
+       leds@64 {
+               compatible = "issi,is31fl3199";
+               #address-cells = <1>;
+               #size-cells = <0>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&is31_sdb_pins>;
+               shutdown-gpios = <&cp0_gpio1 30 GPIO_ACTIVE_HIGH>;
+               reg = <0x64>;
+
+               led1_red: led@1 {
+                       label = "red:led1";
+                       reg = <1>;
+                       led-max-microamp = <20000>;
+               };
+
+               led1_green: led@2 {
+                       label = "green:led1";
+                       reg = <2>;
+               };
+
+               led1_blue: led@3 {
+                       label = "blue:led1";
+                       reg = <3>;
+               };
+
+               led2_red: led@4 {
+                       label = "red:led2";
+                       reg = <4>;
+               };
+
+               led2_green: led@5 {
+                       label = "green:led2";
+                       reg = <5>;
+               };
+
+               led2_blue: led@6 {
+                       label = "blue:led2";
+                       reg = <6>;
+               };
+
+               led3_red: led@7 {
+                       label = "red:led3";
+                       reg = <7>;
+               };
+
+               led3_green: led@8 {
+                       label = "green:led3";
+                       reg = <8>;
+               };
+
+               led3_blue: led@9 {
+                       label = "blue:led3";
+                       reg = <9>;
+               };
+       };
+};
+
+&cp0_mdio {
+       status = "okay";
+
+       /* 88E1512 PHY */
+       eth2phy: ethernet-phy@1 {
+               reg = <1>;
+               sfp = <&sfp_eth2>;
+
+               pinctrl-names = "default";
+               pinctrl-0 = <&cp0_phy_pins>;
+               reset-gpios = <&cp0_gpio1 12 GPIO_ACTIVE_LOW>;
+       };
+
+       /* 88E6141 Topaz switch */
+       switch: switch@3 {
+               compatible = "marvell,mv88e6085";
+               #address-cells = <1>;
+               #size-cells = <0>;
+               reg = <3>;
+
+               pinctrl-names = "default";
+               pinctrl-0 = <&cp0_switch_pins>;
+               reset-gpios = <&cp0_gpio1 0 GPIO_ACTIVE_LOW>;
+
+               interrupt-parent = <&cp0_gpio1>;
+               interrupts = <1 IRQ_TYPE_LEVEL_LOW>;
+
+               ports {
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+
+                       swport1: port@1 {
+                               reg = <1>;
+                               label = "lan0";
+                               phy-handle = <&swphy1>;
+                       };
+
+                       swport2: port@2 {
+                               reg = <2>;
+                               label = "lan1";
+                               phy-handle = <&swphy2>;
+                       };
+
+                       swport3: port@3 {
+                               reg = <3>;
+                               label = "lan2";
+                               phy-handle = <&swphy3>;
+                       };
+
+                       swport4: port@4 {
+                               reg = <4>;
+                               label = "lan3";
+                               phy-handle = <&swphy4>;
+                       };
+
+                       port@5 {
+                               reg = <5>;
+                               label = "cpu";
+                               ethernet = <&cp0_eth1>;
+                               phy-mode = "2500base-x";
+                               managed = "in-band-status";
+                       };
+               };
+
+               mdio {
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+
+                       swphy1: swphy1@17 {
+                               reg = <17>;
+                       };
+
+                       swphy2: swphy2@18 {
+                               reg = <18>;
+                       };
+
+                       swphy3: swphy3@19 {
+                               reg = <19>;
+                       };
+
+                       swphy4: swphy4@20 {
+                               reg = <20>;
+                       };
+               };
+       };
+};
+
+&cp0_ethernet {
+       status = "okay";
+};
+
+/* 10G SFP+ */
+&cp0_eth0 {
+       status = "okay";
+
+       phy-mode = "10gbase-r";
+       phys = <&cp0_comphy4 0>;
+       managed = "in-band-status";
+       sfp = <&sfp_eth0>;
+};
+
+/* Topaz switch uplink */
+&cp0_eth1 {
+       status = "okay";
+
+       phy-mode = "2500base-x";
+       phys = <&cp0_comphy0 1>;
+
+       fixed-link {
+               speed = <2500>;
+               full-duplex;
+       };
+};
+
+/* 1G SFP or 1G RJ45 */
+&cp0_eth2 {
+       status = "okay";
+
+       pinctrl-names = "default";
+       pinctrl-0 = <&cp0_rgmii1_pins>;
+
+       phy = <&eth2phy>;
+       phy-mode = "rgmii-id";
+};
+
+&cp0_utmi {
+       status = "okay";
+};
+
+/* SMSC USB5434B hub */
+&cp0_usb3_0 {
+       status = "okay";
+
+       phys = <&cp0_comphy1 0>, <&cp0_utmi0>;
+       phy-names = "cp0-usb3h0-comphy", "utmi";
+};
+
+/* miniPCI-E USB */
+&cp0_usb3_1 {
+       status = "okay";
+};
+
+&cp0_sata0 {
+       status = "okay";
+
+       /* 7 + 12 SATA connector (J24) */
+       sata-port@0 {
+               phys = <&cp0_comphy2 0>;
+               phy-names = "cp0-sata0-0-phy";
+       };
+
+       /* M.2-2250 B-key (J39) */
+       sata-port@1 {
+               phys = <&cp0_comphy3 1>;
+               phy-names = "cp0-sata0-1-phy";
+       };
+};
+
+/* miniPCI-E (J5) */
+&cp0_pcie2 {
+       status = "okay";
+
+       pinctrl-names = "default", "clkreq";
+       pinctrl-0 = <&cp0_pcie_reset_pins>;
+       pinctrl-1 = <&cp0_pcie_clkreq_pins>;
+       phys = <&cp0_comphy5 2>;
+       phy-names = "cp0-pcie2-x1-phy";
+       reset-gpios = <&cp0_gpio1 9 GPIO_ACTIVE_LOW>;
+};
index a9cca9c..de16c0d 100644 (file)
                };
        };
 
-       pcie: pcie@11700000 {
+       pcie1: pcie@112ff000 {
                compatible = "mediatek,mt2712-pcie";
                device_type = "pci";
-               reg = <0 0x11700000 0 0x1000>,
-                     <0 0x112ff000 0 0x1000>;
-               reg-names = "port0", "port1";
+               reg = <0 0x112ff000 0 0x1000>;
+               reg-names = "port1";
+               linux,pci-domain = <1>;
                #address-cells = <3>;
                #size-cells = <2>;
-               interrupts = <GIC_SPI 115 IRQ_TYPE_LEVEL_HIGH>,
-                            <GIC_SPI 117 IRQ_TYPE_LEVEL_HIGH>;
-               clocks = <&topckgen CLK_TOP_PE2_MAC_P0_SEL>,
-                        <&topckgen CLK_TOP_PE2_MAC_P1_SEL>,
-                        <&pericfg CLK_PERI_PCIE0>,
+               interrupts = <GIC_SPI 117 IRQ_TYPE_LEVEL_HIGH>;
+               interrupt-names = "pcie_irq";
+               clocks = <&topckgen CLK_TOP_PE2_MAC_P1_SEL>,
                         <&pericfg CLK_PERI_PCIE1>;
-               clock-names = "sys_ck0", "sys_ck1", "ahb_ck0", "ahb_ck1";
-               phys = <&u3port0 PHY_TYPE_PCIE>, <&u3port1 PHY_TYPE_PCIE>;
-               phy-names = "pcie-phy0", "pcie-phy1";
+               clock-names = "sys_ck1", "ahb_ck1";
+               phys = <&u3port1 PHY_TYPE_PCIE>;
+               phy-names = "pcie-phy1";
                bus-range = <0x00 0xff>;
-               ranges = <0x82000000 0 0x20000000  0x0 0x20000000  0 0x10000000>;
+               ranges = <0x82000000 0 0x11400000  0x0 0x11400000  0 0x300000>;
+               status = "disabled";
 
-               pcie0: pcie@0,0 {
-                       device_type = "pci";
-                       status = "disabled";
-                       reg = <0x0000 0 0 0 0>;
-                       #address-cells = <3>;
-                       #size-cells = <2>;
+               #interrupt-cells = <1>;
+               interrupt-map-mask = <0 0 0 7>;
+               interrupt-map = <0 0 0 1 &pcie_intc1 0>,
+                               <0 0 0 2 &pcie_intc1 1>,
+                               <0 0 0 3 &pcie_intc1 2>,
+                               <0 0 0 4 &pcie_intc1 3>;
+               pcie_intc1: interrupt-controller {
+                       interrupt-controller;
+                       #address-cells = <0>;
                        #interrupt-cells = <1>;
-                       ranges;
-                       interrupt-map-mask = <0 0 0 7>;
-                       interrupt-map = <0 0 0 1 &pcie_intc0 0>,
-                                       <0 0 0 2 &pcie_intc0 1>,
-                                       <0 0 0 3 &pcie_intc0 2>,
-                                       <0 0 0 4 &pcie_intc0 3>;
-                       pcie_intc0: interrupt-controller {
-                               interrupt-controller;
-                               #address-cells = <0>;
-                               #interrupt-cells = <1>;
-                       };
                };
+       };
 
-               pcie1: pcie@1,0 {
-                       device_type = "pci";
-                       status = "disabled";
-                       reg = <0x0800 0 0 0 0>;
-                       #address-cells = <3>;
-                       #size-cells = <2>;
+       pcie0: pcie@11700000 {
+               compatible = "mediatek,mt2712-pcie";
+               device_type = "pci";
+               reg = <0 0x11700000 0 0x1000>;
+               reg-names = "port0";
+               linux,pci-domain = <0>;
+               #address-cells = <3>;
+               #size-cells = <2>;
+               interrupts = <GIC_SPI 115 IRQ_TYPE_LEVEL_HIGH>;
+               interrupt-names = "pcie_irq";
+               clocks = <&topckgen CLK_TOP_PE2_MAC_P0_SEL>,
+                        <&pericfg CLK_PERI_PCIE0>;
+               clock-names = "sys_ck0", "ahb_ck0";
+               phys = <&u3port0 PHY_TYPE_PCIE>;
+               phy-names = "pcie-phy0";
+               bus-range = <0x00 0xff>;
+               ranges = <0x82000000 0 0x20000000 0x0 0x20000000 0 0x10000000>;
+               status = "disabled";
+
+               #interrupt-cells = <1>;
+               interrupt-map-mask = <0 0 0 7>;
+               interrupt-map = <0 0 0 1 &pcie_intc0 0>,
+                               <0 0 0 2 &pcie_intc0 1>,
+                               <0 0 0 3 &pcie_intc0 2>,
+                               <0 0 0 4 &pcie_intc0 3>;
+               pcie_intc0: interrupt-controller {
+                       interrupt-controller;
+                       #address-cells = <0>;
                        #interrupt-cells = <1>;
-                       ranges;
-                       interrupt-map-mask = <0 0 0 7>;
-                       interrupt-map = <0 0 0 1 &pcie_intc1 0>,
-                                       <0 0 0 2 &pcie_intc1 1>,
-                                       <0 0 0 3 &pcie_intc1 2>,
-                                       <0 0 0 4 &pcie_intc1 3>;
-                       pcie_intc1: interrupt-controller {
-                               interrupt-controller;
-                               #address-cells = <0>;
-                               #interrupt-cells = <1>;
-                       };
                };
        };
 
index fa159b2..9514507 100644 (file)
@@ -13,6 +13,7 @@
 
                mt6358codec: mt6358codec {
                        compatible = "mediatek,mt6358-sound";
+                       mediatek,dmic-mode = <0>; /* two-wires */
                };
 
                mt6358regulator: mt6358regulator {
index 2f77dc4..2b9bf8d 100644 (file)
        };
 };
 
-&pcie {
+&pcie0 {
        pinctrl-names = "default";
-       pinctrl-0 = <&pcie0_pins>, <&pcie1_pins>;
+       pinctrl-0 = <&pcie0_pins>;
        status = "okay";
+};
 
-       pcie@0,0 {
-               status = "okay";
-       };
-
-       pcie@1,0 {
-               status = "okay";
-       };
+&pcie1 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pcie1_pins>;
+       status = "okay";
 };
 
 &pio {
index f2dc850..596c073 100644 (file)
        };
 };
 
-&pcie {
+&pcie0 {
        pinctrl-names = "default";
        pinctrl-0 = <&pcie0_pins>;
        status = "okay";
-
-       pcie@0,0 {
-               status = "okay";
-       };
 };
 
 &pio {
index 890a942..6f8cb3a 100644 (file)
                #reset-cells = <1>;
        };
 
-       pcie: pcie@1a140000 {
+       pciecfg: pciecfg@1a140000 {
+               compatible = "mediatek,generic-pciecfg", "syscon";
+               reg = <0 0x1a140000 0 0x1000>;
+       };
+
+       pcie0: pcie@1a143000 {
                compatible = "mediatek,mt7622-pcie";
                device_type = "pci";
-               reg = <0 0x1a140000 0 0x1000>,
-                     <0 0x1a143000 0 0x1000>,
-                     <0 0x1a145000 0 0x1000>;
-               reg-names = "subsys", "port0", "port1";
+               reg = <0 0x1a143000 0 0x1000>;
+               reg-names = "port0";
+               linux,pci-domain = <0>;
                #address-cells = <3>;
                #size-cells = <2>;
-               interrupts = <GIC_SPI 228 IRQ_TYPE_LEVEL_LOW>,
-                            <GIC_SPI 229 IRQ_TYPE_LEVEL_LOW>;
+               interrupts = <GIC_SPI 228 IRQ_TYPE_LEVEL_LOW>;
+               interrupt-names = "pcie_irq";
                clocks = <&pciesys CLK_PCIE_P0_MAC_EN>,
-                        <&pciesys CLK_PCIE_P1_MAC_EN>,
-                        <&pciesys CLK_PCIE_P0_AHB_EN>,
                         <&pciesys CLK_PCIE_P0_AHB_EN>,
                         <&pciesys CLK_PCIE_P0_AUX_EN>,
-                        <&pciesys CLK_PCIE_P1_AUX_EN>,
                         <&pciesys CLK_PCIE_P0_AXI_EN>,
-                        <&pciesys CLK_PCIE_P1_AXI_EN>,
                         <&pciesys CLK_PCIE_P0_OBFF_EN>,
-                        <&pciesys CLK_PCIE_P1_OBFF_EN>,
-                        <&pciesys CLK_PCIE_P0_PIPE_EN>,
-                        <&pciesys CLK_PCIE_P1_PIPE_EN>;
-               clock-names = "sys_ck0", "sys_ck1", "ahb_ck0", "ahb_ck1",
-                             "aux_ck0", "aux_ck1", "axi_ck0", "axi_ck1",
-                             "obff_ck0", "obff_ck1", "pipe_ck0", "pipe_ck1";
+                        <&pciesys CLK_PCIE_P0_PIPE_EN>;
+               clock-names = "sys_ck0", "ahb_ck0", "aux_ck0",
+                             "axi_ck0", "obff_ck0", "pipe_ck0";
+
                power-domains = <&scpsys MT7622_POWER_DOMAIN_HIF0>;
                bus-range = <0x00 0xff>;
-               ranges = <0x82000000 0 0x20000000 0x0 0x20000000 0 0x10000000>;
+               ranges = <0x82000000 0 0x20000000 0x0 0x20000000 0 0x8000000>;
                status = "disabled";
 
-               pcie0: pcie@0,0 {
-                       reg = <0x0000 0 0 0 0>;
-                       #address-cells = <3>;
-                       #size-cells = <2>;
+               #interrupt-cells = <1>;
+               interrupt-map-mask = <0 0 0 7>;
+               interrupt-map = <0 0 0 1 &pcie_intc0 0>,
+                               <0 0 0 2 &pcie_intc0 1>,
+                               <0 0 0 3 &pcie_intc0 2>,
+                               <0 0 0 4 &pcie_intc0 3>;
+               pcie_intc0: interrupt-controller {
+                       interrupt-controller;
+                       #address-cells = <0>;
                        #interrupt-cells = <1>;
-                       ranges;
-                       status = "disabled";
-
-                       interrupt-map-mask = <0 0 0 7>;
-                       interrupt-map = <0 0 0 1 &pcie_intc0 0>,
-                                       <0 0 0 2 &pcie_intc0 1>,
-                                       <0 0 0 3 &pcie_intc0 2>,
-                                       <0 0 0 4 &pcie_intc0 3>;
-                       pcie_intc0: interrupt-controller {
-                               interrupt-controller;
-                               #address-cells = <0>;
-                               #interrupt-cells = <1>;
-                       };
                };
+       };
 
-               pcie1: pcie@1,0 {
-                       reg = <0x0800 0 0 0 0>;
-                       #address-cells = <3>;
-                       #size-cells = <2>;
+       pcie1: pcie@1a145000 {
+               compatible = "mediatek,mt7622-pcie";
+               device_type = "pci";
+               reg = <0 0x1a145000 0 0x1000>;
+               reg-names = "port1";
+               linux,pci-domain = <1>;
+               #address-cells = <3>;
+               #size-cells = <2>;
+               interrupts = <GIC_SPI 229 IRQ_TYPE_LEVEL_LOW>;
+               interrupt-names = "pcie_irq";
+               clocks = <&pciesys CLK_PCIE_P1_MAC_EN>,
+                        /* designer has connect RC1 with p0_ahb clock */
+                        <&pciesys CLK_PCIE_P0_AHB_EN>,
+                        <&pciesys CLK_PCIE_P1_AUX_EN>,
+                        <&pciesys CLK_PCIE_P1_AXI_EN>,
+                        <&pciesys CLK_PCIE_P1_OBFF_EN>,
+                        <&pciesys CLK_PCIE_P1_PIPE_EN>;
+               clock-names = "sys_ck1", "ahb_ck1", "aux_ck1",
+                             "axi_ck1", "obff_ck1", "pipe_ck1";
+
+               power-domains = <&scpsys MT7622_POWER_DOMAIN_HIF0>;
+               bus-range = <0x00 0xff>;
+               ranges = <0x82000000 0 0x28000000 0x0 0x28000000 0 0x8000000>;
+               status = "disabled";
+
+               #interrupt-cells = <1>;
+               interrupt-map-mask = <0 0 0 7>;
+               interrupt-map = <0 0 0 1 &pcie_intc1 0>,
+                               <0 0 0 2 &pcie_intc1 1>,
+                               <0 0 0 3 &pcie_intc1 2>,
+                               <0 0 0 4 &pcie_intc1 3>;
+               pcie_intc1: interrupt-controller {
+                       interrupt-controller;
+                       #address-cells = <0>;
                        #interrupt-cells = <1>;
-                       ranges;
-                       status = "disabled";
-
-                       interrupt-map-mask = <0 0 0 7>;
-                       interrupt-map = <0 0 0 1 &pcie_intc1 0>,
-                                       <0 0 0 2 &pcie_intc1 1>,
-                                       <0 0 0 3 &pcie_intc1 2>,
-                                       <0 0 0 4 &pcie_intc1 3>;
-                       pcie_intc1: interrupt-controller {
-                               interrupt-controller;
-                               #address-cells = <0>;
-                               #interrupt-cells = <1>;
-                       };
                };
        };
 
index d9e005a..dee66e5 100644 (file)
                        assigned-clocks = <&topckgen CLK_TOP_MM_SEL>;
                        assigned-clock-rates = <400000000>;
                        #clock-cells = <1>;
+                       #reset-cells = <1>;
                        mboxes = <&gce 0 CMDQ_THR_PRIO_HIGHEST>,
                                 <&gce 1 CMDQ_THR_PRIO_HIGHEST>;
                        mediatek,gce-client-reg = <&gce SUBSYS_1400XXXX 0 0x1000>;
                                 <&mmsys CLK_MM_DSI0_DIGITAL>,
                                 <&mipi_tx0>;
                        clock-names = "engine", "digital", "hs";
+                       resets = <&mmsys MT8173_MMSYS_SW0_RST_B_DISP_DSI0>;
                        phys = <&mipi_tx0>;
                        phy-names = "dphy";
                        status = "disabled";
diff --git a/arch/arm64/boot/dts/mediatek/mt8183-kukui-audio-da7219-max98357a.dtsi b/arch/arm64/boot/dts/mediatek/mt8183-kukui-audio-da7219-max98357a.dtsi
new file mode 100644 (file)
index 0000000..e4aeea4
--- /dev/null
@@ -0,0 +1,13 @@
+// SPDX-License-Identifier: (GPL-2.0 OR MIT)
+/*
+ * Google Kukui (and derivatives) da7219-max98357a sound card.
+ *
+ * Copyright 2019 Google LLC.
+ */
+
+#include "mt8183-kukui-audio-da7219.dtsi"
+#include "mt8183-kukui-audio-max98357a.dtsi"
+
+&sound {
+       compatible = "mediatek,mt8183_da7219_max98357";
+};
diff --git a/arch/arm64/boot/dts/mediatek/mt8183-kukui-audio-da7219-rt1015p.dtsi b/arch/arm64/boot/dts/mediatek/mt8183-kukui-audio-da7219-rt1015p.dtsi
new file mode 100644 (file)
index 0000000..16ce5a3
--- /dev/null
@@ -0,0 +1,13 @@
+// SPDX-License-Identifier: (GPL-2.0 OR MIT)
+/*
+ * Google Kukui (and derivatives) da7219-rt1015p sound card.
+ *
+ * Copyright 2020 Google LLC.
+ */
+
+#include "mt8183-kukui-audio-da7219.dtsi"
+#include "mt8183-kukui-audio-rt1015p.dtsi"
+
+&sound {
+       compatible = "mediatek,mt8183_da7219_rt1015p";
+};
diff --git a/arch/arm64/boot/dts/mediatek/mt8183-kukui-audio-da7219.dtsi b/arch/arm64/boot/dts/mediatek/mt8183-kukui-audio-da7219.dtsi
new file mode 100644 (file)
index 0000000..2c69e76
--- /dev/null
@@ -0,0 +1,54 @@
+// SPDX-License-Identifier: (GPL-2.0 OR MIT)
+/*
+ * Google Kukui (and derivatives) audio fragment for da7219.
+ *
+ * Copyright 2020 Google LLC.
+ */
+
+&i2c5 {
+       da7219: da7219@1a {
+               pinctrl-names = "default";
+               pinctrl-0 = <&da7219_pins>;
+               compatible = "dlg,da7219";
+               reg = <0x1a>;
+               interrupt-parent = <&pio>;
+               interrupts = <165 IRQ_TYPE_LEVEL_LOW 165 0>;
+
+               dlg,micbias-lvl = <2600>;
+               dlg,mic-amp-in-sel = "diff";
+               VDD-supply = <&pp1800_alw>;
+               VDDMIC-supply = <&pp3300_alw>;
+               VDDIO-supply = <&pp1800_alw>;
+
+               status = "okay";
+
+               da7219_aad {
+                       dlg,adc-1bit-rpt = <1>;
+                       dlg,btn-avg = <4>;
+                       dlg,btn-cfg = <50>;
+                       dlg,mic-det-thr = <500>;
+                       dlg,jack-ins-deb = <20>;
+                       dlg,jack-det-rate = "32ms_64ms";
+                       dlg,jack-rem-deb = <1>;
+
+                       dlg,a-d-btn-thr = <0xa>;
+                       dlg,d-b-btn-thr = <0x16>;
+                       dlg,b-c-btn-thr = <0x21>;
+                       dlg,c-mic-btn-thr = <0x3E>;
+               };
+       };
+};
+
+&pio {
+       da7219_pins: da7219_pins {
+               pins1 {
+                       pinmux = <PINMUX_GPIO165__FUNC_GPIO165>;
+                       input-enable;
+                       bias-pull-up;
+               };
+       };
+};
+
+&sound {
+       mediatek,headset-codec = <&da7219>;
+};
diff --git a/arch/arm64/boot/dts/mediatek/mt8183-kukui-audio-max98357a.dtsi b/arch/arm64/boot/dts/mediatek/mt8183-kukui-audio-max98357a.dtsi
new file mode 100644 (file)
index 0000000..2b60967
--- /dev/null
@@ -0,0 +1,13 @@
+// SPDX-License-Identifier: (GPL-2.0 OR MIT)
+/*
+ * Google Kukui (and derivatives) audio fragment for max98357a.
+ *
+ * Copyright 2020 Google LLC.
+ */
+
+/ {
+       max98357a: max98357a {
+               compatible = "maxim,max98357a";
+               sdmode-gpios = <&pio 175 0>;
+       };
+};
diff --git a/arch/arm64/boot/dts/mediatek/mt8183-kukui-audio-rt1015p.dtsi b/arch/arm64/boot/dts/mediatek/mt8183-kukui-audio-rt1015p.dtsi
new file mode 100644 (file)
index 0000000..658a764
--- /dev/null
@@ -0,0 +1,13 @@
+// SPDX-License-Identifier: (GPL-2.0 OR MIT)
+/*
+ * Google Kukui (and derivatives) audio fragment for rt1015p.
+ *
+ * Copyright 2020 Google LLC.
+ */
+
+/ {
+       rt1015p: rt1015p {
+               compatible = "realtek,rt1015p";
+               sdb-gpios = <&pio 175 0>;
+       };
+};
diff --git a/arch/arm64/boot/dts/mediatek/mt8183-kukui-audio-ts3a227e-max98357a.dtsi b/arch/arm64/boot/dts/mediatek/mt8183-kukui-audio-ts3a227e-max98357a.dtsi
new file mode 100644 (file)
index 0000000..260a5f5
--- /dev/null
@@ -0,0 +1,13 @@
+// SPDX-License-Identifier: (GPL-2.0 OR MIT)
+/*
+ * Google Kukui (and derivatives) ts3a227e-max98357a sound card.
+ *
+ * Copyright 2020 Google LLC.
+ */
+
+#include "mt8183-kukui-audio-max98357a.dtsi"
+#include "mt8183-kukui-audio-ts3a227e.dtsi"
+
+&sound {
+       compatible = "mediatek,mt8183_mt6358_ts3a227_max98357";
+};
diff --git a/arch/arm64/boot/dts/mediatek/mt8183-kukui-audio-ts3a227e-rt1015p.dtsi b/arch/arm64/boot/dts/mediatek/mt8183-kukui-audio-ts3a227e-rt1015p.dtsi
new file mode 100644 (file)
index 0000000..2f7d1fa
--- /dev/null
@@ -0,0 +1,13 @@
+// SPDX-License-Identifier: (GPL-2.0 OR MIT)
+/*
+ * Google Kukui (and derivatives) mt6358-ts3a227-rt1015p sound card.
+ *
+ * Copyright 2021 Google LLC.
+ */
+
+#include "mt8183-kukui-audio-ts3a227e.dtsi"
+#include "mt8183-kukui-audio-rt1015p.dtsi"
+
+&sound {
+       compatible = "mediatek,mt8183_mt6358_ts3a227_rt1015p";
+};
diff --git a/arch/arm64/boot/dts/mediatek/mt8183-kukui-audio-ts3a227e.dtsi b/arch/arm64/boot/dts/mediatek/mt8183-kukui-audio-ts3a227e.dtsi
new file mode 100644 (file)
index 0000000..0799c48
--- /dev/null
@@ -0,0 +1,32 @@
+// SPDX-License-Identifier: (GPL-2.0 OR MIT)
+/*
+ * Google Kukui (and derivatives) audio fragment for ts3a227e.
+ *
+ * Copyright 2019 Google LLC.
+ */
+
+&i2c5 {
+       ts3a227e: ts3a227e@3b {
+               pinctrl-names = "default";
+               pinctrl-0 = <&ts3a227e_pins>;
+               compatible = "ti,ts3a227e";
+               reg = <0x3b>;
+               interrupt-parent = <&pio>;
+               interrupts = <157 IRQ_TYPE_LEVEL_LOW>;
+               status = "okay";
+       };
+};
+
+&pio {
+       ts3a227e_pins: ts3a227e_pins {
+               pins1 {
+                       pinmux = <PINMUX_GPIO157__FUNC_GPIO157>;
+                       input-enable;
+                       bias-pull-up;
+               };
+       };
+};
+
+&sound {
+       mediatek,headset-codec = <&ts3a227e>;
+};
index a8d6f32..1a2ec07 100644 (file)
@@ -5,6 +5,7 @@
 
 /dts-v1/;
 #include "mt8183-kukui-jacuzzi.dtsi"
+#include "mt8183-kukui-audio-ts3a227e-max98357a.dtsi"
 
 / {
        model = "Google burnet board";
index 42ba9c0..0eca3ff 100644 (file)
@@ -5,6 +5,7 @@
 
 /dts-v1/;
 #include "mt8183-kukui-jacuzzi.dtsi"
+#include "mt8183-kukui-audio-da7219-max98357a.dtsi"
 
 / {
        model = "Google damu board";
index bbe6c33..577519a 100644 (file)
@@ -5,6 +5,7 @@
 
 /dts-v1/;
 #include "mt8183-kukui-jacuzzi.dtsi"
+#include "mt8183-kukui-audio-da7219-rt1015p.dtsi"
 
 &mt6358codec {
        mediatek,dmic-mode = <1>; /* one-wire */
index 36d2c3b..bc2c57f 100644 (file)
@@ -5,6 +5,7 @@
 
 /dts-v1/;
 #include "mt8183-kukui-jacuzzi-juniper.dtsi"
+#include "mt8183-kukui-audio-ts3a227e-max98357a.dtsi"
 
 / {
        model = "Google juniper sku16 board";
index b3f46c1..e5bd919 100644 (file)
@@ -5,6 +5,7 @@
 
 /dts-v1/;
 #include "mt8183-kukui-jacuzzi.dtsi"
+#include "mt8183-kukui-audio-ts3a227e-max98357a.dtsi"
 
 / {
        model = "Google kappa board";
index 6f1aa69..8fa89db 100644 (file)
@@ -5,6 +5,7 @@
 
 /dts-v1/;
 #include "mt8183-kukui-jacuzzi-juniper.dtsi"
+#include "mt8183-kukui-audio-ts3a227e-max98357a.dtsi"
 
 / {
        model = "Google kenzo sku17 board";
index 281265f..89208b8 100644 (file)
@@ -5,6 +5,7 @@
 
 /dts-v1/;
 #include "mt8183-kukui-jacuzzi-willow.dtsi"
+#include "mt8183-kukui-audio-da7219-max98357a.dtsi"
 
 / {
        model = "Google willow board sku0";
index 22e56bd..c7b2044 100644 (file)
@@ -5,6 +5,7 @@
 
 /dts-v1/;
 #include "mt8183-kukui-jacuzzi-willow.dtsi"
+#include "mt8183-kukui-audio-ts3a227e-max98357a.dtsi"
 
 / {
        model = "Google willow board sku1";
index 20eb0dc..89a139a 100644 (file)
@@ -5,6 +5,7 @@
 
 /dts-v1/;
 #include "mt8183-kukui-kakadu.dtsi"
+#include "mt8183-kukui-audio-da7219-rt1015p.dtsi"
 
 / {
        model = "MediaTek kakadu board";
index 3aa7940..06f8c80 100644 (file)
@@ -5,6 +5,7 @@
 
 /dts-v1/;
 #include "mt8183-kukui.dtsi"
+#include "mt8183-kukui-audio-ts3a227e-max98357a.dtsi"
 
 / {
        ppvarn_lcd: ppvarn-lcd {
index 30c183c..a7b0cb3 100644 (file)
@@ -4,6 +4,7 @@
  */
 
 #include "mt8183-kukui.dtsi"
+#include "mt8183-kukui-audio-max98357a.dtsi"
 
 / {
        ppvarn_lcd: ppvarn-lcd {
 &qca_wifi {
        qcom,ath10k-calibration-variant = "LE_Krane";
 };
+
+&sound {
+       compatible = "mediatek,mt8183_mt6358_ts3a227_max98357";
+};
index 8e9cf36..b42d81d 100644 (file)
                };
        };
 
-       max98357a: codec0 {
-               compatible = "maxim,max98357a";
-               sdmode-gpios = <&pio 175 0>;
+       sound: mt8183-sound {
+               mediatek,platform = <&afe>;
+               pinctrl-names = "default",
+                               "aud_tdm_out_on",
+                               "aud_tdm_out_off";
+               pinctrl-0 = <&aud_pins_default>;
+               pinctrl-1 = <&aud_pins_tdm_out_on>;
+               pinctrl-2 = <&aud_pins_tdm_out_off>;
+               status = "okay";
        };
 
-       btsco: codec1 {
+       btsco: bt-sco {
                compatible = "linux,bt-sco";
        };
 
        };
 };
 
+&afe {
+       i2s3-share = "I2S2";
+       i2s0-share = "I2S5";
+};
+
 &auxadc {
        status = "okay";
 };
 };
 
 &pio {
+       aud_pins_default: audiopins {
+               pins_bus {
+                       pinmux = <PINMUX_GPIO97__FUNC_I2S2_MCK>,
+                               <PINMUX_GPIO98__FUNC_I2S2_BCK>,
+                               <PINMUX_GPIO101__FUNC_I2S2_LRCK>,
+                               <PINMUX_GPIO102__FUNC_I2S2_DI>,
+                               <PINMUX_GPIO3__FUNC_I2S3_DO>, /*i2s to da7219/max98357*/
+                               <PINMUX_GPIO89__FUNC_I2S5_BCK>,
+                               <PINMUX_GPIO90__FUNC_I2S5_LRCK>,
+                               <PINMUX_GPIO91__FUNC_I2S5_DO>,
+                               <PINMUX_GPIO174__FUNC_I2S0_DI>, /*i2s to wifi/bt*/
+                               <PINMUX_GPIO136__FUNC_AUD_CLK_MOSI>,
+                               <PINMUX_GPIO137__FUNC_AUD_SYNC_MOSI>,
+                               <PINMUX_GPIO138__FUNC_AUD_DAT_MOSI0>,
+                               <PINMUX_GPIO139__FUNC_AUD_DAT_MOSI1>,
+                               <PINMUX_GPIO140__FUNC_AUD_CLK_MISO>,
+                               <PINMUX_GPIO141__FUNC_AUD_SYNC_MISO>,
+                               <PINMUX_GPIO142__FUNC_AUD_DAT_MISO0>,
+                               <PINMUX_GPIO143__FUNC_AUD_DAT_MISO1>; /*mtkaif3.0*/
+               };
+       };
+
+       aud_pins_tdm_out_on: audiotdmouton {
+               pins_bus {
+                       pinmux = <PINMUX_GPIO169__FUNC_TDM_BCK_2ND>,
+                               <PINMUX_GPIO170__FUNC_TDM_LRCK_2ND>,
+                               <PINMUX_GPIO171__FUNC_TDM_DATA0_2ND>,
+                               <PINMUX_GPIO172__FUNC_TDM_DATA1_2ND>,
+                               <PINMUX_GPIO173__FUNC_TDM_DATA2_2ND>,
+                               <PINMUX_GPIO10__FUNC_TDM_DATA3>; /*8ch-i2s to it6505*/
+                       drive-strength = <MTK_DRIVE_6mA>;
+               };
+       };
+
+       aud_pins_tdm_out_off: audiotdmoutoff {
+               pins_bus {
+                       pinmux = <PINMUX_GPIO169__FUNC_GPIO169>,
+                               <PINMUX_GPIO170__FUNC_GPIO170>,
+                               <PINMUX_GPIO171__FUNC_GPIO171>,
+                               <PINMUX_GPIO172__FUNC_GPIO172>,
+                               <PINMUX_GPIO173__FUNC_GPIO173>,
+                               <PINMUX_GPIO10__FUNC_GPIO10>;
+                       input-enable;
+                       bias-pull-down;
+                       drive-strength = <MTK_DRIVE_2mA>;
+               };
+       };
+
        bt_pins: bt-pins {
                pins_bt_en {
                        pinmux = <PINMUX_GPIO120__FUNC_GPIO120>;
index 409cf82..ba4584f 100644 (file)
@@ -11,7 +11,7 @@
 #include <dt-bindings/interrupt-controller/irq.h>
 #include <dt-bindings/memory/mt8183-larb-port.h>
 #include <dt-bindings/power/mt8183-power.h>
-#include <dt-bindings/reset-controller/mt8183-resets.h>
+#include <dt-bindings/reset/mt8183-resets.h>
 #include <dt-bindings/phy/phy.h>
 #include <dt-bindings/thermal/thermal.h>
 #include <dt-bindings/pinctrl/mt8183-pinfunc.h>
                        };
                };
 
-               audiosys: syscon@11220000 {
+               audiosys: audio-controller@11220000 {
                        compatible = "mediatek,mt8183-audiosys", "syscon";
                        reg = <0 0x11220000 0 0x1000>;
                        #clock-cells = <1>;
+                       afe: mt8183-afe-pcm {
+                               compatible = "mediatek,mt8183-audio";
+                               interrupts = <GIC_SPI 161 IRQ_TYPE_LEVEL_LOW>;
+                               resets = <&watchdog MT8183_TOPRGU_AUDIO_SW_RST>;
+                               reset-names = "audiosys";
+                               power-domains =
+                                       <&spm MT8183_POWER_DOMAIN_AUDIO>;
+                               clocks = <&audiosys CLK_AUDIO_AFE>,
+                                        <&audiosys CLK_AUDIO_DAC>,
+                                        <&audiosys CLK_AUDIO_DAC_PREDIS>,
+                                        <&audiosys CLK_AUDIO_ADC>,
+                                        <&audiosys CLK_AUDIO_PDN_ADDA6_ADC>,
+                                        <&audiosys CLK_AUDIO_22M>,
+                                        <&audiosys CLK_AUDIO_24M>,
+                                        <&audiosys CLK_AUDIO_APLL_TUNER>,
+                                        <&audiosys CLK_AUDIO_APLL2_TUNER>,
+                                        <&audiosys CLK_AUDIO_I2S1>,
+                                        <&audiosys CLK_AUDIO_I2S2>,
+                                        <&audiosys CLK_AUDIO_I2S3>,
+                                        <&audiosys CLK_AUDIO_I2S4>,
+                                        <&audiosys CLK_AUDIO_TDM>,
+                                        <&audiosys CLK_AUDIO_TML>,
+                                        <&infracfg CLK_INFRA_AUDIO>,
+                                        <&infracfg CLK_INFRA_AUDIO_26M_BCLK>,
+                                        <&topckgen CLK_TOP_MUX_AUDIO>,
+                                        <&topckgen CLK_TOP_MUX_AUD_INTBUS>,
+                                        <&topckgen CLK_TOP_SYSPLL_D2_D4>,
+                                        <&topckgen CLK_TOP_MUX_AUD_1>,
+                                        <&topckgen CLK_TOP_APLL1_CK>,
+                                        <&topckgen CLK_TOP_MUX_AUD_2>,
+                                        <&topckgen CLK_TOP_APLL2_CK>,
+                                        <&topckgen CLK_TOP_MUX_AUD_ENG1>,
+                                        <&topckgen CLK_TOP_APLL1_D8>,
+                                        <&topckgen CLK_TOP_MUX_AUD_ENG2>,
+                                        <&topckgen CLK_TOP_APLL2_D8>,
+                                        <&topckgen CLK_TOP_MUX_APLL_I2S0>,
+                                        <&topckgen CLK_TOP_MUX_APLL_I2S1>,
+                                        <&topckgen CLK_TOP_MUX_APLL_I2S2>,
+                                        <&topckgen CLK_TOP_MUX_APLL_I2S3>,
+                                        <&topckgen CLK_TOP_MUX_APLL_I2S4>,
+                                        <&topckgen CLK_TOP_MUX_APLL_I2S5>,
+                                        <&topckgen CLK_TOP_APLL12_DIV0>,
+                                        <&topckgen CLK_TOP_APLL12_DIV1>,
+                                        <&topckgen CLK_TOP_APLL12_DIV2>,
+                                        <&topckgen CLK_TOP_APLL12_DIV3>,
+                                        <&topckgen CLK_TOP_APLL12_DIV4>,
+                                        <&topckgen CLK_TOP_APLL12_DIVB>,
+                                        /*<&topckgen CLK_TOP_APLL12_DIV5>,*/
+                                        <&clk26m>;
+                               clock-names = "aud_afe_clk",
+                                                 "aud_dac_clk",
+                                                 "aud_dac_predis_clk",
+                                                 "aud_adc_clk",
+                                                 "aud_adc_adda6_clk",
+                                                 "aud_apll22m_clk",
+                                                 "aud_apll24m_clk",
+                                                 "aud_apll1_tuner_clk",
+                                                 "aud_apll2_tuner_clk",
+                                                 "aud_i2s1_bclk_sw",
+                                                 "aud_i2s2_bclk_sw",
+                                                 "aud_i2s3_bclk_sw",
+                                                 "aud_i2s4_bclk_sw",
+                                                 "aud_tdm_clk",
+                                                 "aud_tml_clk",
+                                                 "aud_infra_clk",
+                                                 "mtkaif_26m_clk",
+                                                 "top_mux_audio",
+                                                 "top_mux_aud_intbus",
+                                                 "top_syspll_d2_d4",
+                                                 "top_mux_aud_1",
+                                                 "top_apll1_ck",
+                                                 "top_mux_aud_2",
+                                                 "top_apll2_ck",
+                                                 "top_mux_aud_eng1",
+                                                 "top_apll1_d8",
+                                                 "top_mux_aud_eng2",
+                                                 "top_apll2_d8",
+                                                 "top_i2s0_m_sel",
+                                                 "top_i2s1_m_sel",
+                                                 "top_i2s2_m_sel",
+                                                 "top_i2s3_m_sel",
+                                                 "top_i2s4_m_sel",
+                                                 "top_i2s5_m_sel",
+                                                 "top_apll12_div0",
+                                                 "top_apll12_div1",
+                                                 "top_apll12_div2",
+                                                 "top_apll12_div3",
+                                                 "top_apll12_div4",
+                                                 "top_apll12_divb",
+                                                 /*"top_apll12_div5",*/
+                                                 "top_clk26m_clk";
+                       };
                };
 
                mmc0: mmc@11230000 {
                        compatible = "mediatek,mt8183-mmsys", "syscon";
                        reg = <0 0x14000000 0 0x1000>;
                        #clock-cells = <1>;
+                       #reset-cells = <1>;
                        mboxes = <&gce 0 CMDQ_THR_PRIO_HIGHEST>,
                                 <&gce 1 CMDQ_THR_PRIO_HIGHEST>;
                        mediatek,gce-client-reg = <&gce SUBSYS_1400XXXX 0 0x1000>;
                        reg = <0 0x14014000 0 0x1000>;
                        interrupts = <GIC_SPI 236 IRQ_TYPE_LEVEL_LOW>;
                        power-domains = <&spm MT8183_POWER_DOMAIN_DISP>;
-                       mediatek,syscon-dsi = <&mmsys 0x140>;
                        clocks = <&mmsys CLK_MM_DSI0_MM>,
                                 <&mmsys CLK_MM_DSI0_IF>,
                                 <&mipi_tx0>;
                        clock-names = "engine", "digital", "hs";
+                       resets = <&mmsys MT8183_MMSYS_SW0_RST_B_DISP_DSI0>;
                        phys = <&mipi_tx0>;
                        phy-names = "dphy";
                };
index 9757138..c7c7d4e 100644 (file)
@@ -5,6 +5,7 @@
  */
 
 /dts-v1/;
+#include <dt-bindings/clock/mt8192-clk.h>
 #include <dt-bindings/interrupt-controller/arm-gic.h>
 #include <dt-bindings/interrupt-controller/irq.h>
 #include <dt-bindings/pinctrl/mt8192-pinfunc.h>
                        };
                };
 
+               topckgen: syscon@10000000 {
+                       compatible = "mediatek,mt8192-topckgen", "syscon";
+                       reg = <0 0x10000000 0 0x1000>;
+                       #clock-cells = <1>;
+               };
+
+               infracfg: syscon@10001000 {
+                       compatible = "mediatek,mt8192-infracfg", "syscon";
+                       reg = <0 0x10001000 0 0x1000>;
+                       #clock-cells = <1>;
+               };
+
+               pericfg: syscon@10003000 {
+                       compatible = "mediatek,mt8192-pericfg", "syscon";
+                       reg = <0 0x10003000 0 0x1000>;
+                       #clock-cells = <1>;
+               };
+
                pio: pinctrl@10005000 {
                        compatible = "mediatek,mt8192-pinctrl";
                        reg = <0 0x10005000 0 0x1000>,
                        #interrupt-cells = <2>;
                };
 
+               apmixedsys: syscon@1000c000 {
+                       compatible = "mediatek,mt8192-apmixedsys", "syscon";
+                       reg = <0 0x1000c000 0 0x1000>;
+                       #clock-cells = <1>;
+               };
+
                systimer: timer@10017000 {
                        compatible = "mediatek,mt8192-timer",
                                     "mediatek,mt6765-timer";
                        clock-names = "clk13m";
                };
 
+               scp_adsp: clock-controller@10720000 {
+                       compatible = "mediatek,mt8192-scp_adsp";
+                       reg = <0 0x10720000 0 0x1000>;
+                       #clock-cells = <1>;
+               };
+
                uart0: serial@11002000 {
                        compatible = "mediatek,mt8192-uart",
                                     "mediatek,mt6577-uart";
                        status = "disabled";
                };
 
+               imp_iic_wrap_c: clock-controller@11007000 {
+                       compatible = "mediatek,mt8192-imp_iic_wrap_c";
+                       reg = <0 0x11007000 0 0x1000>;
+                       #clock-cells = <1>;
+               };
+
                spi0: spi@1100a000 {
                        compatible = "mediatek,mt8192-spi",
                                     "mediatek,mt6765-spi";
                        status = "disable";
                };
 
+               audsys: clock-controller@11210000 {
+                       compatible = "mediatek,mt8192-audsys", "syscon";
+                       reg = <0 0x11210000 0 0x1000>;
+                       #clock-cells = <1>;
+               };
+
                i2c3: i2c3@11cb0000 {
                        compatible = "mediatek,mt8192-i2c";
                        reg = <0 0x11cb0000 0 0x1000>,
                        status = "disabled";
                };
 
+               imp_iic_wrap_e: clock-controller@11cb1000 {
+                       compatible = "mediatek,mt8192-imp_iic_wrap_e";
+                       reg = <0 0x11cb1000 0 0x1000>;
+                       #clock-cells = <1>;
+               };
+
                i2c7: i2c7@11d00000 {
                        compatible = "mediatek,mt8192-i2c";
                        reg = <0 0x11d00000 0 0x1000>,
                        status = "disabled";
                };
 
+               imp_iic_wrap_s: clock-controller@11d03000 {
+                       compatible = "mediatek,mt8192-imp_iic_wrap_s";
+                       reg = <0 0x11d03000 0 0x1000>;
+                       #clock-cells = <1>;
+               };
+
                i2c1: i2c1@11d20000 {
                        compatible = "mediatek,mt8192-i2c";
                        reg = <0 0x11d20000 0 0x1000>,
                        status = "disabled";
                };
 
+               imp_iic_wrap_ws: clock-controller@11d23000 {
+                       compatible = "mediatek,mt8192-imp_iic_wrap_ws";
+                       reg = <0 0x11d23000 0 0x1000>;
+                       #clock-cells = <1>;
+               };
+
                i2c5: i2c5@11e00000 {
                        compatible = "mediatek,mt8192-i2c";
                        reg = <0 0x11e00000 0 0x1000>,
                        status = "disabled";
                };
 
+               imp_iic_wrap_w: clock-controller@11e01000 {
+                       compatible = "mediatek,mt8192-imp_iic_wrap_w";
+                       reg = <0 0x11e01000 0 0x1000>;
+                       #clock-cells = <1>;
+               };
+
                i2c0: i2c0@11f00000 {
                        compatible = "mediatek,mt8192-i2c";
                        reg = <0 0x11f00000 0 0x1000>,
                        #size-cells = <0>;
                        status = "disabled";
                };
+
+               imp_iic_wrap_n: clock-controller@11f02000 {
+                       compatible = "mediatek,mt8192-imp_iic_wrap_n";
+                       reg = <0 0x11f02000 0 0x1000>;
+                       #clock-cells = <1>;
+               };
+
+               msdc_top: clock-controller@11f10000 {
+                       compatible = "mediatek,mt8192-msdc_top";
+                       reg = <0 0x11f10000 0 0x1000>;
+                       #clock-cells = <1>;
+               };
+
+               msdc: clock-controller@11f60000 {
+                       compatible = "mediatek,mt8192-msdc";
+                       reg = <0 0x11f60000 0 0x1000>;
+                       #clock-cells = <1>;
+               };
+
+               mfgcfg: clock-controller@13fbf000 {
+                       compatible = "mediatek,mt8192-mfgcfg";
+                       reg = <0 0x13fbf000 0 0x1000>;
+                       #clock-cells = <1>;
+               };
+
+               mmsys: syscon@14000000 {
+                       compatible = "mediatek,mt8192-mmsys", "syscon";
+                       reg = <0 0x14000000 0 0x1000>;
+                       #clock-cells = <1>;
+               };
+
+               imgsys: clock-controller@15020000 {
+                       compatible = "mediatek,mt8192-imgsys";
+                       reg = <0 0x15020000 0 0x1000>;
+                       #clock-cells = <1>;
+               };
+
+               imgsys2: clock-controller@15820000 {
+                       compatible = "mediatek,mt8192-imgsys2";
+                       reg = <0 0x15820000 0 0x1000>;
+                       #clock-cells = <1>;
+               };
+
+               vdecsys_soc: clock-controller@1600f000 {
+                       compatible = "mediatek,mt8192-vdecsys_soc";
+                       reg = <0 0x1600f000 0 0x1000>;
+                       #clock-cells = <1>;
+               };
+
+               vdecsys: clock-controller@1602f000 {
+                       compatible = "mediatek,mt8192-vdecsys";
+                       reg = <0 0x1602f000 0 0x1000>;
+                       #clock-cells = <1>;
+               };
+
+               vencsys: clock-controller@17000000 {
+                       compatible = "mediatek,mt8192-vencsys";
+                       reg = <0 0x17000000 0 0x1000>;
+                       #clock-cells = <1>;
+               };
+
+               camsys: clock-controller@1a000000 {
+                       compatible = "mediatek,mt8192-camsys";
+                       reg = <0 0x1a000000 0 0x1000>;
+                       #clock-cells = <1>;
+               };
+
+               camsys_rawa: clock-controller@1a04f000 {
+                       compatible = "mediatek,mt8192-camsys_rawa";
+                       reg = <0 0x1a04f000 0 0x1000>;
+                       #clock-cells = <1>;
+               };
+
+               camsys_rawb: clock-controller@1a06f000 {
+                       compatible = "mediatek,mt8192-camsys_rawb";
+                       reg = <0 0x1a06f000 0 0x1000>;
+                       #clock-cells = <1>;
+               };
+
+               camsys_rawc: clock-controller@1a08f000 {
+                       compatible = "mediatek,mt8192-camsys_rawc";
+                       reg = <0 0x1a08f000 0 0x1000>;
+                       #clock-cells = <1>;
+               };
+
+               ipesys: clock-controller@1b000000 {
+                       compatible = "mediatek,mt8192-ipesys";
+                       reg = <0 0x1b000000 0 0x1000>;
+                       #clock-cells = <1>;
+               };
+
+               mdpsys: clock-controller@1f000000 {
+                       compatible = "mediatek,mt8192-mdpsys";
+                       reg = <0 0x1f000000 0 0x1000>;
+                       #clock-cells = <1>;
+               };
        };
 };
index 6e5f846..8a51751 100644 (file)
 
                brightness-levels = <0 4 8 16 32 64 128 255>;
                default-brightness-level = <6>;
-
-               backlight-boot-off;
        };
 
        clk32k_in: clock@0 {
index b0bcda8..63aa312 100644 (file)
        };
 
        usb@7d000000 {
-               compatible = "nvidia,tegra124-ehci", "nvidia,tegra30-ehci", "usb-ehci";
+               compatible = "nvidia,tegra124-ehci", "nvidia,tegra30-ehci";
                reg = <0x0 0x7d000000 0x0 0x4000>;
                interrupts = <GIC_SPI 20 IRQ_TYPE_LEVEL_HIGH>;
                phy_type = "utmi";
                compatible = "nvidia,tegra124-usb-phy", "nvidia,tegra30-usb-phy";
                reg = <0x0 0x7d000000 0x0 0x4000>,
                      <0x0 0x7d000000 0x0 0x4000>;
+               interrupts = <GIC_SPI 20 IRQ_TYPE_LEVEL_HIGH>;
                phy_type = "utmi";
                clocks = <&tegra_car TEGRA124_CLK_USBD>,
                         <&tegra_car TEGRA124_CLK_PLL_U>,
                nvidia,hsdiscon-level = <5>;
                nvidia,xcvr-hsslew = <12>;
                nvidia,has-utmi-pad-registers;
+               nvidia,pmc = <&tegra_pmc 0>;
                status = "disabled";
        };
 
        usb@7d004000 {
-               compatible = "nvidia,tegra124-ehci", "nvidia,tegra30-ehci", "usb-ehci";
+               compatible = "nvidia,tegra124-ehci", "nvidia,tegra30-ehci";
                reg = <0x0 0x7d004000 0x0 0x4000>;
                interrupts = <GIC_SPI 21 IRQ_TYPE_LEVEL_HIGH>;
                phy_type = "utmi";
                compatible = "nvidia,tegra124-usb-phy", "nvidia,tegra30-usb-phy";
                reg = <0x0 0x7d004000 0x0 0x4000>,
                      <0x0 0x7d000000 0x0 0x4000>;
+               interrupts = <GIC_SPI 21 IRQ_TYPE_LEVEL_HIGH>;
                phy_type = "utmi";
                clocks = <&tegra_car TEGRA124_CLK_USB2>,
                         <&tegra_car TEGRA124_CLK_PLL_U>,
                nvidia,hssquelch-level = <2>;
                nvidia,hsdiscon-level = <5>;
                nvidia,xcvr-hsslew = <12>;
+               nvidia,pmc = <&tegra_pmc 1>;
                status = "disabled";
        };
 
        usb@7d008000 {
-               compatible = "nvidia,tegra124-ehci", "nvidia,tegra30-ehci", "usb-ehci";
+               compatible = "nvidia,tegra124-ehci", "nvidia,tegra30-ehci";
                reg = <0x0 0x7d008000 0x0 0x4000>;
                interrupts = <GIC_SPI 97 IRQ_TYPE_LEVEL_HIGH>;
                phy_type = "utmi";
                compatible = "nvidia,tegra124-usb-phy", "nvidia,tegra30-usb-phy";
                reg = <0x0 0x7d008000 0x0 0x4000>,
                      <0x0 0x7d000000 0x0 0x4000>;
+               interrupts = <GIC_SPI 97 IRQ_TYPE_LEVEL_HIGH>;
                phy_type = "utmi";
                clocks = <&tegra_car TEGRA124_CLK_USB3>,
                         <&tegra_car TEGRA124_CLK_PLL_U>,
                nvidia,hssquelch-level = <2>;
                nvidia,hsdiscon-level = <5>;
                nvidia,xcvr-hsslew = <12>;
+               nvidia,pmc = <&tegra_pmc 2>;
                status = "disabled";
        };
 
index 74c1a5d..52fa258 100644 (file)
                                                remote-endpoint = <&dspk2_cif_ep>;
                                        };
                                };
+
+                               xbar_sfc1_in_port: port@20 {
+                                       reg = <0x20>;
+
+                                       xbar_sfc1_in_ep: endpoint {
+                                               remote-endpoint = <&sfc1_cif_in_ep>;
+                                       };
+                               };
+
+                               port@21 {
+                                       reg = <0x21>;
+
+                                       xbar_sfc1_out_ep: endpoint {
+                                               remote-endpoint = <&sfc1_cif_out_ep>;
+                                       };
+                               };
+
+                               xbar_sfc2_in_port: port@22 {
+                                       reg = <0x22>;
+
+                                       xbar_sfc2_in_ep: endpoint {
+                                               remote-endpoint = <&sfc2_cif_in_ep>;
+                                       };
+                               };
+
+                               port@23 {
+                                       reg = <0x23>;
+
+                                       xbar_sfc2_out_ep: endpoint {
+                                               remote-endpoint = <&sfc2_cif_out_ep>;
+                                       };
+                               };
+
+                               xbar_sfc3_in_port: port@24 {
+                                       reg = <0x24>;
+
+                                       xbar_sfc3_in_ep: endpoint {
+                                               remote-endpoint = <&sfc3_cif_in_ep>;
+                                       };
+                               };
+
+                               port@25 {
+                                       reg = <0x25>;
+
+                                       xbar_sfc3_out_ep: endpoint {
+                                               remote-endpoint = <&sfc3_cif_out_ep>;
+                                       };
+                               };
+
+                               xbar_sfc4_in_port: port@26 {
+                                       reg = <0x26>;
+
+                                       xbar_sfc4_in_ep: endpoint {
+                                               remote-endpoint = <&sfc4_cif_in_ep>;
+                                       };
+                               };
+
+                               port@27 {
+                                       reg = <0x27>;
+
+                                       xbar_sfc4_out_ep: endpoint {
+                                               remote-endpoint = <&sfc4_cif_out_ep>;
+                                       };
+                               };
+
+                               xbar_mvc1_in_port: port@28 {
+                                       reg = <0x28>;
+
+                                       xbar_mvc1_in_ep: endpoint {
+                                               remote-endpoint = <&mvc1_cif_in_ep>;
+                                       };
+                               };
+
+                               port@29 {
+                                       reg = <0x29>;
+
+                                       xbar_mvc1_out_ep: endpoint {
+                                               remote-endpoint = <&mvc1_cif_out_ep>;
+                                       };
+                               };
+
+                               xbar_mvc2_in_port: port@2a {
+                                       reg = <0x2a>;
+
+                                       xbar_mvc2_in_ep: endpoint {
+                                               remote-endpoint = <&mvc2_cif_in_ep>;
+                                       };
+                               };
+
+                               port@2b {
+                                       reg = <0x2b>;
+
+                                       xbar_mvc2_out_ep: endpoint {
+                                               remote-endpoint = <&mvc2_cif_out_ep>;
+                                       };
+                               };
+
+                               xbar_amx1_in1_port: port@2c {
+                                       reg = <0x2c>;
+
+                                       xbar_amx1_in1_ep: endpoint {
+                                               remote-endpoint = <&amx1_in1_ep>;
+                                       };
+                               };
+
+                               xbar_amx1_in2_port: port@2d {
+                                       reg = <0x2d>;
+
+                                       xbar_amx1_in2_ep: endpoint {
+                                               remote-endpoint = <&amx1_in2_ep>;
+                                       };
+                               };
+
+                               xbar_amx1_in3_port: port@2e {
+                                       reg = <0x2e>;
+
+                                       xbar_amx1_in3_ep: endpoint {
+                                               remote-endpoint = <&amx1_in3_ep>;
+                                       };
+                               };
+
+                               xbar_amx1_in4_port: port@2f {
+                                       reg = <0x2f>;
+
+                                       xbar_amx1_in4_ep: endpoint {
+                                               remote-endpoint = <&amx1_in4_ep>;
+                                       };
+                               };
+
+                               port@30 {
+                                       reg = <0x30>;
+
+                                       xbar_amx1_out_ep: endpoint {
+                                               remote-endpoint = <&amx1_out_ep>;
+                                       };
+                               };
+
+                               xbar_amx2_in1_port: port@31 {
+                                       reg = <0x31>;
+
+                                       xbar_amx2_in1_ep: endpoint {
+                                               remote-endpoint = <&amx2_in1_ep>;
+                                       };
+                               };
+
+                               xbar_amx2_in2_port: port@32 {
+                                       reg = <0x32>;
+
+                                       xbar_amx2_in2_ep: endpoint {
+                                               remote-endpoint = <&amx2_in2_ep>;
+                                       };
+                               };
+
+                               xbar_amx2_in3_port: port@33 {
+                                       reg = <0x33>;
+
+                                       xbar_amx2_in3_ep: endpoint {
+                                               remote-endpoint = <&amx2_in3_ep>;
+                                       };
+                               };
+
+                               xbar_amx2_in4_port: port@34 {
+                                       reg = <0x34>;
+
+                                       xbar_amx2_in4_ep: endpoint {
+                                               remote-endpoint = <&amx2_in4_ep>;
+                                       };
+                               };
+
+                               port@35 {
+                                       reg = <0x35>;
+
+                                       xbar_amx2_out_ep: endpoint {
+                                               remote-endpoint = <&amx2_out_ep>;
+                                       };
+                               };
+
+                               xbar_amx3_in1_port: port@36 {
+                                       reg = <0x36>;
+
+                                       xbar_amx3_in1_ep: endpoint {
+                                               remote-endpoint = <&amx3_in1_ep>;
+                                       };
+                               };
+
+                               xbar_amx3_in2_port: port@37 {
+                                       reg = <0x37>;
+
+                                       xbar_amx3_in2_ep: endpoint {
+                                               remote-endpoint = <&amx3_in2_ep>;
+                                       };
+                               };
+
+                               xbar_amx3_in3_port: port@38 {
+                                       reg = <0x38>;
+
+                                       xbar_amx3_in3_ep: endpoint {
+                                               remote-endpoint = <&amx3_in3_ep>;
+                                       };
+                               };
+
+                               xbar_amx3_in4_port: port@39 {
+                                       reg = <0x39>;
+
+                                       xbar_amx3_in4_ep: endpoint {
+                                               remote-endpoint = <&amx3_in4_ep>;
+                                       };
+                               };
+
+                               port@3a {
+                                       reg = <0x3a>;
+
+                                       xbar_amx3_out_ep: endpoint {
+                                               remote-endpoint = <&amx3_out_ep>;
+                                       };
+                               };
+
+                               xbar_amx4_in1_port: port@3b {
+                                       reg = <0x3b>;
+
+                                       xbar_amx4_in1_ep: endpoint {
+                                               remote-endpoint = <&amx4_in1_ep>;
+                                       };
+                               };
+
+                               xbar_amx4_in2_port: port@3c {
+                                       reg = <0x3c>;
+
+                                       xbar_amx4_in2_ep: endpoint {
+                                               remote-endpoint = <&amx4_in2_ep>;
+                                       };
+                               };
+
+                               xbar_amx4_in3_port: port@3d {
+                                       reg = <0x3d>;
+
+                                       xbar_amx4_in3_ep: endpoint {
+                                               remote-endpoint = <&amx4_in3_ep>;
+                                       };
+                               };
+
+                               xbar_amx4_in4_port: port@3e {
+                                       reg = <0x3e>;
+
+                                       xbar_amx4_in4_ep: endpoint {
+                                               remote-endpoint = <&amx4_in4_ep>;
+                                       };
+                               };
+
+                               port@3f {
+                                       reg = <0x3f>;
+
+                                       xbar_amx4_out_ep: endpoint {
+                                               remote-endpoint = <&amx4_out_ep>;
+                                       };
+                               };
+
+                               xbar_adx1_in_port: port@40 {
+                                       reg = <0x40>;
+
+                                       xbar_adx1_in_ep: endpoint {
+                                               remote-endpoint = <&adx1_in_ep>;
+                                       };
+                               };
+
+                               port@41 {
+                                       reg = <0x41>;
+
+                                       xbar_adx1_out1_ep: endpoint {
+                                               remote-endpoint = <&adx1_out1_ep>;
+                                       };
+                               };
+
+                               port@42 {
+                                       reg = <0x42>;
+
+                                       xbar_adx1_out2_ep: endpoint {
+                                               remote-endpoint = <&adx1_out2_ep>;
+                                       };
+                               };
+
+                               port@43 {
+                                       reg = <0x43>;
+
+                                       xbar_adx1_out3_ep: endpoint {
+                                               remote-endpoint = <&adx1_out3_ep>;
+                                       };
+                               };
+
+                               port@44 {
+                                       reg = <0x44>;
+
+                                       xbar_adx1_out4_ep: endpoint {
+                                               remote-endpoint = <&adx1_out4_ep>;
+                                       };
+                               };
+
+                               xbar_adx2_in_port: port@45 {
+                                       reg = <0x45>;
+
+                                       xbar_adx2_in_ep: endpoint {
+                                               remote-endpoint = <&adx2_in_ep>;
+                                       };
+                               };
+
+                               port@46 {
+                                       reg = <0x46>;
+
+                                       xbar_adx2_out1_ep: endpoint {
+                                               remote-endpoint = <&adx2_out1_ep>;
+                                       };
+                               };
+
+                               port@47 {
+                                       reg = <0x47>;
+
+                                       xbar_adx2_out2_ep: endpoint {
+                                               remote-endpoint = <&adx2_out2_ep>;
+                                       };
+                               };
+
+                               port@48 {
+                                       reg = <0x48>;
+
+                                       xbar_adx2_out3_ep: endpoint {
+                                               remote-endpoint = <&adx2_out3_ep>;
+                                       };
+                               };
+
+                               port@49 {
+                                       reg = <0x49>;
+
+                                       xbar_adx2_out4_ep: endpoint {
+                                               remote-endpoint = <&adx2_out4_ep>;
+                                       };
+                               };
+
+                               xbar_adx3_in_port: port@4a {
+                                       reg = <0x4a>;
+
+                                       xbar_adx3_in_ep: endpoint {
+                                               remote-endpoint = <&adx3_in_ep>;
+                                       };
+                               };
+
+                               port@4b {
+                                       reg = <0x4b>;
+
+                                       xbar_adx3_out1_ep: endpoint {
+                                               remote-endpoint = <&adx3_out1_ep>;
+                                       };
+                               };
+
+                               port@4c {
+                                       reg = <0x4c>;
+
+                                       xbar_adx3_out2_ep: endpoint {
+                                               remote-endpoint = <&adx3_out2_ep>;
+                                       };
+                               };
+
+                               port@4d {
+                                       reg = <0x4d>;
+
+                                       xbar_adx3_out3_ep: endpoint {
+                                               remote-endpoint = <&adx3_out3_ep>;
+                                       };
+                               };
+
+                               port@4e {
+                                       reg = <0x4e>;
+
+                                       xbar_adx3_out4_ep: endpoint {
+                                               remote-endpoint = <&adx3_out4_ep>;
+                                       };
+                               };
+
+                               xbar_adx4_in_port: port@4f {
+                                       reg = <0x4f>;
+
+                                       xbar_adx4_in_ep: endpoint {
+                                               remote-endpoint = <&adx4_in_ep>;
+                                       };
+                               };
+
+                               port@50 {
+                                       reg = <0x50>;
+
+                                       xbar_adx4_out1_ep: endpoint {
+                                               remote-endpoint = <&adx4_out1_ep>;
+                                       };
+                               };
+
+                               port@51 {
+                                       reg = <0x51>;
+
+                                       xbar_adx4_out2_ep: endpoint {
+                                               remote-endpoint = <&adx4_out2_ep>;
+                                       };
+                               };
+
+                               port@52 {
+                                       reg = <0x52>;
+
+                                       xbar_adx4_out3_ep: endpoint {
+                                               remote-endpoint = <&adx4_out3_ep>;
+                                       };
+                               };
+
+                               port@53 {
+                                       reg = <0x53>;
+
+                                       xbar_adx4_out4_ep: endpoint {
+                                               remote-endpoint = <&adx4_out4_ep>;
+                                       };
+                               };
+
+                               xbar_mixer_in1_port: port@54 {
+                                       reg = <0x54>;
+
+                                       xbar_mixer_in1_ep: endpoint {
+                                               remote-endpoint = <&mixer_in1_ep>;
+                                       };
+                               };
+
+                               xbar_mixer_in2_port: port@55 {
+                                       reg = <0x55>;
+
+                                       xbar_mixer_in2_ep: endpoint {
+                                               remote-endpoint = <&mixer_in2_ep>;
+                                       };
+                               };
+
+                               xbar_mixer_in3_port: port@56 {
+                                       reg = <0x56>;
+
+                                       xbar_mixer_in3_ep: endpoint {
+                                               remote-endpoint = <&mixer_in3_ep>;
+                                       };
+                               };
+
+                               xbar_mixer_in4_port: port@57 {
+                                       reg = <0x57>;
+
+                                       xbar_mixer_in4_ep: endpoint {
+                                               remote-endpoint = <&mixer_in4_ep>;
+                                       };
+                               };
+
+                               xbar_mixer_in5_port: port@58 {
+                                       reg = <0x58>;
+
+                                       xbar_mixer_in5_ep: endpoint {
+                                               remote-endpoint = <&mixer_in5_ep>;
+                                       };
+                               };
+
+                               xbar_mixer_in6_port: port@59 {
+                                       reg = <0x59>;
+
+                                       xbar_mixer_in6_ep: endpoint {
+                                               remote-endpoint = <&mixer_in6_ep>;
+                                       };
+                               };
+
+                               xbar_mixer_in7_port: port@5a {
+                                       reg = <0x5a>;
+
+                                       xbar_mixer_in7_ep: endpoint {
+                                               remote-endpoint = <&mixer_in7_ep>;
+                                       };
+                               };
+
+                               xbar_mixer_in8_port: port@5b {
+                                       reg = <0x5b>;
+
+                                       xbar_mixer_in8_ep: endpoint {
+                                               remote-endpoint = <&mixer_in8_ep>;
+                                       };
+                               };
+
+                               xbar_mixer_in9_port: port@5c {
+                                       reg = <0x5c>;
+
+                                       xbar_mixer_in9_ep: endpoint {
+                                               remote-endpoint = <&mixer_in9_ep>;
+                                       };
+                               };
+
+                               xbar_mixer_in10_port: port@5d {
+                                       reg = <0x5d>;
+
+                                       xbar_mixer_in10_ep: endpoint {
+                                               remote-endpoint = <&mixer_in10_ep>;
+                                       };
+                               };
+
+                               port@5e {
+                                       reg = <0x5e>;
+
+                                       xbar_mixer_out1_ep: endpoint {
+                                               remote-endpoint = <&mixer_out1_ep>;
+                                       };
+                               };
+
+                               port@5f {
+                                       reg = <0x5f>;
+
+                                       xbar_mixer_out2_ep: endpoint {
+                                               remote-endpoint = <&mixer_out2_ep>;
+                                       };
+                               };
+
+                               port@60 {
+                                       reg = <0x60>;
+
+                                       xbar_mixer_out3_ep: endpoint {
+                                               remote-endpoint = <&mixer_out3_ep>;
+                                       };
+                               };
+
+                               port@61 {
+                                       reg = <0x61>;
+
+                                       xbar_mixer_out4_ep: endpoint {
+                                               remote-endpoint = <&mixer_out4_ep>;
+                                       };
+                               };
+
+                               port@62 {
+                                       reg = <0x62>;
+
+                                       xbar_mixer_out5_ep: endpoint {
+                                               remote-endpoint = <&mixer_out5_ep>;
+                                       };
+                               };
+                       };
+
+                       admaif@290f000 {
+                               status = "okay";
+
+                               ports {
+                                       #address-cells = <1>;
+                                       #size-cells = <0>;
+
+                                       admaif0_port: port@0 {
+                                               reg = <0x0>;
+
+                                               admaif0_ep: endpoint {
+                                                       remote-endpoint = <&xbar_admaif0_ep>;
+                                               };
+                                       };
+
+                                       admaif1_port: port@1 {
+                                               reg = <0x1>;
+
+                                               admaif1_ep: endpoint {
+                                                       remote-endpoint = <&xbar_admaif1_ep>;
+                                               };
+                                       };
+
+                                       admaif2_port: port@2 {
+                                               reg = <0x2>;
+
+                                               admaif2_ep: endpoint {
+                                                       remote-endpoint = <&xbar_admaif2_ep>;
+                                               };
+                                       };
+
+                                       admaif3_port: port@3 {
+                                               reg = <0x3>;
+
+                                               admaif3_ep: endpoint {
+                                                       remote-endpoint = <&xbar_admaif3_ep>;
+                                               };
+                                       };
+
+                                       admaif4_port: port@4 {
+                                               reg = <0x4>;
+
+                                               admaif4_ep: endpoint {
+                                                       remote-endpoint = <&xbar_admaif4_ep>;
+                                               };
+                                       };
+
+                                       admaif5_port: port@5 {
+                                               reg = <0x5>;
+
+                                               admaif5_ep: endpoint {
+                                                       remote-endpoint = <&xbar_admaif5_ep>;
+                                               };
+                                       };
+
+                                       admaif6_port: port@6 {
+                                               reg = <0x6>;
+
+                                               admaif6_ep: endpoint {
+                                                       remote-endpoint = <&xbar_admaif6_ep>;
+                                               };
+                                       };
+
+                                       admaif7_port: port@7 {
+                                               reg = <0x7>;
+
+                                               admaif7_ep: endpoint {
+                                                       remote-endpoint = <&xbar_admaif7_ep>;
+                                               };
+                                       };
+
+                                       admaif8_port: port@8 {
+                                               reg = <0x8>;
+
+                                               admaif8_ep: endpoint {
+                                                       remote-endpoint = <&xbar_admaif8_ep>;
+                                               };
+                                       };
+
+                                       admaif9_port: port@9 {
+                                               reg = <0x9>;
+
+                                               admaif9_ep: endpoint {
+                                                       remote-endpoint = <&xbar_admaif9_ep>;
+                                               };
+                                       };
+
+                                       admaif10_port: port@a {
+                                               reg = <0xa>;
+
+                                               admaif10_ep: endpoint {
+                                                       remote-endpoint = <&xbar_admaif10_ep>;
+                                               };
+                                       };
+
+                                       admaif11_port: port@b {
+                                               reg = <0xb>;
+
+                                               admaif11_ep: endpoint {
+                                                       remote-endpoint = <&xbar_admaif11_ep>;
+                                               };
+                                       };
+
+                                       admaif12_port: port@c {
+                                               reg = <0xc>;
+
+                                               admaif12_ep: endpoint {
+                                                       remote-endpoint = <&xbar_admaif12_ep>;
+                                               };
+                                       };
+
+                                       admaif13_port: port@d {
+                                               reg = <0xd>;
+
+                                               admaif13_ep: endpoint {
+                                                       remote-endpoint = <&xbar_admaif13_ep>;
+                                               };
+                                       };
+
+                                       admaif14_port: port@e {
+                                               reg = <0xe>;
+
+                                               admaif14_ep: endpoint {
+                                                       remote-endpoint = <&xbar_admaif14_ep>;
+                                               };
+                                       };
+
+                                       admaif15_port: port@f {
+                                               reg = <0xf>;
+
+                                               admaif15_ep: endpoint {
+                                                       remote-endpoint = <&xbar_admaif15_ep>;
+                                               };
+                                       };
+
+                                       admaif16_port: port@10 {
+                                               reg = <0x10>;
+
+                                               admaif16_ep: endpoint {
+                                                       remote-endpoint = <&xbar_admaif16_ep>;
+                                               };
+                                       };
+
+                                       admaif17_port: port@11 {
+                                               reg = <0x11>;
+
+                                               admaif17_ep: endpoint {
+                                                       remote-endpoint = <&xbar_admaif17_ep>;
+                                               };
+                                       };
+
+                                       admaif18_port: port@12 {
+                                               reg = <0x12>;
+
+                                               admaif18_ep: endpoint {
+                                                       remote-endpoint = <&xbar_admaif18_ep>;
+                                               };
+                                       };
+
+                                       admaif19_port: port@13 {
+                                               reg = <0x13>;
+
+                                               admaif19_ep: endpoint {
+                                                       remote-endpoint = <&xbar_admaif19_ep>;
+                                               };
+                                       };
+                               };
+                       };
+
+                       i2s@2901000 {
+                               status = "okay";
+
+                               ports {
+                                       #address-cells = <1>;
+                                       #size-cells = <0>;
+
+                                       port@0 {
+                                               reg = <0>;
+
+                                               i2s1_cif_ep: endpoint {
+                                                       remote-endpoint = <&xbar_i2s1_ep>;
+                                               };
+                                       };
+
+                                       i2s1_port: port@1 {
+                                               reg = <1>;
+
+                                               i2s1_dap_ep: endpoint {
+                                                       dai-format = "i2s";
+                                                       /* Placeholder for external Codec */
+                                               };
+                                       };
+                               };
+                       };
+
+                       i2s@2901100 {
+                               status = "okay";
+
+                               ports {
+                                       #address-cells = <1>;
+                                       #size-cells = <0>;
+
+                                       port@0 {
+                                               reg = <0>;
+
+                                               i2s2_cif_ep: endpoint {
+                                                       remote-endpoint = <&xbar_i2s2_ep>;
+                                               };
+                                       };
+
+                                       i2s2_port: port@1 {
+                                               reg = <1>;
+
+                                               i2s2_dap_ep: endpoint {
+                                                       dai-format = "i2s";
+                                                       /* Placeholder for external Codec */
+                                               };
+                                       };
+                               };
+                       };
+
+                       i2s@2901200 {
+                               status = "okay";
+
+                               ports {
+                                       #address-cells = <1>;
+                                       #size-cells = <0>;
+
+                                       port@0 {
+                                               reg = <0>;
+
+                                               i2s3_cif_ep: endpoint {
+                                                       remote-endpoint = <&xbar_i2s3_ep>;
+                                               };
+                                       };
+
+                                       i2s3_port: port@1 {
+                                               reg = <1>;
+
+                                               i2s3_dap_ep: endpoint {
+                                                       dai-format = "i2s";
+                                                       /* Placeholder for external Codec */
+                                               };
+                                       };
+                               };
                        };
 
-                       admaif@290f000 {
+                       i2s@2901300 {
                                status = "okay";
 
                                ports {
                                        #address-cells = <1>;
                                        #size-cells = <0>;
 
-                                       admaif0_port: port@0 {
-                                               reg = <0x0>;
+                                       port@0 {
+                                               reg = <0>;
 
-                                               admaif0_ep: endpoint {
-                                                       remote-endpoint = <&xbar_admaif0_ep>;
+                                               i2s4_cif_ep: endpoint {
+                                                       remote-endpoint = <&xbar_i2s4_ep>;
                                                };
                                        };
 
-                                       admaif1_port: port@1 {
-                                               reg = <0x1>;
+                                       i2s4_port: port@1 {
+                                               reg = <1>;
 
-                                               admaif1_ep: endpoint {
-                                                       remote-endpoint = <&xbar_admaif1_ep>;
+                                               i2s4_dap_ep: endpoint {
+                                                       dai-format = "i2s";
+                                                       /* Placeholder for external Codec */
                                                };
                                        };
+                               };
+                       };
 
-                                       admaif2_port: port@2 {
-                                               reg = <0x2>;
+                       i2s@2901400 {
+                               status = "okay";
 
-                                               admaif2_ep: endpoint {
-                                                       remote-endpoint = <&xbar_admaif2_ep>;
+                               ports {
+                                       #address-cells = <1>;
+                                       #size-cells = <0>;
+
+                                       port@0 {
+                                               reg = <0>;
+
+                                               i2s5_cif_ep: endpoint {
+                                                       remote-endpoint = <&xbar_i2s5_ep>;
                                                };
                                        };
 
-                                       admaif3_port: port@3 {
-                                               reg = <0x3>;
+                                       i2s5_port: port@1 {
+                                               reg = <1>;
 
-                                               admaif3_ep: endpoint {
-                                                       remote-endpoint = <&xbar_admaif3_ep>;
+                                               i2s5_dap_ep: endpoint {
+                                                       dai-format = "i2s";
+                                                       /* Placeholder for external Codec */
                                                };
                                        };
+                               };
+                       };
 
-                                       admaif4_port: port@4 {
-                                               reg = <0x4>;
+                       i2s@2901500 {
+                               status = "okay";
 
-                                               admaif4_ep: endpoint {
-                                                       remote-endpoint = <&xbar_admaif4_ep>;
+                               ports {
+                                       #address-cells = <1>;
+                                       #size-cells = <0>;
+
+                                       port@0 {
+                                               reg = <0>;
+
+                                               i2s6_cif_ep: endpoint {
+                                                       remote-endpoint = <&xbar_i2s6_ep>;
                                                };
                                        };
 
-                                       admaif5_port: port@5 {
-                                               reg = <0x5>;
+                                       i2s6_port: port@1 {
+                                               reg = <1>;
 
-                                               admaif5_ep: endpoint {
-                                                       remote-endpoint = <&xbar_admaif5_ep>;
+                                               i2s6_dap_ep: endpoint {
+                                                       dai-format = "i2s";
+                                                       /* Placeholder for external Codec */
                                                };
                                        };
+                               };
+                       };
 
-                                       admaif6_port: port@6 {
-                                               reg = <0x6>;
+                       dmic@2904000 {
+                               status = "okay";
 
-                                               admaif6_ep: endpoint {
-                                                       remote-endpoint = <&xbar_admaif6_ep>;
+                               ports {
+                                       #address-cells = <1>;
+                                       #size-cells = <0>;
+
+                                       port@0 {
+                                               reg = <0>;
+
+                                               dmic1_cif_ep: endpoint {
+                                                       remote-endpoint = <&xbar_dmic1_ep>;
                                                };
                                        };
 
-                                       admaif7_port: port@7 {
-                                               reg = <0x7>;
+                                       dmic1_port: port@1 {
+                                               reg = <1>;
 
-                                               admaif7_ep: endpoint {
-                                                       remote-endpoint = <&xbar_admaif7_ep>;
+                                               dmic1_dap_ep: endpoint {
+                                                       /* Place holder for external Codec */
                                                };
                                        };
+                               };
+                       };
 
-                                       admaif8_port: port@8 {
-                                               reg = <0x8>;
+                       dmic@2904100 {
+                               status = "okay";
 
-                                               admaif8_ep: endpoint {
-                                                       remote-endpoint = <&xbar_admaif8_ep>;
+                               ports {
+                                       #address-cells = <1>;
+                                       #size-cells = <0>;
+
+                                       port@0 {
+                                               reg = <0>;
+
+                                               dmic2_cif_ep: endpoint {
+                                                       remote-endpoint = <&xbar_dmic2_ep>;
                                                };
                                        };
 
-                                       admaif9_port: port@9 {
-                                               reg = <0x9>;
+                                       dmic2_port: port@1 {
+                                               reg = <1>;
 
-                                               admaif9_ep: endpoint {
-                                                       remote-endpoint = <&xbar_admaif9_ep>;
+                                               dmic2_dap_ep: endpoint {
+                                                       /* Place holder for external Codec */
                                                };
                                        };
+                               };
+                       };
 
-                                       admaif10_port: port@a {
-                                               reg = <0xa>;
+                       dmic@2904200 {
+                               status = "okay";
 
-                                               admaif10_ep: endpoint {
-                                                       remote-endpoint = <&xbar_admaif10_ep>;
+                               ports {
+                                       #address-cells = <1>;
+                                       #size-cells = <0>;
+
+                                       port@0 {
+                                               reg = <0>;
+
+                                               dmic3_cif_ep: endpoint {
+                                                       remote-endpoint = <&xbar_dmic3_ep>;
                                                };
                                        };
 
-                                       admaif11_port: port@b {
-                                               reg = <0xb>;
+                                       dmic3_port: port@1 {
+                                               reg = <1>;
 
-                                               admaif11_ep: endpoint {
-                                                       remote-endpoint = <&xbar_admaif11_ep>;
+                                               dmic3_dap_ep: endpoint {
+                                                       /* Place holder for external Codec */
                                                };
                                        };
+                               };
+                       };
 
-                                       admaif12_port: port@c {
-                                               reg = <0xc>;
+                       dspk@2905000 {
+                               status = "okay";
 
-                                               admaif12_ep: endpoint {
-                                                       remote-endpoint = <&xbar_admaif12_ep>;
+                               ports {
+                                       #address-cells = <1>;
+                                       #size-cells = <0>;
+
+                                       port@0 {
+                                               reg = <0>;
+
+                                               dspk1_cif_ep: endpoint {
+                                                       remote-endpoint = <&xbar_dspk1_ep>;
                                                };
                                        };
 
-                                       admaif13_port: port@d {
-                                               reg = <0xd>;
+                                       dspk1_port: port@1 {
+                                               reg = <1>;
 
-                                               admaif13_ep: endpoint {
-                                                       remote-endpoint = <&xbar_admaif13_ep>;
+                                               dspk1_dap_ep: endpoint {
+                                                       /* Place holder for external Codec */
                                                };
                                        };
+                               };
+                       };
 
-                                       admaif14_port: port@e {
-                                               reg = <0xe>;
+                       dspk@2905100 {
+                               status = "okay";
 
-                                               admaif14_ep: endpoint {
-                                                       remote-endpoint = <&xbar_admaif14_ep>;
+                               ports {
+                                       #address-cells = <1>;
+                                       #size-cells = <0>;
+
+                                       port@0 {
+                                               reg = <0>;
+
+                                               dspk2_cif_ep: endpoint {
+                                                       remote-endpoint = <&xbar_dspk2_ep>;
                                                };
                                        };
 
-                                       admaif15_port: port@f {
-                                               reg = <0xf>;
+                                       dspk2_port: port@1 {
+                                               reg = <1>;
 
-                                               admaif15_ep: endpoint {
-                                                       remote-endpoint = <&xbar_admaif15_ep>;
+                                               dspk2_dap_ep: endpoint {
+                                                       /* Place holder for external Codec */
                                                };
                                        };
+                               };
+                       };
 
-                                       admaif16_port: port@10 {
-                                               reg = <0x10>;
+                       sfc@2902000 {
+                               status = "okay";
 
-                                               admaif16_ep: endpoint {
-                                                       remote-endpoint = <&xbar_admaif16_ep>;
+                               ports {
+                                       #address-cells = <1>;
+                                       #size-cells = <0>;
+
+                                       port@0 {
+                                               reg = <0>;
+
+                                               sfc1_cif_in_ep: endpoint {
+                                                       remote-endpoint = <&xbar_sfc1_in_ep>;
+                                                       convert-rate = <44100>;
                                                };
                                        };
 
-                                       admaif17_port: port@11 {
-                                               reg = <0x11>;
+                                       sfc1_out_port: port@1 {
+                                               reg = <1>;
 
-                                               admaif17_ep: endpoint {
-                                                       remote-endpoint = <&xbar_admaif17_ep>;
+                                               sfc1_cif_out_ep: endpoint {
+                                                       remote-endpoint = <&xbar_sfc1_out_ep>;
+                                                       convert-rate = <48000>;
+                                               };
+                                       };
+                               };
+                       };
+
+                       sfc@2902200 {
+                               status = "okay";
+
+                               ports {
+                                       #address-cells = <1>;
+                                       #size-cells = <0>;
+
+                                       port@0 {
+                                               reg = <0>;
+
+                                               sfc2_cif_in_ep: endpoint {
+                                                       remote-endpoint = <&xbar_sfc2_in_ep>;
+                                               };
+                                       };
+
+                                       sfc2_out_port: port@1 {
+                                               reg = <1>;
+
+                                               sfc2_cif_out_ep: endpoint {
+                                                       remote-endpoint = <&xbar_sfc2_out_ep>;
+                                               };
+                                       };
+                               };
+                       };
+
+                       sfc@2902400 {
+                               status = "okay";
+
+                               ports {
+                                       #address-cells = <1>;
+                                       #size-cells = <0>;
+
+                                       port@0 {
+                                               reg = <0>;
+
+                                               sfc3_cif_in_ep: endpoint {
+                                                       remote-endpoint = <&xbar_sfc3_in_ep>;
+                                               };
+                                       };
+
+                                       sfc3_out_port: port@1 {
+                                               reg = <1>;
+
+                                               sfc3_cif_out_ep: endpoint {
+                                                       remote-endpoint = <&xbar_sfc3_out_ep>;
                                                };
                                        };
+                               };
+                       };
 
-                                       admaif18_port: port@12 {
-                                               reg = <0x12>;
+                       sfc@2902600 {
+                               status = "okay";
 
-                                               admaif18_ep: endpoint {
-                                                       remote-endpoint = <&xbar_admaif18_ep>;
+                               ports {
+                                       #address-cells = <1>;
+                                       #size-cells = <0>;
+
+                                       port@0 {
+                                               reg = <0>;
+
+                                               sfc4_cif_in_ep: endpoint {
+                                                       remote-endpoint = <&xbar_sfc4_in_ep>;
                                                };
                                        };
 
-                                       admaif19_port: port@13 {
-                                               reg = <0x13>;
+                                       sfc4_out_port: port@1 {
+                                               reg = <1>;
 
-                                               admaif19_ep: endpoint {
-                                                       remote-endpoint = <&xbar_admaif19_ep>;
+                                               sfc4_cif_out_ep: endpoint {
+                                                       remote-endpoint = <&xbar_sfc4_out_ep>;
                                                };
                                        };
                                };
                        };
 
-                       i2s@2901000 {
+                       mvc@290a000 {
                                status = "okay";
 
                                ports {
                                        port@0 {
                                                reg = <0>;
 
-                                               i2s1_cif_ep: endpoint {
-                                                       remote-endpoint = <&xbar_i2s1_ep>;
+                                               mvc1_cif_in_ep: endpoint {
+                                                       remote-endpoint = <&xbar_mvc1_in_ep>;
                                                };
                                        };
 
-                                       i2s1_port: port@1 {
+                                       mvc1_out_port: port@1 {
                                                reg = <1>;
 
-                                               i2s1_dap_ep: endpoint {
-                                                       dai-format = "i2s";
-                                                       /* Placeholder for external Codec */
+                                               mvc1_cif_out_ep: endpoint {
+                                                       remote-endpoint = <&xbar_mvc1_out_ep>;
                                                };
                                        };
                                };
                        };
 
-                       i2s@2901100 {
+                       mvc@290a200 {
                                status = "okay";
 
                                ports {
                                        port@0 {
                                                reg = <0>;
 
-                                               i2s2_cif_ep: endpoint {
-                                                       remote-endpoint = <&xbar_i2s2_ep>;
+                                               mvc2_cif_in_ep: endpoint {
+                                                       remote-endpoint = <&xbar_mvc2_in_ep>;
                                                };
                                        };
 
-                                       i2s2_port: port@1 {
+                                       mvc2_out_port: port@1 {
                                                reg = <1>;
 
-                                               i2s2_dap_ep: endpoint {
-                                                       dai-format = "i2s";
-                                                       /* Placeholder for external Codec */
+                                               mvc2_cif_out_ep: endpoint {
+                                                       remote-endpoint = <&xbar_mvc2_out_ep>;
                                                };
                                        };
                                };
                        };
 
-                       i2s@2901200 {
+                       amx@2903000 {
                                status = "okay";
 
                                ports {
                                        port@0 {
                                                reg = <0>;
 
-                                               i2s3_cif_ep: endpoint {
-                                                       remote-endpoint = <&xbar_i2s3_ep>;
+                                               amx1_in1_ep: endpoint {
+                                                       remote-endpoint = <&xbar_amx1_in1_ep>;
                                                };
                                        };
 
-                                       i2s3_port: port@1 {
+                                       port@1 {
                                                reg = <1>;
 
-                                               i2s3_dap_ep: endpoint {
-                                                       dai-format = "i2s";
-                                                       /* Placeholder for external Codec */
+                                               amx1_in2_ep: endpoint {
+                                                       remote-endpoint = <&xbar_amx1_in2_ep>;
+                                               };
+                                       };
+
+                                       port@2 {
+                                               reg = <2>;
+
+                                               amx1_in3_ep: endpoint {
+                                                       remote-endpoint = <&xbar_amx1_in3_ep>;
+                                               };
+                                       };
+
+                                       port@3 {
+                                               reg = <3>;
+
+                                               amx1_in4_ep: endpoint {
+                                                       remote-endpoint = <&xbar_amx1_in4_ep>;
+                                               };
+                                       };
+
+                                       amx1_out_port: port@4 {
+                                               reg = <4>;
+
+                                               amx1_out_ep: endpoint {
+                                                       remote-endpoint = <&xbar_amx1_out_ep>;
                                                };
                                        };
                                };
                        };
 
-                       i2s@2901300 {
+                       amx@2903100 {
                                status = "okay";
 
                                ports {
                                        port@0 {
                                                reg = <0>;
 
-                                               i2s4_cif_ep: endpoint {
-                                                       remote-endpoint = <&xbar_i2s4_ep>;
+                                               amx2_in1_ep: endpoint {
+                                                       remote-endpoint = <&xbar_amx2_in1_ep>;
                                                };
                                        };
 
-                                       i2s4_port: port@1 {
+                                       port@1 {
                                                reg = <1>;
 
-                                               i2s4_dap_ep: endpoint {
-                                                       dai-format = "i2s";
-                                                       /* Placeholder for external Codec */
+                                               amx2_in2_ep: endpoint {
+                                                       remote-endpoint = <&xbar_amx2_in2_ep>;
+                                               };
+                                       };
+
+                                       amx2_in3_port: port@2 {
+                                               reg = <2>;
+
+                                               amx2_in3_ep: endpoint {
+                                                       remote-endpoint = <&xbar_amx2_in3_ep>;
+                                               };
+                                       };
+
+                                       amx2_in4_port: port@3 {
+                                               reg = <3>;
+
+                                               amx2_in4_ep: endpoint {
+                                                       remote-endpoint = <&xbar_amx2_in4_ep>;
+                                               };
+                                       };
+
+                                       amx2_out_port: port@4 {
+                                               reg = <4>;
+
+                                               amx2_out_ep: endpoint {
+                                                       remote-endpoint = <&xbar_amx2_out_ep>;
                                                };
                                        };
                                };
                        };
 
-                       i2s@2901400 {
+                       amx@2903200 {
                                status = "okay";
 
                                ports {
                                        port@0 {
                                                reg = <0>;
 
-                                               i2s5_cif_ep: endpoint {
-                                                       remote-endpoint = <&xbar_i2s5_ep>;
+                                               amx3_in1_ep: endpoint {
+                                                       remote-endpoint = <&xbar_amx3_in1_ep>;
                                                };
                                        };
 
-                                       i2s5_port: port@1 {
+                                       port@1 {
                                                reg = <1>;
 
-                                               i2s5_dap_ep: endpoint {
-                                                       dai-format = "i2s";
-                                                       /* Placeholder for external Codec */
+                                               amx3_in2_ep: endpoint {
+                                                       remote-endpoint = <&xbar_amx3_in2_ep>;
+                                               };
+                                       };
+
+                                       port@2 {
+                                               reg = <2>;
+
+                                               amx3_in3_ep: endpoint {
+                                                       remote-endpoint = <&xbar_amx3_in3_ep>;
+                                               };
+                                       };
+
+                                       port@3 {
+                                               reg = <3>;
+
+                                               amx3_in4_ep: endpoint {
+                                                       remote-endpoint = <&xbar_amx3_in4_ep>;
+                                               };
+                                       };
+
+                                       amx3_out_port: port@4 {
+                                               reg = <4>;
+
+                                               amx3_out_ep: endpoint {
+                                                       remote-endpoint = <&xbar_amx3_out_ep>;
                                                };
                                        };
                                };
                        };
 
-                       i2s@2901500 {
+                       amx@2903300 {
                                status = "okay";
 
                                ports {
                                        port@0 {
                                                reg = <0>;
 
-                                               i2s6_cif_ep: endpoint {
-                                                       remote-endpoint = <&xbar_i2s6_ep>;
+                                               amx4_in1_ep: endpoint {
+                                                       remote-endpoint = <&xbar_amx4_in1_ep>;
                                                };
                                        };
 
-                                       i2s6_port: port@1 {
+                                       port@1 {
                                                reg = <1>;
 
-                                               i2s6_dap_ep: endpoint {
-                                                       dai-format = "i2s";
-                                                       /* Placeholder for external Codec */
+                                               amx4_in2_ep: endpoint {
+                                                       remote-endpoint = <&xbar_amx4_in2_ep>;
+                                               };
+                                       };
+
+                                       port@2 {
+                                               reg = <2>;
+
+                                               amx4_in3_ep: endpoint {
+                                                       remote-endpoint = <&xbar_amx4_in3_ep>;
+                                               };
+                                       };
+
+                                       port@3 {
+                                               reg = <3>;
+
+                                               amx4_in4_ep: endpoint {
+                                                       remote-endpoint = <&xbar_amx4_in4_ep>;
+                                               };
+                                       };
+
+                                       amx4_out_port: port@4 {
+                                               reg = <4>;
+
+                                               amx4_out_ep: endpoint {
+                                                       remote-endpoint = <&xbar_amx4_out_ep>;
                                                };
                                        };
                                };
                        };
 
-                       dmic@2904000 {
+                       adx@2903800 {
                                status = "okay";
 
                                ports {
                                        port@0 {
                                                reg = <0>;
 
-                                               dmic1_cif_ep: endpoint {
-                                                       remote-endpoint = <&xbar_dmic1_ep>;
+                                               adx1_in_ep: endpoint {
+                                                       remote-endpoint = <&xbar_adx1_in_ep>;
                                                };
                                        };
 
-                                       dmic1_port: port@1 {
+                                       adx1_out1_port: port@1 {
                                                reg = <1>;
 
-                                               dmic1_dap_ep: endpoint {
-                                                       /* Place holder for external Codec */
+                                               adx1_out1_ep: endpoint {
+                                                       remote-endpoint = <&xbar_adx1_out1_ep>;
+                                               };
+                                       };
+
+                                       adx1_out2_port: port@2 {
+                                               reg = <2>;
+
+                                               adx1_out2_ep: endpoint {
+                                                       remote-endpoint = <&xbar_adx1_out2_ep>;
+                                               };
+                                       };
+
+                                       adx1_out3_port: port@3 {
+                                               reg = <3>;
+
+                                               adx1_out3_ep: endpoint {
+                                                       remote-endpoint = <&xbar_adx1_out3_ep>;
+                                               };
+                                       };
+
+                                       adx1_out4_port: port@4 {
+                                               reg = <4>;
+
+                                               adx1_out4_ep: endpoint {
+                                                       remote-endpoint = <&xbar_adx1_out4_ep>;
                                                };
                                        };
                                };
                        };
 
-                       dmic@2904100 {
+                       adx@2903900 {
                                status = "okay";
 
                                ports {
                                        port@0 {
                                                reg = <0>;
 
-                                               dmic2_cif_ep: endpoint {
-                                                       remote-endpoint = <&xbar_dmic2_ep>;
+                                               adx2_in_ep: endpoint {
+                                                       remote-endpoint = <&xbar_adx2_in_ep>;
                                                };
                                        };
 
-                                       dmic2_port: port@1 {
+                                       adx2_out1_port: port@1 {
                                                reg = <1>;
 
-                                               dmic2_dap_ep: endpoint {
-                                                       /* Place holder for external Codec */
+                                               adx2_out1_ep: endpoint {
+                                                       remote-endpoint = <&xbar_adx2_out1_ep>;
+                                               };
+                                       };
+
+                                       adx2_out2_port: port@2 {
+                                               reg = <2>;
+
+                                               adx2_out2_ep: endpoint {
+                                                       remote-endpoint = <&xbar_adx2_out2_ep>;
+                                               };
+                                       };
+
+                                       adx2_out3_port: port@3 {
+                                               reg = <3>;
+
+                                               adx2_out3_ep: endpoint {
+                                                       remote-endpoint = <&xbar_adx2_out3_ep>;
+                                               };
+                                       };
+
+                                       adx2_out4_port: port@4 {
+                                               reg = <4>;
+
+                                               adx2_out4_ep: endpoint {
+                                                       remote-endpoint = <&xbar_adx2_out4_ep>;
                                                };
                                        };
                                };
                        };
 
-                       dmic@2904200 {
+                       adx@2903a00 {
                                status = "okay";
 
                                ports {
                                        port@0 {
                                                reg = <0>;
 
-                                               dmic3_cif_ep: endpoint {
-                                                       remote-endpoint = <&xbar_dmic3_ep>;
+                                               adx3_in_ep: endpoint {
+                                                       remote-endpoint = <&xbar_adx3_in_ep>;
                                                };
                                        };
 
-                                       dmic3_port: port@1 {
+                                       adx3_out1_port: port@1 {
                                                reg = <1>;
 
-                                               dmic3_dap_ep: endpoint {
-                                                       /* Place holder for external Codec */
+                                               adx3_out1_ep: endpoint {
+                                                       remote-endpoint = <&xbar_adx3_out1_ep>;
+                                               };
+                                       };
+
+                                       adx3_out2_port: port@2 {
+                                               reg = <2>;
+
+                                               adx3_out2_ep: endpoint {
+                                                       remote-endpoint = <&xbar_adx3_out2_ep>;
+                                               };
+                                       };
+
+                                       adx3_out3_port: port@3 {
+                                               reg = <3>;
+
+                                               adx3_out3_ep: endpoint {
+                                                       remote-endpoint = <&xbar_adx3_out3_ep>;
+                                               };
+                                       };
+
+                                       adx3_out4_port: port@4 {
+                                               reg = <4>;
+
+                                               adx3_out4_ep: endpoint {
+                                                       remote-endpoint = <&xbar_adx3_out4_ep>;
                                                };
                                        };
                                };
                        };
 
-                       dspk@2905000 {
+                       adx@2903b00 {
                                status = "okay";
 
                                ports {
                                        port@0 {
                                                reg = <0>;
 
-                                               dspk1_cif_ep: endpoint {
-                                                       remote-endpoint = <&xbar_dspk1_ep>;
+                                               adx4_in_ep: endpoint {
+                                                       remote-endpoint = <&xbar_adx4_in_ep>;
                                                };
                                        };
 
-                                       dspk1_port: port@1 {
+                                       adx4_out1_port: port@1 {
                                                reg = <1>;
 
-                                               dspk1_dap_ep: endpoint {
-                                                       /* Place holder for external Codec */
+                                               adx4_out1_ep: endpoint {
+                                                       remote-endpoint = <&xbar_adx4_out1_ep>;
+                                               };
+                                       };
+
+                                       adx4_out2_port: port@2 {
+                                               reg = <2>;
+
+                                               adx4_out2_ep: endpoint {
+                                                       remote-endpoint = <&xbar_adx4_out2_ep>;
+                                               };
+                                       };
+
+                                       adx4_out3_port: port@3 {
+                                               reg = <3>;
+
+                                               adx4_out3_ep: endpoint {
+                                                       remote-endpoint = <&xbar_adx4_out3_ep>;
+                                               };
+                                       };
+
+                                       adx4_out4_port: port@4 {
+                                               reg = <4>;
+
+                                               adx4_out4_ep: endpoint {
+                                                       remote-endpoint = <&xbar_adx4_out4_ep>;
                                                };
                                        };
                                };
                        };
 
-                       dspk@2905100 {
+                       amixer@290bb00 {
                                status = "okay";
 
                                ports {
                                        #size-cells = <0>;
 
                                        port@0 {
-                                               reg = <0>;
+                                               reg = <0x0>;
 
-                                               dspk2_cif_ep: endpoint {
-                                                       remote-endpoint = <&xbar_dspk2_ep>;
+                                               mixer_in1_ep: endpoint {
+                                                       remote-endpoint = <&xbar_mixer_in1_ep>;
                                                };
                                        };
 
-                                       dspk2_port: port@1 {
-                                               reg = <1>;
+                                       port@1 {
+                                               reg = <0x1>;
 
-                                               dspk2_dap_ep: endpoint {
-                                                       /* Place holder for external Codec */
+                                               mixer_in2_ep: endpoint {
+                                                       remote-endpoint = <&xbar_mixer_in2_ep>;
+                                               };
+                                       };
+
+                                       port@2 {
+                                               reg = <0x2>;
+
+                                               mixer_in3_ep: endpoint {
+                                                       remote-endpoint = <&xbar_mixer_in3_ep>;
+                                               };
+                                       };
+
+                                       port@3 {
+                                               reg = <0x3>;
+
+                                               mixer_in4_ep: endpoint {
+                                                       remote-endpoint = <&xbar_mixer_in4_ep>;
+                                               };
+                                       };
+
+                                       port@4 {
+                                               reg = <0x4>;
+
+                                               mixer_in5_ep: endpoint {
+                                                       remote-endpoint = <&xbar_mixer_in5_ep>;
+                                               };
+                                       };
+
+                                       port@5 {
+                                               reg = <0x5>;
+
+                                               mixer_in6_ep: endpoint {
+                                                       remote-endpoint = <&xbar_mixer_in6_ep>;
+                                               };
+                                       };
+
+                                       port@6 {
+                                               reg = <0x6>;
+
+                                               mixer_in7_ep: endpoint {
+                                                       remote-endpoint = <&xbar_mixer_in7_ep>;
+                                               };
+                                       };
+
+                                       port@7 {
+                                               reg = <0x7>;
+
+                                               mixer_in8_ep: endpoint {
+                                                       remote-endpoint = <&xbar_mixer_in8_ep>;
+                                               };
+                                       };
+
+                                       port@8 {
+                                               reg = <0x8>;
+
+                                               mixer_in9_ep: endpoint {
+                                                       remote-endpoint = <&xbar_mixer_in9_ep>;
+                                               };
+                                       };
+
+                                       port@9 {
+                                               reg = <0x9>;
+
+                                               mixer_in10_ep: endpoint {
+                                                       remote-endpoint = <&xbar_mixer_in10_ep>;
+                                               };
+                                       };
+
+                                       mixer_out1_port: port@a {
+                                               reg = <0xa>;
+
+                                               mixer_out1_ep: endpoint {
+                                                       remote-endpoint = <&xbar_mixer_out1_ep>;
+                                               };
+                                       };
+
+                                       mixer_out2_port: port@b {
+                                               reg = <0xb>;
+
+                                               mixer_out2_ep: endpoint {
+                                                       remote-endpoint = <&xbar_mixer_out2_ep>;
+                                               };
+                                       };
+
+                                       mixer_out3_port: port@c {
+                                               reg = <0xc>;
+
+                                               mixer_out3_ep: endpoint {
+                                                       remote-endpoint = <&xbar_mixer_out3_ep>;
+                                               };
+                                       };
+
+                                       mixer_out4_port: port@d {
+                                               reg = <0xd>;
+
+                                               mixer_out4_ep: endpoint {
+                                                       remote-endpoint = <&xbar_mixer_out4_ep>;
+                                               };
+                                       };
+
+                                       mixer_out5_port: port@e {
+                                               reg = <0xe>;
+
+                                               mixer_out5_ep: endpoint {
+                                                       remote-endpoint = <&xbar_mixer_out5_ep>;
                                                };
                                        };
                                };
                       <&xbar_i2s4_port>, <&xbar_i2s5_port>, <&xbar_i2s6_port>,
                       <&xbar_dmic1_port>, <&xbar_dmic2_port>, <&xbar_dmic3_port>,
                       <&xbar_dspk1_port>, <&xbar_dspk2_port>,
+                      <&xbar_sfc1_in_port>, <&xbar_sfc2_in_port>,
+                      <&xbar_sfc3_in_port>, <&xbar_sfc4_in_port>,
+                      <&xbar_mvc1_in_port>, <&xbar_mvc2_in_port>,
+                      <&xbar_amx1_in1_port>, <&xbar_amx1_in2_port>,
+                      <&xbar_amx1_in3_port>, <&xbar_amx1_in4_port>,
+                      <&xbar_amx2_in1_port>, <&xbar_amx2_in2_port>,
+                      <&xbar_amx2_in3_port>, <&xbar_amx2_in4_port>,
+                      <&xbar_amx3_in1_port>, <&xbar_amx3_in2_port>,
+                      <&xbar_amx3_in3_port>, <&xbar_amx3_in4_port>,
+                      <&xbar_amx4_in1_port>, <&xbar_amx4_in2_port>,
+                      <&xbar_amx4_in3_port>, <&xbar_amx4_in4_port>,
+                      <&xbar_adx1_in_port>, <&xbar_adx2_in_port>,
+                      <&xbar_adx3_in_port>, <&xbar_adx4_in_port>,
+                      <&xbar_mixer_in1_port>, <&xbar_mixer_in2_port>,
+                      <&xbar_mixer_in3_port>, <&xbar_mixer_in4_port>,
+                      <&xbar_mixer_in5_port>, <&xbar_mixer_in6_port>,
+                      <&xbar_mixer_in7_port>, <&xbar_mixer_in8_port>,
+                      <&xbar_mixer_in9_port>, <&xbar_mixer_in10_port>,
+                      /* HW accelerators */
+                      <&sfc1_out_port>, <&sfc2_out_port>,
+                      <&sfc3_out_port>, <&sfc4_out_port>,
+                      <&mvc1_out_port>, <&mvc2_out_port>,
+                      <&amx1_out_port>, <&amx2_out_port>,
+                      <&amx3_out_port>, <&amx4_out_port>,
+                      <&adx1_out1_port>, <&adx1_out2_port>,
+                      <&adx1_out3_port>, <&adx1_out4_port>,
+                      <&adx2_out1_port>, <&adx2_out2_port>,
+                      <&adx2_out3_port>, <&adx2_out4_port>,
+                      <&adx3_out1_port>, <&adx3_out2_port>,
+                      <&adx3_out3_port>, <&adx3_out4_port>,
+                      <&adx4_out1_port>, <&adx4_out2_port>,
+                      <&adx4_out3_port>, <&adx4_out4_port>,
+                      <&mixer_out1_port>, <&mixer_out2_port>,
+                      <&mixer_out3_port>, <&mixer_out4_port>,
+                      <&mixer_out5_port>,
                       /* I/O */
                       <&i2s1_port>, <&i2s2_port>, <&i2s3_port>, <&i2s4_port>,
                       <&i2s5_port>, <&i2s6_port>, <&dmic1_port>, <&dmic2_port>,
index 936b106..af33fe9 100644 (file)
        };
 
        hda@3510000 {
-               nvidia,model = "jetson-tx2-hda";
+               nvidia,model = "NVIDIA Jetson TX2 NX HDA";
                status = "okay";
        };
 
                        };
                };
        };
+
+       aconnect@2900000 {
+               status = "okay";
+
+               dma-controller@2930000 {
+                       status = "okay";
+               };
+
+               interrupt-controller@2a40000 {
+                       status = "okay";
+               };
+
+               ahub@2900800 {
+                       status = "okay";
+
+                       ports {
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+
+                               port@0 {
+                                       reg = <0x0>;
+
+                                       xbar_admaif0_ep: endpoint {
+                                               remote-endpoint = <&admaif0_ep>;
+                                       };
+                               };
+
+                               port@1 {
+                                       reg = <0x1>;
+
+                                       xbar_admaif1_ep: endpoint {
+                                               remote-endpoint = <&admaif1_ep>;
+                                       };
+                               };
+
+                               port@2 {
+                                       reg = <0x2>;
+
+                                       xbar_admaif2_ep: endpoint {
+                                               remote-endpoint = <&admaif2_ep>;
+                                       };
+                               };
+
+                               port@3 {
+                                       reg = <0x3>;
+
+                                       xbar_admaif3_ep: endpoint {
+                                               remote-endpoint = <&admaif3_ep>;
+                                       };
+                               };
+
+                               port@4 {
+                                       reg = <0x4>;
+
+                                       xbar_admaif4_ep: endpoint {
+                                               remote-endpoint = <&admaif4_ep>;
+                                       };
+                               };
+
+                               port@5 {
+                                       reg = <0x5>;
+
+                                       xbar_admaif5_ep: endpoint {
+                                               remote-endpoint = <&admaif5_ep>;
+                                       };
+                               };
+
+                               port@6 {
+                                       reg = <0x6>;
+
+                                       xbar_admaif6_ep: endpoint {
+                                               remote-endpoint = <&admaif6_ep>;
+                                       };
+                               };
+
+                               port@7 {
+                                       reg = <0x7>;
+
+                                       xbar_admaif7_ep: endpoint {
+                                               remote-endpoint = <&admaif7_ep>;
+                                       };
+                               };
+
+                               port@8 {
+                                       reg = <0x8>;
+
+                                       xbar_admaif8_ep: endpoint {
+                                               remote-endpoint = <&admaif8_ep>;
+                                       };
+                               };
+
+                               port@9 {
+                                       reg = <0x9>;
+
+                                       xbar_admaif9_ep: endpoint {
+                                               remote-endpoint = <&admaif9_ep>;
+                                       };
+                               };
+
+                               port@a {
+                                       reg = <0xa>;
+
+                                       xbar_admaif10_ep: endpoint {
+                                               remote-endpoint = <&admaif10_ep>;
+                                       };
+                               };
+
+                               port@b {
+                                       reg = <0xb>;
+
+                                       xbar_admaif11_ep: endpoint {
+                                               remote-endpoint = <&admaif11_ep>;
+                                       };
+                               };
+
+                               port@c {
+                                       reg = <0xc>;
+
+                                       xbar_admaif12_ep: endpoint {
+                                               remote-endpoint = <&admaif12_ep>;
+                                       };
+                               };
+
+                               port@d {
+                                       reg = <0xd>;
+
+                                       xbar_admaif13_ep: endpoint {
+                                               remote-endpoint = <&admaif13_ep>;
+                                       };
+                               };
+
+                               port@e {
+                                       reg = <0xe>;
+
+                                       xbar_admaif14_ep: endpoint {
+                                               remote-endpoint = <&admaif14_ep>;
+                                       };
+                               };
+
+                               port@f {
+                                       reg = <0xf>;
+
+                                       xbar_admaif15_ep: endpoint {
+                                               remote-endpoint = <&admaif15_ep>;
+                                       };
+                               };
+
+                               port@10 {
+                                       reg = <0x10>;
+
+                                       xbar_admaif16_ep: endpoint {
+                                               remote-endpoint = <&admaif16_ep>;
+                                       };
+                               };
+
+                               port@11 {
+                                       reg = <0x11>;
+
+                                       xbar_admaif17_ep: endpoint {
+                                               remote-endpoint = <&admaif17_ep>;
+                                       };
+                               };
+
+                               port@12 {
+                                       reg = <0x12>;
+
+                                       xbar_admaif18_ep: endpoint {
+                                               remote-endpoint = <&admaif18_ep>;
+                                       };
+                               };
+
+                               port@13 {
+                                       reg = <0x13>;
+
+                                       xbar_admaif19_ep: endpoint {
+                                               remote-endpoint = <&admaif19_ep>;
+                                       };
+                               };
+
+                               xbar_i2s1_port: port@14 {
+                                       reg = <0x14>;
+
+                                       xbar_i2s1_ep: endpoint {
+                                               remote-endpoint = <&i2s1_cif_ep>;
+                                       };
+                               };
+
+                               xbar_i2s3_port: port@16 {
+                                       reg = <0x16>;
+
+                                       xbar_i2s3_ep: endpoint {
+                                               remote-endpoint = <&i2s3_cif_ep>;
+                                       };
+                               };
+
+                               xbar_dmic1_port: port@1a {
+                                       reg = <0x1a>;
+
+                                       xbar_dmic1_ep: endpoint {
+                                               remote-endpoint = <&dmic1_cif_ep>;
+                                       };
+                               };
+
+                               xbar_dmic2_port: port@1b {
+                                       reg = <0x1b>;
+
+                                       xbar_dmic2_ep: endpoint {
+                                               remote-endpoint = <&dmic2_cif_ep>;
+                                       };
+                               };
+                       };
+
+                       admaif@290f000 {
+                               status = "okay";
+
+                               ports {
+                                       #address-cells = <1>;
+                                       #size-cells = <0>;
+
+                                       admaif0_port: port@0 {
+                                               reg = <0x0>;
+
+                                               admaif0_ep: endpoint {
+                                                       remote-endpoint = <&xbar_admaif0_ep>;
+                                               };
+                                       };
+
+                                       admaif1_port: port@1 {
+                                               reg = <0x1>;
+
+                                               admaif1_ep: endpoint {
+                                                       remote-endpoint = <&xbar_admaif1_ep>;
+                                               };
+                                       };
+
+                                       admaif2_port: port@2 {
+                                               reg = <0x2>;
+
+                                               admaif2_ep: endpoint {
+                                                       remote-endpoint = <&xbar_admaif2_ep>;
+                                               };
+                                       };
+
+                                       admaif3_port: port@3 {
+                                               reg = <0x3>;
+
+                                               admaif3_ep: endpoint {
+                                                       remote-endpoint = <&xbar_admaif3_ep>;
+                                               };
+                                       };
+
+                                       admaif4_port: port@4 {
+                                               reg = <0x4>;
+
+                                               admaif4_ep: endpoint {
+                                                       remote-endpoint = <&xbar_admaif4_ep>;
+                                               };
+                                       };
+
+                                       admaif5_port: port@5 {
+                                               reg = <0x5>;
+
+                                               admaif5_ep: endpoint {
+                                                       remote-endpoint = <&xbar_admaif5_ep>;
+                                               };
+                                       };
+
+                                       admaif6_port: port@6 {
+                                               reg = <0x6>;
+
+                                               admaif6_ep: endpoint {
+                                                       remote-endpoint = <&xbar_admaif6_ep>;
+                                               };
+                                       };
+
+                                       admaif7_port: port@7 {
+                                               reg = <0x7>;
+
+                                               admaif7_ep: endpoint {
+                                                       remote-endpoint = <&xbar_admaif7_ep>;
+                                               };
+                                       };
+
+                                       admaif8_port: port@8 {
+                                               reg = <0x8>;
+
+                                               admaif8_ep: endpoint {
+                                                       remote-endpoint = <&xbar_admaif8_ep>;
+                                               };
+                                       };
+
+                                       admaif9_port: port@9 {
+                                               reg = <0x9>;
+
+                                               admaif9_ep: endpoint {
+                                                       remote-endpoint = <&xbar_admaif9_ep>;
+                                               };
+                                       };
+
+                                       admaif10_port: port@a {
+                                               reg = <0xa>;
+
+                                               admaif10_ep: endpoint {
+                                                       remote-endpoint = <&xbar_admaif10_ep>;
+                                               };
+                                       };
+
+                                       admaif11_port: port@b {
+                                               reg = <0xb>;
+
+                                               admaif11_ep: endpoint {
+                                                       remote-endpoint = <&xbar_admaif11_ep>;
+                                               };
+                                       };
+
+                                       admaif12_port: port@c {
+                                               reg = <0xc>;
+
+                                               admaif12_ep: endpoint {
+                                                       remote-endpoint = <&xbar_admaif12_ep>;
+                                               };
+                                       };
+
+                                       admaif13_port: port@d {
+                                               reg = <0xd>;
+
+                                               admaif13_ep: endpoint {
+                                                       remote-endpoint = <&xbar_admaif13_ep>;
+                                               };
+                                       };
+
+                                       admaif14_port: port@e {
+                                               reg = <0xe>;
+
+                                               admaif14_ep: endpoint {
+                                                       remote-endpoint = <&xbar_admaif14_ep>;
+                                               };
+                                       };
+
+                                       admaif15_port: port@f {
+                                               reg = <0xf>;
+
+                                               admaif15_ep: endpoint {
+                                                       remote-endpoint = <&xbar_admaif15_ep>;
+                                               };
+                                       };
+
+                                       admaif16_port: port@10 {
+                                               reg = <0x10>;
+
+                                               admaif16_ep: endpoint {
+                                                       remote-endpoint = <&xbar_admaif16_ep>;
+                                               };
+                                       };
+
+                                       admaif17_port: port@11 {
+                                               reg = <0x11>;
+
+                                               admaif17_ep: endpoint {
+                                                       remote-endpoint = <&xbar_admaif17_ep>;
+                                               };
+                                       };
+
+                                       admaif18_port: port@12 {
+                                               reg = <0x12>;
+
+                                               admaif18_ep: endpoint {
+                                                       remote-endpoint = <&xbar_admaif18_ep>;
+                                               };
+                                       };
+
+                                       admaif19_port: port@13 {
+                                               reg = <0x13>;
+
+                                               admaif19_ep: endpoint {
+                                                       remote-endpoint = <&xbar_admaif19_ep>;
+                                               };
+                                       };
+                               };
+                       };
+
+                       i2s@2901000 {
+                               status = "okay";
+
+                               ports {
+                                       #address-cells = <1>;
+                                       #size-cells = <0>;
+
+                                       port@0 {
+                                               reg = <0>;
+
+                                               i2s1_cif_ep: endpoint {
+                                                       remote-endpoint = <&xbar_i2s1_ep>;
+                                               };
+                                       };
+
+                                       i2s1_port: port@1 {
+                                               reg = <1>;
+
+                                               i2s1_dap_ep: endpoint {
+                                                       dai-format = "i2s";
+                                                       /* Placeholder for external Codec */
+                                               };
+                                       };
+                               };
+                       };
+
+                       i2s@2901200 {
+                               status = "okay";
+
+                               ports {
+                                       #address-cells = <1>;
+                                       #size-cells = <0>;
+
+                                       port@0 {
+                                               reg = <0>;
+
+                                               i2s3_cif_ep: endpoint {
+                                                       remote-endpoint = <&xbar_i2s3_ep>;
+                                               };
+                                       };
+
+                                       i2s3_port: port@1 {
+                                               reg = <1>;
+
+                                               i2s3_dap_ep: endpoint {
+                                                       dai-format = "i2s";
+                                                       /* Placeholder for external Codec */
+                                               };
+                                       };
+                               };
+                       };
+
+                       dmic@2904000 {
+                               status = "okay";
+
+                               ports {
+                                       #address-cells = <1>;
+                                       #size-cells = <0>;
+
+                                       port@0 {
+                                               reg = <0>;
+
+                                               dmic1_cif_ep: endpoint {
+                                                       remote-endpoint = <&xbar_dmic1_ep>;
+                                               };
+                                       };
+
+                                       dmic1_port: port@1 {
+                                               reg = <1>;
+
+                                               dmic1_dap_ep: endpoint {
+                                                       /* Place holder for external Codec */
+                                               };
+                                       };
+                               };
+                       };
+
+                       dmic@2904100 {
+                               status = "okay";
+
+                               ports {
+                                       #address-cells = <1>;
+                                       #size-cells = <0>;
+
+                                       port@0 {
+                                               reg = <0>;
+
+                                               dmic2_cif_ep: endpoint {
+                                                       remote-endpoint = <&xbar_dmic2_ep>;
+                                               };
+                                       };
+
+                                       dmic2_port: port@1 {
+                                               reg = <1>;
+
+                                               dmic2_dap_ep: endpoint {
+                                                       /* Place holder for external Codec */
+                                               };
+                                       };
+                               };
+                       };
+               };
+       };
+
+       sound {
+               compatible = "nvidia,tegra186-audio-graph-card";
+               status = "okay";
+
+               dais = /* FE */
+                      <&admaif0_port>, <&admaif1_port>, <&admaif2_port>, <&admaif3_port>,
+                      <&admaif4_port>, <&admaif5_port>, <&admaif6_port>, <&admaif7_port>,
+                      <&admaif8_port>, <&admaif9_port>, <&admaif10_port>, <&admaif11_port>,
+                      <&admaif12_port>, <&admaif13_port>, <&admaif14_port>, <&admaif15_port>,
+                      <&admaif16_port>, <&admaif17_port>, <&admaif18_port>, <&admaif19_port>,
+                      /* Router */
+                      <&xbar_i2s1_port>, <&xbar_i2s3_port>,
+                      <&xbar_dmic1_port>, <&xbar_dmic2_port>,
+                      /* I/O */
+                      <&i2s1_port>, <&i2s3_port>,
+                      <&dmic1_port>, <&dmic2_port>;
+
+               label = "NVIDIA Jetson TX2 NX APE";
+       };
 };
index e94f8ad..9ac4f01 100644 (file)
                                sound-name-prefix = "DSPK2";
                                status = "disabled";
                        };
+
+                       tegra_sfc1: sfc@2902000 {
+                               compatible = "nvidia,tegra186-sfc",
+                                            "nvidia,tegra210-sfc";
+                               reg = <0x2902000 0x200>;
+                               sound-name-prefix = "SFC1";
+                               status = "disabled";
+                       };
+
+                       tegra_sfc2: sfc@2902200 {
+                               compatible = "nvidia,tegra186-sfc",
+                                            "nvidia,tegra210-sfc";
+                               reg = <0x2902200 0x200>;
+                               sound-name-prefix = "SFC2";
+                               status = "disabled";
+                       };
+
+                       tegra_sfc3: sfc@2902400 {
+                               compatible = "nvidia,tegra186-sfc",
+                                            "nvidia,tegra210-sfc";
+                               reg = <0x2902400 0x200>;
+                               sound-name-prefix = "SFC3";
+                               status = "disabled";
+                       };
+
+                       tegra_sfc4: sfc@2902600 {
+                               compatible = "nvidia,tegra186-sfc",
+                                            "nvidia,tegra210-sfc";
+                               reg = <0x2902600 0x200>;
+                               sound-name-prefix = "SFC4";
+                               status = "disabled";
+                       };
+
+                       tegra_mvc1: mvc@290a000 {
+                               compatible = "nvidia,tegra186-mvc",
+                                            "nvidia,tegra210-mvc";
+                               reg = <0x290a000 0x200>;
+                               sound-name-prefix = "MVC1";
+                               status = "disabled";
+                       };
+
+                       tegra_mvc2: mvc@290a200 {
+                               compatible = "nvidia,tegra186-mvc",
+                                            "nvidia,tegra210-mvc";
+                               reg = <0x290a200 0x200>;
+                               sound-name-prefix = "MVC2";
+                               status = "disabled";
+                       };
+
+                       tegra_amx1: amx@2903000 {
+                               compatible = "nvidia,tegra186-amx",
+                                            "nvidia,tegra210-amx";
+                               reg = <0x2903000 0x100>;
+                               sound-name-prefix = "AMX1";
+                               status = "disabled";
+                       };
+
+                       tegra_amx2: amx@2903100 {
+                               compatible = "nvidia,tegra186-amx",
+                                            "nvidia,tegra210-amx";
+                               reg = <0x2903100 0x100>;
+                               sound-name-prefix = "AMX2";
+                               status = "disabled";
+                       };
+
+                       tegra_amx3: amx@2903200 {
+                               compatible = "nvidia,tegra186-amx",
+                                            "nvidia,tegra210-amx";
+                               reg = <0x2903200 0x100>;
+                               sound-name-prefix = "AMX3";
+                               status = "disabled";
+                       };
+
+                       tegra_amx4: amx@2903300 {
+                               compatible = "nvidia,tegra186-amx",
+                                            "nvidia,tegra210-amx";
+                               reg = <0x2903300 0x100>;
+                               sound-name-prefix = "AMX4";
+                               status = "disabled";
+                       };
+
+                       tegra_adx1: adx@2903800 {
+                               compatible = "nvidia,tegra186-adx",
+                                            "nvidia,tegra210-adx";
+                               reg = <0x2903800 0x100>;
+                               sound-name-prefix = "ADX1";
+                               status = "disabled";
+                       };
+
+                       tegra_adx2: adx@2903900 {
+                               compatible = "nvidia,tegra186-adx",
+                                            "nvidia,tegra210-adx";
+                               reg = <0x2903900 0x100>;
+                               sound-name-prefix = "ADX2";
+                               status = "disabled";
+                       };
+
+                       tegra_adx3: adx@2903a00 {
+                               compatible = "nvidia,tegra186-adx",
+                                            "nvidia,tegra210-adx";
+                               reg = <0x2903a00 0x100>;
+                               sound-name-prefix = "ADX3";
+                               status = "disabled";
+                       };
+
+                       tegra_adx4: adx@2903b00 {
+                               compatible = "nvidia,tegra186-adx",
+                                            "nvidia,tegra210-adx";
+                               reg = <0x2903b00 0x100>;
+                               sound-name-prefix = "ADX4";
+                               status = "disabled";
+                       };
+
+                       tegra_amixer: amixer@290bb00 {
+                               compatible = "nvidia,tegra186-amixer",
+                                            "nvidia,tegra210-amixer";
+                               reg = <0x290bb00 0x800>;
+                               sound-name-prefix = "MIXER1";
+                               status = "disabled";
+                       };
                };
        };
 
                        power-domains = <&bpmp TEGRA186_POWER_DOMAIN_DISP>;
                };
 
+               nvdec@15480000 {
+                       compatible = "nvidia,tegra186-nvdec";
+                       reg = <0x15480000 0x40000>;
+                       clocks = <&bpmp TEGRA186_CLK_NVDEC>;
+                       clock-names = "nvdec";
+                       resets = <&bpmp TEGRA186_RESET_NVDEC>;
+                       reset-names = "nvdec";
+
+                       power-domains = <&bpmp TEGRA186_POWER_DOMAIN_NVDEC>;
+                       interconnects = <&mc TEGRA186_MEMORY_CLIENT_NVDECSRD &emc>,
+                                       <&mc TEGRA186_MEMORY_CLIENT_NVDECSRD1 &emc>,
+                                       <&mc TEGRA186_MEMORY_CLIENT_NVDECSWR &emc>;
+                       interconnect-names = "dma-mem", "read-1", "write";
+                       iommus = <&smmu TEGRA186_SID_NVDEC>;
+               };
+
                sor0: sor@15540000 {
                        compatible = "nvidia,tegra186-sor";
                        reg = <0x15540000 0x10000>;
index 96bd01c..9f34871 100644 (file)
                                                        remote-endpoint = <&dmic3_cif_ep>;
                                                };
                                        };
+
+                                       xbar_sfc1_in_port: port@20 {
+                                               reg = <0x20>;
+
+                                               xbar_sfc1_in_ep: endpoint {
+                                                       remote-endpoint = <&sfc1_cif_in_ep>;
+                                               };
+                                       };
+
+                                       port@21 {
+                                               reg = <0x21>;
+
+                                               xbar_sfc1_out_ep: endpoint {
+                                                       remote-endpoint = <&sfc1_cif_out_ep>;
+                                               };
+                                       };
+
+                                       xbar_sfc2_in_port: port@22 {
+                                               reg = <0x22>;
+
+                                               xbar_sfc2_in_ep: endpoint {
+                                                       remote-endpoint = <&sfc2_cif_in_ep>;
+                                               };
+                                       };
+
+                                       port@23 {
+                                               reg = <0x23>;
+
+                                               xbar_sfc2_out_ep: endpoint {
+                                                       remote-endpoint = <&sfc2_cif_out_ep>;
+                                               };
+                                       };
+
+                                       xbar_sfc3_in_port: port@24 {
+                                               reg = <0x24>;
+
+                                               xbar_sfc3_in_ep: endpoint {
+                                                       remote-endpoint = <&sfc3_cif_in_ep>;
+                                               };
+                                       };
+
+                                       port@25 {
+                                               reg = <0x25>;
+
+                                               xbar_sfc3_out_ep: endpoint {
+                                                       remote-endpoint = <&sfc3_cif_out_ep>;
+                                               };
+                                       };
+
+                                       xbar_sfc4_in_port: port@26 {
+                                               reg = <0x26>;
+
+                                               xbar_sfc4_in_ep: endpoint {
+                                                       remote-endpoint = <&sfc4_cif_in_ep>;
+                                               };
+                                       };
+
+                                       port@27 {
+                                               reg = <0x27>;
+
+                                               xbar_sfc4_out_ep: endpoint {
+                                                       remote-endpoint = <&sfc4_cif_out_ep>;
+                                               };
+                                       };
+
+                                       xbar_mvc1_in_port: port@28 {
+                                               reg = <0x28>;
+
+                                               xbar_mvc1_in_ep: endpoint {
+                                                       remote-endpoint = <&mvc1_cif_in_ep>;
+                                               };
+                                       };
+
+                                       port@29 {
+                                               reg = <0x29>;
+
+                                               xbar_mvc1_out_ep: endpoint {
+                                                       remote-endpoint = <&mvc1_cif_out_ep>;
+                                               };
+                                       };
+
+                                       xbar_mvc2_in_port: port@2a {
+                                               reg = <0x2a>;
+
+                                               xbar_mvc2_in_ep: endpoint {
+                                                       remote-endpoint = <&mvc2_cif_in_ep>;
+                                               };
+                                       };
+
+                                       port@2b {
+                                               reg = <0x2b>;
+
+                                               xbar_mvc2_out_ep: endpoint {
+                                                       remote-endpoint = <&mvc2_cif_out_ep>;
+                                               };
+                                       };
+
+                                       xbar_amx1_in1_port: port@2c {
+                                               reg = <0x2c>;
+
+                                               xbar_amx1_in1_ep: endpoint {
+                                                       remote-endpoint = <&amx1_in1_ep>;
+                                               };
+                                       };
+
+                                       xbar_amx1_in2_port: port@2d {
+                                               reg = <0x2d>;
+
+                                               xbar_amx1_in2_ep: endpoint {
+                                                       remote-endpoint = <&amx1_in2_ep>;
+                                               };
+                                       };
+
+                                       xbar_amx1_in3_port: port@2e {
+                                               reg = <0x2e>;
+
+                                               xbar_amx1_in3_ep: endpoint {
+                                                       remote-endpoint = <&amx1_in3_ep>;
+                                               };
+                                       };
+
+                                       xbar_amx1_in4_port: port@2f {
+                                               reg = <0x2f>;
+
+                                               xbar_amx1_in4_ep: endpoint {
+                                                       remote-endpoint = <&amx1_in4_ep>;
+                                               };
+                                       };
+
+                                       port@30 {
+                                               reg = <0x30>;
+
+                                               xbar_amx1_out_ep: endpoint {
+                                                       remote-endpoint = <&amx1_out_ep>;
+                                               };
+                                       };
+
+                                       xbar_amx2_in1_port: port@31 {
+                                               reg = <0x31>;
+
+                                               xbar_amx2_in1_ep: endpoint {
+                                                       remote-endpoint = <&amx2_in1_ep>;
+                                               };
+                                       };
+
+                                       xbar_amx2_in2_port: port@32 {
+                                               reg = <0x32>;
+
+                                               xbar_amx2_in2_ep: endpoint {
+                                                       remote-endpoint = <&amx2_in2_ep>;
+                                               };
+                                       };
+
+                                       xbar_amx2_in3_port: port@33 {
+                                               reg = <0x33>;
+
+                                               xbar_amx2_in3_ep: endpoint {
+                                                       remote-endpoint = <&amx2_in3_ep>;
+                                               };
+                                       };
+
+                                       xbar_amx2_in4_port: port@34 {
+                                               reg = <0x34>;
+
+                                               xbar_amx2_in4_ep: endpoint {
+                                                       remote-endpoint = <&amx2_in4_ep>;
+                                               };
+                                       };
+
+                                       port@35 {
+                                               reg = <0x35>;
+
+                                               xbar_amx2_out_ep: endpoint {
+                                                       remote-endpoint = <&amx2_out_ep>;
+                                               };
+                                       };
+
+                                       xbar_amx3_in1_port: port@36 {
+                                               reg = <0x36>;
+
+                                               xbar_amx3_in1_ep: endpoint {
+                                                       remote-endpoint = <&amx3_in1_ep>;
+                                               };
+                                       };
+
+                                       xbar_amx3_in2_port: port@37 {
+                                               reg = <0x37>;
+
+                                               xbar_amx3_in2_ep: endpoint {
+                                                       remote-endpoint = <&amx3_in2_ep>;
+                                               };
+                                       };
+
+                                       xbar_amx3_in3_port: port@38 {
+                                               reg = <0x38>;
+
+                                               xbar_amx3_in3_ep: endpoint {
+                                                       remote-endpoint = <&amx3_in3_ep>;
+                                               };
+                                       };
+
+                                       xbar_amx3_in4_port: port@39 {
+                                               reg = <0x39>;
+
+                                               xbar_amx3_in4_ep: endpoint {
+                                                       remote-endpoint = <&amx3_in4_ep>;
+                                               };
+                                       };
+
+                                       port@3a {
+                                               reg = <0x3a>;
+
+                                               xbar_amx3_out_ep: endpoint {
+                                                       remote-endpoint = <&amx3_out_ep>;
+                                               };
+                                       };
+
+                                       xbar_amx4_in1_port: port@3b {
+                                               reg = <0x3b>;
+
+                                               xbar_amx4_in1_ep: endpoint {
+                                                       remote-endpoint = <&amx4_in1_ep>;
+                                               };
+                                       };
+
+                                       xbar_amx4_in2_port: port@3c {
+                                               reg = <0x3c>;
+
+                                               xbar_amx4_in2_ep: endpoint {
+                                                       remote-endpoint = <&amx4_in2_ep>;
+                                               };
+                                       };
+
+                                       xbar_amx4_in3_port: port@3d {
+                                               reg = <0x3d>;
+
+                                               xbar_amx4_in3_ep: endpoint {
+                                                       remote-endpoint = <&amx4_in3_ep>;
+                                               };
+                                       };
+
+                                       xbar_amx4_in4_port: port@3e {
+                                               reg = <0x3e>;
+
+                                               xbar_amx4_in4_ep: endpoint {
+                                                       remote-endpoint = <&amx4_in4_ep>;
+                                               };
+                                       };
+
+                                       port@3f {
+                                               reg = <0x3f>;
+
+                                               xbar_amx4_out_ep: endpoint {
+                                                       remote-endpoint = <&amx4_out_ep>;
+                                               };
+                                       };
+
+                                       xbar_adx1_in_port: port@40 {
+                                               reg = <0x40>;
+
+                                               xbar_adx1_in_ep: endpoint {
+                                                       remote-endpoint = <&adx1_in_ep>;
+                                               };
+                                       };
+
+                                       port@41 {
+                                               reg = <0x41>;
+
+                                               xbar_adx1_out1_ep: endpoint {
+                                                       remote-endpoint = <&adx1_out1_ep>;
+                                               };
+                                       };
+
+                                       port@42 {
+                                               reg = <0x42>;
+
+                                               xbar_adx1_out2_ep: endpoint {
+                                                       remote-endpoint = <&adx1_out2_ep>;
+                                               };
+                                       };
+
+                                       port@43 {
+                                               reg = <0x43>;
+
+                                               xbar_adx1_out3_ep: endpoint {
+                                                       remote-endpoint = <&adx1_out3_ep>;
+                                               };
+                                       };
+
+                                       port@44 {
+                                               reg = <0x44>;
+
+                                               xbar_adx1_out4_ep: endpoint {
+                                                       remote-endpoint = <&adx1_out4_ep>;
+                                               };
+                                       };
+
+                                       xbar_adx2_in_port: port@45 {
+                                               reg = <0x45>;
+
+                                               xbar_adx2_in_ep: endpoint {
+                                                       remote-endpoint = <&adx2_in_ep>;
+                                               };
+                                       };
+
+                                       port@46 {
+                                               reg = <0x46>;
+
+                                               xbar_adx2_out1_ep: endpoint {
+                                                       remote-endpoint = <&adx2_out1_ep>;
+                                               };
+                                       };
+
+                                       port@47 {
+                                               reg = <0x47>;
+
+                                               xbar_adx2_out2_ep: endpoint {
+                                                       remote-endpoint = <&adx2_out2_ep>;
+                                               };
+                                       };
+
+                                       port@48 {
+                                               reg = <0x48>;
+
+                                               xbar_adx2_out3_ep: endpoint {
+                                                       remote-endpoint = <&adx2_out3_ep>;
+                                               };
+                                       };
+
+                                       port@49 {
+                                               reg = <0x49>;
+
+                                               xbar_adx2_out4_ep: endpoint {
+                                                       remote-endpoint = <&adx2_out4_ep>;
+                                               };
+                                       };
+
+                                       xbar_adx3_in_port: port@4a {
+                                               reg = <0x4a>;
+
+                                               xbar_adx3_in_ep: endpoint {
+                                                       remote-endpoint = <&adx3_in_ep>;
+                                               };
+                                       };
+
+                                       port@4b {
+                                               reg = <0x4b>;
+
+                                               xbar_adx3_out1_ep: endpoint {
+                                                       remote-endpoint = <&adx3_out1_ep>;
+                                               };
+                                       };
+
+                                       port@4c {
+                                               reg = <0x4c>;
+
+                                               xbar_adx3_out2_ep: endpoint {
+                                                       remote-endpoint = <&adx3_out2_ep>;
+                                               };
+                                       };
+
+                                       port@4d {
+                                               reg = <0x4d>;
+
+                                               xbar_adx3_out3_ep: endpoint {
+                                                       remote-endpoint = <&adx3_out3_ep>;
+                                               };
+                                       };
+
+                                       port@4e {
+                                               reg = <0x4e>;
+
+                                               xbar_adx3_out4_ep: endpoint {
+                                                       remote-endpoint = <&adx3_out4_ep>;
+                                               };
+                                       };
+
+                                       xbar_adx4_in_port: port@4f {
+                                               reg = <0x4f>;
+
+                                               xbar_adx4_in_ep: endpoint {
+                                                       remote-endpoint = <&adx4_in_ep>;
+                                               };
+                                       };
+
+                                       port@50 {
+                                               reg = <0x50>;
+
+                                               xbar_adx4_out1_ep: endpoint {
+                                                       remote-endpoint = <&adx4_out1_ep>;
+                                               };
+                                       };
+
+                                       port@51 {
+                                               reg = <0x51>;
+
+                                               xbar_adx4_out2_ep: endpoint {
+                                                       remote-endpoint = <&adx4_out2_ep>;
+                                               };
+                                       };
+
+                                       port@52 {
+                                               reg = <0x52>;
+
+                                               xbar_adx4_out3_ep: endpoint {
+                                                       remote-endpoint = <&adx4_out3_ep>;
+                                               };
+                                       };
+
+                                       port@53 {
+                                               reg = <0x53>;
+
+                                               xbar_adx4_out4_ep: endpoint {
+                                                       remote-endpoint = <&adx4_out4_ep>;
+                                               };
+                                       };
+
+                                       xbar_mixer_in1_port: port@54 {
+                                               reg = <0x54>;
+
+                                               xbar_mixer_in1_ep: endpoint {
+                                                       remote-endpoint = <&mixer_in1_ep>;
+                                               };
+                                       };
+
+                                       xbar_mixer_in2_port: port@55 {
+                                               reg = <0x55>;
+
+                                               xbar_mixer_in2_ep: endpoint {
+                                                       remote-endpoint = <&mixer_in2_ep>;
+                                               };
+                                       };
+
+                                       xbar_mixer_in3_port: port@56 {
+                                               reg = <0x56>;
+
+                                               xbar_mixer_in3_ep: endpoint {
+                                                       remote-endpoint = <&mixer_in3_ep>;
+                                               };
+                                       };
+
+                                       xbar_mixer_in4_port: port@57 {
+                                               reg = <0x57>;
+
+                                               xbar_mixer_in4_ep: endpoint {
+                                                       remote-endpoint = <&mixer_in4_ep>;
+                                               };
+                                       };
+
+                                       xbar_mixer_in5_port: port@58 {
+                                               reg = <0x58>;
+
+                                               xbar_mixer_in5_ep: endpoint {
+                                                       remote-endpoint = <&mixer_in5_ep>;
+                                               };
+                                       };
+
+                                       xbar_mixer_in6_port: port@59 {
+                                               reg = <0x59>;
+
+                                               xbar_mixer_in6_ep: endpoint {
+                                                       remote-endpoint = <&mixer_in6_ep>;
+                                               };
+                                       };
+
+                                       xbar_mixer_in7_port: port@5a {
+                                               reg = <0x5a>;
+
+                                               xbar_mixer_in7_ep: endpoint {
+                                                       remote-endpoint = <&mixer_in7_ep>;
+                                               };
+                                       };
+
+                                       xbar_mixer_in8_port: port@5b {
+                                               reg = <0x5b>;
+
+                                               xbar_mixer_in8_ep: endpoint {
+                                                       remote-endpoint = <&mixer_in8_ep>;
+                                               };
+                                       };
+
+                                       xbar_mixer_in9_port: port@5c {
+                                               reg = <0x5c>;
+
+                                               xbar_mixer_in9_ep: endpoint {
+                                                       remote-endpoint = <&mixer_in9_ep>;
+                                               };
+                                       };
+
+                                       xbar_mixer_in10_port: port@5d {
+                                               reg = <0x5d>;
+
+                                               xbar_mixer_in10_ep: endpoint {
+                                                       remote-endpoint = <&mixer_in10_ep>;
+                                               };
+                                       };
+
+                                       port@5e {
+                                               reg = <0x5e>;
+
+                                               xbar_mixer_out1_ep: endpoint {
+                                                       remote-endpoint = <&mixer_out1_ep>;
+                                               };
+                                       };
+
+                                       port@5f {
+                                               reg = <0x5f>;
+
+                                               xbar_mixer_out2_ep: endpoint {
+                                                       remote-endpoint = <&mixer_out2_ep>;
+                                               };
+                                       };
+
+                                       port@60 {
+                                               reg = <0x60>;
+
+                                               xbar_mixer_out3_ep: endpoint {
+                                                       remote-endpoint = <&mixer_out3_ep>;
+                                               };
+                                       };
+
+                                       port@61 {
+                                               reg = <0x61>;
+
+                                               xbar_mixer_out4_ep: endpoint {
+                                                       remote-endpoint = <&mixer_out4_ep>;
+                                               };
+                                       };
+
+                                       port@62 {
+                                               reg = <0x62>;
+
+                                               xbar_mixer_out5_ep: endpoint {
+                                                       remote-endpoint = <&mixer_out5_ep>;
+                                               };
+                                       };
+                               };
+
+                               admaif@290f000 {
+                                       status = "okay";
+
+                                       ports {
+                                               #address-cells = <1>;
+                                               #size-cells = <0>;
+
+                                               admaif0_port: port@0 {
+                                                       reg = <0x0>;
+
+                                                       admaif0_ep: endpoint {
+                                                               remote-endpoint = <&xbar_admaif0_ep>;
+                                                       };
+                                               };
+
+                                               admaif1_port: port@1 {
+                                                       reg = <0x1>;
+
+                                                       admaif1_ep: endpoint {
+                                                               remote-endpoint = <&xbar_admaif1_ep>;
+                                                       };
+                                               };
+
+                                               admaif2_port: port@2 {
+                                                       reg = <0x2>;
+
+                                                       admaif2_ep: endpoint {
+                                                               remote-endpoint = <&xbar_admaif2_ep>;
+                                                       };
+                                               };
+
+                                               admaif3_port: port@3 {
+                                                       reg = <0x3>;
+
+                                                       admaif3_ep: endpoint {
+                                                               remote-endpoint = <&xbar_admaif3_ep>;
+                                                       };
+                                               };
+
+                                               admaif4_port: port@4 {
+                                                       reg = <0x4>;
+
+                                                       admaif4_ep: endpoint {
+                                                               remote-endpoint = <&xbar_admaif4_ep>;
+                                                       };
+                                               };
+
+                                               admaif5_port: port@5 {
+                                                       reg = <0x5>;
+
+                                                       admaif5_ep: endpoint {
+                                                               remote-endpoint = <&xbar_admaif5_ep>;
+                                                       };
+                                               };
+
+                                               admaif6_port: port@6 {
+                                                       reg = <0x6>;
+
+                                                       admaif6_ep: endpoint {
+                                                               remote-endpoint = <&xbar_admaif6_ep>;
+                                                       };
+                                               };
+
+                                               admaif7_port: port@7 {
+                                                       reg = <0x7>;
+
+                                                       admaif7_ep: endpoint {
+                                                               remote-endpoint = <&xbar_admaif7_ep>;
+                                                       };
+                                               };
+
+                                               admaif8_port: port@8 {
+                                                       reg = <0x8>;
+
+                                                       admaif8_ep: endpoint {
+                                                               remote-endpoint = <&xbar_admaif8_ep>;
+                                                       };
+                                               };
+
+                                               admaif9_port: port@9 {
+                                                       reg = <0x9>;
+
+                                                       admaif9_ep: endpoint {
+                                                               remote-endpoint = <&xbar_admaif9_ep>;
+                                                       };
+                                               };
+
+                                               admaif10_port: port@a {
+                                                       reg = <0xa>;
+
+                                                       admaif10_ep: endpoint {
+                                                               remote-endpoint = <&xbar_admaif10_ep>;
+                                                       };
+                                               };
+
+                                               admaif11_port: port@b {
+                                                       reg = <0xb>;
+
+                                                       admaif11_ep: endpoint {
+                                                               remote-endpoint = <&xbar_admaif11_ep>;
+                                                       };
+                                               };
+
+                                               admaif12_port: port@c {
+                                                       reg = <0xc>;
+
+                                                       admaif12_ep: endpoint {
+                                                               remote-endpoint = <&xbar_admaif12_ep>;
+                                                       };
+                                               };
+
+                                               admaif13_port: port@d {
+                                                       reg = <0xd>;
+
+                                                       admaif13_ep: endpoint {
+                                                               remote-endpoint = <&xbar_admaif13_ep>;
+                                                       };
+                                               };
+
+                                               admaif14_port: port@e {
+                                                       reg = <0xe>;
+
+                                                       admaif14_ep: endpoint {
+                                                               remote-endpoint = <&xbar_admaif14_ep>;
+                                                       };
+                                               };
+
+                                               admaif15_port: port@f {
+                                                       reg = <0xf>;
+
+                                                       admaif15_ep: endpoint {
+                                                               remote-endpoint = <&xbar_admaif15_ep>;
+                                                       };
+                                               };
+
+                                               admaif16_port: port@10 {
+                                                       reg = <0x10>;
+
+                                                       admaif16_ep: endpoint {
+                                                               remote-endpoint = <&xbar_admaif16_ep>;
+                                                       };
+                                               };
+
+                                               admaif17_port: port@11 {
+                                                       reg = <0x11>;
+
+                                                       admaif17_ep: endpoint {
+                                                               remote-endpoint = <&xbar_admaif17_ep>;
+                                                       };
+                                               };
+
+                                               admaif18_port: port@12 {
+                                                       reg = <0x12>;
+
+                                                       admaif18_ep: endpoint {
+                                                               remote-endpoint = <&xbar_admaif18_ep>;
+                                                       };
+                                               };
+
+                                               admaif19_port: port@13 {
+                                                       reg = <0x13>;
+
+                                                       admaif19_ep: endpoint {
+                                                               remote-endpoint = <&xbar_admaif19_ep>;
+                                                       };
+                                               };
+                                       };
+                               };
+
+                               i2s@2901000 {
+                                       status = "okay";
+
+                                       ports {
+                                               #address-cells = <1>;
+                                               #size-cells = <0>;
+
+                                               port@0 {
+                                                       reg = <0>;
+
+                                                       i2s1_cif_ep: endpoint {
+                                                               remote-endpoint = <&xbar_i2s1_ep>;
+                                                       };
+                                               };
+
+                                               i2s1_port: port@1 {
+                                                       reg = <1>;
+
+                                                       i2s1_dap_ep: endpoint {
+                                                               dai-format = "i2s";
+                                                               remote-endpoint = <&rt5658_ep>;
+                                                       };
+                                               };
+                                       };
+                               };
+
+                               i2s@2901100 {
+                                       status = "okay";
+
+                                       ports {
+                                               #address-cells = <1>;
+                                               #size-cells = <0>;
+
+                                               port@0 {
+                                                       reg = <0>;
+
+                                                       i2s2_cif_ep: endpoint {
+                                                               remote-endpoint = <&xbar_i2s2_ep>;
+                                                       };
+                                               };
+
+                                               i2s2_port: port@1 {
+                                                       reg = <1>;
+
+                                                       i2s2_dap_ep: endpoint {
+                                                               dai-format = "i2s";
+                                                               /* Place holder for external Codec */
+                                                       };
+                                               };
+                                       };
+                               };
+
+                               i2s@2901300 {
+                                       status = "okay";
+
+                                       ports {
+                                               #address-cells = <1>;
+                                               #size-cells = <0>;
+
+                                               port@0 {
+                                                       reg = <0>;
+
+                                                       i2s4_cif_ep: endpoint {
+                                                               remote-endpoint = <&xbar_i2s4_ep>;
+                                                       };
+                                               };
+
+                                               i2s4_port: port@1 {
+                                                       reg = <1>;
+
+                                                       i2s4_dap_ep: endpoint {
+                                                               dai-format = "i2s";
+                                                               /* Place holder for external Codec */
+                                                       };
+                                               };
+                                       };
+                               };
+
+                               i2s@2901500 {
+                                       status = "okay";
+
+                                       ports {
+                                               #address-cells = <1>;
+                                               #size-cells = <0>;
+
+                                               port@0 {
+                                                       reg = <0>;
+
+                                                       i2s6_cif_ep: endpoint {
+                                                               remote-endpoint = <&xbar_i2s6_ep>;
+                                                       };
+                                               };
+
+                                               i2s6_port: port@1 {
+                                                       reg = <1>;
+
+                                                       i2s6_dap_ep: endpoint@0 {
+                                                               dai-format = "i2s";
+                                                               /* Place holder for external Codec */
+                                                       };
+                                               };
+                                       };
+                               };
+
+                               dmic@2904200 {
+                                       status = "okay";
+
+                                       ports {
+                                               #address-cells = <1>;
+                                               #size-cells = <0>;
+
+                                               port@0 {
+                                                       reg = <0>;
+
+                                                       dmic3_cif_ep: endpoint {
+                                                               remote-endpoint = <&xbar_dmic3_ep>;
+                                                       };
+                                               };
+
+                                               dmic3_port: port@1 {
+                                                       reg = <1>;
+
+                                                       dmic3_dap_ep: endpoint {
+                                                               /* Place holder for external Codec */
+                                                       };
+                                               };
+                                       };
+                               };
+
+                               sfc@2902000 {
+                                       status = "okay";
+
+                                       ports {
+                                               #address-cells = <1>;
+                                               #size-cells = <0>;
+
+                                               port@0 {
+                                                       reg = <0>;
+
+                                                       sfc1_cif_in_ep: endpoint {
+                                                               remote-endpoint = <&xbar_sfc1_in_ep>;
+                                                       };
+                                               };
+
+                                               sfc1_out_port: port@1 {
+                                                       reg = <1>;
+
+                                                       sfc1_cif_out_ep: endpoint {
+                                                               remote-endpoint = <&xbar_sfc1_out_ep>;
+                                                       };
+                                               };
+                                       };
+                               };
+
+                               sfc@2902200 {
+                                       status = "okay";
+
+                                       ports {
+                                               #address-cells = <1>;
+                                               #size-cells = <0>;
+
+                                               port@0 {
+                                                       reg = <0>;
+
+                                                       sfc2_cif_in_ep: endpoint {
+                                                               remote-endpoint = <&xbar_sfc2_in_ep>;
+                                                       };
+                                               };
+
+                                               sfc2_out_port: port@1 {
+                                                       reg = <1>;
+
+                                                       sfc2_cif_out_ep: endpoint {
+                                                               remote-endpoint = <&xbar_sfc2_out_ep>;
+                                                       };
+                                               };
+                                       };
+                               };
+
+                               sfc@2902400 {
+                                       status = "okay";
+
+                                       ports {
+                                               #address-cells = <1>;
+                                               #size-cells = <0>;
+
+                                               port@0 {
+                                                       reg = <0>;
+
+                                                       sfc3_cif_in_ep: endpoint {
+                                                               remote-endpoint = <&xbar_sfc3_in_ep>;
+                                                       };
+                                               };
+
+                                               sfc3_out_port: port@1 {
+                                                       reg = <1>;
+
+                                                       sfc3_cif_out_ep: endpoint {
+                                                               remote-endpoint = <&xbar_sfc3_out_ep>;
+                                                       };
+                                               };
+                                       };
+                               };
+
+                               sfc@2902600 {
+                                       status = "okay";
+
+                                       ports {
+                                               #address-cells = <1>;
+                                               #size-cells = <0>;
+
+                                               port@0 {
+                                                       reg = <0>;
+
+                                                       sfc4_cif_in_ep: endpoint {
+                                                               remote-endpoint = <&xbar_sfc4_in_ep>;
+                                                       };
+                                               };
+
+                                               sfc4_out_port: port@1 {
+                                                       reg = <1>;
+
+                                                       sfc4_cif_out_ep: endpoint {
+                                                               remote-endpoint = <&xbar_sfc4_out_ep>;
+                                                       };
+                                               };
+                                       };
+                               };
+
+                               mvc@290a000 {
+                                       status = "okay";
+
+                                       ports {
+                                               #address-cells = <1>;
+                                               #size-cells = <0>;
+
+                                               port@0 {
+                                                       reg = <0>;
+
+                                                       mvc1_cif_in_ep: endpoint {
+                                                               remote-endpoint = <&xbar_mvc1_in_ep>;
+                                                       };
+                                               };
+
+                                               mvc1_out_port: port@1 {
+                                                       reg = <1>;
+
+                                                       mvc1_cif_out_ep: endpoint {
+                                                               remote-endpoint = <&xbar_mvc1_out_ep>;
+                                                       };
+                                               };
+                                       };
+                               };
+
+                               mvc@290a200 {
+                                       status = "okay";
+
+                                       ports {
+                                               #address-cells = <1>;
+                                               #size-cells = <0>;
+
+                                               port@0 {
+                                                       reg = <0>;
+
+                                                       mvc2_cif_in_ep: endpoint {
+                                                               remote-endpoint = <&xbar_mvc2_in_ep>;
+                                                       };
+                                               };
+
+                                               mvc2_out_port: port@1 {
+                                                       reg = <1>;
+
+                                                       mvc2_cif_out_ep: endpoint {
+                                                               remote-endpoint = <&xbar_mvc2_out_ep>;
+                                                       };
+                                               };
+                                       };
+                               };
+
+                               amx@2903000 {
+                                       status = "okay";
+
+                                       ports {
+                                               #address-cells = <1>;
+                                               #size-cells = <0>;
+
+                                               port@0 {
+                                                       reg = <0>;
+
+                                                       amx1_in1_ep: endpoint {
+                                                               remote-endpoint = <&xbar_amx1_in1_ep>;
+                                                       };
+                                               };
+
+                                               port@1 {
+                                                       reg = <1>;
+
+                                                       amx1_in2_ep: endpoint {
+                                                               remote-endpoint = <&xbar_amx1_in2_ep>;
+                                                       };
+                                               };
+
+                                               port@2 {
+                                                       reg = <2>;
+
+                                                       amx1_in3_ep: endpoint {
+                                                               remote-endpoint = <&xbar_amx1_in3_ep>;
+                                                       };
+                                               };
+
+                                               port@3 {
+                                                       reg = <3>;
+
+                                                       amx1_in4_ep: endpoint {
+                                                               remote-endpoint = <&xbar_amx1_in4_ep>;
+                                                       };
+                                               };
+
+                                               amx1_out_port: port@4 {
+                                                       reg = <4>;
+
+                                                       amx1_out_ep: endpoint {
+                                                               remote-endpoint = <&xbar_amx1_out_ep>;
+                                                       };
+                                               };
+                                       };
                                };
 
-                               admaif@290f000 {
+                               amx@2903100 {
                                        status = "okay";
 
                                        ports {
                                                #address-cells = <1>;
                                                #size-cells = <0>;
 
-                                               admaif0_port: port@0 {
-                                                       reg = <0x0>;
+                                               port@0 {
+                                                       reg = <0>;
 
-                                                       admaif0_ep: endpoint {
-                                                               remote-endpoint = <&xbar_admaif0_ep>;
+                                                       amx2_in1_ep: endpoint {
+                                                               remote-endpoint = <&xbar_amx2_in1_ep>;
                                                        };
                                                };
 
-                                               admaif1_port: port@1 {
-                                                       reg = <0x1>;
+                                               port@1 {
+                                                       reg = <1>;
 
-                                                       admaif1_ep: endpoint {
-                                                               remote-endpoint = <&xbar_admaif1_ep>;
+                                                       amx2_in2_ep: endpoint {
+                                                               remote-endpoint = <&xbar_amx2_in2_ep>;
                                                        };
                                                };
 
-                                               admaif2_port: port@2 {
-                                                       reg = <0x2>;
+                                               amx2_in3_port: port@2 {
+                                                       reg = <2>;
 
-                                                       admaif2_ep: endpoint {
-                                                               remote-endpoint = <&xbar_admaif2_ep>;
+                                                       amx2_in3_ep: endpoint {
+                                                               remote-endpoint = <&xbar_amx2_in3_ep>;
                                                        };
                                                };
 
-                                               admaif3_port: port@3 {
-                                                       reg = <0x3>;
+                                               amx2_in4_port: port@3 {
+                                                       reg = <3>;
 
-                                                       admaif3_ep: endpoint {
-                                                               remote-endpoint = <&xbar_admaif3_ep>;
+                                                       amx2_in4_ep: endpoint {
+                                                               remote-endpoint = <&xbar_amx2_in4_ep>;
                                                        };
                                                };
 
-                                               admaif4_port: port@4 {
-                                                       reg = <0x4>;
+                                               amx2_out_port: port@4 {
+                                                       reg = <4>;
 
-                                                       admaif4_ep: endpoint {
-                                                               remote-endpoint = <&xbar_admaif4_ep>;
+                                                       amx2_out_ep: endpoint {
+                                                               remote-endpoint = <&xbar_amx2_out_ep>;
                                                        };
                                                };
+                                       };
+                               };
 
-                                               admaif5_port: port@5 {
-                                                       reg = <0x5>;
+                               amx@2903200 {
+                                       status = "okay";
 
-                                                       admaif5_ep: endpoint {
-                                                               remote-endpoint = <&xbar_admaif5_ep>;
+                                       ports {
+                                               #address-cells = <1>;
+                                               #size-cells = <0>;
+
+                                               port@0 {
+                                                       reg = <0>;
+
+                                                       amx3_in1_ep: endpoint {
+                                                               remote-endpoint = <&xbar_amx3_in1_ep>;
                                                        };
                                                };
 
-                                               admaif6_port: port@6 {
-                                                       reg = <0x6>;
+                                               port@1 {
+                                                       reg = <1>;
 
-                                                       admaif6_ep: endpoint {
-                                                               remote-endpoint = <&xbar_admaif6_ep>;
+                                                       amx3_in2_ep: endpoint {
+                                                               remote-endpoint = <&xbar_amx3_in2_ep>;
                                                        };
                                                };
 
-                                               admaif7_port: port@7 {
-                                                       reg = <0x7>;
+                                               port@2 {
+                                                       reg = <2>;
 
-                                                       admaif7_ep: endpoint {
-                                                               remote-endpoint = <&xbar_admaif7_ep>;
+                                                       amx3_in3_ep: endpoint {
+                                                               remote-endpoint = <&xbar_amx3_in3_ep>;
                                                        };
                                                };
 
-                                               admaif8_port: port@8 {
-                                                       reg = <0x8>;
+                                               port@3 {
+                                                       reg = <3>;
 
-                                                       admaif8_ep: endpoint {
-                                                               remote-endpoint = <&xbar_admaif8_ep>;
+                                                       amx3_in4_ep: endpoint {
+                                                               remote-endpoint = <&xbar_amx3_in4_ep>;
                                                        };
                                                };
 
-                                               admaif9_port: port@9 {
-                                                       reg = <0x9>;
+                                               amx3_out_port: port@4 {
+                                                       reg = <4>;
 
-                                                       admaif9_ep: endpoint {
-                                                               remote-endpoint = <&xbar_admaif9_ep>;
+                                                       amx3_out_ep: endpoint {
+                                                               remote-endpoint = <&xbar_amx3_out_ep>;
                                                        };
                                                };
+                                       };
+                               };
 
-                                               admaif10_port: port@a {
-                                                       reg = <0xa>;
+                               amx@2903300 {
+                                       status = "okay";
 
-                                                       admaif10_ep: endpoint {
-                                                               remote-endpoint = <&xbar_admaif10_ep>;
+                                       ports {
+                                               #address-cells = <1>;
+                                               #size-cells = <0>;
+
+                                               port@0 {
+                                                       reg = <0>;
+
+                                                       amx4_in1_ep: endpoint {
+                                                               remote-endpoint = <&xbar_amx4_in1_ep>;
                                                        };
                                                };
 
-                                               admaif11_port: port@b {
-                                                       reg = <0xb>;
+                                               port@1 {
+                                                       reg = <1>;
 
-                                                       admaif11_ep: endpoint {
-                                                               remote-endpoint = <&xbar_admaif11_ep>;
+                                                       amx4_in2_ep: endpoint {
+                                                               remote-endpoint = <&xbar_amx4_in2_ep>;
                                                        };
                                                };
 
-                                               admaif12_port: port@c {
-                                                       reg = <0xc>;
+                                               port@2 {
+                                                       reg = <2>;
 
-                                                       admaif12_ep: endpoint {
-                                                               remote-endpoint = <&xbar_admaif12_ep>;
+                                                       amx4_in3_ep: endpoint {
+                                                               remote-endpoint = <&xbar_amx4_in3_ep>;
                                                        };
                                                };
 
-                                               admaif13_port: port@d {
-                                                       reg = <0xd>;
+                                               port@3 {
+                                                       reg = <3>;
 
-                                                       admaif13_ep: endpoint {
-                                                               remote-endpoint = <&xbar_admaif13_ep>;
+                                                       amx4_in4_ep: endpoint {
+                                                               remote-endpoint = <&xbar_amx4_in4_ep>;
                                                        };
                                                };
 
-                                               admaif14_port: port@e {
-                                                       reg = <0xe>;
+                                               amx4_out_port: port@4 {
+                                                       reg = <4>;
 
-                                                       admaif14_ep: endpoint {
-                                                               remote-endpoint = <&xbar_admaif14_ep>;
+                                                       amx4_out_ep: endpoint {
+                                                               remote-endpoint = <&xbar_amx4_out_ep>;
                                                        };
                                                };
+                                       };
+                               };
 
-                                               admaif15_port: port@f {
-                                                       reg = <0xf>;
+                               adx@2903800 {
+                                       status = "okay";
 
-                                                       admaif15_ep: endpoint {
-                                                               remote-endpoint = <&xbar_admaif15_ep>;
+                                       ports {
+                                               #address-cells = <1>;
+                                               #size-cells = <0>;
+
+                                               port@0 {
+                                                       reg = <0>;
+
+                                                       adx1_in_ep: endpoint {
+                                                               remote-endpoint = <&xbar_adx1_in_ep>;
                                                        };
                                                };
 
-                                               admaif16_port: port@10 {
-                                                       reg = <0x10>;
+                                               adx1_out1_port: port@1 {
+                                                       reg = <1>;
 
-                                                       admaif16_ep: endpoint {
-                                                               remote-endpoint = <&xbar_admaif16_ep>;
+                                                       adx1_out1_ep: endpoint {
+                                                               remote-endpoint = <&xbar_adx1_out1_ep>;
                                                        };
                                                };
 
-                                               admaif17_port: port@11 {
-                                                       reg = <0x11>;
+                                               adx1_out2_port: port@2 {
+                                                       reg = <2>;
 
-                                                       admaif17_ep: endpoint {
-                                                               remote-endpoint = <&xbar_admaif17_ep>;
+                                                       adx1_out2_ep: endpoint {
+                                                               remote-endpoint = <&xbar_adx1_out2_ep>;
                                                        };
                                                };
 
-                                               admaif18_port: port@12 {
-                                                       reg = <0x12>;
+                                               adx1_out3_port: port@3 {
+                                                       reg = <3>;
 
-                                                       admaif18_ep: endpoint {
-                                                               remote-endpoint = <&xbar_admaif18_ep>;
+                                                       adx1_out3_ep: endpoint {
+                                                               remote-endpoint = <&xbar_adx1_out3_ep>;
                                                        };
                                                };
 
-                                               admaif19_port: port@13 {
-                                                       reg = <0x13>;
+                                               adx1_out4_port: port@4 {
+                                                       reg = <4>;
 
-                                                       admaif19_ep: endpoint {
-                                                               remote-endpoint = <&xbar_admaif19_ep>;
+                                                       adx1_out4_ep: endpoint {
+                                                               remote-endpoint = <&xbar_adx1_out4_ep>;
                                                        };
                                                };
                                        };
                                };
 
-                               i2s@2901000 {
+                               adx@2903900 {
                                        status = "okay";
 
                                        ports {
                                                port@0 {
                                                        reg = <0>;
 
-                                                       i2s1_cif_ep: endpoint {
-                                                               remote-endpoint = <&xbar_i2s1_ep>;
+                                                       adx2_in_ep: endpoint {
+                                                               remote-endpoint = <&xbar_adx2_in_ep>;
                                                        };
                                                };
 
-                                               i2s1_port: port@1 {
+                                               adx2_out1_port: port@1 {
                                                        reg = <1>;
 
-                                                       i2s1_dap_ep: endpoint {
-                                                               dai-format = "i2s";
-                                                               remote-endpoint = <&rt5658_ep>;
+                                                       adx2_out1_ep: endpoint {
+                                                               remote-endpoint = <&xbar_adx2_out1_ep>;
                                                        };
                                                };
-                                       };
-                               };
 
-                               i2s@2901100 {
-                                       status = "okay";
+                                               adx2_out2_port: port@2 {
+                                                       reg = <2>;
 
-                                       ports {
-                                               #address-cells = <1>;
-                                               #size-cells = <0>;
+                                                       adx2_out2_ep: endpoint {
+                                                               remote-endpoint = <&xbar_adx2_out2_ep>;
+                                                       };
+                                               };
 
-                                               port@0 {
-                                                       reg = <0>;
+                                               adx2_out3_port: port@3 {
+                                                       reg = <3>;
 
-                                                       i2s2_cif_ep: endpoint {
-                                                               remote-endpoint = <&xbar_i2s2_ep>;
+                                                       adx2_out3_ep: endpoint {
+                                                               remote-endpoint = <&xbar_adx2_out3_ep>;
                                                        };
                                                };
 
-                                               i2s2_port: port@1 {
-                                                       reg = <1>;
+                                               adx2_out4_port: port@4 {
+                                                       reg = <4>;
 
-                                                       i2s2_dap_ep: endpoint {
-                                                               dai-format = "i2s";
-                                                               /* Place holder for external Codec */
+                                                       adx2_out4_ep: endpoint {
+                                                               remote-endpoint = <&xbar_adx2_out4_ep>;
                                                        };
                                                };
                                        };
                                };
 
-                               i2s@2901300 {
+                               adx@2903a00 {
                                        status = "okay";
 
                                        ports {
                                                port@0 {
                                                        reg = <0>;
 
-                                                       i2s4_cif_ep: endpoint {
-                                                               remote-endpoint = <&xbar_i2s4_ep>;
+                                                       adx3_in_ep: endpoint {
+                                                               remote-endpoint = <&xbar_adx3_in_ep>;
                                                        };
                                                };
 
-                                               i2s4_port: port@1 {
+                                               adx3_out1_port: port@1 {
                                                        reg = <1>;
 
-                                                       i2s4_dap_ep: endpoint {
-                                                               dai-format = "i2s";
-                                                               /* Place holder for external Codec */
+                                                       adx3_out1_ep: endpoint {
+                                                               remote-endpoint = <&xbar_adx3_out1_ep>;
+                                                       };
+                                               };
+
+                                               adx3_out2_port: port@2 {
+                                                       reg = <2>;
+
+                                                       adx3_out2_ep: endpoint {
+                                                               remote-endpoint = <&xbar_adx3_out2_ep>;
+                                                       };
+                                               };
+
+                                               adx3_out3_port: port@3 {
+                                                       reg = <3>;
+
+                                                       adx3_out3_ep: endpoint {
+                                                               remote-endpoint = <&xbar_adx3_out3_ep>;
+                                                       };
+                                               };
+
+                                               adx3_out4_port: port@4 {
+                                                       reg = <4>;
+
+                                                       adx3_out4_ep: endpoint {
+                                                               remote-endpoint = <&xbar_adx3_out4_ep>;
                                                        };
                                                };
                                        };
                                };
 
-                               i2s@2901500 {
+                               adx@2903b00 {
                                        status = "okay";
 
                                        ports {
                                                port@0 {
                                                        reg = <0>;
 
-                                                       i2s6_cif_ep: endpoint {
-                                                               remote-endpoint = <&xbar_i2s6_ep>;
+                                                       adx4_in_ep: endpoint {
+                                                               remote-endpoint = <&xbar_adx4_in_ep>;
                                                        };
                                                };
 
-                                               i2s6_port: port@1 {
+                                               adx4_out1_port: port@1 {
                                                        reg = <1>;
 
-                                                       i2s6_dap_ep: endpoint@0 {
-                                                               dai-format = "i2s";
-                                                               /* Place holder for external Codec */
+                                                       adx4_out1_ep: endpoint {
+                                                               remote-endpoint = <&xbar_adx4_out1_ep>;
+                                                       };
+                                               };
+
+                                               adx4_out2_port: port@2 {
+                                                       reg = <2>;
+
+                                                       adx4_out2_ep: endpoint {
+                                                               remote-endpoint = <&xbar_adx4_out2_ep>;
+                                                       };
+                                               };
+
+                                               adx4_out3_port: port@3 {
+                                                       reg = <3>;
+
+                                                       adx4_out3_ep: endpoint {
+                                                               remote-endpoint = <&xbar_adx4_out3_ep>;
+                                                       };
+                                               };
+
+                                               adx4_out4_port: port@4 {
+                                                       reg = <4>;
+
+                                                       adx4_out4_ep: endpoint {
+                                                               remote-endpoint = <&xbar_adx4_out4_ep>;
                                                        };
                                                };
                                        };
                                };
 
-                               dmic@2904200 {
+                               amixer@290bb00 {
                                        status = "okay";
 
                                        ports {
                                                #size-cells = <0>;
 
                                                port@0 {
-                                                       reg = <0>;
+                                                       reg = <0x0>;
 
-                                                       dmic3_cif_ep: endpoint {
-                                                               remote-endpoint = <&xbar_dmic3_ep>;
+                                                       mixer_in1_ep: endpoint {
+                                                               remote-endpoint = <&xbar_mixer_in1_ep>;
                                                        };
                                                };
 
-                                               dmic3_port: port@1 {
-                                                       reg = <1>;
+                                               port@1 {
+                                                       reg = <0x1>;
 
-                                                       dmic3_dap_ep: endpoint {
-                                                               /* Place holder for external Codec */
+                                                       mixer_in2_ep: endpoint {
+                                                               remote-endpoint = <&xbar_mixer_in2_ep>;
+                                                       };
+                                               };
+
+                                               port@2 {
+                                                       reg = <0x2>;
+
+                                                       mixer_in3_ep: endpoint {
+                                                               remote-endpoint = <&xbar_mixer_in3_ep>;
+                                                       };
+                                               };
+
+                                               port@3 {
+                                                       reg = <0x3>;
+
+                                                       mixer_in4_ep: endpoint {
+                                                               remote-endpoint = <&xbar_mixer_in4_ep>;
+                                                       };
+                                               };
+
+                                               port@4 {
+                                                       reg = <0x4>;
+
+                                                       mixer_in5_ep: endpoint {
+                                                               remote-endpoint = <&xbar_mixer_in5_ep>;
+                                                       };
+                                               };
+
+                                               port@5 {
+                                                       reg = <0x5>;
+
+                                                       mixer_in6_ep: endpoint {
+                                                               remote-endpoint = <&xbar_mixer_in6_ep>;
+                                                       };
+                                               };
+
+                                               port@6 {
+                                                       reg = <0x6>;
+
+                                                       mixer_in7_ep: endpoint {
+                                                               remote-endpoint = <&xbar_mixer_in7_ep>;
+                                                       };
+                                               };
+
+                                               port@7 {
+                                                       reg = <0x7>;
+
+                                                       mixer_in8_ep: endpoint {
+                                                               remote-endpoint = <&xbar_mixer_in8_ep>;
+                                                       };
+                                               };
+
+                                               port@8 {
+                                                       reg = <0x8>;
+
+                                                       mixer_in9_ep: endpoint {
+                                                               remote-endpoint = <&xbar_mixer_in9_ep>;
+                                                       };
+                                               };
+
+                                               port@9 {
+                                                       reg = <0x9>;
+
+                                                       mixer_in10_ep: endpoint {
+                                                               remote-endpoint = <&xbar_mixer_in10_ep>;
+                                                       };
+                                               };
+
+                                               mixer_out1_port: port@a {
+                                                       reg = <0xa>;
+
+                                                       mixer_out1_ep: endpoint {
+                                                               remote-endpoint = <&xbar_mixer_out1_ep>;
+                                                       };
+                                               };
+
+                                               mixer_out2_port: port@b {
+                                                       reg = <0xb>;
+
+                                                       mixer_out2_ep: endpoint {
+                                                               remote-endpoint = <&xbar_mixer_out2_ep>;
+                                                       };
+                                               };
+
+                                               mixer_out3_port: port@c {
+                                                       reg = <0xc>;
+
+                                                       mixer_out3_ep: endpoint {
+                                                               remote-endpoint = <&xbar_mixer_out3_ep>;
+                                                       };
+                                               };
+
+                                               mixer_out4_port: port@d {
+                                                       reg = <0xd>;
+
+                                                       mixer_out4_ep: endpoint {
+                                                               remote-endpoint = <&xbar_mixer_out4_ep>;
+                                                       };
+                                               };
+
+                                               mixer_out5_port: port@e {
+                                                       reg = <0xe>;
+
+                                                       mixer_out5_ep: endpoint {
+                                                               remote-endpoint = <&xbar_mixer_out5_ep>;
                                                        };
                                                };
                                        };
                            "p2u-5", "p2u-6", "p2u-7";
        };
 
-       pcie_ep@141a0000 {
+       pcie-ep@141a0000 {
                status = "disabled";
 
                vddio-pex-ctl-supply = <&vdd_1v8ao>;
                       /* XBAR Ports */
                       <&xbar_i2s1_port>, <&xbar_i2s2_port>, <&xbar_i2s4_port>,
                       <&xbar_i2s6_port>, <&xbar_dmic3_port>,
+                      <&xbar_sfc1_in_port>, <&xbar_sfc2_in_port>,
+                      <&xbar_sfc3_in_port>, <&xbar_sfc4_in_port>,
+                      <&xbar_mvc1_in_port>, <&xbar_mvc2_in_port>,
+                      <&xbar_amx1_in1_port>, <&xbar_amx1_in2_port>,
+                      <&xbar_amx1_in3_port>, <&xbar_amx1_in4_port>,
+                      <&xbar_amx2_in1_port>, <&xbar_amx2_in2_port>,
+                      <&xbar_amx2_in3_port>, <&xbar_amx2_in4_port>,
+                      <&xbar_amx3_in1_port>, <&xbar_amx3_in2_port>,
+                      <&xbar_amx3_in3_port>, <&xbar_amx3_in4_port>,
+                      <&xbar_amx4_in1_port>, <&xbar_amx4_in2_port>,
+                      <&xbar_amx4_in3_port>, <&xbar_amx4_in4_port>,
+                      <&xbar_adx1_in_port>, <&xbar_adx2_in_port>,
+                      <&xbar_adx3_in_port>, <&xbar_adx4_in_port>,
+                      <&xbar_mixer_in1_port>, <&xbar_mixer_in2_port>,
+                      <&xbar_mixer_in3_port>, <&xbar_mixer_in4_port>,
+                      <&xbar_mixer_in5_port>, <&xbar_mixer_in6_port>,
+                      <&xbar_mixer_in7_port>, <&xbar_mixer_in8_port>,
+                      <&xbar_mixer_in9_port>, <&xbar_mixer_in10_port>,
+                      /* HW accelerators */
+                      <&sfc1_out_port>, <&sfc2_out_port>,
+                      <&sfc3_out_port>, <&sfc4_out_port>,
+                      <&mvc1_out_port>, <&mvc2_out_port>,
+                      <&amx1_out_port>, <&amx2_out_port>,
+                      <&amx3_out_port>, <&amx4_out_port>,
+                      <&adx1_out1_port>, <&adx1_out2_port>,
+                      <&adx1_out3_port>, <&adx1_out4_port>,
+                      <&adx2_out1_port>, <&adx2_out2_port>,
+                      <&adx2_out3_port>, <&adx2_out4_port>,
+                      <&adx3_out1_port>, <&adx3_out2_port>,
+                      <&adx3_out3_port>, <&adx3_out4_port>,
+                      <&adx4_out1_port>, <&adx4_out2_port>,
+                      <&adx4_out3_port>, <&adx4_out4_port>,
+                      <&mixer_out1_port>, <&mixer_out2_port>, <&mixer_out3_port>,
+                      <&mixer_out4_port>, <&mixer_out5_port>,
                       /* BE I/O Ports */
                       <&i2s1_port>, <&i2s2_port>, <&i2s4_port>, <&i2s6_port>,
                       <&dmic3_port>;
index 836a7e0..a055f17 100644 (file)
                                                        remote-endpoint = <&dspk2_cif_ep>;
                                                };
                                        };
+
+                                       xbar_sfc1_in_port: port@20 {
+                                               reg = <0x20>;
+
+                                               xbar_sfc1_in_ep: endpoint {
+                                                       remote-endpoint = <&sfc1_cif_in_ep>;
+                                               };
+                                       };
+
+                                       port@21 {
+                                               reg = <0x21>;
+
+                                               xbar_sfc1_out_ep: endpoint {
+                                                       remote-endpoint = <&sfc1_cif_out_ep>;
+                                               };
+                                       };
+
+                                       xbar_sfc2_in_port: port@22 {
+                                               reg = <0x22>;
+
+                                               xbar_sfc2_in_ep: endpoint {
+                                                       remote-endpoint = <&sfc2_cif_in_ep>;
+                                               };
+                                       };
+
+                                       port@23 {
+                                               reg = <0x23>;
+
+                                               xbar_sfc2_out_ep: endpoint {
+                                                       remote-endpoint = <&sfc2_cif_out_ep>;
+                                               };
+                                       };
+
+                                       xbar_sfc3_in_port: port@24 {
+                                               reg = <0x24>;
+
+                                               xbar_sfc3_in_ep: endpoint {
+                                                       remote-endpoint = <&sfc3_cif_in_ep>;
+                                               };
+                                       };
+
+                                       port@25 {
+                                               reg = <0x25>;
+
+                                               xbar_sfc3_out_ep: endpoint {
+                                                       remote-endpoint = <&sfc3_cif_out_ep>;
+                                               };
+                                       };
+
+                                       xbar_sfc4_in_port: port@26 {
+                                               reg = <0x26>;
+
+                                               xbar_sfc4_in_ep: endpoint {
+                                                       remote-endpoint = <&sfc4_cif_in_ep>;
+                                               };
+                                       };
+
+                                       port@27 {
+                                               reg = <0x27>;
+
+                                               xbar_sfc4_out_ep: endpoint {
+                                                       remote-endpoint = <&sfc4_cif_out_ep>;
+                                               };
+                                       };
+
+                                       xbar_mvc1_in_port: port@28 {
+                                               reg = <0x28>;
+
+                                               xbar_mvc1_in_ep: endpoint {
+                                                       remote-endpoint = <&mvc1_cif_in_ep>;
+                                               };
+                                       };
+
+                                       port@29 {
+                                               reg = <0x29>;
+
+                                               xbar_mvc1_out_ep: endpoint {
+                                                       remote-endpoint = <&mvc1_cif_out_ep>;
+                                               };
+                                       };
+
+                                       xbar_mvc2_in_port: port@2a {
+                                               reg = <0x2a>;
+
+                                               xbar_mvc2_in_ep: endpoint {
+                                                       remote-endpoint = <&mvc2_cif_in_ep>;
+                                               };
+                                       };
+
+                                       port@2b {
+                                               reg = <0x2b>;
+
+                                               xbar_mvc2_out_ep: endpoint {
+                                                       remote-endpoint = <&mvc2_cif_out_ep>;
+                                               };
+                                       };
+
+                                       xbar_amx1_in1_port: port@2c {
+                                               reg = <0x2c>;
+
+                                               xbar_amx1_in1_ep: endpoint {
+                                                       remote-endpoint = <&amx1_in1_ep>;
+                                               };
+                                       };
+
+                                       xbar_amx1_in2_port: port@2d {
+                                               reg = <0x2d>;
+
+                                               xbar_amx1_in2_ep: endpoint {
+                                                       remote-endpoint = <&amx1_in2_ep>;
+                                               };
+                                       };
+
+                                       xbar_amx1_in3_port: port@2e {
+                                               reg = <0x2e>;
+
+                                               xbar_amx1_in3_ep: endpoint {
+                                                       remote-endpoint = <&amx1_in3_ep>;
+                                               };
+                                       };
+
+                                       xbar_amx1_in4_port: port@2f {
+                                               reg = <0x2f>;
+
+                                               xbar_amx1_in4_ep: endpoint {
+                                                       remote-endpoint = <&amx1_in4_ep>;
+                                               };
+                                       };
+
+                                       port@30 {
+                                               reg = <0x30>;
+
+                                               xbar_amx1_out_ep: endpoint {
+                                                       remote-endpoint = <&amx1_out_ep>;
+                                               };
+                                       };
+
+                                       xbar_amx2_in1_port: port@31 {
+                                               reg = <0x31>;
+
+                                               xbar_amx2_in1_ep: endpoint {
+                                                       remote-endpoint = <&amx2_in1_ep>;
+                                               };
+                                       };
+
+                                       xbar_amx2_in2_port: port@32 {
+                                               reg = <0x32>;
+
+                                               xbar_amx2_in2_ep: endpoint {
+                                                       remote-endpoint = <&amx2_in2_ep>;
+                                               };
+                                       };
+
+                                       xbar_amx2_in3_port: port@33 {
+                                               reg = <0x33>;
+
+                                               xbar_amx2_in3_ep: endpoint {
+                                                       remote-endpoint = <&amx2_in3_ep>;
+                                               };
+                                       };
+
+                                       xbar_amx2_in4_port: port@34 {
+                                               reg = <0x34>;
+
+                                               xbar_amx2_in4_ep: endpoint {
+                                                       remote-endpoint = <&amx2_in4_ep>;
+                                               };
+                                       };
+
+                                       port@35 {
+                                               reg = <0x35>;
+
+                                               xbar_amx2_out_ep: endpoint {
+                                                       remote-endpoint = <&amx2_out_ep>;
+                                               };
+                                       };
+
+                                       xbar_amx3_in1_port: port@36 {
+                                               reg = <0x36>;
+
+                                               xbar_amx3_in1_ep: endpoint {
+                                                       remote-endpoint = <&amx3_in1_ep>;
+                                               };
+                                       };
+
+                                       xbar_amx3_in2_port: port@37 {
+                                               reg = <0x37>;
+
+                                               xbar_amx3_in2_ep: endpoint {
+                                                       remote-endpoint = <&amx3_in2_ep>;
+                                               };
+                                       };
+
+                                       xbar_amx3_in3_port: port@38 {
+                                               reg = <0x38>;
+
+                                               xbar_amx3_in3_ep: endpoint {
+                                                       remote-endpoint = <&amx3_in3_ep>;
+                                               };
+                                       };
+
+                                       xbar_amx3_in4_port: port@39 {
+                                               reg = <0x39>;
+
+                                               xbar_amx3_in4_ep: endpoint {
+                                                       remote-endpoint = <&amx3_in4_ep>;
+                                               };
+                                       };
+
+                                       port@3a {
+                                               reg = <0x3a>;
+
+                                               xbar_amx3_out_ep: endpoint {
+                                                       remote-endpoint = <&amx3_out_ep>;
+                                               };
+                                       };
+
+                                       xbar_amx4_in1_port: port@3b {
+                                               reg = <0x3b>;
+
+                                               xbar_amx4_in1_ep: endpoint {
+                                                       remote-endpoint = <&amx4_in1_ep>;
+                                               };
+                                       };
+
+                                       xbar_amx4_in2_port: port@3c {
+                                               reg = <0x3c>;
+
+                                               xbar_amx4_in2_ep: endpoint {
+                                                       remote-endpoint = <&amx4_in2_ep>;
+                                               };
+                                       };
+
+                                       xbar_amx4_in3_port: port@3d {
+                                               reg = <0x3d>;
+
+                                               xbar_amx4_in3_ep: endpoint {
+                                                       remote-endpoint = <&amx4_in3_ep>;
+                                               };
+                                       };
+
+                                       xbar_amx4_in4_port: port@3e {
+                                               reg = <0x3e>;
+
+                                               xbar_amx4_in4_ep: endpoint {
+                                                       remote-endpoint = <&amx4_in4_ep>;
+                                               };
+                                       };
+
+                                       port@3f {
+                                               reg = <0x3f>;
+
+                                               xbar_amx4_out_ep: endpoint {
+                                                       remote-endpoint = <&amx4_out_ep>;
+                                               };
+                                       };
+
+                                       xbar_adx1_in_port: port@40 {
+                                               reg = <0x40>;
+
+                                               xbar_adx1_in_ep: endpoint {
+                                                       remote-endpoint = <&adx1_in_ep>;
+                                               };
+                                       };
+
+                                       port@41 {
+                                               reg = <0x41>;
+
+                                               xbar_adx1_out1_ep: endpoint {
+                                                       remote-endpoint = <&adx1_out1_ep>;
+                                               };
+                                       };
+
+                                       port@42 {
+                                               reg = <0x42>;
+
+                                               xbar_adx1_out2_ep: endpoint {
+                                                       remote-endpoint = <&adx1_out2_ep>;
+                                               };
+                                       };
+
+                                       port@43 {
+                                               reg = <0x43>;
+
+                                               xbar_adx1_out3_ep: endpoint {
+                                                       remote-endpoint = <&adx1_out3_ep>;
+                                               };
+                                       };
+
+                                       port@44 {
+                                               reg = <0x44>;
+
+                                               xbar_adx1_out4_ep: endpoint {
+                                                       remote-endpoint = <&adx1_out4_ep>;
+                                               };
+                                       };
+
+                                       xbar_adx2_in_port: port@45 {
+                                               reg = <0x45>;
+
+                                               xbar_adx2_in_ep: endpoint {
+                                                       remote-endpoint = <&adx2_in_ep>;
+                                               };
+                                       };
+
+                                       port@46 {
+                                               reg = <0x46>;
+
+                                               xbar_adx2_out1_ep: endpoint {
+                                                       remote-endpoint = <&adx2_out1_ep>;
+                                               };
+                                       };
+
+                                       port@47 {
+                                               reg = <0x47>;
+
+                                               xbar_adx2_out2_ep: endpoint {
+                                                       remote-endpoint = <&adx2_out2_ep>;
+                                               };
+                                       };
+
+                                       port@48 {
+                                               reg = <0x48>;
+
+                                               xbar_adx2_out3_ep: endpoint {
+                                                       remote-endpoint = <&adx2_out3_ep>;
+                                               };
+                                       };
+
+                                       port@49 {
+                                               reg = <0x49>;
+
+                                               xbar_adx2_out4_ep: endpoint {
+                                                       remote-endpoint = <&adx2_out4_ep>;
+                                               };
+                                       };
+
+                                       xbar_adx3_in_port: port@4a {
+                                               reg = <0x4a>;
+
+                                               xbar_adx3_in_ep: endpoint {
+                                                       remote-endpoint = <&adx3_in_ep>;
+                                               };
+                                       };
+
+                                       port@4b {
+                                               reg = <0x4b>;
+
+                                               xbar_adx3_out1_ep: endpoint {
+                                                       remote-endpoint = <&adx3_out1_ep>;
+                                               };
+                                       };
+
+                                       port@4c {
+                                               reg = <0x4c>;
+
+                                               xbar_adx3_out2_ep: endpoint {
+                                                       remote-endpoint = <&adx3_out2_ep>;
+                                               };
+                                       };
+
+                                       port@4d {
+                                               reg = <0x4d>;
+
+                                               xbar_adx3_out3_ep: endpoint {
+                                                       remote-endpoint = <&adx3_out3_ep>;
+                                               };
+                                       };
+
+                                       port@4e {
+                                               reg = <0x4e>;
+
+                                               xbar_adx3_out4_ep: endpoint {
+                                                       remote-endpoint = <&adx3_out4_ep>;
+                                               };
+                                       };
+
+                                       xbar_adx4_in_port: port@4f {
+                                               reg = <0x4f>;
+
+                                               xbar_adx4_in_ep: endpoint {
+                                                       remote-endpoint = <&adx4_in_ep>;
+                                               };
+                                       };
+
+                                       port@50 {
+                                               reg = <0x50>;
+
+                                               xbar_adx4_out1_ep: endpoint {
+                                                       remote-endpoint = <&adx4_out1_ep>;
+                                               };
+                                       };
+
+                                       port@51 {
+                                               reg = <0x51>;
+
+                                               xbar_adx4_out2_ep: endpoint {
+                                                       remote-endpoint = <&adx4_out2_ep>;
+                                               };
+                                       };
+
+                                       port@52 {
+                                               reg = <0x52>;
+
+                                               xbar_adx4_out3_ep: endpoint {
+                                                       remote-endpoint = <&adx4_out3_ep>;
+                                               };
+                                       };
+
+                                       port@53 {
+                                               reg = <0x53>;
+
+                                               xbar_adx4_out4_ep: endpoint {
+                                                       remote-endpoint = <&adx4_out4_ep>;
+                                               };
+                                       };
+
+                                       xbar_mixer_in1_port: port@54 {
+                                               reg = <0x54>;
+
+                                               xbar_mixer_in1_ep: endpoint {
+                                                       remote-endpoint = <&mixer_in1_ep>;
+                                               };
+                                       };
+
+                                       xbar_mixer_in2_port: port@55 {
+                                               reg = <0x55>;
+
+                                               xbar_mixer_in2_ep: endpoint {
+                                                       remote-endpoint = <&mixer_in2_ep>;
+                                               };
+                                       };
+
+                                       xbar_mixer_in3_port: port@56 {
+                                               reg = <0x56>;
+
+                                               xbar_mixer_in3_ep: endpoint {
+                                                       remote-endpoint = <&mixer_in3_ep>;
+                                               };
+                                       };
+
+                                       xbar_mixer_in4_port: port@57 {
+                                               reg = <0x57>;
+
+                                               xbar_mixer_in4_ep: endpoint {
+                                                       remote-endpoint = <&mixer_in4_ep>;
+                                               };
+                                       };
+
+                                       xbar_mixer_in5_port: port@58 {
+                                               reg = <0x58>;
+
+                                               xbar_mixer_in5_ep: endpoint {
+                                                       remote-endpoint = <&mixer_in5_ep>;
+                                               };
+                                       };
+
+                                       xbar_mixer_in6_port: port@59 {
+                                               reg = <0x59>;
+
+                                               xbar_mixer_in6_ep: endpoint {
+                                                       remote-endpoint = <&mixer_in6_ep>;
+                                               };
+                                       };
+
+                                       xbar_mixer_in7_port: port@5a {
+                                               reg = <0x5a>;
+
+                                               xbar_mixer_in7_ep: endpoint {
+                                                       remote-endpoint = <&mixer_in7_ep>;
+                                               };
+                                       };
+
+                                       xbar_mixer_in8_port: port@5b {
+                                               reg = <0x5b>;
+
+                                               xbar_mixer_in8_ep: endpoint {
+                                                       remote-endpoint = <&mixer_in8_ep>;
+                                               };
+                                       };
+
+                                       xbar_mixer_in9_port: port@5c {
+                                               reg = <0x5c>;
+
+                                               xbar_mixer_in9_ep: endpoint {
+                                                       remote-endpoint = <&mixer_in9_ep>;
+                                               };
+                                       };
+
+                                       xbar_mixer_in10_port: port@5d {
+                                               reg = <0x5d>;
+
+                                               xbar_mixer_in10_ep: endpoint {
+                                                       remote-endpoint = <&mixer_in10_ep>;
+                                               };
+                                       };
+
+                                       port@5e {
+                                               reg = <0x5e>;
+
+                                               xbar_mixer_out1_ep: endpoint {
+                                                       remote-endpoint = <&mixer_out1_ep>;
+                                               };
+                                       };
+
+                                       port@5f {
+                                               reg = <0x5f>;
+
+                                               xbar_mixer_out2_ep: endpoint {
+                                                       remote-endpoint = <&mixer_out2_ep>;
+                                               };
+                                       };
+
+                                       port@60 {
+                                               reg = <0x60>;
+
+                                               xbar_mixer_out3_ep: endpoint {
+                                                       remote-endpoint = <&mixer_out3_ep>;
+                                               };
+                                       };
+
+                                       port@61 {
+                                               reg = <0x61>;
+
+                                               xbar_mixer_out4_ep: endpoint {
+                                                       remote-endpoint = <&mixer_out4_ep>;
+                                               };
+                                       };
+
+                                       port@62 {
+                                               reg = <0x62>;
+
+                                               xbar_mixer_out5_ep: endpoint {
+                                                       remote-endpoint = <&mixer_out5_ep>;
+                                               };
+                                       };
+                               };
+
+                               admaif@290f000 {
+                                       status = "okay";
+
+                                       ports {
+                                               #address-cells = <1>;
+                                               #size-cells = <0>;
+
+                                               admaif0_port: port@0 {
+                                                       reg = <0x0>;
+
+                                                       admaif0_ep: endpoint {
+                                                               remote-endpoint = <&xbar_admaif0_ep>;
+                                                       };
+                                               };
+
+                                               admaif1_port: port@1 {
+                                                       reg = <0x1>;
+
+                                                       admaif1_ep: endpoint {
+                                                               remote-endpoint = <&xbar_admaif1_ep>;
+                                                       };
+                                               };
+
+                                               admaif2_port: port@2 {
+                                                       reg = <0x2>;
+
+                                                       admaif2_ep: endpoint {
+                                                               remote-endpoint = <&xbar_admaif2_ep>;
+                                                       };
+                                               };
+
+                                               admaif3_port: port@3 {
+                                                       reg = <0x3>;
+
+                                                       admaif3_ep: endpoint {
+                                                               remote-endpoint = <&xbar_admaif3_ep>;
+                                                       };
+                                               };
+
+                                               admaif4_port: port@4 {
+                                                       reg = <0x4>;
+
+                                                       admaif4_ep: endpoint {
+                                                               remote-endpoint = <&xbar_admaif4_ep>;
+                                                       };
+                                               };
+
+                                               admaif5_port: port@5 {
+                                                       reg = <0x5>;
+
+                                                       admaif5_ep: endpoint {
+                                                               remote-endpoint = <&xbar_admaif5_ep>;
+                                                       };
+                                               };
+
+                                               admaif6_port: port@6 {
+                                                       reg = <0x6>;
+
+                                                       admaif6_ep: endpoint {
+                                                               remote-endpoint = <&xbar_admaif6_ep>;
+                                                       };
+                                               };
+
+                                               admaif7_port: port@7 {
+                                                       reg = <0x7>;
+
+                                                       admaif7_ep: endpoint {
+                                                               remote-endpoint = <&xbar_admaif7_ep>;
+                                                       };
+                                               };
+
+                                               admaif8_port: port@8 {
+                                                       reg = <0x8>;
+
+                                                       admaif8_ep: endpoint {
+                                                               remote-endpoint = <&xbar_admaif8_ep>;
+                                                       };
+                                               };
+
+                                               admaif9_port: port@9 {
+                                                       reg = <0x9>;
+
+                                                       admaif9_ep: endpoint {
+                                                               remote-endpoint = <&xbar_admaif9_ep>;
+                                                       };
+                                               };
+
+                                               admaif10_port: port@a {
+                                                       reg = <0xa>;
+
+                                                       admaif10_ep: endpoint {
+                                                               remote-endpoint = <&xbar_admaif10_ep>;
+                                                       };
+                                               };
+
+                                               admaif11_port: port@b {
+                                                       reg = <0xb>;
+
+                                                       admaif11_ep: endpoint {
+                                                               remote-endpoint = <&xbar_admaif11_ep>;
+                                                       };
+                                               };
+
+                                               admaif12_port: port@c {
+                                                       reg = <0xc>;
+
+                                                       admaif12_ep: endpoint {
+                                                               remote-endpoint = <&xbar_admaif12_ep>;
+                                                       };
+                                               };
+
+                                               admaif13_port: port@d {
+                                                       reg = <0xd>;
+
+                                                       admaif13_ep: endpoint {
+                                                               remote-endpoint = <&xbar_admaif13_ep>;
+                                                       };
+                                               };
+
+                                               admaif14_port: port@e {
+                                                       reg = <0xe>;
+
+                                                       admaif14_ep: endpoint {
+                                                               remote-endpoint = <&xbar_admaif14_ep>;
+                                                       };
+                                               };
+
+                                               admaif15_port: port@f {
+                                                       reg = <0xf>;
+
+                                                       admaif15_ep: endpoint {
+                                                               remote-endpoint = <&xbar_admaif15_ep>;
+                                                       };
+                                               };
+
+                                               admaif16_port: port@10 {
+                                                       reg = <0x10>;
+
+                                                       admaif16_ep: endpoint {
+                                                               remote-endpoint = <&xbar_admaif16_ep>;
+                                                       };
+                                               };
+
+                                               admaif17_port: port@11 {
+                                                       reg = <0x11>;
+
+                                                       admaif17_ep: endpoint {
+                                                               remote-endpoint = <&xbar_admaif17_ep>;
+                                                       };
+                                               };
+
+                                               admaif18_port: port@12 {
+                                                       reg = <0x12>;
+
+                                                       admaif18_ep: endpoint {
+                                                               remote-endpoint = <&xbar_admaif18_ep>;
+                                                       };
+                                               };
+
+                                               admaif19_port: port@13 {
+                                                       reg = <0x13>;
+
+                                                       admaif19_ep: endpoint {
+                                                               remote-endpoint = <&xbar_admaif19_ep>;
+                                                       };
+                                               };
+                                       };
+                               };
+
+                               i2s@2901200 {
+                                       status = "okay";
+
+                                       ports {
+                                               #address-cells = <1>;
+                                               #size-cells = <0>;
+
+                                               port@0 {
+                                                       reg = <0>;
+
+                                                       i2s3_cif_ep: endpoint {
+                                                               remote-endpoint = <&xbar_i2s3_ep>;
+                                                       };
+                                               };
+
+                                               i2s3_port: port@1 {
+                                                       reg = <1>;
+
+                                                       i2s3_dap_ep: endpoint {
+                                                               dai-format = "i2s";
+                                                               /* Place holder for external Codec */
+                                                       };
+                                               };
+                                       };
+                               };
+
+                               i2s@2901400 {
+                                       status = "okay";
+
+                                       ports {
+                                               #address-cells = <1>;
+                                               #size-cells = <0>;
+
+                                               port@0 {
+                                                       reg = <0>;
+
+                                                       i2s5_cif_ep: endpoint {
+                                                               remote-endpoint = <&xbar_i2s5_ep>;
+                                                       };
+                                               };
+
+                                               i2s5_port: port@1 {
+                                                       reg = <1>;
+
+                                                       i2s5_dap_ep: endpoint@0 {
+                                                               dai-format = "i2s";
+                                                               /* Place holder for external Codec */
+                                                       };
+                                               };
+                                       };
                                };
 
-                               admaif@290f000 {
+                               dmic@2904000 {
                                        status = "okay";
 
                                        ports {
                                                #address-cells = <1>;
                                                #size-cells = <0>;
 
-                                               admaif0_port: port@0 {
-                                                       reg = <0x0>;
+                                               port@0 {
+                                                       reg = <0>;
 
-                                                       admaif0_ep: endpoint {
-                                                               remote-endpoint = <&xbar_admaif0_ep>;
+                                                       dmic1_cif_ep: endpoint {
+                                                               remote-endpoint = <&xbar_dmic1_ep>;
                                                        };
                                                };
 
-                                               admaif1_port: port@1 {
-                                                       reg = <0x1>;
+                                               dmic1_port: port@1 {
+                                                       reg = <1>;
 
-                                                       admaif1_ep: endpoint {
-                                                               remote-endpoint = <&xbar_admaif1_ep>;
+                                                       dmic1_dap_ep: endpoint {
+                                                               /* Place holder for external Codec */
                                                        };
                                                };
+                                       };
+                               };
 
-                                               admaif2_port: port@2 {
-                                                       reg = <0x2>;
+                               dmic@2904100 {
+                                       status = "okay";
 
-                                                       admaif2_ep: endpoint {
-                                                               remote-endpoint = <&xbar_admaif2_ep>;
+                                       ports {
+                                               #address-cells = <1>;
+                                               #size-cells = <0>;
+
+                                               port@0 {
+                                                       reg = <0>;
+
+                                                       dmic2_cif_ep: endpoint {
+                                                               remote-endpoint = <&xbar_dmic2_ep>;
                                                        };
                                                };
 
-                                               admaif3_port: port@3 {
-                                                       reg = <0x3>;
+                                               dmic2_port: port@1 {
+                                                       reg = <1>;
 
-                                                       admaif3_ep: endpoint {
-                                                               remote-endpoint = <&xbar_admaif3_ep>;
+                                                       dmic2_dap_ep: endpoint {
+                                                               /* Place holder for external Codec */
                                                        };
                                                };
+                                       };
+                               };
 
-                                               admaif4_port: port@4 {
-                                                       reg = <0x4>;
+                               dmic@2904300 {
+                                       status = "okay";
 
-                                                       admaif4_ep: endpoint {
-                                                               remote-endpoint = <&xbar_admaif4_ep>;
+                                       ports {
+                                               #address-cells = <1>;
+                                               #size-cells = <0>;
+
+                                               port@0 {
+                                                       reg = <0>;
+
+                                                       dmic4_cif_ep: endpoint {
+                                                               remote-endpoint = <&xbar_dmic4_ep>;
+                                                       };
+                                               };
+
+                                               dmic4_port: port@1 {
+                                                       reg = <1>;
+
+                                                       dmic4_dap_ep: endpoint {
+                                                               /* Place holder for external Codec */
+                                                       };
+                                               };
+                                       };
+                               };
+
+                               dspk@2905000 {
+                                       status = "okay";
+
+                                       ports {
+                                               #address-cells = <1>;
+                                               #size-cells = <0>;
+
+                                               port@0 {
+                                                       reg = <0>;
+
+                                                       dspk1_cif_ep: endpoint {
+                                                               remote-endpoint = <&xbar_dspk1_ep>;
+                                                       };
+                                               };
+
+                                               dspk1_port: port@1 {
+                                                       reg = <1>;
+
+                                                       dspk1_dap_ep: endpoint {
+                                                               /* Place holder for external Codec */
+                                                       };
+                                               };
+                                       };
+                               };
+
+                               dspk@2905100 {
+                                       status = "okay";
+
+                                       ports {
+                                               #address-cells = <1>;
+                                               #size-cells = <0>;
+
+                                               port@0 {
+                                                       reg = <0>;
+
+                                                       dspk2_cif_ep: endpoint {
+                                                               remote-endpoint = <&xbar_dspk2_ep>;
+                                                       };
+                                               };
+
+                                               dspk2_port: port@1 {
+                                                       reg = <1>;
+
+                                                       dspk2_dap_ep: endpoint {
+                                                               /* Place holder for external Codec */
+                                                       };
+                                               };
+                                       };
+                               };
+
+                               sfc@2902000 {
+                                       status = "okay";
+
+                                       ports {
+                                               #address-cells = <1>;
+                                               #size-cells = <0>;
+
+                                               port@0 {
+                                                       reg = <0>;
+
+                                                       sfc1_cif_in_ep: endpoint {
+                                                               remote-endpoint = <&xbar_sfc1_in_ep>;
+                                                               convert-rate = <44100>;
+                                                       };
+                                               };
+
+                                               sfc1_out_port: port@1 {
+                                                       reg = <1>;
+
+                                                       sfc1_cif_out_ep: endpoint {
+                                                               remote-endpoint = <&xbar_sfc1_out_ep>;
+                                                               convert-rate = <48000>;
+                                                       };
+                                               };
+                                       };
+                               };
+
+                               sfc@2902200 {
+                                       status = "okay";
+
+                                       ports {
+                                               #address-cells = <1>;
+                                               #size-cells = <0>;
+
+                                               port@0 {
+                                                       reg = <0>;
+
+                                                       sfc2_cif_in_ep: endpoint {
+                                                               remote-endpoint = <&xbar_sfc2_in_ep>;
+                                                       };
+                                               };
+
+                                               sfc2_out_port: port@1 {
+                                                       reg = <1>;
+
+                                                       sfc2_cif_out_ep: endpoint {
+                                                               remote-endpoint = <&xbar_sfc2_out_ep>;
+                                                       };
+                                               };
+                                       };
+                               };
+
+                               sfc@2902400 {
+                                       status = "okay";
+
+                                       ports {
+                                               #address-cells = <1>;
+                                               #size-cells = <0>;
+
+                                               port@0 {
+                                                       reg = <0>;
+
+                                                       sfc3_cif_in_ep: endpoint {
+                                                               remote-endpoint = <&xbar_sfc3_in_ep>;
+                                                       };
+                                               };
+
+                                               sfc3_out_port: port@1 {
+                                                       reg = <1>;
+
+                                                       sfc3_cif_out_ep: endpoint {
+                                                               remote-endpoint = <&xbar_sfc3_out_ep>;
+                                                       };
+                                               };
+                                       };
+                               };
+
+                               sfc@2902600 {
+                                       status = "okay";
+
+                                       ports {
+                                               #address-cells = <1>;
+                                               #size-cells = <0>;
+
+                                               port@0 {
+                                                       reg = <0>;
+
+                                                       sfc4_cif_in_ep: endpoint {
+                                                               remote-endpoint = <&xbar_sfc4_in_ep>;
+                                                       };
+                                               };
+
+                                               sfc4_out_port: port@1 {
+                                                       reg = <1>;
+
+                                                       sfc4_cif_out_ep: endpoint {
+                                                               remote-endpoint = <&xbar_sfc4_out_ep>;
+                                                       };
+                                               };
+                                       };
+                               };
+
+                               mvc@290a000 {
+                                       status = "okay";
+
+                                       ports {
+                                               #address-cells = <1>;
+                                               #size-cells = <0>;
+
+                                               port@0 {
+                                                       reg = <0>;
+
+                                                       mvc1_cif_in_ep: endpoint {
+                                                               remote-endpoint = <&xbar_mvc1_in_ep>;
+                                                       };
+                                               };
+
+                                               mvc1_out_port: port@1 {
+                                                       reg = <1>;
+
+                                                       mvc1_cif_out_ep: endpoint {
+                                                               remote-endpoint = <&xbar_mvc1_out_ep>;
+                                                       };
+                                               };
+                                       };
+                               };
+
+                               mvc@290a200 {
+                                       status = "okay";
+
+                                       ports {
+                                               #address-cells = <1>;
+                                               #size-cells = <0>;
+
+                                               port@0 {
+                                                       reg = <0>;
+
+                                                       mvc2_cif_in_ep: endpoint {
+                                                               remote-endpoint = <&xbar_mvc2_in_ep>;
+                                                       };
+                                               };
+
+                                               mvc2_out_port: port@1 {
+                                                       reg = <1>;
+
+                                                       mvc2_cif_out_ep: endpoint {
+                                                               remote-endpoint = <&xbar_mvc2_out_ep>;
+                                                       };
+                                               };
+                                       };
+                               };
+
+                               amx@2903000 {
+                                       status = "okay";
+
+                                       ports {
+                                               #address-cells = <1>;
+                                               #size-cells = <0>;
+
+                                               port@0 {
+                                                       reg = <0>;
+
+                                                       amx1_in1_ep: endpoint {
+                                                               remote-endpoint = <&xbar_amx1_in1_ep>;
                                                        };
                                                };
 
-                                               admaif5_port: port@5 {
-                                                       reg = <0x5>;
+                                               port@1 {
+                                                       reg = <1>;
 
-                                                       admaif5_ep: endpoint {
-                                                               remote-endpoint = <&xbar_admaif5_ep>;
+                                                       amx1_in2_ep: endpoint {
+                                                               remote-endpoint = <&xbar_amx1_in2_ep>;
                                                        };
                                                };
 
-                                               admaif6_port: port@6 {
-                                                       reg = <0x6>;
+                                               port@2 {
+                                                       reg = <2>;
 
-                                                       admaif6_ep: endpoint {
-                                                               remote-endpoint = <&xbar_admaif6_ep>;
+                                                       amx1_in3_ep: endpoint {
+                                                               remote-endpoint = <&xbar_amx1_in3_ep>;
                                                        };
                                                };
 
-                                               admaif7_port: port@7 {
-                                                       reg = <0x7>;
+                                               port@3 {
+                                                       reg = <3>;
 
-                                                       admaif7_ep: endpoint {
-                                                               remote-endpoint = <&xbar_admaif7_ep>;
+                                                       amx1_in4_ep: endpoint {
+                                                               remote-endpoint = <&xbar_amx1_in4_ep>;
                                                        };
                                                };
 
-                                               admaif8_port: port@8 {
-                                                       reg = <0x8>;
+                                               amx1_out_port: port@4 {
+                                                       reg = <4>;
 
-                                                       admaif8_ep: endpoint {
-                                                               remote-endpoint = <&xbar_admaif8_ep>;
+                                                       amx1_out_ep: endpoint {
+                                                               remote-endpoint = <&xbar_amx1_out_ep>;
                                                        };
                                                };
+                                       };
+                               };
 
-                                               admaif9_port: port@9 {
-                                                       reg = <0x9>;
+                               amx@2903100 {
+                                       status = "okay";
 
-                                                       admaif9_ep: endpoint {
-                                                               remote-endpoint = <&xbar_admaif9_ep>;
-                                                       };
-                                               };
+                                       ports {
+                                               #address-cells = <1>;
+                                               #size-cells = <0>;
 
-                                               admaif10_port: port@a {
-                                                       reg = <0xa>;
+                                               port@0 {
+                                                       reg = <0>;
 
-                                                       admaif10_ep: endpoint {
-                                                               remote-endpoint = <&xbar_admaif10_ep>;
+                                                       amx2_in1_ep: endpoint {
+                                                               remote-endpoint = <&xbar_amx2_in1_ep>;
                                                        };
                                                };
 
-                                               admaif11_port: port@b {
-                                                       reg = <0xb>;
+                                               port@1 {
+                                                       reg = <1>;
 
-                                                       admaif11_ep: endpoint {
-                                                               remote-endpoint = <&xbar_admaif11_ep>;
+                                                       amx2_in2_ep: endpoint {
+                                                               remote-endpoint = <&xbar_amx2_in2_ep>;
                                                        };
                                                };
 
-                                               admaif12_port: port@c {
-                                                       reg = <0xc>;
+                                               amx2_in3_port: port@2 {
+                                                       reg = <2>;
 
-                                                       admaif12_ep: endpoint {
-                                                               remote-endpoint = <&xbar_admaif12_ep>;
+                                                       amx2_in3_ep: endpoint {
+                                                               remote-endpoint = <&xbar_amx2_in3_ep>;
                                                        };
                                                };
 
-                                               admaif13_port: port@d {
-                                                       reg = <0xd>;
+                                               amx2_in4_port: port@3 {
+                                                       reg = <3>;
 
-                                                       admaif13_ep: endpoint {
-                                                               remote-endpoint = <&xbar_admaif13_ep>;
+                                                       amx2_in4_ep: endpoint {
+                                                               remote-endpoint = <&xbar_amx2_in4_ep>;
                                                        };
                                                };
 
-                                               admaif14_port: port@e {
-                                                       reg = <0xe>;
+                                               amx2_out_port: port@4 {
+                                                       reg = <4>;
 
-                                                       admaif14_ep: endpoint {
-                                                               remote-endpoint = <&xbar_admaif14_ep>;
+                                                       amx2_out_ep: endpoint {
+                                                               remote-endpoint = <&xbar_amx2_out_ep>;
                                                        };
                                                };
+                                       };
+                               };
 
-                                               admaif15_port: port@f {
-                                                       reg = <0xf>;
+                               amx@2903200 {
+                                       status = "okay";
 
-                                                       admaif15_ep: endpoint {
-                                                               remote-endpoint = <&xbar_admaif15_ep>;
+                                       ports {
+                                               #address-cells = <1>;
+                                               #size-cells = <0>;
+
+                                               port@0 {
+                                                       reg = <0>;
+
+                                                       amx3_in1_ep: endpoint {
+                                                               remote-endpoint = <&xbar_amx3_in1_ep>;
                                                        };
                                                };
 
-                                               admaif16_port: port@10 {
-                                                       reg = <0x10>;
+                                               port@1 {
+                                                       reg = <1>;
 
-                                                       admaif16_ep: endpoint {
-                                                               remote-endpoint = <&xbar_admaif16_ep>;
+                                                       amx3_in2_ep: endpoint {
+                                                               remote-endpoint = <&xbar_amx3_in2_ep>;
                                                        };
                                                };
 
-                                               admaif17_port: port@11 {
-                                                       reg = <0x11>;
+                                               port@2 {
+                                                       reg = <2>;
 
-                                                       admaif17_ep: endpoint {
-                                                               remote-endpoint = <&xbar_admaif17_ep>;
+                                                       amx3_in3_ep: endpoint {
+                                                               remote-endpoint = <&xbar_amx3_in3_ep>;
                                                        };
                                                };
 
-                                               admaif18_port: port@12 {
-                                                       reg = <0x12>;
+                                               port@3 {
+                                                       reg = <3>;
 
-                                                       admaif18_ep: endpoint {
-                                                               remote-endpoint = <&xbar_admaif18_ep>;
+                                                       amx3_in4_ep: endpoint {
+                                                               remote-endpoint = <&xbar_amx3_in4_ep>;
                                                        };
                                                };
 
-                                               admaif19_port: port@13 {
-                                                       reg = <0x13>;
+                                               amx3_out_port: port@4 {
+                                                       reg = <4>;
 
-                                                       admaif19_ep: endpoint {
-                                                               remote-endpoint = <&xbar_admaif19_ep>;
+                                                       amx3_out_ep: endpoint {
+                                                               remote-endpoint = <&xbar_amx3_out_ep>;
                                                        };
                                                };
                                        };
                                };
 
-                               i2s@2901200 {
+                               amx@2903300 {
                                        status = "okay";
 
                                        ports {
                                                port@0 {
                                                        reg = <0>;
 
-                                                       i2s3_cif_ep: endpoint {
-                                                               remote-endpoint = <&xbar_i2s3_ep>;
+                                                       amx4_in1_ep: endpoint {
+                                                               remote-endpoint = <&xbar_amx4_in1_ep>;
                                                        };
                                                };
 
-                                               i2s3_port: port@1 {
+                                               port@1 {
                                                        reg = <1>;
 
-                                                       i2s3_dap_ep: endpoint {
-                                                               dai-format = "i2s";
-                                                               /* Place holder for external Codec */
+                                                       amx4_in2_ep: endpoint {
+                                                               remote-endpoint = <&xbar_amx4_in2_ep>;
                                                        };
                                                };
-                                       };
-                               };
 
-                               i2s@2901400 {
-                                       status = "okay";
+                                               port@2 {
+                                                       reg = <2>;
 
-                                       ports {
-                                               #address-cells = <1>;
-                                               #size-cells = <0>;
+                                                       amx4_in3_ep: endpoint {
+                                                               remote-endpoint = <&xbar_amx4_in3_ep>;
+                                                       };
+                                               };
 
-                                               port@0 {
-                                                       reg = <0>;
+                                               port@3 {
+                                                       reg = <3>;
 
-                                                       i2s5_cif_ep: endpoint {
-                                                               remote-endpoint = <&xbar_i2s5_ep>;
+                                                       amx4_in4_ep: endpoint {
+                                                               remote-endpoint = <&xbar_amx4_in4_ep>;
                                                        };
                                                };
 
-                                               i2s5_port: port@1 {
-                                                       reg = <1>;
+                                               amx4_out_port: port@4 {
+                                                       reg = <4>;
 
-                                                       i2s5_dap_ep: endpoint@0 {
-                                                               dai-format = "i2s";
-                                                               /* Place holder for external Codec */
+                                                       amx4_out_ep: endpoint {
+                                                               remote-endpoint = <&xbar_amx4_out_ep>;
                                                        };
                                                };
                                        };
                                };
 
-                               dmic@2904000 {
+                               adx@2903800 {
                                        status = "okay";
 
                                        ports {
                                                port@0 {
                                                        reg = <0>;
 
-                                                       dmic1_cif_ep: endpoint {
-                                                               remote-endpoint = <&xbar_dmic1_ep>;
+                                                       adx1_in_ep: endpoint {
+                                                               remote-endpoint = <&xbar_adx1_in_ep>;
                                                        };
                                                };
 
-                                               dmic1_port: port@1 {
+                                               adx1_out1_port: port@1 {
                                                        reg = <1>;
 
-                                                       dmic1_dap_ep: endpoint {
-                                                               /* Place holder for external Codec */
+                                                       adx1_out1_ep: endpoint {
+                                                               remote-endpoint = <&xbar_adx1_out1_ep>;
+                                                       };
+                                               };
+
+                                               adx1_out2_port: port@2 {
+                                                       reg = <2>;
+
+                                                       adx1_out2_ep: endpoint {
+                                                               remote-endpoint = <&xbar_adx1_out2_ep>;
+                                                       };
+                                               };
+
+                                               adx1_out3_port: port@3 {
+                                                       reg = <3>;
+
+                                                       adx1_out3_ep: endpoint {
+                                                               remote-endpoint = <&xbar_adx1_out3_ep>;
+                                                       };
+                                               };
+
+                                               adx1_out4_port: port@4 {
+                                                       reg = <4>;
+
+                                                       adx1_out4_ep: endpoint {
+                                                               remote-endpoint = <&xbar_adx1_out4_ep>;
                                                        };
                                                };
                                        };
                                };
 
-                               dmic@2904100 {
+                               adx@2903900 {
                                        status = "okay";
 
                                        ports {
                                                port@0 {
                                                        reg = <0>;
 
-                                                       dmic2_cif_ep: endpoint {
-                                                               remote-endpoint = <&xbar_dmic2_ep>;
+                                                       adx2_in_ep: endpoint {
+                                                               remote-endpoint = <&xbar_adx2_in_ep>;
                                                        };
                                                };
 
-                                               dmic2_port: port@1 {
+                                               adx2_out1_port: port@1 {
                                                        reg = <1>;
 
-                                                       dmic2_dap_ep: endpoint {
-                                                               /* Place holder for external Codec */
+                                                       adx2_out1_ep: endpoint {
+                                                               remote-endpoint = <&xbar_adx2_out1_ep>;
+                                                       };
+                                               };
+
+                                               adx2_out2_port: port@2 {
+                                                       reg = <2>;
+
+                                                       adx2_out2_ep: endpoint {
+                                                               remote-endpoint = <&xbar_adx2_out2_ep>;
+                                                       };
+                                               };
+
+                                               adx2_out3_port: port@3 {
+                                                       reg = <3>;
+
+                                                       adx2_out3_ep: endpoint {
+                                                               remote-endpoint = <&xbar_adx2_out3_ep>;
+                                                       };
+                                               };
+
+                                               adx2_out4_port: port@4 {
+                                                       reg = <4>;
+
+                                                       adx2_out4_ep: endpoint {
+                                                               remote-endpoint = <&xbar_adx2_out4_ep>;
                                                        };
                                                };
                                        };
                                };
 
-                               dmic@2904300 {
+                               adx@2903a00 {
                                        status = "okay";
 
                                        ports {
                                                port@0 {
                                                        reg = <0>;
 
-                                                       dmic4_cif_ep: endpoint {
-                                                               remote-endpoint = <&xbar_dmic4_ep>;
+                                                       adx3_in_ep: endpoint {
+                                                               remote-endpoint = <&xbar_adx3_in_ep>;
                                                        };
                                                };
 
-                                               dmic4_port: port@1 {
+                                               adx3_out1_port: port@1 {
                                                        reg = <1>;
 
-                                                       dmic4_dap_ep: endpoint {
-                                                               /* Place holder for external Codec */
+                                                       adx3_out1_ep: endpoint {
+                                                               remote-endpoint = <&xbar_adx3_out1_ep>;
+                                                       };
+                                               };
+
+                                               adx3_out2_port: port@2 {
+                                                       reg = <2>;
+
+                                                       adx3_out2_ep: endpoint {
+                                                               remote-endpoint = <&xbar_adx3_out2_ep>;
+                                                       };
+                                               };
+
+                                               adx3_out3_port: port@3 {
+                                                       reg = <3>;
+
+                                                       adx3_out3_ep: endpoint {
+                                                               remote-endpoint = <&xbar_adx3_out3_ep>;
+                                                       };
+                                               };
+
+                                               adx3_out4_port: port@4 {
+                                                       reg = <4>;
+
+                                                       adx3_out4_ep: endpoint {
+                                                               remote-endpoint = <&xbar_adx3_out4_ep>;
                                                        };
                                                };
                                        };
                                };
 
-                               dspk@2905000 {
+                               adx@2903b00 {
                                        status = "okay";
 
                                        ports {
                                                port@0 {
                                                        reg = <0>;
 
-                                                       dspk1_cif_ep: endpoint {
-                                                               remote-endpoint = <&xbar_dspk1_ep>;
+                                                       adx4_in_ep: endpoint {
+                                                               remote-endpoint = <&xbar_adx4_in_ep>;
                                                        };
                                                };
 
-                                               dspk1_port: port@1 {
+                                               adx4_out1_port: port@1 {
                                                        reg = <1>;
 
-                                                       dspk1_dap_ep: endpoint {
-                                                               /* Place holder for external Codec */
+                                                       adx4_out1_ep: endpoint {
+                                                               remote-endpoint = <&xbar_adx4_out1_ep>;
+                                                       };
+                                               };
+
+                                               adx4_out2_port: port@2 {
+                                                       reg = <2>;
+
+                                                       adx4_out2_ep: endpoint {
+                                                               remote-endpoint = <&xbar_adx4_out2_ep>;
+                                                       };
+                                               };
+
+                                               adx4_out3_port: port@3 {
+                                                       reg = <3>;
+
+                                                       adx4_out3_ep: endpoint {
+                                                               remote-endpoint = <&xbar_adx4_out3_ep>;
+                                                       };
+                                               };
+
+                                               adx4_out4_port: port@4 {
+                                                       reg = <4>;
+
+                                                       adx4_out4_ep: endpoint {
+                                                               remote-endpoint = <&xbar_adx4_out4_ep>;
                                                        };
                                                };
                                        };
                                };
 
-                               dspk@2905100 {
+                               amixer@290bb00 {
                                        status = "okay";
 
                                        ports {
                                                #size-cells = <0>;
 
                                                port@0 {
-                                                       reg = <0>;
+                                                       reg = <0x0>;
 
-                                                       dspk2_cif_ep: endpoint {
-                                                               remote-endpoint = <&xbar_dspk2_ep>;
+                                                       mixer_in1_ep: endpoint {
+                                                               remote-endpoint = <&xbar_mixer_in1_ep>;
                                                        };
                                                };
 
-                                               dspk2_port: port@1 {
-                                                       reg = <1>;
+                                               port@1 {
+                                                       reg = <0x1>;
 
-                                                       dspk2_dap_ep: endpoint {
-                                                               /* Place holder for external Codec */
+                                                       mixer_in2_ep: endpoint {
+                                                               remote-endpoint = <&xbar_mixer_in2_ep>;
+                                                       };
+                                               };
+
+                                               port@2 {
+                                                       reg = <0x2>;
+
+                                                       mixer_in3_ep: endpoint {
+                                                               remote-endpoint = <&xbar_mixer_in3_ep>;
+                                                       };
+                                               };
+
+                                               port@3 {
+                                                       reg = <0x3>;
+
+                                                       mixer_in4_ep: endpoint {
+                                                               remote-endpoint = <&xbar_mixer_in4_ep>;
+                                                       };
+                                               };
+
+                                               port@4 {
+                                                       reg = <0x4>;
+
+                                                       mixer_in5_ep: endpoint {
+                                                               remote-endpoint = <&xbar_mixer_in5_ep>;
+                                                       };
+                                               };
+
+                                               port@5 {
+                                                       reg = <0x5>;
+
+                                                       mixer_in6_ep: endpoint {
+                                                               remote-endpoint = <&xbar_mixer_in6_ep>;
+                                                       };
+                                               };
+
+                                               port@6 {
+                                                       reg = <0x6>;
+
+                                                       mixer_in7_ep: endpoint {
+                                                               remote-endpoint = <&xbar_mixer_in7_ep>;
+                                                       };
+                                               };
+
+                                               port@7 {
+                                                       reg = <0x7>;
+
+                                                       mixer_in8_ep: endpoint {
+                                                               remote-endpoint = <&xbar_mixer_in8_ep>;
+                                                       };
+                                               };
+
+                                               port@8 {
+                                                       reg = <0x8>;
+
+                                                       mixer_in9_ep: endpoint {
+                                                               remote-endpoint = <&xbar_mixer_in9_ep>;
+                                                       };
+                                               };
+
+                                               port@9 {
+                                                       reg = <0x9>;
+
+                                                       mixer_in10_ep: endpoint {
+                                                               remote-endpoint = <&xbar_mixer_in10_ep>;
+                                                       };
+                                               };
+
+                                               mixer_out1_port: port@a {
+                                                       reg = <0xa>;
+
+                                                       mixer_out1_ep: endpoint {
+                                                               remote-endpoint = <&xbar_mixer_out1_ep>;
+                                                       };
+                                               };
+
+                                               mixer_out2_port: port@b {
+                                                       reg = <0xb>;
+
+                                                       mixer_out2_ep: endpoint {
+                                                               remote-endpoint = <&xbar_mixer_out2_ep>;
+                                                       };
+                                               };
+
+                                               mixer_out3_port: port@c {
+                                                       reg = <0xc>;
+
+                                                       mixer_out3_ep: endpoint {
+                                                               remote-endpoint = <&xbar_mixer_out3_ep>;
+                                                       };
+                                               };
+
+                                               mixer_out4_port: port@d {
+                                                       reg = <0xd>;
+
+                                                       mixer_out4_ep: endpoint {
+                                                               remote-endpoint = <&xbar_mixer_out4_ep>;
+                                                       };
+                                               };
+
+                                               mixer_out5_port: port@e {
+                                                       reg = <0xe>;
+
+                                                       mixer_out5_ep: endpoint {
+                                                               remote-endpoint = <&xbar_mixer_out5_ep>;
                                                        };
                                                };
                                        };
                            "p2u-5", "p2u-6", "p2u-7";
        };
 
-       pcie_ep@141a0000 {
+       pcie-ep@141a0000 {
                status = "disabled";
 
                vddio-pex-ctl-supply = <&vdd_1v8ao>;
                       <&xbar_i2s3_port>, <&xbar_i2s5_port>,
                       <&xbar_dmic1_port>, <&xbar_dmic2_port>, <&xbar_dmic4_port>,
                       <&xbar_dspk1_port>, <&xbar_dspk2_port>,
+                      <&xbar_sfc1_in_port>, <&xbar_sfc2_in_port>,
+                      <&xbar_sfc3_in_port>, <&xbar_sfc4_in_port>,
+                      <&xbar_mvc1_in_port>, <&xbar_mvc2_in_port>,
+                      <&xbar_amx1_in1_port>, <&xbar_amx1_in2_port>,
+                      <&xbar_amx1_in3_port>, <&xbar_amx1_in4_port>,
+                      <&xbar_amx2_in1_port>, <&xbar_amx2_in2_port>,
+                      <&xbar_amx2_in3_port>, <&xbar_amx2_in4_port>,
+                      <&xbar_amx3_in1_port>, <&xbar_amx3_in2_port>,
+                      <&xbar_amx3_in3_port>, <&xbar_amx3_in4_port>,
+                      <&xbar_amx4_in1_port>, <&xbar_amx4_in2_port>,
+                      <&xbar_amx4_in3_port>, <&xbar_amx4_in4_port>,
+                      <&xbar_adx1_in_port>, <&xbar_adx2_in_port>,
+                      <&xbar_adx3_in_port>, <&xbar_adx4_in_port>,
+                      <&xbar_mixer_in1_port>, <&xbar_mixer_in2_port>,
+                      <&xbar_mixer_in3_port>, <&xbar_mixer_in4_port>,
+                      <&xbar_mixer_in5_port>, <&xbar_mixer_in6_port>,
+                      <&xbar_mixer_in7_port>, <&xbar_mixer_in8_port>,
+                      <&xbar_mixer_in9_port>, <&xbar_mixer_in10_port>,
+                      /* HW accelerators */
+                      <&sfc1_out_port>, <&sfc2_out_port>,
+                      <&sfc3_out_port>, <&sfc4_out_port>,
+                      <&mvc1_out_port>, <&mvc2_out_port>,
+                      <&amx1_out_port>, <&amx2_out_port>,
+                      <&amx3_out_port>, <&amx4_out_port>,
+                      <&adx1_out1_port>, <&adx1_out2_port>,
+                      <&adx1_out3_port>, <&adx1_out4_port>,
+                      <&adx2_out1_port>, <&adx2_out2_port>,
+                      <&adx2_out3_port>, <&adx2_out4_port>,
+                      <&adx3_out1_port>, <&adx3_out2_port>,
+                      <&adx3_out3_port>, <&adx3_out4_port>,
+                      <&adx4_out1_port>, <&adx4_out2_port>,
+                      <&adx4_out3_port>, <&adx4_out4_port>,
+                      <&mixer_out1_port>, <&mixer_out2_port>,
+                      <&mixer_out3_port>, <&mixer_out4_port>,
+                      <&mixer_out5_port>,
                       /* BE I/O Ports */
                       <&i2s3_port>, <&i2s5_port>,
                       <&dmic1_port>, <&dmic2_port>, <&dmic4_port>,
index c8250a3..851e049 100644 (file)
                        reg = <0x2200000 0x10000>,
                              <0x2210000 0x10000>;
                        interrupts = <GIC_SPI 288 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 289 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 290 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 291 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 292 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 293 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 294 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 295 IRQ_TYPE_LEVEL_HIGH>,
                                     <GIC_SPI 296 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 297 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 298 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 299 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 300 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 301 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 302 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 303 IRQ_TYPE_LEVEL_HIGH>,
                                     <GIC_SPI 304 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 305 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 306 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 307 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 308 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 309 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 310 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 311 IRQ_TYPE_LEVEL_HIGH>,
                                     <GIC_SPI 312 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 313 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 314 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 315 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 316 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 317 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 318 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 319 IRQ_TYPE_LEVEL_HIGH>,
                                     <GIC_SPI 320 IRQ_TYPE_LEVEL_HIGH>,
-                                    <GIC_SPI 328 IRQ_TYPE_LEVEL_HIGH>;
+                                    <GIC_SPI 321 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 322 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 323 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 324 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 325 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 326 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 327 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 328 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 329 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 330 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 331 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 332 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 333 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 334 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 335 IRQ_TYPE_LEVEL_HIGH>;
                        #interrupt-cells = <2>;
                        interrupt-controller;
                        #gpio-cells = <2>;
                                        sound-name-prefix = "DSPK2";
                                        status = "disabled";
                                };
+
+                               tegra_sfc1: sfc@2902000 {
+                                       compatible = "nvidia,tegra194-sfc",
+                                                    "nvidia,tegra210-sfc";
+                                       reg = <0x2902000 0x200>;
+                                       sound-name-prefix = "SFC1";
+                                       status = "disabled";
+                               };
+
+                               tegra_sfc2: sfc@2902200 {
+                                       compatible = "nvidia,tegra194-sfc",
+                                                    "nvidia,tegra210-sfc";
+                                       reg = <0x2902200 0x200>;
+                                       sound-name-prefix = "SFC2";
+                                       status = "disabled";
+                               };
+
+                               tegra_sfc3: sfc@2902400 {
+                                       compatible = "nvidia,tegra194-sfc",
+                                                    "nvidia,tegra210-sfc";
+                                       reg = <0x2902400 0x200>;
+                                       sound-name-prefix = "SFC3";
+                                       status = "disabled";
+                               };
+
+                               tegra_sfc4: sfc@2902600 {
+                                       compatible = "nvidia,tegra194-sfc",
+                                                    "nvidia,tegra210-sfc";
+                                       reg = <0x2902600 0x200>;
+                                       sound-name-prefix = "SFC4";
+                                       status = "disabled";
+                               };
+
+                               tegra_mvc1: mvc@290a000 {
+                                       compatible = "nvidia,tegra194-mvc",
+                                                    "nvidia,tegra210-mvc";
+                                       reg = <0x290a000 0x200>;
+                                       sound-name-prefix = "MVC1";
+                                       status = "disabled";
+                               };
+
+                               tegra_mvc2: mvc@290a200 {
+                                       compatible = "nvidia,tegra194-mvc",
+                                                    "nvidia,tegra210-mvc";
+                                       reg = <0x290a200 0x200>;
+                                       sound-name-prefix = "MVC2";
+                                       status = "disabled";
+                               };
+
+                               tegra_amx1: amx@2903000 {
+                                       compatible = "nvidia,tegra194-amx";
+                                       reg = <0x2903000 0x100>;
+                                       sound-name-prefix = "AMX1";
+                                       status = "disabled";
+                               };
+
+                               tegra_amx2: amx@2903100 {
+                                       compatible = "nvidia,tegra194-amx";
+                                       reg = <0x2903100 0x100>;
+                                       sound-name-prefix = "AMX2";
+                                       status = "disabled";
+                               };
+
+                               tegra_amx3: amx@2903200 {
+                                       compatible = "nvidia,tegra194-amx";
+                                       reg = <0x2903200 0x100>;
+                                       sound-name-prefix = "AMX3";
+                                       status = "disabled";
+                               };
+
+                               tegra_amx4: amx@2903300 {
+                                       compatible = "nvidia,tegra194-amx";
+                                       reg = <0x2903300 0x100>;
+                                       sound-name-prefix = "AMX4";
+                                       status = "disabled";
+                               };
+
+                               tegra_adx1: adx@2903800 {
+                                       compatible = "nvidia,tegra194-adx",
+                                                    "nvidia,tegra210-adx";
+                                       reg = <0x2903800 0x100>;
+                                       sound-name-prefix = "ADX1";
+                                       status = "disabled";
+                               };
+
+                               tegra_adx2: adx@2903900 {
+                                       compatible = "nvidia,tegra194-adx",
+                                                    "nvidia,tegra210-adx";
+                                       reg = <0x2903900 0x100>;
+                                       sound-name-prefix = "ADX2";
+                                       status = "disabled";
+                               };
+
+                               tegra_adx3: adx@2903a00 {
+                                       compatible = "nvidia,tegra194-adx",
+                                                    "nvidia,tegra210-adx";
+                                       reg = <0x2903a00 0x100>;
+                                       sound-name-prefix = "ADX3";
+                                       status = "disabled";
+                               };
+
+                               tegra_adx4: adx@2903b00 {
+                                       compatible = "nvidia,tegra194-adx",
+                                                    "nvidia,tegra210-adx";
+                                       reg = <0x2903b00 0x100>;
+                                       sound-name-prefix = "ADX4";
+                                       status = "disabled";
+                               };
+
+                               tegra_amixer: amixer@290bb00 {
+                                       compatible = "nvidia,tegra194-amixer",
+                                                    "nvidia,tegra210-amixer";
+                                       reg = <0x290bb00 0x800>;
+                                       sound-name-prefix = "MIXER1";
+                                       status = "disabled";
+                               };
                        };
                };
 
                        reg-names = "security", "gpio";
                        reg = <0xc2f0000 0x1000>,
                              <0xc2f1000 0x1000>;
-                       interrupts = <GIC_SPI 56 IRQ_TYPE_LEVEL_HIGH>;
+                       interrupts = <GIC_SPI 56 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 57 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 58 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 59 IRQ_TYPE_LEVEL_HIGH>;
                        gpio-controller;
                        #gpio-cells = <2>;
                        interrupt-controller;
                        interconnect-names = "dma-mem";
                        iommus = <&smmu TEGRA194_SID_HOST1X>;
 
+                       nvdec@15140000 {
+                               compatible = "nvidia,tegra194-nvdec";
+                               reg = <0x15140000 0x00040000>;
+                               clocks = <&bpmp TEGRA194_CLK_NVDEC1>;
+                               clock-names = "nvdec";
+                               resets = <&bpmp TEGRA194_RESET_NVDEC1>;
+                               reset-names = "nvdec";
+
+                               power-domains = <&bpmp TEGRA194_POWER_DOMAIN_NVDECB>;
+                               interconnects = <&mc TEGRA194_MEMORY_CLIENT_NVDEC1SRD &emc>,
+                                               <&mc TEGRA194_MEMORY_CLIENT_NVDEC1SRD1 &emc>,
+                                               <&mc TEGRA194_MEMORY_CLIENT_NVDEC1SWR &emc>;
+                               interconnect-names = "dma-mem", "read-1", "write";
+                               iommus = <&smmu TEGRA194_SID_NVDEC1>;
+                               dma-coherent;
+
+                               nvidia,host1x-class = <0xf5>;
+                       };
+
                        display-hub@15200000 {
                                compatible = "nvidia,tegra194-display";
                                reg = <0x15200000 0x00040000>;
                                iommus = <&smmu TEGRA194_SID_VIC>;
                        };
 
+                       nvdec@15480000 {
+                               compatible = "nvidia,tegra194-nvdec";
+                               reg = <0x15480000 0x00040000>;
+                               clocks = <&bpmp TEGRA194_CLK_NVDEC>;
+                               clock-names = "nvdec";
+                               resets = <&bpmp TEGRA194_RESET_NVDEC>;
+                               reset-names = "nvdec";
+
+                               power-domains = <&bpmp TEGRA194_POWER_DOMAIN_NVDECA>;
+                               interconnects = <&mc TEGRA194_MEMORY_CLIENT_NVDECSRD &emc>,
+                                               <&mc TEGRA194_MEMORY_CLIENT_NVDECSRD1 &emc>,
+                                               <&mc TEGRA194_MEMORY_CLIENT_NVDECSWR &emc>;
+                               interconnect-names = "dma-mem", "read-1", "write";
+                               iommus = <&smmu TEGRA194_SID_NVDEC>;
+                               dma-coherent;
+
+                               nvidia,host1x-class = <0xf0>;
+                       };
+
                        dpaux0: dpaux@155c0000 {
                                compatible = "nvidia,tegra194-dpaux";
                                reg = <0x155c0000 0x10000>;
                dma-coherent;
        };
 
-       pcie_ep@14160000 {
+       pcie-ep@14160000 {
                compatible = "nvidia,tegra194-pcie-ep";
                power-domains = <&bpmp TEGRA194_POWER_DOMAIN_PCIEX4A>;
                reg = <0x00 0x14160000 0x0 0x00020000>, /* appl registers (128K)      */
                dma-coherent;
        };
 
-       pcie_ep@14180000 {
+       pcie-ep@14180000 {
                compatible = "nvidia,tegra194-pcie-ep";
                power-domains = <&bpmp TEGRA194_POWER_DOMAIN_PCIEX8B>;
                reg = <0x00 0x14180000 0x0 0x00020000>, /* appl registers (128K)      */
                dma-coherent;
        };
 
-       pcie_ep@141a0000 {
+       pcie-ep@141a0000 {
                compatible = "nvidia,tegra194-pcie-ep";
                power-domains = <&bpmp TEGRA194_POWER_DOMAIN_PCIEX8A>;
                reg = <0x00 0x141a0000 0x0 0x00020000>, /* appl registers (128K)      */
index 7d3e363..2e17df6 100644 (file)
                                };
                        };
 
+                       sfc@702d2000 {
+                               status = "okay";
+
+                               ports {
+                                       #address-cells = <1>;
+                                       #size-cells = <0>;
+
+                                       port@0 {
+                                               reg = <0>;
+
+                                               sfc1_cif_in_ep: endpoint {
+                                                       remote-endpoint = <&xbar_sfc1_in_ep>;
+                                               };
+                                       };
+
+                                       sfc1_out_port: port@1 {
+                                               reg = <1>;
+
+                                               sfc1_cif_out_ep: endpoint {
+                                                       remote-endpoint = <&xbar_sfc1_out_ep>;
+                                               };
+                                       };
+                               };
+                       };
+
+                       sfc@702d2200 {
+                               status = "okay";
+
+                               ports {
+                                       #address-cells = <1>;
+                                       #size-cells = <0>;
+
+                                       port@0 {
+                                               reg = <0>;
+
+                                               sfc2_cif_in_ep: endpoint {
+                                                       remote-endpoint = <&xbar_sfc2_in_ep>;
+                                               };
+                                       };
+
+                                       sfc2_out_port: port@1 {
+                                               reg = <1>;
+
+                                               sfc2_cif_out_ep: endpoint {
+                                                       remote-endpoint = <&xbar_sfc2_out_ep>;
+                                               };
+                                       };
+                               };
+                       };
+
+                       sfc@702d2400 {
+                               status = "okay";
+
+                               ports {
+                                       #address-cells = <1>;
+                                       #size-cells = <0>;
+
+                                       port@0 {
+                                               reg = <0>;
+
+                                               sfc3_cif_in_ep: endpoint {
+                                                       remote-endpoint = <&xbar_sfc3_in_ep>;
+                                               };
+                                       };
+
+                                       sfc3_out_port: port@1 {
+                                               reg = <1>;
+
+                                               sfc3_cif_out_ep: endpoint {
+                                                       remote-endpoint = <&xbar_sfc3_out_ep>;
+                                               };
+                                       };
+                               };
+                       };
+
+                       sfc@702d2600 {
+                               status = "okay";
+
+                               ports {
+                                       #address-cells = <1>;
+                                       #size-cells = <0>;
+
+                                       port@0 {
+                                               reg = <0>;
+
+                                               sfc4_cif_in_ep: endpoint {
+                                                       remote-endpoint = <&xbar_sfc4_in_ep>;
+                                               };
+                                       };
+
+                                       sfc4_out_port: port@1 {
+                                               reg = <1>;
+
+                                               sfc4_cif_out_ep: endpoint {
+                                                       remote-endpoint = <&xbar_sfc4_out_ep>;
+                                               };
+                                       };
+                               };
+                       };
+
+                       mvc@702da000 {
+                               status = "okay";
+
+                               ports {
+                                       #address-cells = <1>;
+                                       #size-cells = <0>;
+
+                                       port@0 {
+                                               reg = <0>;
+
+                                               mvc1_cif_in_ep: endpoint {
+                                                       remote-endpoint = <&xbar_mvc1_in_ep>;
+                                               };
+                                       };
+
+                                       mvc1_out_port: port@1 {
+                                               reg = <1>;
+
+                                               mvc1_cif_out_ep: endpoint {
+                                                       remote-endpoint = <&xbar_mvc1_out_ep>;
+                                               };
+                                       };
+                               };
+                       };
+
+                       mvc@702da200 {
+                               status = "okay";
+
+                               ports {
+                                       #address-cells = <1>;
+                                       #size-cells = <0>;
+
+                                       port@0 {
+                                               reg = <0>;
+
+                                               mvc2_cif_in_ep: endpoint {
+                                                       remote-endpoint = <&xbar_mvc2_in_ep>;
+                                               };
+                                       };
+
+                                       mvc2_out_port: port@1 {
+                                               reg = <1>;
+
+                                               mvc2_cif_out_ep: endpoint {
+                                                       remote-endpoint = <&xbar_mvc2_out_ep>;
+                                               };
+                                       };
+                               };
+                       };
+
+                       amx@702d3000 {
+                               status = "okay";
+
+                               ports {
+                                       #address-cells = <1>;
+                                       #size-cells = <0>;
+
+                                       port@0 {
+                                               reg = <0>;
+
+                                               amx1_in1_ep: endpoint {
+                                                       remote-endpoint = <&xbar_amx1_in1_ep>;
+                                               };
+                                       };
+
+                                       port@1 {
+                                               reg = <1>;
+
+                                               amx1_in2_ep: endpoint {
+                                                       remote-endpoint = <&xbar_amx1_in2_ep>;
+                                               };
+                                       };
+
+                                       port@2 {
+                                               reg = <2>;
+
+                                               amx1_in3_ep: endpoint {
+                                                       remote-endpoint = <&xbar_amx1_in3_ep>;
+                                               };
+                                       };
+
+                                       port@3 {
+                                               reg = <3>;
+
+                                               amx1_in4_ep: endpoint {
+                                                       remote-endpoint = <&xbar_amx1_in4_ep>;
+                                               };
+                                       };
+
+                                       amx1_out_port: port@4 {
+                                               reg = <4>;
+
+                                               amx1_out_ep: endpoint {
+                                                       remote-endpoint = <&xbar_amx1_out_ep>;
+                                               };
+                                       };
+                               };
+                       };
+
+                       amx@702d3100 {
+                               status = "okay";
+
+                               ports {
+                                       #address-cells = <1>;
+                                       #size-cells = <0>;
+
+                                       port@0 {
+                                               reg = <0>;
+
+                                               amx2_in1_ep: endpoint {
+                                                       remote-endpoint = <&xbar_amx2_in1_ep>;
+                                               };
+                                       };
+
+                                       port@1 {
+                                               reg = <1>;
+
+                                               amx2_in2_ep: endpoint {
+                                                       remote-endpoint = <&xbar_amx2_in2_ep>;
+                                               };
+                                       };
+
+                                       amx2_in3_port: port@2 {
+                                               reg = <2>;
+
+                                               amx2_in3_ep: endpoint {
+                                                       remote-endpoint = <&xbar_amx2_in3_ep>;
+                                               };
+                                       };
+
+                                       amx2_in4_port: port@3 {
+                                               reg = <3>;
+
+                                               amx2_in4_ep: endpoint {
+                                                       remote-endpoint = <&xbar_amx2_in4_ep>;
+                                               };
+                                       };
+
+                                       amx2_out_port: port@4 {
+                                               reg = <4>;
+
+                                               amx2_out_ep: endpoint {
+                                                       remote-endpoint = <&xbar_amx2_out_ep>;
+                                               };
+                                       };
+                               };
+                       };
+
+                       adx@702d3800 {
+                               status = "okay";
+
+                               ports {
+                                       #address-cells = <1>;
+                                       #size-cells = <0>;
+
+                                       port@0 {
+                                               reg = <0>;
+
+                                               adx1_in_ep: endpoint {
+                                                       remote-endpoint = <&xbar_adx1_in_ep>;
+                                               };
+                                       };
+
+                                       adx1_out1_port: port@1 {
+                                               reg = <1>;
+
+                                               adx1_out1_ep: endpoint {
+                                                       remote-endpoint = <&xbar_adx1_out1_ep>;
+                                               };
+                                       };
+
+                                       adx1_out2_port: port@2 {
+                                               reg = <2>;
+
+                                               adx1_out2_ep: endpoint {
+                                                       remote-endpoint = <&xbar_adx1_out2_ep>;
+                                               };
+                                       };
+
+                                       adx1_out3_port: port@3 {
+                                               reg = <3>;
+
+                                               adx1_out3_ep: endpoint {
+                                                       remote-endpoint = <&xbar_adx1_out3_ep>;
+                                               };
+                                       };
+
+                                       adx1_out4_port: port@4 {
+                                               reg = <4>;
+
+                                               adx1_out4_ep: endpoint {
+                                                       remote-endpoint = <&xbar_adx1_out4_ep>;
+                                               };
+                                       };
+                               };
+                       };
+
+                       adx@702d3900 {
+                               status = "okay";
+
+                               ports {
+                                       #address-cells = <1>;
+                                       #size-cells = <0>;
+
+                                       port@0 {
+                                               reg = <0>;
+
+                                               adx2_in_ep: endpoint {
+                                                       remote-endpoint = <&xbar_adx2_in_ep>;
+                                               };
+                                       };
+
+                                       adx2_out1_port: port@1 {
+                                               reg = <1>;
+
+                                               adx2_out1_ep: endpoint {
+                                                       remote-endpoint = <&xbar_adx2_out1_ep>;
+                                               };
+                                       };
+
+                                       adx2_out2_port: port@2 {
+                                               reg = <2>;
+
+                                               adx2_out2_ep: endpoint {
+                                                       remote-endpoint = <&xbar_adx2_out2_ep>;
+                                               };
+                                       };
+
+                                       adx2_out3_port: port@3 {
+                                               reg = <3>;
+
+                                               adx2_out3_ep: endpoint {
+                                                       remote-endpoint = <&xbar_adx2_out3_ep>;
+                                               };
+                                       };
+
+                                       adx2_out4_port: port@4 {
+                                               reg = <4>;
+
+                                               adx2_out4_ep: endpoint {
+                                                       remote-endpoint = <&xbar_adx2_out4_ep>;
+                                               };
+                                       };
+                               };
+                       };
+
+                       amixer@702dbb00 {
+                               status = "okay";
+
+                               ports {
+                                       #address-cells = <1>;
+                                       #size-cells = <0>;
+
+                                       port@0 {
+                                               reg = <0x0>;
+
+                                               mixer_in1_ep: endpoint {
+                                                       remote-endpoint = <&xbar_mixer_in1_ep>;
+                                               };
+                                       };
+
+                                       port@1 {
+                                               reg = <0x1>;
+
+                                               mixer_in2_ep: endpoint {
+                                                       remote-endpoint = <&xbar_mixer_in2_ep>;
+                                               };
+                                       };
+
+                                       port@2 {
+                                               reg = <0x2>;
+
+                                               mixer_in3_ep: endpoint {
+                                                       remote-endpoint = <&xbar_mixer_in3_ep>;
+                                               };
+                                       };
+
+                                       port@3 {
+                                               reg = <0x3>;
+
+                                               mixer_in4_ep: endpoint {
+                                                       remote-endpoint = <&xbar_mixer_in4_ep>;
+                                               };
+                                       };
+
+                                       port@4 {
+                                               reg = <0x4>;
+
+                                               mixer_in5_ep: endpoint {
+                                                       remote-endpoint = <&xbar_mixer_in5_ep>;
+                                               };
+                                       };
+
+                                       port@5 {
+                                               reg = <0x5>;
+
+                                               mixer_in6_ep: endpoint {
+                                                       remote-endpoint = <&xbar_mixer_in6_ep>;
+                                               };
+                                       };
+
+                                       port@6 {
+                                               reg = <0x6>;
+
+                                               mixer_in7_ep: endpoint {
+                                                       remote-endpoint = <&xbar_mixer_in7_ep>;
+                                               };
+                                       };
+
+                                       port@7 {
+                                               reg = <0x7>;
+
+                                               mixer_in8_ep: endpoint {
+                                                       remote-endpoint = <&xbar_mixer_in8_ep>;
+                                               };
+                                       };
+
+                                       port@8 {
+                                               reg = <0x8>;
+
+                                               mixer_in9_ep: endpoint {
+                                                       remote-endpoint = <&xbar_mixer_in9_ep>;
+                                               };
+                                       };
+
+                                       port@9 {
+                                               reg = <0x9>;
+
+                                               mixer_in10_ep: endpoint {
+                                                       remote-endpoint = <&xbar_mixer_in10_ep>;
+                                               };
+                                       };
+
+                                       mixer_out1_port: port@a {
+                                               reg = <0xa>;
+
+                                               mixer_out1_ep: endpoint {
+                                                       remote-endpoint = <&xbar_mixer_out1_ep>;
+                                               };
+                                       };
+
+                                       mixer_out2_port: port@b {
+                                               reg = <0xb>;
+
+                                               mixer_out2_ep: endpoint {
+                                                       remote-endpoint = <&xbar_mixer_out2_ep>;
+                                               };
+                                       };
+
+                                       mixer_out3_port: port@c {
+                                               reg = <0xc>;
+
+                                               mixer_out3_ep: endpoint {
+                                                       remote-endpoint = <&xbar_mixer_out3_ep>;
+                                               };
+                                       };
+
+                                       mixer_out4_port: port@d {
+                                               reg = <0xd>;
+
+                                               mixer_out4_ep: endpoint {
+                                                       remote-endpoint = <&xbar_mixer_out4_ep>;
+                                               };
+                                       };
+
+                                       mixer_out5_port: port@e {
+                                               reg = <0xe>;
+
+                                               mixer_out5_ep: endpoint {
+                                                       remote-endpoint = <&xbar_mixer_out5_ep>;
+                                               };
+                                       };
+                               };
+                       };
+
                        ports {
                                xbar_i2s1_port: port@a {
                                        reg = <0xa>;
                                                remote-endpoint = <&dmic3_cif_ep>;
                                        };
                                };
+
+                               xbar_sfc1_in_port: port@12 {
+                                       reg = <0x12>;
+
+                                       xbar_sfc1_in_ep: endpoint {
+                                               remote-endpoint = <&sfc1_cif_in_ep>;
+                                       };
+                               };
+
+                               port@13 {
+                                       reg = <0x13>;
+
+                                       xbar_sfc1_out_ep: endpoint {
+                                               remote-endpoint = <&sfc1_cif_out_ep>;
+                                       };
+                               };
+
+                               xbar_sfc2_in_port: port@14 {
+                                       reg = <0x14>;
+
+                                       xbar_sfc2_in_ep: endpoint {
+                                               remote-endpoint = <&sfc2_cif_in_ep>;
+                                       };
+                               };
+
+                               port@15 {
+                                       reg = <0x15>;
+
+                                       xbar_sfc2_out_ep: endpoint {
+                                               remote-endpoint = <&sfc2_cif_out_ep>;
+                                       };
+                               };
+
+                               xbar_sfc3_in_port: port@16 {
+                                       reg = <0x16>;
+
+                                       xbar_sfc3_in_ep: endpoint {
+                                               remote-endpoint = <&sfc3_cif_in_ep>;
+                                       };
+                               };
+
+                               port@17 {
+                                       reg = <0x17>;
+
+                                       xbar_sfc3_out_ep: endpoint {
+                                               remote-endpoint = <&sfc3_cif_out_ep>;
+                                       };
+                               };
+
+                               xbar_sfc4_in_port: port@18 {
+                                       reg = <0x18>;
+
+                                       xbar_sfc4_in_ep: endpoint {
+                                               remote-endpoint = <&sfc4_cif_in_ep>;
+                                       };
+                               };
+
+                               port@19 {
+                                       reg = <0x19>;
+
+                                       xbar_sfc4_out_ep: endpoint {
+                                               remote-endpoint = <&sfc4_cif_out_ep>;
+                                       };
+                               };
+
+                               xbar_mvc1_in_port: port@1a {
+                                       reg = <0x1a>;
+
+                                       xbar_mvc1_in_ep: endpoint {
+                                               remote-endpoint = <&mvc1_cif_in_ep>;
+                                       };
+                               };
+
+                               port@1b {
+                                       reg = <0x1b>;
+
+                                       xbar_mvc1_out_ep: endpoint {
+                                               remote-endpoint = <&mvc1_cif_out_ep>;
+                                       };
+                               };
+
+                               xbar_mvc2_in_port: port@1c {
+                                       reg = <0x1c>;
+
+                                       xbar_mvc2_in_ep: endpoint {
+                                               remote-endpoint = <&mvc2_cif_in_ep>;
+                                       };
+                               };
+
+                               port@1d {
+                                       reg = <0x1d>;
+
+                                       xbar_mvc2_out_ep: endpoint {
+                                               remote-endpoint = <&mvc2_cif_out_ep>;
+                                       };
+                               };
+
+                               xbar_amx1_in1_port: port@1e {
+                                       reg = <0x1e>;
+
+                                       xbar_amx1_in1_ep: endpoint {
+                                               remote-endpoint = <&amx1_in1_ep>;
+                                       };
+                               };
+
+                               xbar_amx1_in2_port: port@1f {
+                                       reg = <0x1f>;
+
+                                       xbar_amx1_in2_ep: endpoint {
+                                               remote-endpoint = <&amx1_in2_ep>;
+                                       };
+                               };
+
+                               xbar_amx1_in3_port: port@20 {
+                                       reg = <0x20>;
+
+                                       xbar_amx1_in3_ep: endpoint {
+                                               remote-endpoint = <&amx1_in3_ep>;
+                                       };
+                               };
+
+                               xbar_amx1_in4_port: port@21 {
+                                       reg = <0x21>;
+
+                                       xbar_amx1_in4_ep: endpoint {
+                                               remote-endpoint = <&amx1_in4_ep>;
+                                       };
+                               };
+
+                               port@22 {
+                                       reg = <0x22>;
+
+                                       xbar_amx1_out_ep: endpoint {
+                                               remote-endpoint = <&amx1_out_ep>;
+                                       };
+                               };
+
+                               xbar_amx2_in1_port: port@23 {
+                                       reg = <0x23>;
+
+                                       xbar_amx2_in1_ep: endpoint {
+                                               remote-endpoint = <&amx2_in1_ep>;
+                                       };
+                               };
+
+                               xbar_amx2_in2_port: port@24 {
+                                       reg = <0x24>;
+
+                                       xbar_amx2_in2_ep: endpoint {
+                                               remote-endpoint = <&amx2_in2_ep>;
+                                       };
+                               };
+
+                               xbar_amx2_in3_port: port@25 {
+                                       reg = <0x25>;
+
+                                       xbar_amx2_in3_ep: endpoint {
+                                               remote-endpoint = <&amx2_in3_ep>;
+                                       };
+                               };
+
+                               xbar_amx2_in4_port: port@26 {
+                                       reg = <0x26>;
+
+                                       xbar_amx2_in4_ep: endpoint {
+                                               remote-endpoint = <&amx2_in4_ep>;
+                                       };
+                               };
+
+                               port@27 {
+                                       reg = <0x27>;
+
+                                       xbar_amx2_out_ep: endpoint {
+                                               remote-endpoint = <&amx2_out_ep>;
+                                       };
+                               };
+
+                               xbar_adx1_in_port: port@28 {
+                                       reg = <0x28>;
+
+                                       xbar_adx1_in_ep: endpoint {
+                                               remote-endpoint = <&adx1_in_ep>;
+                                       };
+                               };
+
+                               port@29 {
+                                       reg = <0x29>;
+
+                                       xbar_adx1_out1_ep: endpoint {
+                                               remote-endpoint = <&adx1_out1_ep>;
+                                       };
+                               };
+
+                               port@2a {
+                                       reg = <0x2a>;
+
+                                       xbar_adx1_out2_ep: endpoint {
+                                               remote-endpoint = <&adx1_out2_ep>;
+                                       };
+                               };
+
+                               port@2b {
+                                       reg = <0x2b>;
+
+                                       xbar_adx1_out3_ep: endpoint {
+                                               remote-endpoint = <&adx1_out3_ep>;
+                                       };
+                               };
+
+                               port@2c {
+                                       reg = <0x2c>;
+
+                                       xbar_adx1_out4_ep: endpoint {
+                                               remote-endpoint = <&adx1_out4_ep>;
+                                       };
+                               };
+
+                               xbar_adx2_in_port: port@2d {
+                                       reg = <0x2d>;
+
+                                       xbar_adx2_in_ep: endpoint {
+                                               remote-endpoint = <&adx2_in_ep>;
+                                       };
+                               };
+
+                               port@2e {
+                                       reg = <0x2e>;
+
+                                       xbar_adx2_out1_ep: endpoint {
+                                               remote-endpoint = <&adx2_out1_ep>;
+                                       };
+                               };
+
+                               port@2f {
+                                       reg = <0x2f>;
+
+                                       xbar_adx2_out2_ep: endpoint {
+                                               remote-endpoint = <&adx2_out2_ep>;
+                                       };
+                               };
+
+                               port@30 {
+                                       reg = <0x30>;
+
+                                       xbar_adx2_out3_ep: endpoint {
+                                               remote-endpoint = <&adx2_out3_ep>;
+                                       };
+                               };
+
+                               port@31 {
+                                       reg = <0x31>;
+
+                                       xbar_adx2_out4_ep: endpoint {
+                                               remote-endpoint = <&adx2_out4_ep>;
+                                       };
+                               };
+
+                               xbar_mixer_in1_port: port@32 {
+                                       reg = <0x32>;
+
+                                       xbar_mixer_in1_ep: endpoint {
+                                               remote-endpoint = <&mixer_in1_ep>;
+                                       };
+                               };
+
+                               xbar_mixer_in2_port: port@33 {
+                                       reg = <0x33>;
+
+                                       xbar_mixer_in2_ep: endpoint {
+                                               remote-endpoint = <&mixer_in2_ep>;
+                                       };
+                               };
+
+                               xbar_mixer_in3_port: port@34 {
+                                       reg = <0x34>;
+
+                                       xbar_mixer_in3_ep: endpoint {
+                                               remote-endpoint = <&mixer_in3_ep>;
+                                       };
+                               };
+
+                               xbar_mixer_in4_port: port@35 {
+                                       reg = <0x35>;
+
+                                       xbar_mixer_in4_ep: endpoint {
+                                               remote-endpoint = <&mixer_in4_ep>;
+                                       };
+                               };
+
+                               xbar_mixer_in5_port: port@36 {
+                                       reg = <0x36>;
+
+                                       xbar_mixer_in5_ep: endpoint {
+                                               remote-endpoint = <&mixer_in5_ep>;
+                                       };
+                               };
+
+                               xbar_mixer_in6_port: port@37 {
+                                       reg = <0x37>;
+
+                                       xbar_mixer_in6_ep: endpoint {
+                                               remote-endpoint = <&mixer_in6_ep>;
+                                       };
+                               };
+
+                               xbar_mixer_in7_port: port@38 {
+                                       reg = <0x38>;
+
+                                       xbar_mixer_in7_ep: endpoint {
+                                               remote-endpoint = <&mixer_in7_ep>;
+                                       };
+                               };
+
+                               xbar_mixer_in8_port: port@39 {
+                                       reg = <0x39>;
+
+                                       xbar_mixer_in8_ep: endpoint {
+                                               remote-endpoint = <&mixer_in8_ep>;
+                                       };
+                               };
+
+                               xbar_mixer_in9_port: port@3a {
+                                       reg = <0x3a>;
+
+                                       xbar_mixer_in9_ep: endpoint {
+                                               remote-endpoint = <&mixer_in9_ep>;
+                                       };
+                               };
+
+                               xbar_mixer_in10_port: port@3b {
+                                       reg = <0x3b>;
+
+                                       xbar_mixer_in10_ep: endpoint {
+                                               remote-endpoint = <&mixer_in10_ep>;
+                                       };
+                               };
+
+                               port@3c {
+                                       reg = <0x3c>;
+
+                                       xbar_mixer_out1_ep: endpoint {
+                                               remote-endpoint = <&mixer_out1_ep>;
+                                       };
+                               };
+
+                               port@3d {
+                                       reg = <0x3d>;
+
+                                       xbar_mixer_out2_ep: endpoint {
+                                               remote-endpoint = <&mixer_out2_ep>;
+                                       };
+                               };
+
+                               port@3e {
+                                       reg = <0x3e>;
+
+                                       xbar_mixer_out3_ep: endpoint {
+                                               remote-endpoint = <&mixer_out3_ep>;
+                                       };
+                               };
+
+                               port@3f {
+                                       reg = <0x3f>;
+
+                                       xbar_mixer_out4_ep: endpoint {
+                                               remote-endpoint = <&mixer_out4_ep>;
+                                       };
+                               };
+
+                               port@40 {
+                                       reg = <0x40>;
+
+                                       xbar_mixer_out5_ep: endpoint {
+                                               remote-endpoint = <&mixer_out5_ep>;
+                                       };
+                               };
                        };
                };
        };
                       <&xbar_i2s1_port>, <&xbar_i2s2_port>, <&xbar_i2s3_port>,
                       <&xbar_i2s4_port>, <&xbar_i2s5_port>, <&xbar_dmic1_port>,
                       <&xbar_dmic2_port>, <&xbar_dmic3_port>,
+                      <&xbar_sfc1_in_port>, <&xbar_sfc2_in_port>,
+                      <&xbar_sfc3_in_port>, <&xbar_sfc4_in_port>,
+                      <&xbar_mvc1_in_port>, <&xbar_mvc2_in_port>,
+                      <&xbar_amx1_in1_port>, <&xbar_amx1_in2_port>,
+                      <&xbar_amx1_in3_port>, <&xbar_amx1_in4_port>,
+                      <&xbar_amx2_in1_port>, <&xbar_amx2_in2_port>,
+                      <&xbar_amx2_in3_port>, <&xbar_amx2_in4_port>,
+                      <&xbar_adx1_in_port>, <&xbar_adx2_in_port>,
+                      <&xbar_mixer_in1_port>, <&xbar_mixer_in2_port>,
+                      <&xbar_mixer_in3_port>, <&xbar_mixer_in4_port>,
+                      <&xbar_mixer_in5_port>, <&xbar_mixer_in6_port>,
+                      <&xbar_mixer_in7_port>, <&xbar_mixer_in8_port>,
+                      <&xbar_mixer_in9_port>, <&xbar_mixer_in10_port>,
+                      /* HW accelerators */
+                      <&sfc1_out_port>, <&sfc2_out_port>,
+                      <&sfc3_out_port>, <&sfc4_out_port>,
+                      <&mvc1_out_port>, <&mvc2_out_port>,
+                      <&amx1_out_port>, <&amx2_out_port>,
+                      <&adx1_out1_port>, <&adx1_out2_port>,
+                      <&adx1_out3_port>, <&adx1_out4_port>,
+                      <&adx2_out1_port>, <&adx2_out2_port>,
+                      <&adx2_out3_port>, <&adx2_out4_port>,
+                      <&mixer_out1_port>, <&mixer_out2_port>,
+                      <&mixer_out3_port>, <&mixer_out4_port>,
+                      <&mixer_out5_port>,
                       /* I/O DAP Ports */
                       <&i2s1_port>, <&i2s2_port>, <&i2s3_port>, <&i2s4_port>,
                       <&i2s5_port>, <&dmic1_port>, <&dmic2_port>, <&dmic3_port>;
index 7dbb13f..030f264 100644 (file)
                                };
                        };
 
+                       sfc@702d2000 {
+                               status = "okay";
+
+                               ports {
+                                       #address-cells = <1>;
+                                       #size-cells = <0>;
+
+                                       port@0 {
+                                               reg = <0>;
+
+                                               sfc1_cif_in_ep: endpoint {
+                                                       remote-endpoint = <&xbar_sfc1_in_ep>;
+                                               };
+                                       };
+
+                                       sfc1_out_port: port@1 {
+                                               reg = <1>;
+
+                                               sfc1_cif_out_ep: endpoint {
+                                                       remote-endpoint = <&xbar_sfc1_out_ep>;
+                                               };
+                                       };
+                               };
+                       };
+
+                       sfc@702d2200 {
+                               status = "okay";
+
+                               ports {
+                                       #address-cells = <1>;
+                                       #size-cells = <0>;
+
+                                       port@0 {
+                                               reg = <0>;
+
+                                               sfc2_cif_in_ep: endpoint {
+                                                       remote-endpoint = <&xbar_sfc2_in_ep>;
+                                               };
+                                       };
+
+                                       sfc2_out_port: port@1 {
+                                               reg = <1>;
+
+                                               sfc2_cif_out_ep: endpoint {
+                                                       remote-endpoint = <&xbar_sfc2_out_ep>;
+                                               };
+                                       };
+                               };
+                       };
+
+                       sfc@702d2400 {
+                               status = "okay";
+
+                               ports {
+                                       #address-cells = <1>;
+                                       #size-cells = <0>;
+
+                                       port@0 {
+                                               reg = <0>;
+
+                                               sfc3_cif_in_ep: endpoint {
+                                                       remote-endpoint = <&xbar_sfc3_in_ep>;
+                                               };
+                                       };
+
+                                       sfc3_out_port: port@1 {
+                                               reg = <1>;
+
+                                               sfc3_cif_out_ep: endpoint {
+                                                       remote-endpoint = <&xbar_sfc3_out_ep>;
+                                               };
+                                       };
+                               };
+                       };
+
+                       sfc@702d2600 {
+                               status = "okay";
+
+                               ports {
+                                       #address-cells = <1>;
+                                       #size-cells = <0>;
+
+                                       port@0 {
+                                               reg = <0>;
+
+                                               sfc4_cif_in_ep: endpoint {
+                                                       remote-endpoint = <&xbar_sfc4_in_ep>;
+                                               };
+                                       };
+
+                                       sfc4_out_port: port@1 {
+                                               reg = <1>;
+
+                                               sfc4_cif_out_ep: endpoint {
+                                                       remote-endpoint = <&xbar_sfc4_out_ep>;
+                                               };
+                                       };
+                               };
+                       };
+
+                       mvc@702da000 {
+                               status = "okay";
+
+                               ports {
+                                       #address-cells = <1>;
+                                       #size-cells = <0>;
+
+                                       port@0 {
+                                               reg = <0>;
+
+                                               mvc1_cif_in_ep: endpoint {
+                                                       remote-endpoint = <&xbar_mvc1_in_ep>;
+                                               };
+                                       };
+
+                                       mvc1_out_port: port@1 {
+                                               reg = <1>;
+
+                                               mvc1_cif_out_ep: endpoint {
+                                                       remote-endpoint = <&xbar_mvc1_out_ep>;
+                                               };
+                                       };
+                               };
+                       };
+
+                       mvc@702da200 {
+                               status = "okay";
+
+                               ports {
+                                       #address-cells = <1>;
+                                       #size-cells = <0>;
+
+                                       port@0 {
+                                               reg = <0>;
+
+                                               mvc2_cif_in_ep: endpoint {
+                                                       remote-endpoint = <&xbar_mvc2_in_ep>;
+                                               };
+                                       };
+
+                                       mvc2_out_port: port@1 {
+                                               reg = <1>;
+
+                                               mvc2_cif_out_ep: endpoint {
+                                                       remote-endpoint = <&xbar_mvc2_out_ep>;
+                                               };
+                                       };
+                               };
+                       };
+
+                       amx@702d3000 {
+                               status = "okay";
+
+                               ports {
+                                       #address-cells = <1>;
+                                       #size-cells = <0>;
+
+                                       port@0 {
+                                               reg = <0>;
+
+                                               amx1_in1_ep: endpoint {
+                                                       remote-endpoint = <&xbar_amx1_in1_ep>;
+                                               };
+                                       };
+
+                                       port@1 {
+                                               reg = <1>;
+
+                                               amx1_in2_ep: endpoint {
+                                                       remote-endpoint = <&xbar_amx1_in2_ep>;
+                                               };
+                                       };
+
+                                       port@2 {
+                                               reg = <2>;
+
+                                               amx1_in3_ep: endpoint {
+                                                       remote-endpoint = <&xbar_amx1_in3_ep>;
+                                               };
+                                       };
+
+                                       port@3 {
+                                               reg = <3>;
+
+                                               amx1_in4_ep: endpoint {
+                                                       remote-endpoint = <&xbar_amx1_in4_ep>;
+                                               };
+                                       };
+
+                                       amx1_out_port: port@4 {
+                                               reg = <4>;
+
+                                               amx1_out_ep: endpoint {
+                                                       remote-endpoint = <&xbar_amx1_out_ep>;
+                                               };
+                                       };
+                               };
+                       };
+
+                       amx@702d3100 {
+                               status = "okay";
+
+                               ports {
+                                       #address-cells = <1>;
+                                       #size-cells = <0>;
+
+                                       port@0 {
+                                               reg = <0>;
+
+                                               amx2_in1_ep: endpoint {
+                                                       remote-endpoint = <&xbar_amx2_in1_ep>;
+                                               };
+                                       };
+
+                                       port@1 {
+                                               reg = <1>;
+
+                                               amx2_in2_ep: endpoint {
+                                                       remote-endpoint = <&xbar_amx2_in2_ep>;
+                                               };
+                                       };
+
+                                       amx2_in3_port: port@2 {
+                                               reg = <2>;
+
+                                               amx2_in3_ep: endpoint {
+                                                       remote-endpoint = <&xbar_amx2_in3_ep>;
+                                               };
+                                       };
+
+                                       amx2_in4_port: port@3 {
+                                               reg = <3>;
+
+                                               amx2_in4_ep: endpoint {
+                                                       remote-endpoint = <&xbar_amx2_in4_ep>;
+                                               };
+                                       };
+
+                                       amx2_out_port: port@4 {
+                                               reg = <4>;
+
+                                               amx2_out_ep: endpoint {
+                                                       remote-endpoint = <&xbar_amx2_out_ep>;
+                                               };
+                                       };
+                               };
+                       };
+
+                       adx@702d3800 {
+                               status = "okay";
+
+                               ports {
+                                       #address-cells = <1>;
+                                       #size-cells = <0>;
+
+                                       port@0 {
+                                               reg = <0>;
+
+                                               adx1_in_ep: endpoint {
+                                                       remote-endpoint = <&xbar_adx1_in_ep>;
+                                               };
+                                       };
+
+                                       adx1_out1_port: port@1 {
+                                               reg = <1>;
+
+                                               adx1_out1_ep: endpoint {
+                                                       remote-endpoint = <&xbar_adx1_out1_ep>;
+                                               };
+                                       };
+
+                                       adx1_out2_port: port@2 {
+                                               reg = <2>;
+
+                                               adx1_out2_ep: endpoint {
+                                                       remote-endpoint = <&xbar_adx1_out2_ep>;
+                                               };
+                                       };
+
+                                       adx1_out3_port: port@3 {
+                                               reg = <3>;
+
+                                               adx1_out3_ep: endpoint {
+                                                       remote-endpoint = <&xbar_adx1_out3_ep>;
+                                               };
+                                       };
+
+                                       adx1_out4_port: port@4 {
+                                               reg = <4>;
+
+                                               adx1_out4_ep: endpoint {
+                                                       remote-endpoint = <&xbar_adx1_out4_ep>;
+                                               };
+                                       };
+                               };
+                       };
+
+                       adx@702d3900 {
+                               status = "okay";
+
+                               ports {
+                                       #address-cells = <1>;
+                                       #size-cells = <0>;
+
+                                       port@0 {
+                                               reg = <0>;
+
+                                               adx2_in_ep: endpoint {
+                                                       remote-endpoint = <&xbar_adx2_in_ep>;
+                                               };
+                                       };
+
+                                       adx2_out1_port: port@1 {
+                                               reg = <1>;
+
+                                               adx2_out1_ep: endpoint {
+                                                       remote-endpoint = <&xbar_adx2_out1_ep>;
+                                               };
+                                       };
+
+                                       adx2_out2_port: port@2 {
+                                               reg = <2>;
+
+                                               adx2_out2_ep: endpoint {
+                                                       remote-endpoint = <&xbar_adx2_out2_ep>;
+                                               };
+                                       };
+
+                                       adx2_out3_port: port@3 {
+                                               reg = <3>;
+
+                                               adx2_out3_ep: endpoint {
+                                                       remote-endpoint = <&xbar_adx2_out3_ep>;
+                                               };
+                                       };
+
+                                       adx2_out4_port: port@4 {
+                                               reg = <4>;
+
+                                               adx2_out4_ep: endpoint {
+                                                       remote-endpoint = <&xbar_adx2_out4_ep>;
+                                               };
+                                       };
+                               };
+                       };
+
+                       amixer@702dbb00 {
+                               status = "okay";
+
+                               ports {
+                                       #address-cells = <1>;
+                                       #size-cells = <0>;
+
+                                       port@0 {
+                                               reg = <0x0>;
+
+                                               mixer_in1_ep: endpoint {
+                                                       remote-endpoint = <&xbar_mixer_in1_ep>;
+                                               };
+                                       };
+
+                                       port@1 {
+                                               reg = <0x1>;
+
+                                               mixer_in2_ep: endpoint {
+                                                       remote-endpoint = <&xbar_mixer_in2_ep>;
+                                               };
+                                       };
+
+                                       port@2 {
+                                               reg = <0x2>;
+
+                                               mixer_in3_ep: endpoint {
+                                                       remote-endpoint = <&xbar_mixer_in3_ep>;
+                                               };
+                                       };
+
+                                       port@3 {
+                                               reg = <0x3>;
+
+                                               mixer_in4_ep: endpoint {
+                                                       remote-endpoint = <&xbar_mixer_in4_ep>;
+                                               };
+                                       };
+
+                                       port@4 {
+                                               reg = <0x4>;
+
+                                               mixer_in5_ep: endpoint {
+                                                       remote-endpoint = <&xbar_mixer_in5_ep>;
+                                               };
+                                       };
+
+                                       port@5 {
+                                               reg = <0x5>;
+
+                                               mixer_in6_ep: endpoint {
+                                                       remote-endpoint = <&xbar_mixer_in6_ep>;
+                                               };
+                                       };
+
+                                       port@6 {
+                                               reg = <0x6>;
+
+                                               mixer_in7_ep: endpoint {
+                                                       remote-endpoint = <&xbar_mixer_in7_ep>;
+                                               };
+                                       };
+
+                                       port@7 {
+                                               reg = <0x7>;
+
+                                               mixer_in8_ep: endpoint {
+                                                       remote-endpoint = <&xbar_mixer_in8_ep>;
+                                               };
+                                       };
+
+                                       port@8 {
+                                               reg = <0x8>;
+
+                                               mixer_in9_ep: endpoint {
+                                                       remote-endpoint = <&xbar_mixer_in9_ep>;
+                                               };
+                                       };
+
+                                       port@9 {
+                                               reg = <0x9>;
+
+                                               mixer_in10_ep: endpoint {
+                                                       remote-endpoint = <&xbar_mixer_in10_ep>;
+                                               };
+                                       };
+
+                                       mixer_out1_port: port@a {
+                                               reg = <0xa>;
+
+                                               mixer_out1_ep: endpoint {
+                                                       remote-endpoint = <&xbar_mixer_out1_ep>;
+                                               };
+                                       };
+
+                                       mixer_out2_port: port@b {
+                                               reg = <0xb>;
+
+                                               mixer_out2_ep: endpoint {
+                                                       remote-endpoint = <&xbar_mixer_out2_ep>;
+                                               };
+                                       };
+
+                                       mixer_out3_port: port@c {
+                                               reg = <0xc>;
+
+                                               mixer_out3_ep: endpoint {
+                                                       remote-endpoint = <&xbar_mixer_out3_ep>;
+                                               };
+                                       };
+
+                                       mixer_out4_port: port@d {
+                                               reg = <0xd>;
+
+                                               mixer_out4_ep: endpoint {
+                                                       remote-endpoint = <&xbar_mixer_out4_ep>;
+                                               };
+                                       };
+
+                                       mixer_out5_port: port@e {
+                                               reg = <0xe>;
+
+                                               mixer_out5_ep: endpoint {
+                                                       remote-endpoint = <&xbar_mixer_out5_ep>;
+                                               };
+                                       };
+                               };
+                       };
+
                        ports {
                                xbar_i2s3_port: port@c {
                                        reg = <0xc>;
                                                remote-endpoint = <&dmic2_cif_ep>;
                                        };
                                };
+
+                               xbar_sfc1_in_port: port@12 {
+                                       reg = <0x12>;
+
+                                       xbar_sfc1_in_ep: endpoint {
+                                               remote-endpoint = <&sfc1_cif_in_ep>;
+                                       };
+                               };
+
+                               port@13 {
+                                       reg = <0x13>;
+
+                                       xbar_sfc1_out_ep: endpoint {
+                                               remote-endpoint = <&sfc1_cif_out_ep>;
+                                       };
+                               };
+
+                               xbar_sfc2_in_port: port@14 {
+                                       reg = <0x14>;
+
+                                       xbar_sfc2_in_ep: endpoint {
+                                               remote-endpoint = <&sfc2_cif_in_ep>;
+                                       };
+                               };
+
+                               port@15 {
+                                       reg = <0x15>;
+
+                                       xbar_sfc2_out_ep: endpoint {
+                                               remote-endpoint = <&sfc2_cif_out_ep>;
+                                       };
+                               };
+
+                               xbar_sfc3_in_port: port@16 {
+                                       reg = <0x16>;
+
+                                       xbar_sfc3_in_ep: endpoint {
+                                               remote-endpoint = <&sfc3_cif_in_ep>;
+                                       };
+                               };
+
+                               port@17 {
+                                       reg = <0x17>;
+
+                                       xbar_sfc3_out_ep: endpoint {
+                                               remote-endpoint = <&sfc3_cif_out_ep>;
+                                       };
+                               };
+
+                               xbar_sfc4_in_port: port@18 {
+                                       reg = <0x18>;
+
+                                       xbar_sfc4_in_ep: endpoint {
+                                               remote-endpoint = <&sfc4_cif_in_ep>;
+                                       };
+                               };
+
+                               port@19 {
+                                       reg = <0x19>;
+
+                                       xbar_sfc4_out_ep: endpoint {
+                                               remote-endpoint = <&sfc4_cif_out_ep>;
+                                       };
+                               };
+
+                               xbar_mvc1_in_port: port@1a {
+                                       reg = <0x1a>;
+
+                                       xbar_mvc1_in_ep: endpoint {
+                                               remote-endpoint = <&mvc1_cif_in_ep>;
+                                       };
+                               };
+
+                               port@1b {
+                                       reg = <0x1b>;
+
+                                       xbar_mvc1_out_ep: endpoint {
+                                               remote-endpoint = <&mvc1_cif_out_ep>;
+                                       };
+                               };
+
+                               xbar_mvc2_in_port: port@1c {
+                                       reg = <0x1c>;
+
+                                       xbar_mvc2_in_ep: endpoint {
+                                               remote-endpoint = <&mvc2_cif_in_ep>;
+                                       };
+                               };
+
+                               port@1d {
+                                       reg = <0x1d>;
+
+                                       xbar_mvc2_out_ep: endpoint {
+                                               remote-endpoint = <&mvc2_cif_out_ep>;
+                                       };
+                               };
+
+                               xbar_amx1_in1_port: port@1e {
+                                       reg = <0x1e>;
+
+                                       xbar_amx1_in1_ep: endpoint {
+                                               remote-endpoint = <&amx1_in1_ep>;
+                                       };
+                               };
+
+                               xbar_amx1_in2_port: port@1f {
+                                       reg = <0x1f>;
+
+                                       xbar_amx1_in2_ep: endpoint {
+                                               remote-endpoint = <&amx1_in2_ep>;
+                                       };
+                               };
+
+                               xbar_amx1_in3_port: port@20 {
+                                       reg = <0x20>;
+
+                                       xbar_amx1_in3_ep: endpoint {
+                                               remote-endpoint = <&amx1_in3_ep>;
+                                       };
+                               };
+
+                               xbar_amx1_in4_port: port@21 {
+                                       reg = <0x21>;
+
+                                       xbar_amx1_in4_ep: endpoint {
+                                               remote-endpoint = <&amx1_in4_ep>;
+                                       };
+                               };
+
+                               port@22 {
+                                       reg = <0x22>;
+
+                                       xbar_amx1_out_ep: endpoint {
+                                               remote-endpoint = <&amx1_out_ep>;
+                                       };
+                               };
+
+                               xbar_amx2_in1_port: port@23 {
+                                       reg = <0x23>;
+
+                                       xbar_amx2_in1_ep: endpoint {
+                                               remote-endpoint = <&amx2_in1_ep>;
+                                       };
+                               };
+
+                               xbar_amx2_in2_port: port@24 {
+                                       reg = <0x24>;
+
+                                       xbar_amx2_in2_ep: endpoint {
+                                               remote-endpoint = <&amx2_in2_ep>;
+                                       };
+                               };
+
+                               xbar_amx2_in3_port: port@25 {
+                                       reg = <0x25>;
+
+                                       xbar_amx2_in3_ep: endpoint {
+                                               remote-endpoint = <&amx2_in3_ep>;
+                                       };
+                               };
+
+                               xbar_amx2_in4_port: port@26 {
+                                       reg = <0x26>;
+
+                                       xbar_amx2_in4_ep: endpoint {
+                                               remote-endpoint = <&amx2_in4_ep>;
+                                       };
+                               };
+
+                               port@27 {
+                                       reg = <0x27>;
+
+                                       xbar_amx2_out_ep: endpoint {
+                                               remote-endpoint = <&amx2_out_ep>;
+                                       };
+                               };
+
+                               xbar_adx1_in_port: port@28 {
+                                       reg = <0x28>;
+
+                                       xbar_adx1_in_ep: endpoint {
+                                               remote-endpoint = <&adx1_in_ep>;
+                                       };
+                               };
+
+                               port@29 {
+                                       reg = <0x29>;
+
+                                       xbar_adx1_out1_ep: endpoint {
+                                               remote-endpoint = <&adx1_out1_ep>;
+                                       };
+                               };
+
+                               port@2a {
+                                       reg = <0x2a>;
+
+                                       xbar_adx1_out2_ep: endpoint {
+                                               remote-endpoint = <&adx1_out2_ep>;
+                                       };
+                               };
+
+                               port@2b {
+                                       reg = <0x2b>;
+
+                                       xbar_adx1_out3_ep: endpoint {
+                                               remote-endpoint = <&adx1_out3_ep>;
+                                       };
+                               };
+
+                               port@2c {
+                                       reg = <0x2c>;
+
+                                       xbar_adx1_out4_ep: endpoint {
+                                               remote-endpoint = <&adx1_out4_ep>;
+                                       };
+                               };
+
+                               xbar_adx2_in_port: port@2d {
+                                       reg = <0x2d>;
+
+                                       xbar_adx2_in_ep: endpoint {
+                                               remote-endpoint = <&adx2_in_ep>;
+                                       };
+                               };
+
+                               port@2e {
+                                       reg = <0x2e>;
+
+                                       xbar_adx2_out1_ep: endpoint {
+                                               remote-endpoint = <&adx2_out1_ep>;
+                                       };
+                               };
+
+                               port@2f {
+                                       reg = <0x2f>;
+
+                                       xbar_adx2_out2_ep: endpoint {
+                                               remote-endpoint = <&adx2_out2_ep>;
+                                       };
+                               };
+
+                               port@30 {
+                                       reg = <0x30>;
+
+                                       xbar_adx2_out3_ep: endpoint {
+                                               remote-endpoint = <&adx2_out3_ep>;
+                                       };
+                               };
+
+                               port@31 {
+                                       reg = <0x31>;
+
+                                       xbar_adx2_out4_ep: endpoint {
+                                               remote-endpoint = <&adx2_out4_ep>;
+                                       };
+                               };
+
+                               xbar_mixer_in1_port: port@32 {
+                                       reg = <0x32>;
+
+                                       xbar_mixer_in1_ep: endpoint {
+                                               remote-endpoint = <&mixer_in1_ep>;
+                                       };
+                               };
+
+                               xbar_mixer_in2_port: port@33 {
+                                       reg = <0x33>;
+
+                                       xbar_mixer_in2_ep: endpoint {
+                                               remote-endpoint = <&mixer_in2_ep>;
+                                       };
+                               };
+
+                               xbar_mixer_in3_port: port@34 {
+                                       reg = <0x34>;
+
+                                       xbar_mixer_in3_ep: endpoint {
+                                               remote-endpoint = <&mixer_in3_ep>;
+                                       };
+                               };
+
+                               xbar_mixer_in4_port: port@35 {
+                                       reg = <0x35>;
+
+                                       xbar_mixer_in4_ep: endpoint {
+                                               remote-endpoint = <&mixer_in4_ep>;
+                                       };
+                               };
+
+                               xbar_mixer_in5_port: port@36 {
+                                       reg = <0x36>;
+
+                                       xbar_mixer_in5_ep: endpoint {
+                                               remote-endpoint = <&mixer_in5_ep>;
+                                       };
+                               };
+
+                               xbar_mixer_in6_port: port@37 {
+                                       reg = <0x37>;
+
+                                       xbar_mixer_in6_ep: endpoint {
+                                               remote-endpoint = <&mixer_in6_ep>;
+                                       };
+                               };
+
+                               xbar_mixer_in7_port: port@38 {
+                                       reg = <0x38>;
+
+                                       xbar_mixer_in7_ep: endpoint {
+                                               remote-endpoint = <&mixer_in7_ep>;
+                                       };
+                               };
+
+                               xbar_mixer_in8_port: port@39 {
+                                       reg = <0x39>;
+
+                                       xbar_mixer_in8_ep: endpoint {
+                                               remote-endpoint = <&mixer_in8_ep>;
+                                       };
+                               };
+
+                               xbar_mixer_in9_port: port@3a {
+                                       reg = <0x3a>;
+
+                                       xbar_mixer_in9_ep: endpoint {
+                                               remote-endpoint = <&mixer_in9_ep>;
+                                       };
+                               };
+
+                               xbar_mixer_in10_port: port@3b {
+                                       reg = <0x3b>;
+
+                                       xbar_mixer_in10_ep: endpoint {
+                                               remote-endpoint = <&mixer_in10_ep>;
+                                       };
+                               };
+
+                               port@3c {
+                                       reg = <0x3c>;
+
+                                       xbar_mixer_out1_ep: endpoint {
+                                               remote-endpoint = <&mixer_out1_ep>;
+                                       };
+                               };
+
+                               port@3d {
+                                       reg = <0x3d>;
+
+                                       xbar_mixer_out2_ep: endpoint {
+                                               remote-endpoint = <&mixer_out2_ep>;
+                                       };
+                               };
+
+                               port@3e {
+                                       reg = <0x3e>;
+
+                                       xbar_mixer_out3_ep: endpoint {
+                                               remote-endpoint = <&mixer_out3_ep>;
+                                       };
+                               };
+
+                               port@3f {
+                                       reg = <0x3f>;
+
+                                       xbar_mixer_out4_ep: endpoint {
+                                               remote-endpoint = <&mixer_out4_ep>;
+                                       };
+                               };
+
+                               port@40 {
+                                       reg = <0x40>;
+
+                                       xbar_mixer_out5_ep: endpoint {
+                                               remote-endpoint = <&mixer_out5_ep>;
+                                       };
+                               };
                        };
                };
        };
                       /* Router */
                       <&xbar_i2s3_port>, <&xbar_i2s4_port>,
                       <&xbar_dmic1_port>, <&xbar_dmic2_port>,
+                      <&xbar_sfc1_in_port>, <&xbar_sfc2_in_port>,
+                      <&xbar_sfc3_in_port>, <&xbar_sfc4_in_port>,
+                      <&xbar_mvc1_in_port>, <&xbar_mvc2_in_port>,
+                      <&xbar_amx1_in1_port>, <&xbar_amx1_in2_port>,
+                      <&xbar_amx1_in3_port>, <&xbar_amx1_in4_port>,
+                      <&xbar_amx2_in1_port>, <&xbar_amx2_in2_port>,
+                      <&xbar_amx2_in3_port>, <&xbar_amx2_in4_port>,
+                      <&xbar_adx1_in_port>, <&xbar_adx2_in_port>,
+                      <&xbar_mixer_in1_port>, <&xbar_mixer_in2_port>,
+                      <&xbar_mixer_in3_port>, <&xbar_mixer_in4_port>,
+                      <&xbar_mixer_in5_port>, <&xbar_mixer_in6_port>,
+                      <&xbar_mixer_in7_port>, <&xbar_mixer_in8_port>,
+                      <&xbar_mixer_in9_port>, <&xbar_mixer_in10_port>,
+                      /* HW accelerators */
+                      <&sfc1_out_port>, <&sfc2_out_port>,
+                      <&sfc3_out_port>, <&sfc4_out_port>,
+                      <&mvc1_out_port>, <&mvc2_out_port>,
+                      <&amx1_out_port>, <&amx2_out_port>,
+                      <&adx1_out1_port>, <&adx1_out2_port>,
+                      <&adx1_out3_port>, <&adx1_out4_port>,
+                      <&adx2_out1_port>, <&adx2_out2_port>,
+                      <&adx2_out3_port>, <&adx2_out4_port>,
+                      <&mixer_out1_port>, <&mixer_out2_port>,
+                      <&mixer_out3_port>, <&mixer_out4_port>,
+                      <&mixer_out5_port>,
                       /* I/O DAP Ports */
                       <&i2s3_port>, <&i2s4_port>,
                       <&dmic1_port>, <&dmic2_port>;
index 26b3f98..ccdc0de 100644 (file)
                                status = "disabled";
                        };
 
+                       tegra_sfc1: sfc@702d2000 {
+                               compatible = "nvidia,tegra210-sfc";
+                               reg = <0x702d2000 0x200>;
+                               sound-name-prefix = "SFC1";
+                               status = "disabled";
+                       };
+
+                       tegra_sfc2: sfc@702d2200 {
+                               compatible = "nvidia,tegra210-sfc";
+                               reg = <0x702d2200 0x200>;
+                               sound-name-prefix = "SFC2";
+                               status = "disabled";
+                       };
+
+                       tegra_sfc3: sfc@702d2400 {
+                               compatible = "nvidia,tegra210-sfc";
+                               reg = <0x702d2400 0x200>;
+                               sound-name-prefix = "SFC3";
+                               status = "disabled";
+                       };
+
+                       tegra_sfc4: sfc@702d2600 {
+                               compatible = "nvidia,tegra210-sfc";
+                               reg = <0x702d2600 0x200>;
+                               sound-name-prefix = "SFC4";
+                               status = "disabled";
+                       };
+
+                       tegra_mvc1: mvc@702da000 {
+                               compatible = "nvidia,tegra210-mvc";
+                               reg = <0x702da000 0x200>;
+                               sound-name-prefix = "MVC1";
+                               status = "disabled";
+                       };
+
+                       tegra_mvc2: mvc@702da200 {
+                               compatible = "nvidia,tegra210-mvc";
+                               reg = <0x702da200 0x200>;
+                               sound-name-prefix = "MVC2";
+                               status = "disabled";
+                       };
+
+                       tegra_amx1: amx@702d3000 {
+                               compatible = "nvidia,tegra210-amx";
+                               reg = <0x702d3000 0x100>;
+                               sound-name-prefix = "AMX1";
+                               status = "disabled";
+                       };
+
+                       tegra_amx2: amx@702d3100 {
+                               compatible = "nvidia,tegra210-amx";
+                               reg = <0x702d3100 0x100>;
+                               sound-name-prefix = "AMX2";
+                               status = "disabled";
+                       };
+
+                       tegra_adx1: adx@702d3800 {
+                               compatible = "nvidia,tegra210-adx";
+                               reg = <0x702d3800 0x100>;
+                               sound-name-prefix = "ADX1";
+                               status = "disabled";
+                       };
+
+                       tegra_adx2: adx@702d3900 {
+                               compatible = "nvidia,tegra210-adx";
+                               reg = <0x702d3900 0x100>;
+                               sound-name-prefix = "ADX2";
+                               status = "disabled";
+                       };
+
+                       tegra_amixer: amixer@702dbb00 {
+                               compatible = "nvidia,tegra210-amixer";
+                               reg = <0x702dbb00 0x800>;
+                               sound-name-prefix = "MIXER1";
+                               status = "disabled";
+                       };
+
                        ports {
                                #address-cells = <1>;
                                #size-cells = <0>;
        };
 
        usb@7d000000 {
-               compatible = "nvidia,tegra210-ehci", "nvidia,tegra30-ehci", "usb-ehci";
+               compatible = "nvidia,tegra210-ehci", "nvidia,tegra30-ehci";
                reg = <0x0 0x7d000000 0x0 0x4000>;
                interrupts = <GIC_SPI 20 IRQ_TYPE_LEVEL_HIGH>;
                phy_type = "utmi";
        };
 
        usb@7d004000 {
-               compatible = "nvidia,tegra210-ehci", "nvidia,tegra30-ehci", "usb-ehci";
+               compatible = "nvidia,tegra210-ehci", "nvidia,tegra30-ehci";
                reg = <0x0 0x7d004000 0x0 0x4000>;
                interrupts = <GIC_SPI 21 IRQ_TYPE_LEVEL_HIGH>;
                phy_type = "utmi";
index 7051650..6b816eb 100644 (file)
@@ -15,6 +15,7 @@ dtb-$(CONFIG_ARCH_QCOM)       += msm8916-longcheer-l8910.dtb
 dtb-$(CONFIG_ARCH_QCOM)        += msm8916-mtp.dtb
 dtb-$(CONFIG_ARCH_QCOM)        += msm8916-samsung-a3u-eur.dtb
 dtb-$(CONFIG_ARCH_QCOM)        += msm8916-samsung-a5u-eur.dtb
+dtb-$(CONFIG_ARCH_QCOM)        += msm8916-samsung-serranove.dtb
 dtb-$(CONFIG_ARCH_QCOM)        += msm8916-wingtech-wt88047.dtb
 dtb-$(CONFIG_ARCH_QCOM)        += msm8992-bullhead-rev-101.dtb
 dtb-$(CONFIG_ARCH_QCOM)        += msm8992-msft-lumia-octagon-talkman.dtb
@@ -33,12 +34,18 @@ dtb-$(CONFIG_ARCH_QCOM)     += msm8996-pmi8996-sony-xperia-tone-keyaki.dtb
 dtb-$(CONFIG_ARCH_QCOM)        += msm8996-sony-xperia-tone-dora.dtb
 dtb-$(CONFIG_ARCH_QCOM)        += msm8996-sony-xperia-tone-kagura.dtb
 dtb-$(CONFIG_ARCH_QCOM)        += msm8996-sony-xperia-tone-keyaki.dtb
+dtb-$(CONFIG_ARCH_QCOM)        += msm8996-xiaomi-gemini.dtb
+dtb-$(CONFIG_ARCH_QCOM)        += msm8996-xiaomi-scorpio.dtb
 dtb-$(CONFIG_ARCH_QCOM)        += msm8998-asus-novago-tp370ql.dtb
+dtb-$(CONFIG_ARCH_QCOM)        += msm8998-fxtec-pro1.dtb
 dtb-$(CONFIG_ARCH_QCOM)        += msm8998-hp-envy-x2.dtb
 dtb-$(CONFIG_ARCH_QCOM)        += msm8998-lenovo-miix-630.dtb
 dtb-$(CONFIG_ARCH_QCOM)        += msm8998-mtp.dtb
 dtb-$(CONFIG_ARCH_QCOM)        += msm8998-oneplus-cheeseburger.dtb
 dtb-$(CONFIG_ARCH_QCOM)        += msm8998-oneplus-dumpling.dtb
+dtb-$(CONFIG_ARCH_QCOM)        += msm8998-sony-xperia-yoshino-lilac.dtb
+dtb-$(CONFIG_ARCH_QCOM)        += msm8998-sony-xperia-yoshino-maple.dtb
+dtb-$(CONFIG_ARCH_QCOM)        += msm8998-sony-xperia-yoshino-poplar.dtb
 dtb-$(CONFIG_ARCH_QCOM)        += qcs404-evb-1000.dtb
 dtb-$(CONFIG_ARCH_QCOM)        += qcs404-evb-4000.dtb
 dtb-$(CONFIG_ARCH_QCOM)        += qrb5165-rb5.dtb
@@ -48,6 +55,8 @@ dtb-$(CONFIG_ARCH_QCOM)       += sc7180-trogdor-coachz-r1.dtb
 dtb-$(CONFIG_ARCH_QCOM)        += sc7180-trogdor-coachz-r1-lte.dtb
 dtb-$(CONFIG_ARCH_QCOM)        += sc7180-trogdor-coachz-r3.dtb
 dtb-$(CONFIG_ARCH_QCOM)        += sc7180-trogdor-coachz-r3-lte.dtb
+dtb-$(CONFIG_ARCH_QCOM)        += sc7180-trogdor-homestar-r2.dtb
+dtb-$(CONFIG_ARCH_QCOM)        += sc7180-trogdor-homestar-r3.dtb
 dtb-$(CONFIG_ARCH_QCOM)        += sc7180-trogdor-lazor-r0.dtb
 dtb-$(CONFIG_ARCH_QCOM)        += sc7180-trogdor-lazor-r1.dtb
 dtb-$(CONFIG_ARCH_QCOM)        += sc7180-trogdor-lazor-r1-kb.dtb
@@ -66,6 +75,7 @@ dtb-$(CONFIG_ARCH_QCOM)       += sc7180-trogdor-pompom-r3.dtb
 dtb-$(CONFIG_ARCH_QCOM)        += sc7180-trogdor-pompom-r3-lte.dtb
 dtb-$(CONFIG_ARCH_QCOM)        += sc7180-trogdor-r1.dtb
 dtb-$(CONFIG_ARCH_QCOM)        += sc7180-trogdor-r1-lte.dtb
+dtb-$(CONFIG_ARCH_QCOM)        += sc7280-herobrine.dtb
 dtb-$(CONFIG_ARCH_QCOM)        += sc7280-idp.dtb
 dtb-$(CONFIG_ARCH_QCOM)        += sc7280-idp2.dtb
 dtb-$(CONFIG_ARCH_QCOM)        += sdm630-sony-xperia-ganges-kirin.dtb
@@ -84,6 +94,8 @@ dtb-$(CONFIG_ARCH_QCOM)       += sdm845-oneplus-fajita.dtb
 dtb-$(CONFIG_ARCH_QCOM)        += sdm845-xiaomi-beryllium.dtb
 dtb-$(CONFIG_ARCH_QCOM)        += sdm850-lenovo-yoga-c630.dtb
 dtb-$(CONFIG_ARCH_QCOM)        += sm6125-sony-xperia-seine-pdx201.dtb
+dtb-$(CONFIG_ARCH_QCOM)        += sm6350-sony-xperia-lena-pdx213.dtb
+dtb-$(CONFIG_ARCH_QCOM)        += sm7225-fairphone-fp4.dtb
 dtb-$(CONFIG_ARCH_QCOM)        += sm8150-hdk.dtb
 dtb-$(CONFIG_ARCH_QCOM)        += sm8150-microsoft-surface-duo.dtb
 dtb-$(CONFIG_ARCH_QCOM)        += sm8150-mtp.dtb
index f3c0dbf..a5320d6 100644 (file)
@@ -5,9 +5,839 @@
 
 /dts-v1/;
 
-#include "apq8016-sbc.dtsi"
+#include "msm8916-pm8916.dtsi"
+#include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/input/input.h>
+#include <dt-bindings/pinctrl/qcom,pmic-gpio.h>
+#include <dt-bindings/pinctrl/qcom,pmic-mpp.h>
+#include <dt-bindings/sound/apq8016-lpass.h>
 
 / {
        model = "Qualcomm Technologies, Inc. APQ 8016 SBC";
        compatible = "qcom,apq8016-sbc", "qcom,apq8016";
+
+       aliases {
+               serial0 = &blsp1_uart2;
+               serial1 = &blsp1_uart1;
+               usid0 = &pm8916_0;
+               i2c0    = &blsp_i2c2;
+               i2c1    = &blsp_i2c6;
+               i2c3    = &blsp_i2c4;
+               spi0    = &blsp_spi5;
+               spi1    = &blsp_spi3;
+       };
+
+       chosen {
+               stdout-path = "serial0";
+       };
+
+       camera_vdddo_1v8: camera-vdddo-1v8 {
+               compatible = "regulator-fixed";
+               regulator-name = "camera_vdddo";
+               regulator-min-microvolt = <1800000>;
+               regulator-max-microvolt = <1800000>;
+               regulator-always-on;
+       };
+
+       camera_vdda_2v8: camera-vdda-2v8 {
+               compatible = "regulator-fixed";
+               regulator-name = "camera_vdda";
+               regulator-min-microvolt = <2800000>;
+               regulator-max-microvolt = <2800000>;
+               regulator-always-on;
+       };
+
+       camera_vddd_1v5: camera-vddd-1v5 {
+               compatible = "regulator-fixed";
+               regulator-name = "camera_vddd";
+               regulator-min-microvolt = <1500000>;
+               regulator-max-microvolt = <1500000>;
+               regulator-always-on;
+       };
+
+       reserved-memory {
+               ramoops@bff00000 {
+                       compatible = "ramoops";
+                       reg = <0x0 0xbff00000 0x0 0x100000>;
+
+                       record-size = <0x20000>;
+                       console-size = <0x20000>;
+                       ftrace-size = <0x20000>;
+               };
+       };
+
+       usb2513 {
+               compatible = "smsc,usb3503";
+               reset-gpios = <&pm8916_gpios 3 GPIO_ACTIVE_LOW>;
+               initial-mode = <1>;
+       };
+
+       usb_id: usb-id {
+               compatible = "linux,extcon-usb-gpio";
+               id-gpio = <&msmgpio 121 GPIO_ACTIVE_HIGH>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&usb_id_default>;
+       };
+
+       hdmi-out {
+               compatible = "hdmi-connector";
+               type = "a";
+
+               port {
+                       hdmi_con: endpoint {
+                               remote-endpoint = <&adv7533_out>;
+                       };
+               };
+       };
+
+       gpio-keys {
+               compatible = "gpio-keys";
+               #address-cells = <1>;
+               #size-cells = <0>;
+               autorepeat;
+
+               pinctrl-names = "default";
+               pinctrl-0 = <&msm_key_volp_n_default>;
+
+               button@0 {
+                       label = "Volume Up";
+                       linux,code = <KEY_VOLUMEUP>;
+                       gpios = <&msmgpio 107 GPIO_ACTIVE_LOW>;
+               };
+       };
+
+       leds {
+               pinctrl-names = "default";
+               pinctrl-0 = <&msmgpio_leds>,
+                           <&pm8916_gpios_leds>,
+                           <&pm8916_mpps_leds>;
+
+               compatible = "gpio-leds";
+
+               led@1 {
+                       label = "apq8016-sbc:green:user1";
+                       gpios = <&msmgpio 21 GPIO_ACTIVE_HIGH>;
+                       linux,default-trigger = "heartbeat";
+                       default-state = "off";
+               };
+
+               led@2 {
+                       label = "apq8016-sbc:green:user2";
+                       gpios = <&msmgpio 120 GPIO_ACTIVE_HIGH>;
+                       linux,default-trigger = "mmc0";
+                       default-state = "off";
+               };
+
+               led@3 {
+                       label = "apq8016-sbc:green:user3";
+                       gpios = <&pm8916_gpios 1 GPIO_ACTIVE_HIGH>;
+                       linux,default-trigger = "mmc1";
+                       default-state = "off";
+               };
+
+               led@4 {
+                       label = "apq8016-sbc:green:user4";
+                       gpios = <&pm8916_gpios 2 GPIO_ACTIVE_HIGH>;
+                       linux,default-trigger = "none";
+                       panic-indicator;
+                       default-state = "off";
+               };
+
+               led@5 {
+                       label = "apq8016-sbc:yellow:wlan";
+                       gpios = <&pm8916_mpps 2 GPIO_ACTIVE_HIGH>;
+                       linux,default-trigger = "phy0tx";
+                       default-state = "off";
+               };
+
+               led@6 {
+                       label = "apq8016-sbc:blue:bt";
+                       gpios = <&pm8916_mpps 3 GPIO_ACTIVE_HIGH>;
+                       linux,default-trigger = "bluetooth-power";
+                       default-state = "off";
+               };
+       };
+};
+
+&blsp_dma {
+       status = "okay";
+};
+
+&blsp_i2c2 {
+       /* On Low speed expansion */
+       status = "okay";
+       label = "LS-I2C0";
+};
+
+&blsp_i2c4 {
+       /* On High speed expansion */
+       status = "okay";
+       label = "HS-I2C2";
+
+       adv_bridge: bridge@39 {
+               status = "okay";
+
+               compatible = "adi,adv7533";
+               reg = <0x39>;
+
+               interrupt-parent = <&msmgpio>;
+               interrupts = <31 IRQ_TYPE_EDGE_FALLING>;
+
+               adi,dsi-lanes = <4>;
+               clocks = <&rpmcc RPM_SMD_BB_CLK2>;
+               clock-names = "cec";
+
+               pd-gpios = <&msmgpio 32 GPIO_ACTIVE_HIGH>;
+
+               avdd-supply = <&pm8916_l6>;
+               v1p2-supply = <&pm8916_l6>;
+               v3p3-supply = <&pm8916_l17>;
+
+               pinctrl-names = "default","sleep";
+               pinctrl-0 = <&adv7533_int_active &adv7533_switch_active>;
+               pinctrl-1 = <&adv7533_int_suspend &adv7533_switch_suspend>;
+               #sound-dai-cells = <1>;
+
+               ports {
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+
+                       port@0 {
+                               reg = <0>;
+                               adv7533_in: endpoint {
+                                       remote-endpoint = <&dsi0_out>;
+                               };
+                       };
+
+                       port@1 {
+                               reg = <1>;
+                               adv7533_out: endpoint {
+                                       remote-endpoint = <&hdmi_con>;
+                               };
+                       };
+               };
+       };
+};
+
+&blsp_i2c6 {
+       /* On Low speed expansion */
+       status = "okay";
+       label = "LS-I2C1";
+};
+
+&blsp_spi3 {
+       /* On High speed expansion */
+       status = "okay";
+       label = "HS-SPI1";
+};
+
+&blsp_spi5 {
+       /* On Low speed expansion */
+       status = "okay";
+       label = "LS-SPI0";
+};
+
+&blsp1_uart1 {
+       status = "okay";
+       label = "LS-UART0";
+};
+
+&blsp1_uart2 {
+       status = "okay";
+       label = "LS-UART1";
+};
+
+&camss {
+       status = "okay";
+       ports {
+               port@0 {
+                       reg = <0>;
+                       csiphy0_ep: endpoint {
+                               clock-lanes = <1>;
+                               data-lanes = <0 2>;
+                               remote-endpoint = <&ov5640_ep>;
+                               status = "okay";
+                       };
+               };
+       };
+};
+
+&cci {
+       status = "okay";
+};
+
+&cci_i2c0 {
+       camera_rear@3b {
+               compatible = "ovti,ov5640";
+               reg = <0x3b>;
+
+               enable-gpios = <&msmgpio 34 GPIO_ACTIVE_HIGH>;
+               reset-gpios = <&msmgpio 35 GPIO_ACTIVE_LOW>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&camera_rear_default>;
+
+               clocks = <&gcc GCC_CAMSS_MCLK0_CLK>;
+               clock-names = "xclk";
+               clock-frequency = <23880000>;
+
+               vdddo-supply = <&camera_vdddo_1v8>;
+               vdda-supply = <&camera_vdda_2v8>;
+               vddd-supply = <&camera_vddd_1v5>;
+
+               /* No camera mezzanine by default */
+               status = "disabled";
+
+               port {
+                       ov5640_ep: endpoint {
+                               clock-lanes = <1>;
+                               data-lanes = <0 2>;
+                               remote-endpoint = <&csiphy0_ep>;
+                       };
+               };
+       };
+};
+
+&dsi0_out {
+       data-lanes = <0 1 2 3>;
+       remote-endpoint = <&adv7533_in>;
+};
+
+&lpass {
+       status = "okay";
+};
+
+&mdss {
+       status = "okay";
+};
+
+&mpss {
+       status = "okay";
+
+       firmware-name = "qcom/apq8016/mba.mbn", "qcom/apq8016/modem.mbn";
+};
+
+&pm8916_resin {
+       status = "okay";
+       linux,code = <KEY_VOLUMEDOWN>;
+};
+
+&pronto {
+       status = "okay";
+
+       firmware-name = "qcom/apq8016/wcnss.mbn";
+};
+
+&sdhc_1 {
+       status = "okay";
+
+       pinctrl-names = "default", "sleep";
+       pinctrl-0 = <&sdc1_clk_on &sdc1_cmd_on &sdc1_data_on>;
+       pinctrl-1 = <&sdc1_clk_off &sdc1_cmd_off &sdc1_data_off>;
+};
+
+&sdhc_2 {
+       status = "okay";
+
+       pinctrl-names = "default", "sleep";
+       pinctrl-0 = <&sdc2_clk_on &sdc2_cmd_on &sdc2_data_on &sdc2_cd_on>;
+       pinctrl-1 = <&sdc2_clk_off &sdc2_cmd_off &sdc2_data_off &sdc2_cd_off>;
+
+       cd-gpios = <&msmgpio 38 GPIO_ACTIVE_LOW>;
+};
+
+&sound {
+       status = "okay";
+
+       pinctrl-0 = <&cdc_pdm_lines_act &ext_sec_tlmm_lines_act &ext_mclk_tlmm_lines_act>;
+       pinctrl-1 = <&cdc_pdm_lines_sus &ext_sec_tlmm_lines_sus &ext_mclk_tlmm_lines_sus>;
+       pinctrl-names = "default", "sleep";
+       qcom,model = "DB410c";
+       qcom,audio-routing =
+               "AMIC2", "MIC BIAS Internal2",
+               "AMIC3", "MIC BIAS External1";
+
+       external-dai-link@0 {
+               link-name = "ADV7533";
+               cpu {
+                       sound-dai = <&lpass MI2S_QUATERNARY>;
+               };
+               codec {
+                       sound-dai = <&adv_bridge 0>;
+               };
+       };
+
+       internal-codec-playback-dai-link@0 {
+               link-name = "WCD";
+               cpu {
+                       sound-dai = <&lpass MI2S_PRIMARY>;
+               };
+               codec {
+                       sound-dai = <&lpass_codec 0>, <&wcd_codec 0>;
+               };
+       };
+
+       internal-codec-capture-dai-link@0 {
+               link-name = "WCD-Capture";
+               cpu {
+                       sound-dai = <&lpass MI2S_TERTIARY>;
+               };
+               codec {
+                       sound-dai = <&lpass_codec 1>, <&wcd_codec 1>;
+               };
+       };
+};
+
+&usb {
+       status = "okay";
+       extcon = <&usb_id>, <&usb_id>;
+
+       pinctrl-names = "default", "device";
+       pinctrl-0 = <&usb_sw_sel_pm &usb_hub_reset_pm>;
+       pinctrl-1 = <&usb_sw_sel_pm_device &usb_hub_reset_pm_device>;
+};
+
+&usb_hs_phy {
+       extcon = <&usb_id>;
+};
+
+&wcd_codec {
+       clocks = <&gcc GCC_CODEC_DIGCODEC_CLK>;
+       clock-names = "mclk";
+       qcom,mbhc-vthreshold-low = <75 150 237 450 500>;
+       qcom,mbhc-vthreshold-high = <75 150 237 450 500>;
+};
+
+&wcnss_ctrl {
+       firmware-name = "qcom/apq8016/WCNSS_qcom_wlan_nv_sbc.bin";
+};
+
+/* Enable CoreSight */
+&cti0 { status = "okay"; };
+&cti1 { status = "okay"; };
+&cti12 { status = "okay"; };
+&cti13 { status = "okay"; };
+&cti14 { status = "okay"; };
+&cti15 { status = "okay"; };
+&debug0 { status = "okay"; };
+&debug1 { status = "okay"; };
+&debug2 { status = "okay"; };
+&debug3 { status = "okay"; };
+&etf { status = "okay"; };
+&etm0 { status = "okay"; };
+&etm1 { status = "okay"; };
+&etm2 { status = "okay"; };
+&etm3 { status = "okay"; };
+&etr { status = "okay"; };
+&funnel0 { status = "okay"; };
+&funnel1 { status = "okay"; };
+&replicator { status = "okay"; };
+&stm { status = "okay"; };
+&tpiu { status = "okay"; };
+
+&smd_rpm_regulators {
+       vdd_l1_l2_l3-supply = <&pm8916_s3>;
+       vdd_l4_l5_l6-supply = <&pm8916_s4>;
+       vdd_l7-supply = <&pm8916_s4>;
+
+       s3 {
+               regulator-min-microvolt = <375000>;
+               regulator-max-microvolt = <1562000>;
+       };
+
+       s4 {
+               regulator-min-microvolt = <1800000>;
+               regulator-max-microvolt = <1800000>;
+
+               regulator-always-on;
+               regulator-boot-on;
+       };
+
+       l1 {
+               regulator-min-microvolt = <375000>;
+               regulator-max-microvolt = <1525000>;
+       };
+
+       l2 {
+               regulator-min-microvolt = <1200000>;
+               regulator-max-microvolt = <1200000>;
+       };
+
+       l4 {
+               regulator-min-microvolt = <1750000>;
+               regulator-max-microvolt = <3337000>;
+       };
+
+       l5 {
+               regulator-min-microvolt = <1750000>;
+               regulator-max-microvolt = <3337000>;
+       };
+
+       l6 {
+               regulator-min-microvolt = <1800000>;
+               regulator-max-microvolt = <1800000>;
+       };
+
+       l7 {
+               regulator-min-microvolt = <1750000>;
+               regulator-max-microvolt = <3337000>;
+       };
+
+       l8 {
+               regulator-min-microvolt = <1750000>;
+               regulator-max-microvolt = <3337000>;
+       };
+
+       l9 {
+               regulator-min-microvolt = <1750000>;
+               regulator-max-microvolt = <3337000>;
+       };
+
+       l10 {
+               regulator-min-microvolt = <1750000>;
+               regulator-max-microvolt = <3337000>;
+       };
+
+       l11 {
+               regulator-min-microvolt = <1750000>;
+               regulator-max-microvolt = <3337000>;
+               regulator-allow-set-load;
+               regulator-system-load = <200000>;
+       };
+
+       l12 {
+               regulator-min-microvolt = <1750000>;
+               regulator-max-microvolt = <3337000>;
+       };
+
+       l13 {
+               regulator-min-microvolt = <1750000>;
+               regulator-max-microvolt = <3337000>;
+       };
+
+       l14 {
+               regulator-min-microvolt = <1750000>;
+               regulator-max-microvolt = <3337000>;
+       };
+
+       /**
+        * 1.8v required on LS expansion
+        * for mezzanine boards
+        */
+       l15 {
+               regulator-min-microvolt = <1750000>;
+               regulator-max-microvolt = <3337000>;
+               regulator-always-on;
+       };
+
+       l16 {
+               regulator-min-microvolt = <1750000>;
+               regulator-max-microvolt = <3337000>;
+       };
+
+       l17 {
+               regulator-min-microvolt = <3300000>;
+               regulator-max-microvolt = <3300000>;
+       };
+
+       l18 {
+               regulator-min-microvolt = <1750000>;
+               regulator-max-microvolt = <3337000>;
+       };
+};
+
+/*
+ * 2mA drive strength is not enough when connecting multiple
+ * I2C devices with different pull up resistors.
+ */
+&i2c2_default {
+       drive-strength = <16>;
+};
+
+&i2c4_default {
+       drive-strength = <16>;
+};
+
+&i2c6_default {
+       drive-strength = <16>;
+};
+
+/*
+ * GPIO name legend: proper name = the GPIO line is used as GPIO
+ *         NC = not connected (pin out but not routed from the chip to
+ *              anything the board)
+ *         "[PER]" = pin is muxed for [peripheral] (not GPIO)
+ *         LSEC = Low Speed External Connector
+ *         HSEC = High Speed External Connector
+ *
+ * Line names are taken from the schematic "DragonBoard410c"
+ * dated monday, august 31, 2015. Page 5 in particular.
+ *
+ * For the lines routed to the external connectors the
+ * lines are named after the 96Boards CE Specification 1.0,
+ * Appendix "Expansion Connector Signal Description".
+ *
+ * When the 96Board naming of a line and the schematic name of
+ * the same line are in conflict, the 96Board specification
+ * takes precedence, which means that the external UART on the
+ * LSEC is named UART0 while the schematic and SoC names this
+ * UART3. This is only for the informational lines i.e. "[FOO]",
+ * the GPIO named lines "GPIO-A" thru "GPIO-L" are the only
+ * ones actually used for GPIO.
+ */
+
+&msmgpio {
+       gpio-line-names =
+               "[UART0_TX]", /* GPIO_0, LSEC pin 5 */
+               "[UART0_RX]", /* GPIO_1, LSEC pin 7 */
+               "[UART0_CTS_N]", /* GPIO_2, LSEC pin 3 */
+               "[UART0_RTS_N]", /* GPIO_3, LSEC pin 9 */
+               "[UART1_TX]", /* GPIO_4, LSEC pin 11 */
+               "[UART1_RX]", /* GPIO_5, LSEC pin 13 */
+               "[I2C0_SDA]", /* GPIO_8, LSEC pin 17 */
+               "[I2C0_SCL]", /* GPIO_7, LSEC pin 15 */
+               "[SPI1_DOUT]", /* SPI1_MOSI, HSEC pin 1 */
+               "[SPI1_DIN]", /* SPI1_MISO, HSEC pin 11 */
+               "[SPI1_CS]", /* SPI1_CS_N, HSEC pin 7 */
+               "[SPI1_SCLK]", /* SPI1_CLK, HSEC pin 9 */
+               "GPIO-B", /* LS_EXP_GPIO_B, LSEC pin 24 */
+               "GPIO-C", /* LS_EXP_GPIO_C, LSEC pin 25 */
+               "[I2C3_SDA]", /* HSEC pin 38 */
+               "[I2C3_SCL]", /* HSEC pin 36 */
+               "[SPI0_MOSI]", /* LSEC pin 14 */
+               "[SPI0_MISO]", /* LSEC pin 10 */
+               "[SPI0_CS_N]", /* LSEC pin 12 */
+               "[SPI0_CLK]", /* LSEC pin 8 */
+               "HDMI_HPD_N", /* GPIO 20 */
+               "USR_LED_1_CTRL",
+               "[I2C1_SDA]", /* GPIO_22, LSEC pin 21 */
+               "[I2C1_SCL]", /* GPIO_23, LSEC pin 19 */
+               "GPIO-G", /* LS_EXP_GPIO_G, LSEC pin 29 */
+               "GPIO-H", /* LS_EXP_GPIO_H, LSEC pin 30 */
+               "[CSI0_MCLK]", /* HSEC pin 15 */
+               "[CSI1_MCLK]", /* HSEC pin 17 */
+               "GPIO-K", /* LS_EXP_GPIO_K, LSEC pin 33 */
+               "[I2C2_SDA]", /* HSEC pin 34 */
+               "[I2C2_SCL]", /* HSEC pin 32 */
+               "DSI2HDMI_INT_N",
+               "DSI_SW_SEL_APQ",
+               "GPIO-L", /* LS_EXP_GPIO_L, LSEC pin 34 */
+               "GPIO-J", /* LS_EXP_GPIO_J, LSEC pin 32 */
+               "GPIO-I", /* LS_EXP_GPIO_I, LSEC pin 31 */
+               "GPIO-A", /* LS_EXP_GPIO_A, LSEC pin 23 */
+               "FORCED_USB_BOOT",
+               "SD_CARD_DET_N",
+               "[WCSS_BT_SSBI]",
+               "[WCSS_WLAN_DATA_2]", /* GPIO 40 */
+               "[WCSS_WLAN_DATA_1]",
+               "[WCSS_WLAN_DATA_0]",
+               "[WCSS_WLAN_SET]",
+               "[WCSS_WLAN_CLK]",
+               "[WCSS_FM_SSBI]",
+               "[WCSS_FM_SDI]",
+               "[WCSS_BT_DAT_CTL]",
+               "[WCSS_BT_DAT_STB]",
+               "NC",
+               "NC", /* GPIO 50 */
+               "NC",
+               "NC",
+               "NC",
+               "NC",
+               "NC",
+               "NC",
+               "NC",
+               "NC",
+               "NC",
+               "NC", /* GPIO 60 */
+               "NC",
+               "NC",
+               "[CDC_PDM0_CLK]",
+               "[CDC_PDM0_SYNC]",
+               "[CDC_PDM0_TX0]",
+               "[CDC_PDM0_RX0]",
+               "[CDC_PDM0_RX1]",
+               "[CDC_PDM0_RX2]",
+               "GPIO-D", /* LS_EXP_GPIO_D, LSEC pin 26 */
+               "NC", /* GPIO 70 */
+               "NC",
+               "NC",
+               "NC",
+               "NC", /* GPIO 74 */
+               "NC",
+               "NC",
+               "NC",
+               "NC",
+               "NC",
+               "BOOT_CONFIG_0", /* GPIO 80 */
+               "BOOT_CONFIG_1",
+               "BOOT_CONFIG_2",
+               "BOOT_CONFIG_3",
+               "NC",
+               "NC",
+               "BOOT_CONFIG_5",
+               "NC",
+               "NC",
+               "NC",
+               "NC", /* GPIO 90 */
+               "NC",
+               "NC",
+               "NC",
+               "NC",
+               "NC",
+               "NC",
+               "NC",
+               "NC",
+               "NC",
+               "NC", /* GPIO 100 */
+               "NC",
+               "NC",
+               "NC",
+               "SSBI_GPS",
+               "NC",
+               "NC",
+               "KEY_VOLP_N",
+               "NC",
+               "NC",
+               "[LS_EXP_MI2S_WS]", /* GPIO 110 */
+               "NC",
+               "NC",
+               "[LS_EXP_MI2S_SCK]",
+               "[LS_EXP_MI2S_DATA0]",
+               "GPIO-E", /* LS_EXP_GPIO_E, LSEC pin 27 */
+               "NC",
+               "[DSI2HDMI_MI2S_WS]",
+               "[DSI2HDMI_MI2S_SCK]",
+               "[DSI2HDMI_MI2S_DATA0]",
+               "USR_LED_2_CTRL", /* GPIO 120 */
+               "SB_HS_ID";
+
+       msmgpio_leds: msmgpio-leds {
+               pins = "gpio21", "gpio120";
+               function = "gpio";
+
+               output-low;
+       };
+
+       usb_id_default: usb-id-default {
+               pins = "gpio121";
+               function = "gpio";
+
+               drive-strength = <8>;
+               input-enable;
+               bias-pull-up;
+       };
+
+       adv7533_int_active: adv533-int-active {
+               pins = "gpio31";
+               function = "gpio";
+
+               drive-strength = <16>;
+               bias-disable;
+       };
+
+       adv7533_int_suspend: adv7533-int-suspend {
+               pins = "gpio31";
+               function = "gpio";
+
+               drive-strength = <2>;
+               bias-disable;
+       };
+
+       adv7533_switch_active: adv7533-switch-active {
+               pins = "gpio32";
+               function = "gpio";
+
+               drive-strength = <16>;
+               bias-disable;
+       };
+
+       adv7533_switch_suspend: adv7533-switch-suspend {
+               pins = "gpio32";
+               function = "gpio";
+
+               drive-strength = <2>;
+               bias-disable;
+       };
+
+       msm_key_volp_n_default: msm-key-volp-n-default {
+               pins = "gpio107";
+               function = "gpio";
+
+               drive-strength = <8>;
+               input-enable;
+               bias-pull-up;
+       };
+};
+
+&pm8916_gpios {
+       gpio-line-names =
+               "USR_LED_3_CTRL",
+               "USR_LED_4_CTRL",
+               "USB_HUB_RESET_N_PM",
+               "USB_SW_SEL_PM";
+
+       usb_hub_reset_pm: usb-hub-reset-pm {
+               pins = "gpio3";
+               function = PMIC_GPIO_FUNC_NORMAL;
+
+               input-disable;
+               output-high;
+       };
+
+       usb_hub_reset_pm_device: usb-hub-reset-pm-device {
+               pins = "gpio3";
+               function = PMIC_GPIO_FUNC_NORMAL;
+
+               output-low;
+       };
+
+       usb_sw_sel_pm: usb-sw-sel-pm {
+               pins = "gpio4";
+               function = PMIC_GPIO_FUNC_NORMAL;
+
+               power-source = <PM8916_GPIO_VPH>;
+               input-disable;
+               output-high;
+       };
+
+       usb_sw_sel_pm_device: usb-sw-sel-pm-device {
+               pins = "gpio4";
+               function = PMIC_GPIO_FUNC_NORMAL;
+
+               power-source = <PM8916_GPIO_VPH>;
+               input-disable;
+               output-low;
+       };
+
+       pm8916_gpios_leds: pm8916-gpios-leds {
+               pins = "gpio1", "gpio2";
+               function = PMIC_GPIO_FUNC_NORMAL;
+
+               output-low;
+       };
+};
+
+&pm8916_mpps {
+       gpio-line-names =
+               "VDD_PX_BIAS",
+               "WLAN_LED_CTRL",
+               "BT_LED_CTRL",
+               "GPIO-F"; /* LS_EXP_GPIO_F, LSEC pin 28 */
+
+       pinctrl-names = "default";
+       pinctrl-0 = <&ls_exp_gpio_f>;
+
+       ls_exp_gpio_f: pm8916-mpp4-state {
+               pins = "mpp4";
+               function = "digital";
+
+               output-low;
+               power-source = <PM8916_MPP_L5>; // 1.8V
+       };
+
+       pm8916_mpps_leds: pm8916-mpps-state {
+               pins = "mpp2", "mpp3";
+               function = "digital";
+
+               output-low;
+       };
 };
diff --git a/arch/arm64/boot/dts/qcom/apq8016-sbc.dtsi b/arch/arm64/boot/dts/qcom/apq8016-sbc.dtsi
deleted file mode 100644 (file)
index f8d8f3e..0000000
+++ /dev/null
@@ -1,826 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0-only
-/*
- * Copyright (c) 2015, The Linux Foundation. All rights reserved.
- */
-
-#include "msm8916-pm8916.dtsi"
-#include <dt-bindings/gpio/gpio.h>
-#include <dt-bindings/input/input.h>
-#include <dt-bindings/pinctrl/qcom,pmic-gpio.h>
-#include <dt-bindings/pinctrl/qcom,pmic-mpp.h>
-#include <dt-bindings/sound/apq8016-lpass.h>
-
-/ {
-       aliases {
-               serial0 = &blsp1_uart2;
-               serial1 = &blsp1_uart1;
-               usid0 = &pm8916_0;
-               i2c0    = &blsp_i2c2;
-               i2c1    = &blsp_i2c6;
-               i2c3    = &blsp_i2c4;
-               spi0    = &blsp_spi5;
-               spi1    = &blsp_spi3;
-       };
-
-       chosen {
-               stdout-path = "serial0";
-       };
-
-       camera_vdddo_1v8: camera-vdddo-1v8 {
-               compatible = "regulator-fixed";
-               regulator-name = "camera_vdddo";
-               regulator-min-microvolt = <1800000>;
-               regulator-max-microvolt = <1800000>;
-               regulator-always-on;
-       };
-
-       camera_vdda_2v8: camera-vdda-2v8 {
-               compatible = "regulator-fixed";
-               regulator-name = "camera_vdda";
-               regulator-min-microvolt = <2800000>;
-               regulator-max-microvolt = <2800000>;
-               regulator-always-on;
-       };
-
-       camera_vddd_1v5: camera-vddd-1v5 {
-               compatible = "regulator-fixed";
-               regulator-name = "camera_vddd";
-               regulator-min-microvolt = <1500000>;
-               regulator-max-microvolt = <1500000>;
-               regulator-always-on;
-       };
-
-       reserved-memory {
-               ramoops@bff00000 {
-                       compatible = "ramoops";
-                       reg = <0x0 0xbff00000 0x0 0x100000>;
-
-                       record-size = <0x20000>;
-                       console-size = <0x20000>;
-                       ftrace-size = <0x20000>;
-               };
-       };
-
-       usb2513 {
-               compatible = "smsc,usb3503";
-               reset-gpios = <&pm8916_gpios 3 GPIO_ACTIVE_LOW>;
-               initial-mode = <1>;
-       };
-
-       usb_id: usb-id {
-               compatible = "linux,extcon-usb-gpio";
-               id-gpio = <&msmgpio 121 GPIO_ACTIVE_HIGH>;
-               pinctrl-names = "default";
-               pinctrl-0 = <&usb_id_default>;
-       };
-
-       hdmi-out {
-               compatible = "hdmi-connector";
-               type = "a";
-
-               port {
-                       hdmi_con: endpoint {
-                               remote-endpoint = <&adv7533_out>;
-                       };
-               };
-       };
-
-       gpio-keys {
-               compatible = "gpio-keys";
-               #address-cells = <1>;
-               #size-cells = <0>;
-               autorepeat;
-
-               pinctrl-names = "default";
-               pinctrl-0 = <&msm_key_volp_n_default>;
-
-               button@0 {
-                       label = "Volume Up";
-                       linux,code = <KEY_VOLUMEUP>;
-                       gpios = <&msmgpio 107 GPIO_ACTIVE_LOW>;
-               };
-       };
-
-       leds {
-               pinctrl-names = "default";
-               pinctrl-0 = <&msmgpio_leds>,
-                           <&pm8916_gpios_leds>,
-                           <&pm8916_mpps_leds>;
-
-               compatible = "gpio-leds";
-
-               led@1 {
-                       label = "apq8016-sbc:green:user1";
-                       gpios = <&msmgpio 21 GPIO_ACTIVE_HIGH>;
-                       linux,default-trigger = "heartbeat";
-                       default-state = "off";
-               };
-
-               led@2 {
-                       label = "apq8016-sbc:green:user2";
-                       gpios = <&msmgpio 120 GPIO_ACTIVE_HIGH>;
-                       linux,default-trigger = "mmc0";
-                       default-state = "off";
-               };
-
-               led@3 {
-                       label = "apq8016-sbc:green:user3";
-                       gpios = <&pm8916_gpios 1 GPIO_ACTIVE_HIGH>;
-                       linux,default-trigger = "mmc1";
-                       default-state = "off";
-               };
-
-               led@4 {
-                       label = "apq8016-sbc:green:user4";
-                       gpios = <&pm8916_gpios 2 GPIO_ACTIVE_HIGH>;
-                       linux,default-trigger = "none";
-                       panic-indicator;
-                       default-state = "off";
-               };
-
-               led@5 {
-                       label = "apq8016-sbc:yellow:wlan";
-                       gpios = <&pm8916_mpps 2 GPIO_ACTIVE_HIGH>;
-                       linux,default-trigger = "phy0tx";
-                       default-state = "off";
-               };
-
-               led@6 {
-                       label = "apq8016-sbc:blue:bt";
-                       gpios = <&pm8916_mpps 3 GPIO_ACTIVE_HIGH>;
-                       linux,default-trigger = "bluetooth-power";
-                       default-state = "off";
-               };
-       };
-};
-
-&blsp_dma {
-       status = "okay";
-};
-
-&blsp_i2c2 {
-       /* On Low speed expansion */
-       status = "okay";
-       label = "LS-I2C0";
-};
-
-&blsp_i2c4 {
-       /* On High speed expansion */
-       status = "okay";
-       label = "HS-I2C2";
-
-       adv_bridge: bridge@39 {
-               status = "okay";
-
-               compatible = "adi,adv7533";
-               reg = <0x39>;
-
-               interrupt-parent = <&msmgpio>;
-               interrupts = <31 IRQ_TYPE_EDGE_FALLING>;
-
-               adi,dsi-lanes = <4>;
-               clocks = <&rpmcc RPM_SMD_BB_CLK2>;
-               clock-names = "cec";
-
-               pd-gpios = <&msmgpio 32 GPIO_ACTIVE_HIGH>;
-
-               avdd-supply = <&pm8916_l6>;
-               v1p2-supply = <&pm8916_l6>;
-               v3p3-supply = <&pm8916_l17>;
-
-               pinctrl-names = "default","sleep";
-               pinctrl-0 = <&adv7533_int_active &adv7533_switch_active>;
-               pinctrl-1 = <&adv7533_int_suspend &adv7533_switch_suspend>;
-               #sound-dai-cells = <1>;
-
-               ports {
-                       #address-cells = <1>;
-                       #size-cells = <0>;
-
-                       port@0 {
-                               reg = <0>;
-                               adv7533_in: endpoint {
-                                       remote-endpoint = <&dsi0_out>;
-                               };
-                       };
-
-                       port@1 {
-                               reg = <1>;
-                               adv7533_out: endpoint {
-                                       remote-endpoint = <&hdmi_con>;
-                               };
-                       };
-               };
-       };
-};
-
-&blsp_i2c6 {
-       /* On Low speed expansion */
-       status = "okay";
-       label = "LS-I2C1";
-};
-
-&blsp_spi3 {
-       /* On High speed expansion */
-       status = "okay";
-       label = "HS-SPI1";
-};
-
-&blsp_spi5 {
-       /* On Low speed expansion */
-       status = "okay";
-       label = "LS-SPI0";
-};
-
-&blsp1_uart1 {
-       status = "okay";
-       label = "LS-UART0";
-};
-
-&blsp1_uart2 {
-       status = "okay";
-       label = "LS-UART1";
-};
-
-&camss {
-       status = "okay";
-       ports {
-               port@0 {
-                       reg = <0>;
-                       csiphy0_ep: endpoint {
-                               clock-lanes = <1>;
-                               data-lanes = <0 2>;
-                               remote-endpoint = <&ov5640_ep>;
-                               status = "okay";
-                       };
-               };
-       };
-};
-
-&cci {
-       status = "okay";
-};
-
-&cci_i2c0 {
-       camera_rear@3b {
-               compatible = "ovti,ov5640";
-               reg = <0x3b>;
-
-               enable-gpios = <&msmgpio 34 GPIO_ACTIVE_HIGH>;
-               reset-gpios = <&msmgpio 35 GPIO_ACTIVE_LOW>;
-               pinctrl-names = "default";
-               pinctrl-0 = <&camera_rear_default>;
-
-               clocks = <&gcc GCC_CAMSS_MCLK0_CLK>;
-               clock-names = "xclk";
-               clock-frequency = <23880000>;
-
-               vdddo-supply = <&camera_vdddo_1v8>;
-               vdda-supply = <&camera_vdda_2v8>;
-               vddd-supply = <&camera_vddd_1v5>;
-
-               /* No camera mezzanine by default */
-               status = "disabled";
-
-               port {
-                       ov5640_ep: endpoint {
-                               clock-lanes = <1>;
-                               data-lanes = <0 2>;
-                               remote-endpoint = <&csiphy0_ep>;
-                       };
-               };
-       };
-};
-
-&dsi0_out {
-       data-lanes = <0 1 2 3>;
-       remote-endpoint = <&adv7533_in>;
-};
-
-&lpass {
-       status = "okay";
-};
-
-&mdss {
-       status = "okay";
-};
-
-&pm8916_resin {
-       status = "okay";
-       linux,code = <KEY_VOLUMEDOWN>;
-};
-
-&pronto {
-       status = "okay";
-};
-
-&sdhc_1 {
-       status = "okay";
-
-       pinctrl-names = "default", "sleep";
-       pinctrl-0 = <&sdc1_clk_on &sdc1_cmd_on &sdc1_data_on>;
-       pinctrl-1 = <&sdc1_clk_off &sdc1_cmd_off &sdc1_data_off>;
-};
-
-&sdhc_2 {
-       status = "okay";
-
-       pinctrl-names = "default", "sleep";
-       pinctrl-0 = <&sdc2_clk_on &sdc2_cmd_on &sdc2_data_on &sdc2_cd_on>;
-       pinctrl-1 = <&sdc2_clk_off &sdc2_cmd_off &sdc2_data_off &sdc2_cd_off>;
-
-       cd-gpios = <&msmgpio 38 GPIO_ACTIVE_LOW>;
-};
-
-&sound {
-       status = "okay";
-
-       pinctrl-0 = <&cdc_pdm_lines_act &ext_sec_tlmm_lines_act &ext_mclk_tlmm_lines_act>;
-       pinctrl-1 = <&cdc_pdm_lines_sus &ext_sec_tlmm_lines_sus &ext_mclk_tlmm_lines_sus>;
-       pinctrl-names = "default", "sleep";
-       qcom,model = "DB410c";
-       qcom,audio-routing =
-               "AMIC2", "MIC BIAS Internal2",
-               "AMIC3", "MIC BIAS External1";
-
-       external-dai-link@0 {
-               link-name = "ADV7533";
-               cpu {
-                       sound-dai = <&lpass MI2S_QUATERNARY>;
-               };
-               codec {
-                       sound-dai = <&adv_bridge 0>;
-               };
-       };
-
-       internal-codec-playback-dai-link@0 {
-               link-name = "WCD";
-               cpu {
-                       sound-dai = <&lpass MI2S_PRIMARY>;
-               };
-               codec {
-                       sound-dai = <&lpass_codec 0>, <&wcd_codec 0>;
-               };
-       };
-
-       internal-codec-capture-dai-link@0 {
-               link-name = "WCD-Capture";
-               cpu {
-                       sound-dai = <&lpass MI2S_TERTIARY>;
-               };
-               codec {
-                       sound-dai = <&lpass_codec 1>, <&wcd_codec 1>;
-               };
-       };
-};
-
-&usb {
-       status = "okay";
-       extcon = <&usb_id>, <&usb_id>;
-
-       pinctrl-names = "default", "device";
-       pinctrl-0 = <&usb_sw_sel_pm &usb_hub_reset_pm>;
-       pinctrl-1 = <&usb_sw_sel_pm_device &usb_hub_reset_pm_device>;
-};
-
-&usb_hs_phy {
-       extcon = <&usb_id>;
-};
-
-&wcd_codec {
-       clocks = <&gcc GCC_CODEC_DIGCODEC_CLK>;
-       clock-names = "mclk";
-       qcom,mbhc-vthreshold-low = <75 150 237 450 500>;
-       qcom,mbhc-vthreshold-high = <75 150 237 450 500>;
-};
-
-/* Enable CoreSight */
-&cti0 { status = "okay"; };
-&cti1 { status = "okay"; };
-&cti12 { status = "okay"; };
-&cti13 { status = "okay"; };
-&cti14 { status = "okay"; };
-&cti15 { status = "okay"; };
-&debug0 { status = "okay"; };
-&debug1 { status = "okay"; };
-&debug2 { status = "okay"; };
-&debug3 { status = "okay"; };
-&etf { status = "okay"; };
-&etm0 { status = "okay"; };
-&etm1 { status = "okay"; };
-&etm2 { status = "okay"; };
-&etm3 { status = "okay"; };
-&etr { status = "okay"; };
-&funnel0 { status = "okay"; };
-&funnel1 { status = "okay"; };
-&replicator { status = "okay"; };
-&stm { status = "okay"; };
-&tpiu { status = "okay"; };
-
-&smd_rpm_regulators {
-       vdd_l1_l2_l3-supply = <&pm8916_s3>;
-       vdd_l4_l5_l6-supply = <&pm8916_s4>;
-       vdd_l7-supply = <&pm8916_s4>;
-
-       s3 {
-               regulator-min-microvolt = <375000>;
-               regulator-max-microvolt = <1562000>;
-       };
-
-       s4 {
-               regulator-min-microvolt = <1800000>;
-               regulator-max-microvolt = <1800000>;
-
-               regulator-always-on;
-               regulator-boot-on;
-       };
-
-       l1 {
-               regulator-min-microvolt = <375000>;
-               regulator-max-microvolt = <1525000>;
-       };
-
-       l2 {
-               regulator-min-microvolt = <1200000>;
-               regulator-max-microvolt = <1200000>;
-       };
-
-       l4 {
-               regulator-min-microvolt = <1750000>;
-               regulator-max-microvolt = <3337000>;
-       };
-
-       l5 {
-               regulator-min-microvolt = <1750000>;
-               regulator-max-microvolt = <3337000>;
-       };
-
-       l6 {
-               regulator-min-microvolt = <1800000>;
-               regulator-max-microvolt = <1800000>;
-       };
-
-       l7 {
-               regulator-min-microvolt = <1750000>;
-               regulator-max-microvolt = <3337000>;
-       };
-
-       l8 {
-               regulator-min-microvolt = <1750000>;
-               regulator-max-microvolt = <3337000>;
-       };
-
-       l9 {
-               regulator-min-microvolt = <1750000>;
-               regulator-max-microvolt = <3337000>;
-       };
-
-       l10 {
-               regulator-min-microvolt = <1750000>;
-               regulator-max-microvolt = <3337000>;
-       };
-
-       l11 {
-               regulator-min-microvolt = <1750000>;
-               regulator-max-microvolt = <3337000>;
-               regulator-allow-set-load;
-               regulator-system-load = <200000>;
-       };
-
-       l12 {
-               regulator-min-microvolt = <1750000>;
-               regulator-max-microvolt = <3337000>;
-       };
-
-       l13 {
-               regulator-min-microvolt = <1750000>;
-               regulator-max-microvolt = <3337000>;
-       };
-
-       l14 {
-               regulator-min-microvolt = <1750000>;
-               regulator-max-microvolt = <3337000>;
-       };
-
-       /**
-        * 1.8v required on LS expansion
-        * for mezzanine boards
-        */
-       l15 {
-               regulator-min-microvolt = <1750000>;
-               regulator-max-microvolt = <3337000>;
-               regulator-always-on;
-       };
-
-       l16 {
-               regulator-min-microvolt = <1750000>;
-               regulator-max-microvolt = <3337000>;
-       };
-
-       l17 {
-               regulator-min-microvolt = <3300000>;
-               regulator-max-microvolt = <3300000>;
-       };
-
-       l18 {
-               regulator-min-microvolt = <1750000>;
-               regulator-max-microvolt = <3337000>;
-       };
-};
-
-/*
- * 2mA drive strength is not enough when connecting multiple
- * I2C devices with different pull up resistors.
- */
-&i2c2_default {
-       drive-strength = <16>;
-};
-
-&i2c4_default {
-       drive-strength = <16>;
-};
-
-&i2c6_default {
-       drive-strength = <16>;
-};
-
-/*
- * GPIO name legend: proper name = the GPIO line is used as GPIO
- *         NC = not connected (pin out but not routed from the chip to
- *              anything the board)
- *         "[PER]" = pin is muxed for [peripheral] (not GPIO)
- *         LSEC = Low Speed External Connector
- *         HSEC = High Speed External Connector
- *
- * Line names are taken from the schematic "DragonBoard410c"
- * dated monday, august 31, 2015. Page 5 in particular.
- *
- * For the lines routed to the external connectors the
- * lines are named after the 96Boards CE Specification 1.0,
- * Appendix "Expansion Connector Signal Description".
- *
- * When the 96Board naming of a line and the schematic name of
- * the same line are in conflict, the 96Board specification
- * takes precedence, which means that the external UART on the
- * LSEC is named UART0 while the schematic and SoC names this
- * UART3. This is only for the informational lines i.e. "[FOO]",
- * the GPIO named lines "GPIO-A" thru "GPIO-L" are the only
- * ones actually used for GPIO.
- */
-
-&msmgpio {
-       gpio-line-names =
-               "[UART0_TX]", /* GPIO_0, LSEC pin 5 */
-               "[UART0_RX]", /* GPIO_1, LSEC pin 7 */
-               "[UART0_CTS_N]", /* GPIO_2, LSEC pin 3 */
-               "[UART0_RTS_N]", /* GPIO_3, LSEC pin 9 */
-               "[UART1_TX]", /* GPIO_4, LSEC pin 11 */
-               "[UART1_RX]", /* GPIO_5, LSEC pin 13 */
-               "[I2C0_SDA]", /* GPIO_8, LSEC pin 17 */
-               "[I2C0_SCL]", /* GPIO_7, LSEC pin 15 */
-               "[SPI1_DOUT]", /* SPI1_MOSI, HSEC pin 1 */
-               "[SPI1_DIN]", /* SPI1_MISO, HSEC pin 11 */
-               "[SPI1_CS]", /* SPI1_CS_N, HSEC pin 7 */
-               "[SPI1_SCLK]", /* SPI1_CLK, HSEC pin 9 */
-               "GPIO-B", /* LS_EXP_GPIO_B, LSEC pin 24 */
-               "GPIO-C", /* LS_EXP_GPIO_C, LSEC pin 25 */
-               "[I2C3_SDA]", /* HSEC pin 38 */
-               "[I2C3_SCL]", /* HSEC pin 36 */
-               "[SPI0_MOSI]", /* LSEC pin 14 */
-               "[SPI0_MISO]", /* LSEC pin 10 */
-               "[SPI0_CS_N]", /* LSEC pin 12 */
-               "[SPI0_CLK]", /* LSEC pin 8 */
-               "HDMI_HPD_N", /* GPIO 20 */
-               "USR_LED_1_CTRL",
-               "[I2C1_SDA]", /* GPIO_22, LSEC pin 21 */
-               "[I2C1_SCL]", /* GPIO_23, LSEC pin 19 */
-               "GPIO-G", /* LS_EXP_GPIO_G, LSEC pin 29 */
-               "GPIO-H", /* LS_EXP_GPIO_H, LSEC pin 30 */
-               "[CSI0_MCLK]", /* HSEC pin 15 */
-               "[CSI1_MCLK]", /* HSEC pin 17 */
-               "GPIO-K", /* LS_EXP_GPIO_K, LSEC pin 33 */
-               "[I2C2_SDA]", /* HSEC pin 34 */
-               "[I2C2_SCL]", /* HSEC pin 32 */
-               "DSI2HDMI_INT_N",
-               "DSI_SW_SEL_APQ",
-               "GPIO-L", /* LS_EXP_GPIO_L, LSEC pin 34 */
-               "GPIO-J", /* LS_EXP_GPIO_J, LSEC pin 32 */
-               "GPIO-I", /* LS_EXP_GPIO_I, LSEC pin 31 */
-               "GPIO-A", /* LS_EXP_GPIO_A, LSEC pin 23 */
-               "FORCED_USB_BOOT",
-               "SD_CARD_DET_N",
-               "[WCSS_BT_SSBI]",
-               "[WCSS_WLAN_DATA_2]", /* GPIO 40 */
-               "[WCSS_WLAN_DATA_1]",
-               "[WCSS_WLAN_DATA_0]",
-               "[WCSS_WLAN_SET]",
-               "[WCSS_WLAN_CLK]",
-               "[WCSS_FM_SSBI]",
-               "[WCSS_FM_SDI]",
-               "[WCSS_BT_DAT_CTL]",
-               "[WCSS_BT_DAT_STB]",
-               "NC",
-               "NC", /* GPIO 50 */
-               "NC",
-               "NC",
-               "NC",
-               "NC",
-               "NC",
-               "NC",
-               "NC",
-               "NC",
-               "NC",
-               "NC", /* GPIO 60 */
-               "NC",
-               "NC",
-               "[CDC_PDM0_CLK]",
-               "[CDC_PDM0_SYNC]",
-               "[CDC_PDM0_TX0]",
-               "[CDC_PDM0_RX0]",
-               "[CDC_PDM0_RX1]",
-               "[CDC_PDM0_RX2]",
-               "GPIO-D", /* LS_EXP_GPIO_D, LSEC pin 26 */
-               "NC", /* GPIO 70 */
-               "NC",
-               "NC",
-               "NC",
-               "NC", /* GPIO 74 */
-               "NC",
-               "NC",
-               "NC",
-               "NC",
-               "NC",
-               "BOOT_CONFIG_0", /* GPIO 80 */
-               "BOOT_CONFIG_1",
-               "BOOT_CONFIG_2",
-               "BOOT_CONFIG_3",
-               "NC",
-               "NC",
-               "BOOT_CONFIG_5",
-               "NC",
-               "NC",
-               "NC",
-               "NC", /* GPIO 90 */
-               "NC",
-               "NC",
-               "NC",
-               "NC",
-               "NC",
-               "NC",
-               "NC",
-               "NC",
-               "NC",
-               "NC", /* GPIO 100 */
-               "NC",
-               "NC",
-               "NC",
-               "SSBI_GPS",
-               "NC",
-               "NC",
-               "KEY_VOLP_N",
-               "NC",
-               "NC",
-               "[LS_EXP_MI2S_WS]", /* GPIO 110 */
-               "NC",
-               "NC",
-               "[LS_EXP_MI2S_SCK]",
-               "[LS_EXP_MI2S_DATA0]",
-               "GPIO-E", /* LS_EXP_GPIO_E, LSEC pin 27 */
-               "NC",
-               "[DSI2HDMI_MI2S_WS]",
-               "[DSI2HDMI_MI2S_SCK]",
-               "[DSI2HDMI_MI2S_DATA0]",
-               "USR_LED_2_CTRL", /* GPIO 120 */
-               "SB_HS_ID";
-
-       msmgpio_leds: msmgpio-leds {
-               pins = "gpio21", "gpio120";
-               function = "gpio";
-
-               output-low;
-       };
-
-       usb_id_default: usb-id-default {
-               pins = "gpio121";
-               function = "gpio";
-
-               drive-strength = <8>;
-               input-enable;
-               bias-pull-up;
-       };
-
-       adv7533_int_active: adv533-int-active {
-               pins = "gpio31";
-               function = "gpio";
-
-               drive-strength = <16>;
-               bias-disable;
-       };
-
-       adv7533_int_suspend: adv7533-int-suspend {
-               pins = "gpio31";
-               function = "gpio";
-
-               drive-strength = <2>;
-               bias-disable;
-       };
-
-       adv7533_switch_active: adv7533-switch-active {
-               pins = "gpio32";
-               function = "gpio";
-
-               drive-strength = <16>;
-               bias-disable;
-       };
-
-       adv7533_switch_suspend: adv7533-switch-suspend {
-               pins = "gpio32";
-               function = "gpio";
-
-               drive-strength = <2>;
-               bias-disable;
-       };
-
-       msm_key_volp_n_default: msm-key-volp-n-default {
-               pins = "gpio107";
-               function = "gpio";
-
-               drive-strength = <8>;
-               input-enable;
-               bias-pull-up;
-       };
-};
-
-&pm8916_gpios {
-       gpio-line-names =
-               "USR_LED_3_CTRL",
-               "USR_LED_4_CTRL",
-               "USB_HUB_RESET_N_PM",
-               "USB_SW_SEL_PM";
-
-       usb_hub_reset_pm: usb-hub-reset-pm {
-               pins = "gpio3";
-               function = PMIC_GPIO_FUNC_NORMAL;
-
-               input-disable;
-               output-high;
-       };
-
-       usb_hub_reset_pm_device: usb-hub-reset-pm-device {
-               pins = "gpio3";
-               function = PMIC_GPIO_FUNC_NORMAL;
-
-               output-low;
-       };
-
-       usb_sw_sel_pm: usb-sw-sel-pm {
-               pins = "gpio4";
-               function = PMIC_GPIO_FUNC_NORMAL;
-
-               power-source = <PM8916_GPIO_VPH>;
-               input-disable;
-               output-high;
-       };
-
-       usb_sw_sel_pm_device: usb-sw-sel-pm-device {
-               pins = "gpio4";
-               function = PMIC_GPIO_FUNC_NORMAL;
-
-               power-source = <PM8916_GPIO_VPH>;
-               input-disable;
-               output-low;
-       };
-
-       pm8916_gpios_leds: pm8916-gpios-leds {
-               pins = "gpio1", "gpio2";
-               function = PMIC_GPIO_FUNC_NORMAL;
-
-               output-low;
-       };
-};
-
-&pm8916_mpps {
-       gpio-line-names =
-               "VDD_PX_BIAS",
-               "WLAN_LED_CTRL",
-               "BT_LED_CTRL",
-               "GPIO-F"; /* LS_EXP_GPIO_F, LSEC pin 28 */
-
-       pinctrl-names = "default";
-       pinctrl-0 = <&ls_exp_gpio_f>;
-
-       ls_exp_gpio_f: pm8916-mpp4 {
-               pins = "mpp4";
-               function = "digital";
-
-               output-low;
-               power-source = <PM8916_MPP_L5>; // 1.8V
-       };
-
-       pm8916_mpps_leds: pm8916-mpps-leds {
-               pins = "mpp2", "mpp3";
-               function = "digital";
-
-               output-low;
-       };
-};
index a8dffc8..314d2dc 100644 (file)
@@ -11,6 +11,7 @@
 / {
        model = "Sony Xperia Z4 Tablet (Wi-Fi)";
        compatible = "sony,karin_windy", "qcom,apq8094";
+       chassis-type = "tablet";
 
        /*
         * This model uses the APQ variant of MSM8994 (APQ8094).
index 757afa2..d01a512 100644 (file)
 
 /dts-v1/;
 
-#include "apq8096-db820c.dtsi"
+#include "msm8996.dtsi"
+#include "pm8994.dtsi"
+#include "pmi8994.dtsi"
+#include <dt-bindings/input/input.h>
+#include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/pinctrl/qcom,pmic-gpio.h>
+#include <dt-bindings/sound/qcom,q6afe.h>
+#include <dt-bindings/sound/qcom,q6asm.h>
+
+/*
+ * GPIO name legend: proper name = the GPIO line is used as GPIO
+ *         NC      = not connected (pin out but not routed from the chip to
+ *                   anything the board)
+ *         "[PER]" = pin is muxed for [peripheral] (not GPIO)
+ *         LSEC    = Low Speed External Connector
+ *         P HSEC  = Primary High Speed External Connector
+ *         S HSEC  = Secondary High Speed External Connector
+ *         J14     = Camera Connector
+ *         TP      = Test Points
+ *
+ * Line names are taken from the schematic "DragonBoard 820c",
+ * drawing no: LM25-P2751-1
+ *
+ * For the lines routed to the external connectors the
+ * lines are named after the 96Boards CE Specification 1.0,
+ * Appendix "Expansion Connector Signal Description".
+ *
+ * When the 96Board naming of a line and the schematic name of
+ * the same line are in conflict, the 96Board specification
+ * takes precedence, which means that the external UART on the
+ * LSEC is named UART0 while the schematic and SoC names this
+ * UART3. This is only for the informational lines i.e. "[FOO]",
+ * the GPIO named lines "GPIO-A" thru "GPIO-L" are the only
+ * ones actually used for GPIO.
+ */
 
 / {
        model = "Qualcomm Technologies, Inc. DB820c";
        compatible = "arrow,apq8096-db820c", "qcom,apq8096-sbc", "qcom,apq8096";
+
+       aliases {
+               serial0 = &blsp2_uart2;
+               serial1 = &blsp2_uart3;
+               serial2 = &blsp1_uart2;
+               i2c0    = &blsp1_i2c3;
+               i2c1    = &blsp2_i2c1;
+               i2c2    = &blsp2_i2c1;
+               spi0    = &blsp1_spi1;
+               spi1    = &blsp2_spi6;
+       };
+
+       chosen {
+               stdout-path = "serial0:115200n8";
+       };
+
+       clocks {
+               compatible = "simple-bus";
+               divclk4: divclk4 {
+                       compatible = "fixed-clock";
+                       #clock-cells = <0>;
+                       clock-frequency = <32768>;
+                       clock-output-names = "divclk4";
+
+                       pinctrl-names = "default";
+                       pinctrl-0 = <&divclk4_pin_a>;
+               };
+
+               div1_mclk: divclk1 {
+                       compatible = "gpio-gate-clock";
+                       pinctrl-0 = <&audio_mclk>;
+                       pinctrl-names = "default";
+                       clocks = <&rpmcc RPM_SMD_DIV_CLK1>;
+                       #clock-cells = <0>;
+                       enable-gpios = <&pm8994_gpios 15 0>;
+               };
+       };
+
+       gpio_keys {
+               compatible = "gpio-keys";
+               #address-cells = <1>;
+               #size-cells = <0>;
+               autorepeat;
+
+               pinctrl-names = "default";
+               pinctrl-0 = <&volume_up_gpio>;
+
+               button@0 {
+                       label = "Volume Up";
+                       linux,code = <KEY_VOLUMEUP>;
+                       gpios = <&pm8994_gpios 2 GPIO_ACTIVE_LOW>;
+               };
+       };
+
+       usb2_id: usb2-id {
+               compatible = "linux,extcon-usb-gpio";
+               id-gpio = <&pmi8994_gpios 6 GPIO_ACTIVE_HIGH>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&usb2_vbus_det_gpio>;
+       };
+
+       usb3_id: usb3-id {
+               compatible = "linux,extcon-usb-gpio";
+               id-gpio = <&pm8994_gpios 22 GPIO_ACTIVE_HIGH>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&usb3_vbus_det_gpio>;
+       };
+
+       vph_pwr: vph-pwr-regulator {
+               compatible = "regulator-fixed";
+               regulator-name = "vph_pwr";
+               regulator-always-on;
+               regulator-boot-on;
+
+               regulator-min-microvolt = <3700000>;
+               regulator-max-microvolt = <3700000>;
+       };
+
+       wlan_en: wlan-en-1-8v {
+               pinctrl-names = "default";
+               pinctrl-0 = <&wlan_en_gpios>;
+               compatible = "regulator-fixed";
+               regulator-name = "wlan-en-regulator";
+               regulator-min-microvolt = <1800000>;
+               regulator-max-microvolt = <1800000>;
+
+               gpio = <&pm8994_gpios 8 0>;
+
+               /* WLAN card specific delay */
+               startup-delay-us = <70000>;
+               enable-active-high;
+       };
+};
+
+&blsp1_i2c3 {
+       /* On Low speed expansion */
+       label = "LS-I2C0";
+       status = "okay";
+};
+
+&blsp1_spi1 {
+       /* On Low speed expansion */
+       label = "LS-SPI0";
+       status = "okay";
+};
+
+&blsp1_uart2 {
+       label = "BT-UART";
+       status = "okay";
+
+       bluetooth {
+               compatible = "qcom,qca6174-bt";
+
+               /* bt_disable_n gpio */
+               enable-gpios = <&pm8994_gpios 19 GPIO_ACTIVE_HIGH>;
+
+               clocks = <&divclk4>;
+       };
+};
+
+&adsp_pil {
+       status = "okay";
+};
+
+&blsp2_i2c1 {
+       /* On High speed expansion */
+       label = "HS-I2C2";
+       status = "okay";
+};
+
+&blsp2_i2c1 {
+       /* On Low speed expansion */
+       label = "LS-I2C1";
+       status = "okay";
+};
+
+&blsp2_spi6 {
+       /* On High speed expansion */
+       label = "HS-SPI1";
+       status = "okay";
+};
+
+&blsp2_uart2 {
+       label = "LS-UART1";
+       status = "okay";
+       pinctrl-names = "default", "sleep";
+       pinctrl-0 = <&blsp2_uart2_2pins_default>;
+       pinctrl-1 = <&blsp2_uart2_2pins_sleep>;
+};
+
+&blsp2_uart3 {
+       label = "LS-UART0";
+       status = "disabled";
+       pinctrl-names = "default", "sleep";
+       pinctrl-0 = <&blsp2_uart3_4pins_default>;
+       pinctrl-1 = <&blsp2_uart3_4pins_sleep>;
+};
+
+&camss {
+       vdda-supply = <&vreg_l2a_1p25>;
+};
+
+&gpu {
+       status = "okay";
+};
+
+&hdmi {
+       status = "okay";
+
+       pinctrl-names = "default", "sleep";
+       pinctrl-0 = <&hdmi_hpd_active &hdmi_ddc_active>;
+       pinctrl-1 = <&hdmi_hpd_suspend &hdmi_ddc_suspend>;
+
+       core-vdda-supply = <&vreg_l12a_1p8>;
+       core-vcc-supply = <&vreg_s4a_1p8>;
+};
+
+&hdmi_phy {
+       status = "okay";
+
+       vddio-supply = <&vreg_l12a_1p8>;
+       vcca-supply = <&vreg_l28a_0p925>;
+       #phy-cells = <0>;
+};
+
+&hsusb_phy1 {
+       status = "okay";
+
+       vdda-pll-supply = <&vreg_l12a_1p8>;
+       vdda-phy-dpdm-supply = <&vreg_l24a_3p075>;
+};
+
+&hsusb_phy2 {
+       status = "okay";
+
+       vdda-pll-supply = <&vreg_l12a_1p8>;
+       vdda-phy-dpdm-supply = <&vreg_l24a_3p075>;
+};
+
+&mdp {
+       status = "okay";
+};
+
+&mdss {
+       status = "okay";
+};
+
+&mmcc {
+       vdd-gfx-supply = <&vdd_gfx>;
+};
+
+&pm8994_resin {
+       status = "okay";
+       linux,code = <KEY_VOLUMEDOWN>;
+};
+
+&tlmm {
+       gpio-line-names =
+               "[SPI0_DOUT]", /* GPIO_0, BLSP1_SPI_MOSI, LSEC pin 14 */
+               "[SPI0_DIN]", /* GPIO_1, BLSP1_SPI_MISO, LSEC pin 10 */
+               "[SPI0_CS]", /* GPIO_2, BLSP1_SPI_CS_N, LSEC pin 12 */
+               "[SPI0_SCLK]", /* GPIO_3, BLSP1_SPI_CLK, LSEC pin 8 */
+               "[UART1_TxD]", /* GPIO_4, BLSP8_UART_TX, LSEC pin 11 */
+               "[UART1_RxD]", /* GPIO_5, BLSP8_UART_RX, LSEC pin 13 */
+               "[I2C1_SDA]", /* GPIO_6, BLSP8_I2C_SDA, LSEC pin 21 */
+               "[I2C1_SCL]", /* GPIO_7, BLSP8_I2C_SCL, LSEC pin 19 */
+               "GPIO-H", /* GPIO_8, LCD0_RESET_N, LSEC pin 30 */
+               "TP93", /* GPIO_9 */
+               "GPIO-G", /* GPIO_10, MDP_VSYNC_P, LSEC pin 29 */
+               "[MDP_VSYNC_S]", /* GPIO_11, S HSEC pin 55 */
+               "NC", /* GPIO_12 */
+               "[CSI0_MCLK]", /* GPIO_13, CAM_MCLK0, P HSEC pin 15 */
+               "[CAM_MCLK1]", /* GPIO_14, J14 pin 11 */
+               "[CSI1_MCLK]", /* GPIO_15, CAM_MCLK2, P HSEC pin 17 */
+               "TP99", /* GPIO_16 */
+               "[I2C2_SDA]", /* GPIO_17, CCI_I2C_SDA0, P HSEC pin 34 */
+               "[I2C2_SCL]", /* GPIO_18, CCI_I2C_SCL0, P HSEC pin 32 */
+               "[CCI_I2C_SDA1]", /* GPIO_19, S HSEC pin 38 */
+               "[CCI_I2C_SCL1]", /* GPIO_20, S HSEC pin 36 */
+               "FLASH_STROBE_EN", /* GPIO_21, S HSEC pin 5 */
+               "FLASH_STROBE_TRIG", /* GPIO_22, S HSEC pin 1 */
+               "GPIO-K", /* GPIO_23, CAM2_RST_N, LSEC pin 33 */
+               "GPIO-D", /* GPIO_24, LSEC pin 26 */
+               "GPIO-I", /* GPIO_25, CAM0_RST_N, LSEC pin 31 */
+               "GPIO-J", /* GPIO_26, CAM0_STANDBY_N, LSEC pin 32 */
+               "BLSP6_I2C_SDA", /* GPIO_27 */
+               "BLSP6_I2C_SCL", /* GPIO_28 */
+               "GPIO-B", /* GPIO_29, TS0_RESET_N, LSEC pin 24 */
+               "GPIO30", /* GPIO_30, S HSEC pin 4 */
+               "HDMI_CEC", /* GPIO_31 */
+               "HDMI_DDC_CLOCK", /* GPIO_32 */
+               "HDMI_DDC_DATA", /* GPIO_33 */
+               "HDMI_HOT_PLUG_DETECT", /* GPIO_34 */
+               "PCIE0_RST_N", /* GPIO_35 */
+               "PCIE0_CLKREQ_N", /* GPIO_36 */
+               "PCIE0_WAKE", /* GPIO_37 */
+               "SD_CARD_DET_N", /* GPIO_38 */
+               "TSIF1_SYNC", /* GPIO_39, S HSEC pin 48 */
+               "W_DISABLE_N", /* GPIO_40 */
+               "[BLSP9_UART_TX]", /* GPIO_41 */
+               "[BLSP9_UART_RX]", /* GPIO_42 */
+               "[BLSP2_UART_CTS_N]", /* GPIO_43 */
+               "[BLSP2_UART_RFR_N]", /* GPIO_44 */
+               "[BLSP3_UART_TX]", /* GPIO_45 */
+               "[BLSP3_UART_RX]", /* GPIO_46 */
+               "[I2C0_SDA]", /* GPIO_47, LS_I2C0_SDA, LSEC pin 17 */
+               "[I2C0_SCL]", /* GPIO_48, LS_I2C0_SCL, LSEC pin 15 */
+               "[UART0_TxD]", /* GPIO_49, BLSP9_UART_TX, LSEC pin 5 */
+               "[UART0_RxD]", /* GPIO_50, BLSP9_UART_RX, LSEC pin 7 */
+               "[UART0_CTS]", /* GPIO_51, BLSP9_UART_CTS_N, LSEC pin 3 */
+               "[UART0_RTS]", /* GPIO_52, BLSP9_UART_RFR_N, LSEC pin 9 */
+               "[CODEC_INT1_N]", /* GPIO_53 */
+               "[CODEC_INT2_N]", /* GPIO_54 */
+               "[BLSP7_I2C_SDA]", /* GPIO_55 */
+               "[BLSP7_I2C_SCL]", /* GPIO_56 */
+               "MI2S_MCLK", /* GPIO_57, S HSEC pin 3 */
+               "[PCM_CLK]", /* GPIO_58, QUA_MI2S_SCK, LSEC pin 18 */
+               "[PCM_FS]", /* GPIO_59, QUA_MI2S_WS, LSEC pin 16 */
+               "[PCM_DO]", /* GPIO_60, QUA_MI2S_DATA0, LSEC pin 20 */
+               "[PCM_DI]", /* GPIO_61, QUA_MI2S_DATA1, LSEC pin 22 */
+               "GPIO-E", /* GPIO_62, LSEC pin 27 */
+               "TP87", /* GPIO_63 */
+               "[CODEC_RST_N]", /* GPIO_64 */
+               "[PCM1_CLK]", /* GPIO_65 */
+               "[PCM1_SYNC]", /* GPIO_66 */
+               "[PCM1_DIN]", /* GPIO_67 */
+               "[PCM1_DOUT]", /* GPIO_68 */
+               "AUDIO_REF_CLK", /* GPIO_69 */
+               "SLIMBUS_CLK", /* GPIO_70 */
+               "SLIMBUS_DATA0", /* GPIO_71 */
+               "SLIMBUS_DATA1", /* GPIO_72 */
+               "NC", /* GPIO_73 */
+               "NC", /* GPIO_74 */
+               "NC", /* GPIO_75 */
+               "NC", /* GPIO_76 */
+               "TP94", /* GPIO_77 */
+               "NC", /* GPIO_78 */
+               "TP95", /* GPIO_79 */
+               "GPIO-A", /* GPIO_80, MEMS_RESET_N, LSEC pin 23 */
+               "TP88", /* GPIO_81 */
+               "TP89", /* GPIO_82 */
+               "TP90", /* GPIO_83 */
+               "TP91", /* GPIO_84 */
+               "[SD_DAT0]", /* GPIO_85, BLSP12_SPI_MOSI, P HSEC pin 1 */
+               "[SD_CMD]", /* GPIO_86, BLSP12_SPI_MISO, P HSEC pin 11 */
+               "[SD_DAT3]", /* GPIO_87, BLSP12_SPI_CS_N, P HSEC pin 7 */
+               "[SD_SCLK]", /* GPIO_88, BLSP12_SPI_CLK, P HSEC pin 9 */
+               "TSIF1_CLK", /* GPIO_89, S HSEC pin 42 */
+               "TSIF1_EN", /* GPIO_90, S HSEC pin 46 */
+               "TSIF1_DATA", /* GPIO_91, S HSEC pin 44 */
+               "NC", /* GPIO_92 */
+               "TSIF2_CLK", /* GPIO_93, S HSEC pin 52 */
+               "TSIF2_EN", /* GPIO_94, S HSEC pin 56 */
+               "TSIF2_DATA", /* GPIO_95, S HSEC pin 54 */
+               "TSIF2_SYNC", /* GPIO_96, S HSEC pin 58 */
+               "NC", /* GPIO_97 */
+               "CAM1_STANDBY_N", /* GPIO_98 */
+               "NC", /* GPIO_99 */
+               "NC", /* GPIO_100 */
+               "[LCD1_RESET_N]", /* GPIO_101, S HSEC pin 51 */
+               "BOOT_CONFIG1", /* GPIO_102 */
+               "USB_HUB_RESET", /* GPIO_103 */
+               "CAM1_RST_N", /* GPIO_104 */
+               "NC", /* GPIO_105 */
+               "NC", /* GPIO_106 */
+               "NC", /* GPIO_107 */
+               "NC", /* GPIO_108 */
+               "NC", /* GPIO_109 */
+               "NC", /* GPIO_110 */
+               "NC", /* GPIO_111 */
+               "NC", /* GPIO_112 */
+               "PMI8994_BUA", /* GPIO_113 */
+               "PCIE2_RST_N", /* GPIO_114 */
+               "PCIE2_CLKREQ_N", /* GPIO_115 */
+               "PCIE2_WAKE", /* GPIO_116 */
+               "SSC_IRQ_0", /* GPIO_117 */
+               "SSC_IRQ_1", /* GPIO_118 */
+               "SSC_IRQ_2", /* GPIO_119 */
+               "NC", /* GPIO_120 */
+               "GPIO121", /* GPIO_121, S HSEC pin 2 */
+               "NC", /* GPIO_122 */
+               "SSC_IRQ_6", /* GPIO_123 */
+               "SSC_IRQ_7", /* GPIO_124 */
+               "GPIO-C", /* GPIO_125, TS_INT0, LSEC pin 25 */
+               "BOOT_CONFIG5", /* GPIO_126 */
+               "NC", /* GPIO_127 */
+               "NC", /* GPIO_128 */
+               "BOOT_CONFIG7", /* GPIO_129 */
+               "PCIE1_RST_N", /* GPIO_130 */
+               "PCIE1_CLKREQ_N", /* GPIO_131 */
+               "PCIE1_WAKE", /* GPIO_132 */
+               "GPIO-L", /* GPIO_133, CAM2_STANDBY_N, LSEC pin 34 */
+               "NC", /* GPIO_134 */
+               "NC", /* GPIO_135 */
+               "BOOT_CONFIG8", /* GPIO_136 */
+               "NC", /* GPIO_137 */
+               "NC", /* GPIO_138 */
+               "GPS_SSBI2", /* GPIO_139 */
+               "GPS_SSBI1", /* GPIO_140 */
+               "NC", /* GPIO_141 */
+               "NC", /* GPIO_142 */
+               "NC", /* GPIO_143 */
+               "BOOT_CONFIG6", /* GPIO_144 */
+               "NC", /* GPIO_145 */
+               "NC", /* GPIO_146 */
+               "NC", /* GPIO_147 */
+               "NC", /* GPIO_148 */
+               "NC"; /* GPIO_149 */
+
+       sdc2_cd_on: sdc2_cd_on {
+               mux {
+                       pins = "gpio38";
+                       function = "gpio";
+               };
+
+               config {
+                       pins = "gpio38";
+                       bias-pull-up;           /* pull up */
+                       drive-strength = <16>;  /* 16 MA */
+               };
+       };
+
+       sdc2_cd_off: sdc2_cd_off {
+               mux {
+                       pins = "gpio38";
+                       function = "gpio";
+               };
+
+               config {
+                       pins = "gpio38";
+                       bias-pull-up;           /* pull up */
+                       drive-strength = <2>;   /* 2 MA */
+               };
+       };
+
+       hdmi_hpd_active: hdmi_hpd_active {
+               mux {
+                       pins = "gpio34";
+                       function = "hdmi_hot";
+               };
+
+               config {
+                       pins = "gpio34";
+                       bias-pull-down;
+                       drive-strength = <16>;
+               };
+       };
+
+       hdmi_hpd_suspend: hdmi_hpd_suspend {
+               mux {
+                       pins = "gpio34";
+                       function = "hdmi_hot";
+               };
+
+               config {
+                       pins = "gpio34";
+                       bias-pull-down;
+                       drive-strength = <2>;
+               };
+       };
+
+       hdmi_ddc_active: hdmi_ddc_active {
+               mux {
+                       pins = "gpio32", "gpio33";
+                       function = "hdmi_ddc";
+               };
+
+               config {
+                       pins = "gpio32", "gpio33";
+                       drive-strength = <2>;
+                       bias-pull-up;
+               };
+       };
+
+       hdmi_ddc_suspend: hdmi_ddc_suspend {
+               mux {
+                       pins = "gpio32", "gpio33";
+                       function = "hdmi_ddc";
+               };
+
+               config {
+                       pins = "gpio32", "gpio33";
+                       drive-strength = <2>;
+                       bias-pull-down;
+               };
+       };
+};
+
+&pcie0 {
+       status = "okay";
+       perst-gpio = <&tlmm 35 GPIO_ACTIVE_LOW>;
+       vddpe-3v3-supply = <&wlan_en>;
+       vdda-supply = <&vreg_l28a_0p925>;
+};
+
+&pcie1 {
+       status = "okay";
+       perst-gpio = <&tlmm 130 GPIO_ACTIVE_LOW>;
+       vdda-supply = <&vreg_l28a_0p925>;
+};
+
+&pcie2 {
+       status = "okay";
+       perst-gpio = <&tlmm 114 GPIO_ACTIVE_LOW>;
+       vdda-supply = <&vreg_l28a_0p925>;
+};
+
+&pcie_phy {
+       status = "okay";
+
+       vdda-phy-supply = <&vreg_l28a_0p925>;
+       vdda-pll-supply = <&vreg_l12a_1p8>;
+};
+
+&pm8994_gpios {
+       gpio-line-names =
+               "NC",
+               "KEY_VOLP_N",
+               "NC",
+               "BL1_PWM",
+               "GPIO-F", /* BL0_PWM, LSEC pin 28 */
+               "BL1_EN",
+               "NC",
+               "WLAN_EN",
+               "NC",
+               "NC",
+               "NC",
+               "NC",
+               "NC",
+               "NC",
+               "DIVCLK1",
+               "DIVCLK2",
+               "DIVCLK3",
+               "DIVCLK4",
+               "BT_EN",
+               "PMIC_SLB",
+               "PMIC_BUA",
+               "USB_VBUS_DET";
+
+       pinctrl-names = "default";
+       pinctrl-0 = <&ls_exp_gpio_f &bt_en_gpios>;
+
+       ls_exp_gpio_f: pm8994_gpio5 {
+               pinconf {
+                       pins = "gpio5";
+                       output-low;
+                       power-source = <2>; // PM8994_GPIO_S4, 1.8V
+               };
+       };
+
+       bt_en_gpios: bt_en_gpios {
+               pinconf {
+                       pins = "gpio19";
+                       function = PMIC_GPIO_FUNC_NORMAL;
+                       output-low;
+                       power-source = <PM8994_GPIO_S4>; // 1.8V
+                       qcom,drive-strength = <PMIC_GPIO_STRENGTH_LOW>;
+                       bias-pull-down;
+               };
+       };
+
+       wlan_en_gpios: wlan_en_gpios {
+               pinconf {
+                       pins = "gpio8";
+                       function = PMIC_GPIO_FUNC_NORMAL;
+                       output-low;
+                       power-source = <PM8994_GPIO_S4>; // 1.8V
+                       qcom,drive-strength = <PMIC_GPIO_STRENGTH_LOW>;
+                       bias-pull-down;
+               };
+       };
+
+       audio_mclk: clk_div1 {
+               pinconf {
+                       pins = "gpio15";
+                       function = "func1";
+                       power-source = <PM8994_GPIO_S4>; // 1.8V
+               };
+       };
+
+       volume_up_gpio: pm8996_gpio2 {
+               pinconf {
+                       pins = "gpio2";
+                       function = "normal";
+                       input-enable;
+                       drive-push-pull;
+                       bias-pull-up;
+                       qcom,drive-strength = <PMIC_GPIO_STRENGTH_NO>;
+                       power-source = <PM8994_GPIO_S4>; // 1.8V
+               };
+       };
+
+       divclk4_pin_a: divclk4 {
+               pinconf {
+                       pins = "gpio18";
+                       function = PMIC_GPIO_FUNC_FUNC2;
+
+                       bias-disable;
+                       power-source = <PM8994_GPIO_S4>;
+               };
+       };
+
+       usb3_vbus_det_gpio: pm8996_gpio22 {
+               pinconf {
+                       pins = "gpio22";
+                       function = PMIC_GPIO_FUNC_NORMAL;
+                       input-enable;
+                       bias-pull-down;
+                       qcom,drive-strength = <PMIC_GPIO_STRENGTH_NO>;
+                       power-source = <PM8994_GPIO_S4>; // 1.8V
+               };
+       };
+};
+
+&pm8994_mpps {
+       gpio-line-names =
+               "VDDPX_BIAS",
+               "WIFI_LED",
+               "NC",
+               "BT_LED",
+               "PM_MPP05",
+               "PM_MPP06",
+               "PM_MPP07",
+               "NC";
+};
+
+&pm8994_spmi_regulators {
+       qcom,saw-reg = <&saw3>;
+       s9 {
+               qcom,saw-slave;
+       };
+       s10 {
+               qcom,saw-slave;
+       };
+       s11 {
+               qcom,saw-leader;
+               regulator-always-on;
+               regulator-min-microvolt = <980000>;
+               regulator-max-microvolt = <980000>;
+       };
+};
+
+&pmi8994_gpios {
+       gpio-line-names =
+               "NC",
+               "SPKR_AMP_EN1",
+               "SPKR_AMP_EN2",
+               "TP61",
+               "NC",
+               "USB2_VBUS_DET",
+               "NC",
+               "NC",
+               "NC",
+               "NC";
+
+       usb2_vbus_det_gpio: pmi8996_gpio6 {
+               pinconf {
+                       pins = "gpio6";
+                       function = PMIC_GPIO_FUNC_NORMAL;
+                       input-enable;
+                       bias-pull-down;
+                       qcom,drive-strength = <PMIC_GPIO_STRENGTH_NO>;
+                       power-source = <PM8994_GPIO_S4>; // 1.8V
+               };
+       };
+};
+
+&pmi8994_spmi_regulators {
+       vdd_gfx: s2@1700 {
+               reg = <0x1700 0x100>;
+               regulator-name = "VDD_GFX";
+               regulator-min-microvolt = <980000>;
+               regulator-max-microvolt = <980000>;
+       };
+};
+
+&rpm_requests {
+       pm8994-regulators {
+               compatible = "qcom,rpm-pm8994-regulators";
+
+               vdd_s1-supply = <&vph_pwr>;
+               vdd_s2-supply = <&vph_pwr>;
+               vdd_s3-supply = <&vph_pwr>;
+               vdd_s4-supply = <&vph_pwr>;
+               vdd_s5-supply = <&vph_pwr>;
+               vdd_s6-supply = <&vph_pwr>;
+               vdd_s7-supply = <&vph_pwr>;
+               vdd_s8-supply = <&vph_pwr>;
+               vdd_s9-supply = <&vph_pwr>;
+               vdd_s10-supply = <&vph_pwr>;
+               vdd_s11-supply = <&vph_pwr>;
+               vdd_s12-supply = <&vph_pwr>;
+               vdd_l1-supply = <&vreg_s1b_1p025>;
+               vdd_l2_l26_l28-supply = <&vreg_s3a_1p3>;
+               vdd_l3_l11-supply = <&vreg_s3a_1p3>;
+               vdd_l4_l27_l31-supply = <&vreg_s3a_1p3>;
+               vdd_l5_l7-supply = <&vreg_s5a_2p15>;
+               vdd_l6_l12_l32-supply = <&vreg_s5a_2p15>;
+               vdd_l8_l16_l30-supply = <&vph_pwr>;
+               vdd_l9_l10_l18_l22-supply = <&vph_pwr_bbyp>;
+               vdd_l13_l19_l23_l24-supply = <&vph_pwr_bbyp>;
+               vdd_l14_l15-supply = <&vreg_s5a_2p15>;
+               vdd_l17_l29-supply = <&vph_pwr_bbyp>;
+               vdd_l20_l21-supply = <&vph_pwr_bbyp>;
+               vdd_l25-supply = <&vreg_s3a_1p3>;
+               vdd_lvs1_lvs2-supply = <&vreg_s4a_1p8>;
+
+               vreg_s3a_1p3: s3 {
+                       regulator-name = "vreg_s3a_1p3";
+                       regulator-min-microvolt = <1300000>;
+                       regulator-max-microvolt = <1300000>;
+               };
+
+               /**
+                * 1.8v required on LS expansion
+                * for mezzanine boards
+                */
+               vreg_s4a_1p8: s4 {
+                       regulator-name = "vreg_s4a_1p8";
+                       regulator-min-microvolt = <1800000>;
+                       regulator-max-microvolt = <1800000>;
+                       regulator-always-on;
+               };
+               vreg_s5a_2p15: s5 {
+                       regulator-name = "vreg_s5a_2p15";
+                       regulator-min-microvolt = <2150000>;
+                       regulator-max-microvolt = <2150000>;
+               };
+               vreg_s7a_1p0: s7 {
+                       regulator-name = "vreg_s7a_1p0";
+                       regulator-min-microvolt = <800000>;
+                       regulator-max-microvolt = <800000>;
+               };
+
+               vreg_l1a_1p0: l1 {
+                       regulator-name = "vreg_l1a_1p0";
+                       regulator-min-microvolt = <1000000>;
+                       regulator-max-microvolt = <1000000>;
+               };
+               vreg_l2a_1p25: l2 {
+                       regulator-name = "vreg_l2a_1p25";
+                       regulator-min-microvolt = <1250000>;
+                       regulator-max-microvolt = <1250000>;
+               };
+               vreg_l3a_0p875: l3 {
+                       regulator-name = "vreg_l3a_0p875";
+                       regulator-min-microvolt = <850000>;
+                       regulator-max-microvolt = <850000>;
+               };
+               vreg_l4a_1p225: l4 {
+                       regulator-name = "vreg_l4a_1p225";
+                       regulator-min-microvolt = <1225000>;
+                       regulator-max-microvolt = <1225000>;
+               };
+               vreg_l6a_1p2: l6 {
+                       regulator-name = "vreg_l6a_1p2";
+                       regulator-min-microvolt = <1200000>;
+                       regulator-max-microvolt = <1200000>;
+               };
+               vreg_l8a_1p8: l8 {
+                       regulator-name = "vreg_l8a_1p8";
+                       regulator-min-microvolt = <1800000>;
+                       regulator-max-microvolt = <1800000>;
+               };
+               vreg_l9a_1p8: l9 {
+                       regulator-name = "vreg_l9a_1p8";
+                       regulator-min-microvolt = <1800000>;
+                       regulator-max-microvolt = <1800000>;
+               };
+               vreg_l10a_1p8: l10 {
+                       regulator-name = "vreg_l10a_1p8";
+                       regulator-min-microvolt = <1800000>;
+                       regulator-max-microvolt = <1800000>;
+               };
+               vreg_l11a_1p15: l11 {
+                       regulator-name = "vreg_l11a_1p15";
+                       regulator-min-microvolt = <1150000>;
+                       regulator-max-microvolt = <1150000>;
+               };
+               vreg_l12a_1p8: l12 {
+                       regulator-name = "vreg_l12a_1p8";
+                       regulator-min-microvolt = <1800000>;
+                       regulator-max-microvolt = <1800000>;
+               };
+               vreg_l13a_2p95: l13 {
+                       regulator-name = "vreg_l13a_2p95";
+                       regulator-min-microvolt = <1800000>;
+                       regulator-max-microvolt = <2950000>;
+               };
+               vreg_l14a_1p8: l14 {
+                       regulator-name = "vreg_l14a_1p8";
+                       regulator-min-microvolt = <1800000>;
+                       regulator-max-microvolt = <1800000>;
+               };
+               vreg_l15a_1p8: l15 {
+                       regulator-name = "vreg_l15a_1p8";
+                       regulator-min-microvolt = <1800000>;
+                       regulator-max-microvolt = <1800000>;
+               };
+               vreg_l16a_2p7: l16 {
+                       regulator-name = "vreg_l16a_2p7";
+                       regulator-min-microvolt = <2700000>;
+                       regulator-max-microvolt = <2700000>;
+               };
+               vreg_l17a_2p8: l17 {
+                       regulator-name = "vreg_l17a_2p8";
+                       regulator-min-microvolt = <2500000>;
+                       regulator-max-microvolt = <2500000>;
+               };
+               vreg_l18a_2p85: l18 {
+                       regulator-name = "vreg_l18a_2p85";
+                       regulator-min-microvolt = <2700000>;
+                       regulator-max-microvolt = <2900000>;
+               };
+               vreg_l19a_2p8: l19 {
+                       regulator-name = "vreg_l19a_2p8";
+                       regulator-min-microvolt = <3000000>;
+                       regulator-max-microvolt = <3000000>;
+               };
+               vreg_l20a_2p95: l20 {
+                       regulator-name = "vreg_l20a_2p95";
+                       regulator-min-microvolt = <2950000>;
+                       regulator-max-microvolt = <2950000>;
+                       regulator-allow-set-load;
+               };
+               vreg_l21a_2p95: l21 {
+                       regulator-name = "vreg_l21a_2p95";
+                       regulator-min-microvolt = <2950000>;
+                       regulator-max-microvolt = <2950000>;
+                       regulator-allow-set-load;
+                       regulator-system-load = <200000>;
+               };
+               vreg_l22a_3p0: l22 {
+                       regulator-name = "vreg_l22a_3p0";
+                       regulator-min-microvolt = <3300000>;
+                       regulator-max-microvolt = <3300000>;
+               };
+               vreg_l23a_2p8: l23 {
+                       regulator-name = "vreg_l23a_2p8";
+                       regulator-min-microvolt = <2800000>;
+                       regulator-max-microvolt = <2800000>;
+               };
+               vreg_l24a_3p075: l24 {
+                       regulator-name = "vreg_l24a_3p075";
+                       regulator-min-microvolt = <3075000>;
+                       regulator-max-microvolt = <3075000>;
+               };
+               vreg_l25a_1p2: l25 {
+                       regulator-name = "vreg_l25a_1p2";
+                       regulator-min-microvolt = <1200000>;
+                       regulator-max-microvolt = <1200000>;
+                       regulator-allow-set-load;
+               };
+               vreg_l26a_0p8: l27 {
+                       regulator-name = "vreg_l26a_0p8";
+                       regulator-min-microvolt = <1000000>;
+                       regulator-max-microvolt = <1000000>;
+               };
+               vreg_l28a_0p925: l28 {
+                       regulator-name = "vreg_l28a_0p925";
+                       regulator-min-microvolt = <925000>;
+                       regulator-max-microvolt = <925000>;
+                       regulator-allow-set-load;
+               };
+               vreg_l29a_2p8: l29 {
+                       regulator-name = "vreg_l29a_2p8";
+                       regulator-min-microvolt = <2800000>;
+                       regulator-max-microvolt = <2800000>;
+               };
+               vreg_l30a_1p8: l30 {
+                       regulator-name = "vreg_l30a_1p8";
+                       regulator-min-microvolt = <1800000>;
+                       regulator-max-microvolt = <1800000>;
+               };
+               vreg_l32a_1p8: l32 {
+                       regulator-name = "vreg_l32a_1p8";
+                       regulator-min-microvolt = <1800000>;
+                       regulator-max-microvolt = <1800000>;
+               };
+
+               vreg_lvs1a_1p8: lvs1 {
+                       regulator-name = "vreg_lvs1a_1p8";
+               };
+
+               vreg_lvs2a_1p8: lvs2 {
+                       regulator-name = "vreg_lvs2a_1p8";
+               };
+       };
+
+       pmi8994-regulators {
+               compatible = "qcom,rpm-pmi8994-regulators";
+
+               vdd_s1-supply = <&vph_pwr>;
+               vdd_s2-supply = <&vph_pwr>;
+               vdd_s3-supply = <&vph_pwr>;
+               vdd_bst_byp-supply = <&vph_pwr>;
+
+               vph_pwr_bbyp: boost-bypass {
+                       regulator-name = "vph_pwr_bbyp";
+                       regulator-min-microvolt = <3300000>;
+                       regulator-max-microvolt = <3300000>;
+               };
+
+               vreg_s1b_1p025: s1 {
+                       regulator-name = "vreg_s1b_1p025";
+                       regulator-min-microvolt = <1025000>;
+                       regulator-max-microvolt = <1025000>;
+               };
+       };
+};
+
+&sdhc2 {
+       /* External SD card */
+       pinctrl-names = "default", "sleep";
+       pinctrl-0 = <&sdc2_state_on &sdc2_cd_on>;
+       pinctrl-1 = <&sdc2_state_off &sdc2_cd_off>;
+       cd-gpios = <&tlmm 38 GPIO_ACTIVE_LOW>;
+       vmmc-supply = <&vreg_l21a_2p95>;
+       vqmmc-supply = <&vreg_l13a_2p95>;
+       status = "okay";
+};
+
+&q6asmdai {
+       dai@0 {
+               reg = <0>;
+       };
+
+       dai@1 {
+               reg = <1>;
+       };
+
+       dai@2 {
+               reg = <2>;
+       };
+};
+
+&sound {
+       compatible = "qcom,apq8096-sndcard";
+       model = "DB820c";
+       audio-routing = "RX_BIAS", "MCLK",
+               "MM_DL1",  "MultiMedia1 Playback",
+               "MM_DL2",  "MultiMedia2 Playback",
+               "MultiMedia3 Capture", "MM_UL3";
+
+       mm1-dai-link {
+               link-name = "MultiMedia1";
+               cpu {
+                       sound-dai = <&q6asmdai  MSM_FRONTEND_DAI_MULTIMEDIA1>;
+               };
+       };
+
+       mm2-dai-link {
+               link-name = "MultiMedia2";
+               cpu {
+                       sound-dai = <&q6asmdai  MSM_FRONTEND_DAI_MULTIMEDIA2>;
+               };
+       };
+
+       mm3-dai-link {
+               link-name = "MultiMedia3";
+               cpu {
+                       sound-dai = <&q6asmdai  MSM_FRONTEND_DAI_MULTIMEDIA3>;
+               };
+       };
+
+       hdmi-dai-link {
+               link-name = "HDMI";
+               cpu {
+                       sound-dai = <&q6afedai HDMI_RX>;
+               };
+
+               platform {
+                       sound-dai = <&q6routing>;
+               };
+
+               codec {
+                       sound-dai = <&hdmi 0>;
+               };
+       };
+
+       slim-dai-link {
+               link-name = "SLIM Playback";
+               cpu {
+                       sound-dai = <&q6afedai SLIMBUS_6_RX>;
+               };
+
+               platform {
+                       sound-dai = <&q6routing>;
+       };
+
+               codec {
+                       sound-dai = <&wcd9335 6>;
+               };
+       };
+
+       slimcap-dai-link {
+               link-name = "SLIM Capture";
+               cpu {
+                       sound-dai = <&q6afedai SLIMBUS_0_TX>;
+               };
+
+               platform {
+                       sound-dai = <&q6routing>;
+               };
+
+               codec {
+                       sound-dai = <&wcd9335 1>;
+               };
+       };
+};
+
+&ufsphy {
+       status = "okay";
+
+       vdda-phy-supply = <&vreg_l28a_0p925>;
+       vdda-pll-supply = <&vreg_l12a_1p8>;
+       vddp-ref-clk-supply = <&vreg_l25a_1p2>;
+};
+
+&ufshc {
+       status = "okay";
+
+       vcc-supply = <&vreg_l20a_2p95>;
+       vccq-supply = <&vreg_l25a_1p2>;
+       vccq2-supply = <&vreg_s4a_1p8>;
+
+       vcc-max-microamp = <600000>;
+       vccq-max-microamp = <450000>;
+       vccq2-max-microamp = <450000>;
+};
+
+&usb2 {
+       status = "okay";
+       extcon = <&usb2_id>;
+
+       dwc3@7600000 {
+               extcon = <&usb2_id>;
+               dr_mode = "otg";
+               maximum-speed = "high-speed";
+       };
+};
+
+&usb3 {
+       status = "okay";
+       extcon = <&usb3_id>;
+
+       dwc3@6a00000 {
+               extcon = <&usb3_id>;
+               dr_mode = "otg";
+       };
+};
+
+&usb3phy {
+       status = "okay";
+
+       vdda-phy-supply = <&vreg_l28a_0p925>;
+       vdda-pll-supply = <&vreg_l12a_1p8>;
+
+};
+
+&venus {
+       status = "okay";
+};
+
+&wcd9335 {
+       clock-names = "mclk", "slimbus";
+       clocks = <&div1_mclk>,
+                <&rpmcc RPM_SMD_BB_CLK1>;
+
+       vdd-buck-supply = <&vreg_s4a_1p8>;
+       vdd-buck-sido-supply = <&vreg_s4a_1p8>;
+       vdd-tx-supply = <&vreg_s4a_1p8>;
+       vdd-rx-supply = <&vreg_s4a_1p8>;
+       vdd-io-supply = <&vreg_s4a_1p8>;
 };
diff --git a/arch/arm64/boot/dts/qcom/apq8096-db820c.dtsi b/arch/arm64/boot/dts/qcom/apq8096-db820c.dtsi
deleted file mode 100644 (file)
index 51e1709..0000000
+++ /dev/null
@@ -1,1105 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0-only
-/*
- * Copyright (c) 2014-2016, The Linux Foundation. All rights reserved.
- */
-
-#include "msm8996.dtsi"
-#include "pm8994.dtsi"
-#include "pmi8994.dtsi"
-#include <dt-bindings/input/input.h>
-#include <dt-bindings/gpio/gpio.h>
-#include <dt-bindings/pinctrl/qcom,pmic-gpio.h>
-#include <dt-bindings/sound/qcom,q6afe.h>
-#include <dt-bindings/sound/qcom,q6asm.h>
-
-/*
- * GPIO name legend: proper name = the GPIO line is used as GPIO
- *         NC      = not connected (pin out but not routed from the chip to
- *                   anything the board)
- *         "[PER]" = pin is muxed for [peripheral] (not GPIO)
- *         LSEC    = Low Speed External Connector
- *         P HSEC  = Primary High Speed External Connector
- *         S HSEC  = Secondary High Speed External Connector
- *         J14     = Camera Connector
- *         TP      = Test Points
- *
- * Line names are taken from the schematic "DragonBoard 820c",
- * drawing no: LM25-P2751-1
- *
- * For the lines routed to the external connectors the
- * lines are named after the 96Boards CE Specification 1.0,
- * Appendix "Expansion Connector Signal Description".
- *
- * When the 96Board naming of a line and the schematic name of
- * the same line are in conflict, the 96Board specification
- * takes precedence, which means that the external UART on the
- * LSEC is named UART0 while the schematic and SoC names this
- * UART3. This is only for the informational lines i.e. "[FOO]",
- * the GPIO named lines "GPIO-A" thru "GPIO-L" are the only
- * ones actually used for GPIO.
- */
-
-/ {
-       aliases {
-               serial0 = &blsp2_uart2;
-               serial1 = &blsp2_uart3;
-               serial2 = &blsp1_uart2;
-               i2c0    = &blsp1_i2c3;
-               i2c1    = &blsp2_i2c1;
-               i2c2    = &blsp2_i2c1;
-               spi0    = &blsp1_spi1;
-               spi1    = &blsp2_spi6;
-       };
-
-       chosen {
-               stdout-path = "serial0:115200n8";
-       };
-
-       clocks {
-               compatible = "simple-bus";
-               divclk4: divclk4 {
-                       compatible = "fixed-clock";
-                       #clock-cells = <0>;
-                       clock-frequency = <32768>;
-                       clock-output-names = "divclk4";
-
-                       pinctrl-names = "default";
-                       pinctrl-0 = <&divclk4_pin_a>;
-               };
-
-               div1_mclk: divclk1 {
-                       compatible = "gpio-gate-clock";
-                       pinctrl-0 = <&audio_mclk>;
-                       pinctrl-names = "default";
-                       clocks = <&rpmcc RPM_SMD_DIV_CLK1>;
-                       #clock-cells = <0>;
-                       enable-gpios = <&pm8994_gpios 15 0>;
-               };
-       };
-
-       gpio_keys {
-               compatible = "gpio-keys";
-               #address-cells = <1>;
-               #size-cells = <0>;
-               autorepeat;
-
-               pinctrl-names = "default";
-               pinctrl-0 = <&volume_up_gpio>;
-
-               button@0 {
-                       label = "Volume Up";
-                       linux,code = <KEY_VOLUMEUP>;
-                       gpios = <&pm8994_gpios 2 GPIO_ACTIVE_LOW>;
-               };
-       };
-
-       usb2_id: usb2-id {
-               compatible = "linux,extcon-usb-gpio";
-               id-gpio = <&pmi8994_gpios 6 GPIO_ACTIVE_HIGH>;
-               pinctrl-names = "default";
-               pinctrl-0 = <&usb2_vbus_det_gpio>;
-       };
-
-       usb3_id: usb3-id {
-               compatible = "linux,extcon-usb-gpio";
-               id-gpio = <&pm8994_gpios 22 GPIO_ACTIVE_HIGH>;
-               pinctrl-names = "default";
-               pinctrl-0 = <&usb3_vbus_det_gpio>;
-       };
-
-       vph_pwr: vph-pwr-regulator {
-               compatible = "regulator-fixed";
-               regulator-name = "vph_pwr";
-               regulator-always-on;
-               regulator-boot-on;
-
-               regulator-min-microvolt = <3700000>;
-               regulator-max-microvolt = <3700000>;
-       };
-
-       wlan_en: wlan-en-1-8v {
-               pinctrl-names = "default";
-               pinctrl-0 = <&wlan_en_gpios>;
-               compatible = "regulator-fixed";
-               regulator-name = "wlan-en-regulator";
-               regulator-min-microvolt = <1800000>;
-               regulator-max-microvolt = <1800000>;
-
-               gpio = <&pm8994_gpios 8 0>;
-
-               /* WLAN card specific delay */
-               startup-delay-us = <70000>;
-               enable-active-high;
-       };
-};
-
-&blsp1_i2c3 {
-       /* On Low speed expansion */
-       label = "LS-I2C0";
-       status = "okay";
-};
-
-&blsp1_spi1 {
-       /* On Low speed expansion */
-       label = "LS-SPI0";
-       status = "okay";
-};
-
-&blsp1_uart2 {
-       label = "BT-UART";
-       status = "okay";
-       pinctrl-names = "default", "sleep";
-       pinctrl-0 = <&blsp1_uart2_default>;
-       pinctrl-1 = <&blsp1_uart2_sleep>;
-
-       bluetooth {
-               compatible = "qcom,qca6174-bt";
-
-               /* bt_disable_n gpio */
-               enable-gpios = <&pm8994_gpios 19 GPIO_ACTIVE_HIGH>;
-
-               clocks = <&divclk4>;
-       };
-};
-
-&adsp_pil {
-       status = "okay";
-};
-
-&blsp2_i2c1 {
-       /* On High speed expansion */
-       label = "HS-I2C2";
-       status = "okay";
-};
-
-&blsp2_i2c1 {
-       /* On Low speed expansion */
-       label = "LS-I2C1";
-       status = "okay";
-};
-
-&blsp2_spi6 {
-       /* On High speed expansion */
-       label = "HS-SPI1";
-       status = "okay";
-};
-
-&blsp2_uart2 {
-       label = "LS-UART1";
-       status = "okay";
-       pinctrl-names = "default", "sleep";
-       pinctrl-0 = <&blsp2_uart2_2pins_default>;
-       pinctrl-1 = <&blsp2_uart2_2pins_sleep>;
-};
-
-&blsp2_uart3 {
-       label = "LS-UART0";
-       status = "disabled";
-       pinctrl-names = "default", "sleep";
-       pinctrl-0 = <&blsp2_uart3_4pins_default>;
-       pinctrl-1 = <&blsp2_uart3_4pins_sleep>;
-};
-
-&camss {
-       vdda-supply = <&vreg_l2a_1p25>;
-};
-
-&gpu {
-       status = "okay";
-};
-
-&hdmi {
-       status = "okay";
-
-       pinctrl-names = "default", "sleep";
-       pinctrl-0 = <&hdmi_hpd_active &hdmi_ddc_active>;
-       pinctrl-1 = <&hdmi_hpd_suspend &hdmi_ddc_suspend>;
-
-       core-vdda-supply = <&vreg_l12a_1p8>;
-       core-vcc-supply = <&vreg_s4a_1p8>;
-};
-
-&hdmi_phy {
-       status = "okay";
-
-       vddio-supply = <&vreg_l12a_1p8>;
-       vcca-supply = <&vreg_l28a_0p925>;
-       #phy-cells = <0>;
-};
-
-&hsusb_phy1 {
-       status = "okay";
-
-       vdda-pll-supply = <&vreg_l12a_1p8>;
-       vdda-phy-dpdm-supply = <&vreg_l24a_3p075>;
-};
-
-&hsusb_phy2 {
-       status = "okay";
-
-       vdda-pll-supply = <&vreg_l12a_1p8>;
-       vdda-phy-dpdm-supply = <&vreg_l24a_3p075>;
-};
-
-&mdp {
-       status = "okay";
-};
-
-&mdss {
-       status = "okay";
-};
-
-&mmcc {
-       vdd-gfx-supply = <&vdd_gfx>;
-};
-
-&pm8994_resin {
-       status = "okay";
-       linux,code = <KEY_VOLUMEDOWN>;
-};
-
-&tlmm {
-       gpio-line-names =
-               "[SPI0_DOUT]", /* GPIO_0, BLSP1_SPI_MOSI, LSEC pin 14 */
-               "[SPI0_DIN]", /* GPIO_1, BLSP1_SPI_MISO, LSEC pin 10 */
-               "[SPI0_CS]", /* GPIO_2, BLSP1_SPI_CS_N, LSEC pin 12 */
-               "[SPI0_SCLK]", /* GPIO_3, BLSP1_SPI_CLK, LSEC pin 8 */
-               "[UART1_TxD]", /* GPIO_4, BLSP8_UART_TX, LSEC pin 11 */
-               "[UART1_RxD]", /* GPIO_5, BLSP8_UART_RX, LSEC pin 13 */
-               "[I2C1_SDA]", /* GPIO_6, BLSP8_I2C_SDA, LSEC pin 21 */
-               "[I2C1_SCL]", /* GPIO_7, BLSP8_I2C_SCL, LSEC pin 19 */
-               "GPIO-H", /* GPIO_8, LCD0_RESET_N, LSEC pin 30 */
-               "TP93", /* GPIO_9 */
-               "GPIO-G", /* GPIO_10, MDP_VSYNC_P, LSEC pin 29 */
-               "[MDP_VSYNC_S]", /* GPIO_11, S HSEC pin 55 */
-               "NC", /* GPIO_12 */
-               "[CSI0_MCLK]", /* GPIO_13, CAM_MCLK0, P HSEC pin 15 */
-               "[CAM_MCLK1]", /* GPIO_14, J14 pin 11 */
-               "[CSI1_MCLK]", /* GPIO_15, CAM_MCLK2, P HSEC pin 17 */
-               "TP99", /* GPIO_16 */
-               "[I2C2_SDA]", /* GPIO_17, CCI_I2C_SDA0, P HSEC pin 34 */
-               "[I2C2_SCL]", /* GPIO_18, CCI_I2C_SCL0, P HSEC pin 32 */
-               "[CCI_I2C_SDA1]", /* GPIO_19, S HSEC pin 38 */
-               "[CCI_I2C_SCL1]", /* GPIO_20, S HSEC pin 36 */
-               "FLASH_STROBE_EN", /* GPIO_21, S HSEC pin 5 */
-               "FLASH_STROBE_TRIG", /* GPIO_22, S HSEC pin 1 */
-               "GPIO-K", /* GPIO_23, CAM2_RST_N, LSEC pin 33 */
-               "GPIO-D", /* GPIO_24, LSEC pin 26 */
-               "GPIO-I", /* GPIO_25, CAM0_RST_N, LSEC pin 31 */
-               "GPIO-J", /* GPIO_26, CAM0_STANDBY_N, LSEC pin 32 */
-               "BLSP6_I2C_SDA", /* GPIO_27 */
-               "BLSP6_I2C_SCL", /* GPIO_28 */
-               "GPIO-B", /* GPIO_29, TS0_RESET_N, LSEC pin 24 */
-               "GPIO30", /* GPIO_30, S HSEC pin 4 */
-               "HDMI_CEC", /* GPIO_31 */
-               "HDMI_DDC_CLOCK", /* GPIO_32 */
-               "HDMI_DDC_DATA", /* GPIO_33 */
-               "HDMI_HOT_PLUG_DETECT", /* GPIO_34 */
-               "PCIE0_RST_N", /* GPIO_35 */
-               "PCIE0_CLKREQ_N", /* GPIO_36 */
-               "PCIE0_WAKE", /* GPIO_37 */
-               "SD_CARD_DET_N", /* GPIO_38 */
-               "TSIF1_SYNC", /* GPIO_39, S HSEC pin 48 */
-               "W_DISABLE_N", /* GPIO_40 */
-               "[BLSP9_UART_TX]", /* GPIO_41 */
-               "[BLSP9_UART_RX]", /* GPIO_42 */
-               "[BLSP2_UART_CTS_N]", /* GPIO_43 */
-               "[BLSP2_UART_RFR_N]", /* GPIO_44 */
-               "[BLSP3_UART_TX]", /* GPIO_45 */
-               "[BLSP3_UART_RX]", /* GPIO_46 */
-               "[I2C0_SDA]", /* GPIO_47, LS_I2C0_SDA, LSEC pin 17 */
-               "[I2C0_SCL]", /* GPIO_48, LS_I2C0_SCL, LSEC pin 15 */
-               "[UART0_TxD]", /* GPIO_49, BLSP9_UART_TX, LSEC pin 5 */
-               "[UART0_RxD]", /* GPIO_50, BLSP9_UART_RX, LSEC pin 7 */
-               "[UART0_CTS]", /* GPIO_51, BLSP9_UART_CTS_N, LSEC pin 3 */
-               "[UART0_RTS]", /* GPIO_52, BLSP9_UART_RFR_N, LSEC pin 9 */
-               "[CODEC_INT1_N]", /* GPIO_53 */
-               "[CODEC_INT2_N]", /* GPIO_54 */
-               "[BLSP7_I2C_SDA]", /* GPIO_55 */
-               "[BLSP7_I2C_SCL]", /* GPIO_56 */
-               "MI2S_MCLK", /* GPIO_57, S HSEC pin 3 */
-               "[PCM_CLK]", /* GPIO_58, QUA_MI2S_SCK, LSEC pin 18 */
-               "[PCM_FS]", /* GPIO_59, QUA_MI2S_WS, LSEC pin 16 */
-               "[PCM_DO]", /* GPIO_60, QUA_MI2S_DATA0, LSEC pin 20 */
-               "[PCM_DI]", /* GPIO_61, QUA_MI2S_DATA1, LSEC pin 22 */
-               "GPIO-E", /* GPIO_62, LSEC pin 27 */
-               "TP87", /* GPIO_63 */
-               "[CODEC_RST_N]", /* GPIO_64 */
-               "[PCM1_CLK]", /* GPIO_65 */
-               "[PCM1_SYNC]", /* GPIO_66 */
-               "[PCM1_DIN]", /* GPIO_67 */
-               "[PCM1_DOUT]", /* GPIO_68 */
-               "AUDIO_REF_CLK", /* GPIO_69 */
-               "SLIMBUS_CLK", /* GPIO_70 */
-               "SLIMBUS_DATA0", /* GPIO_71 */
-               "SLIMBUS_DATA1", /* GPIO_72 */
-               "NC", /* GPIO_73 */
-               "NC", /* GPIO_74 */
-               "NC", /* GPIO_75 */
-               "NC", /* GPIO_76 */
-               "TP94", /* GPIO_77 */
-               "NC", /* GPIO_78 */
-               "TP95", /* GPIO_79 */
-               "GPIO-A", /* GPIO_80, MEMS_RESET_N, LSEC pin 23 */
-               "TP88", /* GPIO_81 */
-               "TP89", /* GPIO_82 */
-               "TP90", /* GPIO_83 */
-               "TP91", /* GPIO_84 */
-               "[SD_DAT0]", /* GPIO_85, BLSP12_SPI_MOSI, P HSEC pin 1 */
-               "[SD_CMD]", /* GPIO_86, BLSP12_SPI_MISO, P HSEC pin 11 */
-               "[SD_DAT3]", /* GPIO_87, BLSP12_SPI_CS_N, P HSEC pin 7 */
-               "[SD_SCLK]", /* GPIO_88, BLSP12_SPI_CLK, P HSEC pin 9 */
-               "TSIF1_CLK", /* GPIO_89, S HSEC pin 42 */
-               "TSIF1_EN", /* GPIO_90, S HSEC pin 46 */
-               "TSIF1_DATA", /* GPIO_91, S HSEC pin 44 */
-               "NC", /* GPIO_92 */
-               "TSIF2_CLK", /* GPIO_93, S HSEC pin 52 */
-               "TSIF2_EN", /* GPIO_94, S HSEC pin 56 */
-               "TSIF2_DATA", /* GPIO_95, S HSEC pin 54 */
-               "TSIF2_SYNC", /* GPIO_96, S HSEC pin 58 */
-               "NC", /* GPIO_97 */
-               "CAM1_STANDBY_N", /* GPIO_98 */
-               "NC", /* GPIO_99 */
-               "NC", /* GPIO_100 */
-               "[LCD1_RESET_N]", /* GPIO_101, S HSEC pin 51 */
-               "BOOT_CONFIG1", /* GPIO_102 */
-               "USB_HUB_RESET", /* GPIO_103 */
-               "CAM1_RST_N", /* GPIO_104 */
-               "NC", /* GPIO_105 */
-               "NC", /* GPIO_106 */
-               "NC", /* GPIO_107 */
-               "NC", /* GPIO_108 */
-               "NC", /* GPIO_109 */
-               "NC", /* GPIO_110 */
-               "NC", /* GPIO_111 */
-               "NC", /* GPIO_112 */
-               "PMI8994_BUA", /* GPIO_113 */
-               "PCIE2_RST_N", /* GPIO_114 */
-               "PCIE2_CLKREQ_N", /* GPIO_115 */
-               "PCIE2_WAKE", /* GPIO_116 */
-               "SSC_IRQ_0", /* GPIO_117 */
-               "SSC_IRQ_1", /* GPIO_118 */
-               "SSC_IRQ_2", /* GPIO_119 */
-               "NC", /* GPIO_120 */
-               "GPIO121", /* GPIO_121, S HSEC pin 2 */
-               "NC", /* GPIO_122 */
-               "SSC_IRQ_6", /* GPIO_123 */
-               "SSC_IRQ_7", /* GPIO_124 */
-               "GPIO-C", /* GPIO_125, TS_INT0, LSEC pin 25 */
-               "BOOT_CONFIG5", /* GPIO_126 */
-               "NC", /* GPIO_127 */
-               "NC", /* GPIO_128 */
-               "BOOT_CONFIG7", /* GPIO_129 */
-               "PCIE1_RST_N", /* GPIO_130 */
-               "PCIE1_CLKREQ_N", /* GPIO_131 */
-               "PCIE1_WAKE", /* GPIO_132 */
-               "GPIO-L", /* GPIO_133, CAM2_STANDBY_N, LSEC pin 34 */
-               "NC", /* GPIO_134 */
-               "NC", /* GPIO_135 */
-               "BOOT_CONFIG8", /* GPIO_136 */
-               "NC", /* GPIO_137 */
-               "NC", /* GPIO_138 */
-               "GPS_SSBI2", /* GPIO_139 */
-               "GPS_SSBI1", /* GPIO_140 */
-               "NC", /* GPIO_141 */
-               "NC", /* GPIO_142 */
-               "NC", /* GPIO_143 */
-               "BOOT_CONFIG6", /* GPIO_144 */
-               "NC", /* GPIO_145 */
-               "NC", /* GPIO_146 */
-               "NC", /* GPIO_147 */
-               "NC", /* GPIO_148 */
-               "NC"; /* GPIO_149 */
-
-       sdc2_cd_on: sdc2_cd_on {
-               mux {
-                       pins = "gpio38";
-                       function = "gpio";
-               };
-
-               config {
-                       pins = "gpio38";
-                       bias-pull-up;           /* pull up */
-                       drive-strength = <16>;  /* 16 MA */
-               };
-       };
-
-       sdc2_cd_off: sdc2_cd_off {
-               mux {
-                       pins = "gpio38";
-                       function = "gpio";
-               };
-
-               config {
-                       pins = "gpio38";
-                       bias-pull-up;           /* pull up */
-                       drive-strength = <2>;   /* 2 MA */
-               };
-       };
-
-       blsp1_uart2_default: blsp1_uart2_default {
-               mux {
-                       pins = "gpio41", "gpio42", "gpio43", "gpio44";
-                       function = "blsp_uart2";
-               };
-
-               config {
-                       pins = "gpio41", "gpio42", "gpio43", "gpio44";
-                       drive-strength = <16>;
-                       bias-disable;
-               };
-       };
-
-       blsp1_uart2_sleep: blsp1_uart2_sleep {
-               mux {
-                       pins = "gpio41", "gpio42", "gpio43", "gpio44";
-                       function = "gpio";
-               };
-
-               config {
-                       pins = "gpio41", "gpio42", "gpio43", "gpio44";
-                       drive-strength = <2>;
-                       bias-disable;
-               };
-       };
-
-       hdmi_hpd_active: hdmi_hpd_active {
-               mux {
-                       pins = "gpio34";
-                       function = "hdmi_hot";
-               };
-
-               config {
-                       pins = "gpio34";
-                       bias-pull-down;
-                       drive-strength = <16>;
-               };
-       };
-
-       hdmi_hpd_suspend: hdmi_hpd_suspend {
-               mux {
-                       pins = "gpio34";
-                       function = "hdmi_hot";
-               };
-
-               config {
-                       pins = "gpio34";
-                       bias-pull-down;
-                       drive-strength = <2>;
-               };
-       };
-
-       hdmi_ddc_active: hdmi_ddc_active {
-               mux {
-                       pins = "gpio32", "gpio33";
-                       function = "hdmi_ddc";
-               };
-
-               config {
-                       pins = "gpio32", "gpio33";
-                       drive-strength = <2>;
-                       bias-pull-up;
-               };
-       };
-
-       hdmi_ddc_suspend: hdmi_ddc_suspend {
-               mux {
-                       pins = "gpio32", "gpio33";
-                       function = "hdmi_ddc";
-               };
-
-               config {
-                       pins = "gpio32", "gpio33";
-                       drive-strength = <2>;
-                       bias-pull-down;
-               };
-       };
-};
-
-&pcie0 {
-       status = "okay";
-       perst-gpio = <&tlmm 35 GPIO_ACTIVE_LOW>;
-       vddpe-3v3-supply = <&wlan_en>;
-       vdda-supply = <&vreg_l28a_0p925>;
-};
-
-&pcie1 {
-       status = "okay";
-       perst-gpio = <&tlmm 130 GPIO_ACTIVE_LOW>;
-       vdda-supply = <&vreg_l28a_0p925>;
-};
-
-&pcie2 {
-       status = "okay";
-       perst-gpio = <&tlmm 114 GPIO_ACTIVE_LOW>;
-       vdda-supply = <&vreg_l28a_0p925>;
-};
-
-&pcie_phy {
-       status = "okay";
-
-       vdda-phy-supply = <&vreg_l28a_0p925>;
-       vdda-pll-supply = <&vreg_l12a_1p8>;
-};
-
-&pm8994_gpios {
-       gpio-line-names =
-               "NC",
-               "KEY_VOLP_N",
-               "NC",
-               "BL1_PWM",
-               "GPIO-F", /* BL0_PWM, LSEC pin 28 */
-               "BL1_EN",
-               "NC",
-               "WLAN_EN",
-               "NC",
-               "NC",
-               "NC",
-               "NC",
-               "NC",
-               "NC",
-               "DIVCLK1",
-               "DIVCLK2",
-               "DIVCLK3",
-               "DIVCLK4",
-               "BT_EN",
-               "PMIC_SLB",
-               "PMIC_BUA",
-               "USB_VBUS_DET";
-
-       pinctrl-names = "default";
-       pinctrl-0 = <&ls_exp_gpio_f &bt_en_gpios>;
-
-       ls_exp_gpio_f: pm8994_gpio5 {
-               pinconf {
-                       pins = "gpio5";
-                       output-low;
-                       power-source = <2>; // PM8994_GPIO_S4, 1.8V
-               };
-       };
-
-       bt_en_gpios: bt_en_gpios {
-               pinconf {
-                       pins = "gpio19";
-                       function = PMIC_GPIO_FUNC_NORMAL;
-                       output-low;
-                       power-source = <PM8994_GPIO_S4>; // 1.8V
-                       qcom,drive-strength = <PMIC_GPIO_STRENGTH_LOW>;
-                       bias-pull-down;
-               };
-       };
-
-       wlan_en_gpios: wlan_en_gpios {
-               pinconf {
-                       pins = "gpio8";
-                       function = PMIC_GPIO_FUNC_NORMAL;
-                       output-low;
-                       power-source = <PM8994_GPIO_S4>; // 1.8V
-                       qcom,drive-strength = <PMIC_GPIO_STRENGTH_LOW>;
-                       bias-pull-down;
-               };
-       };
-
-       audio_mclk: clk_div1 {
-               pinconf {
-                       pins = "gpio15";
-                       function = "func1";
-                       power-source = <PM8994_GPIO_S4>; // 1.8V
-               };
-       };
-
-       volume_up_gpio: pm8996_gpio2 {
-               pinconf {
-                       pins = "gpio2";
-                       function = "normal";
-                       input-enable;
-                       drive-push-pull;
-                       bias-pull-up;
-                       qcom,drive-strength = <PMIC_GPIO_STRENGTH_NO>;
-                       power-source = <PM8994_GPIO_S4>; // 1.8V
-               };
-       };
-
-       divclk4_pin_a: divclk4 {
-               pinconf {
-                       pins = "gpio18";
-                       function = PMIC_GPIO_FUNC_FUNC2;
-
-                       bias-disable;
-                       power-source = <PM8994_GPIO_S4>;
-               };
-       };
-
-       usb3_vbus_det_gpio: pm8996_gpio22 {
-               pinconf {
-                       pins = "gpio22";
-                       function = PMIC_GPIO_FUNC_NORMAL;
-                       input-enable;
-                       bias-pull-down;
-                       qcom,drive-strength = <PMIC_GPIO_STRENGTH_NO>;
-                       power-source = <PM8994_GPIO_S4>; // 1.8V
-               };
-       };
-};
-
-&pm8994_mpps {
-       gpio-line-names =
-               "VDDPX_BIAS",
-               "WIFI_LED",
-               "NC",
-               "BT_LED",
-               "PM_MPP05",
-               "PM_MPP06",
-               "PM_MPP07",
-               "NC";
-};
-
-&pm8994_spmi_regulators {
-       qcom,saw-reg = <&saw3>;
-       s9 {
-               qcom,saw-slave;
-       };
-       s10 {
-               qcom,saw-slave;
-       };
-       s11 {
-               qcom,saw-leader;
-               regulator-always-on;
-               regulator-min-microvolt = <980000>;
-               regulator-max-microvolt = <980000>;
-       };
-};
-
-&pmi8994_gpios {
-       gpio-line-names =
-               "NC",
-               "SPKR_AMP_EN1",
-               "SPKR_AMP_EN2",
-               "TP61",
-               "NC",
-               "USB2_VBUS_DET",
-               "NC",
-               "NC",
-               "NC",
-               "NC";
-
-       usb2_vbus_det_gpio: pmi8996_gpio6 {
-               pinconf {
-                       pins = "gpio6";
-                       function = PMIC_GPIO_FUNC_NORMAL;
-                       input-enable;
-                       bias-pull-down;
-                       qcom,drive-strength = <PMIC_GPIO_STRENGTH_NO>;
-                       power-source = <PM8994_GPIO_S4>; // 1.8V
-               };
-       };
-};
-
-&pmi8994_spmi_regulators {
-       vdd_gfx: s2@1700 {
-               reg = <0x1700 0x100>;
-               regulator-name = "VDD_GFX";
-               regulator-min-microvolt = <980000>;
-               regulator-max-microvolt = <980000>;
-       };
-};
-
-&rpm_requests {
-       pm8994-regulators {
-               compatible = "qcom,rpm-pm8994-regulators";
-
-               vdd_s1-supply = <&vph_pwr>;
-               vdd_s2-supply = <&vph_pwr>;
-               vdd_s3-supply = <&vph_pwr>;
-               vdd_s4-supply = <&vph_pwr>;
-               vdd_s5-supply = <&vph_pwr>;
-               vdd_s6-supply = <&vph_pwr>;
-               vdd_s7-supply = <&vph_pwr>;
-               vdd_s8-supply = <&vph_pwr>;
-               vdd_s9-supply = <&vph_pwr>;
-               vdd_s10-supply = <&vph_pwr>;
-               vdd_s11-supply = <&vph_pwr>;
-               vdd_s12-supply = <&vph_pwr>;
-               vdd_l1-supply = <&vreg_s1b_1p025>;
-               vdd_l2_l26_l28-supply = <&vreg_s3a_1p3>;
-               vdd_l3_l11-supply = <&vreg_s3a_1p3>;
-               vdd_l4_l27_l31-supply = <&vreg_s3a_1p3>;
-               vdd_l5_l7-supply = <&vreg_s5a_2p15>;
-               vdd_l6_l12_l32-supply = <&vreg_s5a_2p15>;
-               vdd_l8_l16_l30-supply = <&vph_pwr>;
-               vdd_l9_l10_l18_l22-supply = <&vph_pwr_bbyp>;
-               vdd_l13_l19_l23_l24-supply = <&vph_pwr_bbyp>;
-               vdd_l14_l15-supply = <&vreg_s5a_2p15>;
-               vdd_l17_l29-supply = <&vph_pwr_bbyp>;
-               vdd_l20_l21-supply = <&vph_pwr_bbyp>;
-               vdd_l25-supply = <&vreg_s3a_1p3>;
-               vdd_lvs1_lvs2-supply = <&vreg_s4a_1p8>;
-
-               vreg_s3a_1p3: s3 {
-                       regulator-name = "vreg_s3a_1p3";
-                       regulator-min-microvolt = <1300000>;
-                       regulator-max-microvolt = <1300000>;
-               };
-
-               /**
-                * 1.8v required on LS expansion
-                * for mezzanine boards
-                */
-               vreg_s4a_1p8: s4 {
-                       regulator-name = "vreg_s4a_1p8";
-                       regulator-min-microvolt = <1800000>;
-                       regulator-max-microvolt = <1800000>;
-                       regulator-always-on;
-               };
-               vreg_s5a_2p15: s5 {
-                       regulator-name = "vreg_s5a_2p15";
-                       regulator-min-microvolt = <2150000>;
-                       regulator-max-microvolt = <2150000>;
-               };
-               vreg_s7a_1p0: s7 {
-                       regulator-name = "vreg_s7a_1p0";
-                       regulator-min-microvolt = <800000>;
-                       regulator-max-microvolt = <800000>;
-               };
-
-               vreg_l1a_1p0: l1 {
-                       regulator-name = "vreg_l1a_1p0";
-                       regulator-min-microvolt = <1000000>;
-                       regulator-max-microvolt = <1000000>;
-               };
-               vreg_l2a_1p25: l2 {
-                       regulator-name = "vreg_l2a_1p25";
-                       regulator-min-microvolt = <1250000>;
-                       regulator-max-microvolt = <1250000>;
-               };
-               vreg_l3a_0p875: l3 {
-                       regulator-name = "vreg_l3a_0p875";
-                       regulator-min-microvolt = <850000>;
-                       regulator-max-microvolt = <850000>;
-               };
-               vreg_l4a_1p225: l4 {
-                       regulator-name = "vreg_l4a_1p225";
-                       regulator-min-microvolt = <1225000>;
-                       regulator-max-microvolt = <1225000>;
-               };
-               vreg_l6a_1p2: l6 {
-                       regulator-name = "vreg_l6a_1p2";
-                       regulator-min-microvolt = <1200000>;
-                       regulator-max-microvolt = <1200000>;
-               };
-               vreg_l8a_1p8: l8 {
-                       regulator-name = "vreg_l8a_1p8";
-                       regulator-min-microvolt = <1800000>;
-                       regulator-max-microvolt = <1800000>;
-               };
-               vreg_l9a_1p8: l9 {
-                       regulator-name = "vreg_l9a_1p8";
-                       regulator-min-microvolt = <1800000>;
-                       regulator-max-microvolt = <1800000>;
-               };
-               vreg_l10a_1p8: l10 {
-                       regulator-name = "vreg_l10a_1p8";
-                       regulator-min-microvolt = <1800000>;
-                       regulator-max-microvolt = <1800000>;
-               };
-               vreg_l11a_1p15: l11 {
-                       regulator-name = "vreg_l11a_1p15";
-                       regulator-min-microvolt = <1150000>;
-                       regulator-max-microvolt = <1150000>;
-               };
-               vreg_l12a_1p8: l12 {
-                       regulator-name = "vreg_l12a_1p8";
-                       regulator-min-microvolt = <1800000>;
-                       regulator-max-microvolt = <1800000>;
-               };
-               vreg_l13a_2p95: l13 {
-                       regulator-name = "vreg_l13a_2p95";
-                       regulator-min-microvolt = <1800000>;
-                       regulator-max-microvolt = <2950000>;
-               };
-               vreg_l14a_1p8: l14 {
-                       regulator-name = "vreg_l14a_1p8";
-                       regulator-min-microvolt = <1800000>;
-                       regulator-max-microvolt = <1800000>;
-               };
-               vreg_l15a_1p8: l15 {
-                       regulator-name = "vreg_l15a_1p8";
-                       regulator-min-microvolt = <1800000>;
-                       regulator-max-microvolt = <1800000>;
-               };
-               vreg_l16a_2p7: l16 {
-                       regulator-name = "vreg_l16a_2p7";
-                       regulator-min-microvolt = <2700000>;
-                       regulator-max-microvolt = <2700000>;
-               };
-               vreg_l17a_2p8: l17 {
-                       regulator-name = "vreg_l17a_2p8";
-                       regulator-min-microvolt = <2500000>;
-                       regulator-max-microvolt = <2500000>;
-               };
-               vreg_l18a_2p85: l18 {
-                       regulator-name = "vreg_l18a_2p85";
-                       regulator-min-microvolt = <2700000>;
-                       regulator-max-microvolt = <2900000>;
-               };
-               vreg_l19a_2p8: l19 {
-                       regulator-name = "vreg_l19a_2p8";
-                       regulator-min-microvolt = <3000000>;
-                       regulator-max-microvolt = <3000000>;
-               };
-               vreg_l20a_2p95: l20 {
-                       regulator-name = "vreg_l20a_2p95";
-                       regulator-min-microvolt = <2950000>;
-                       regulator-max-microvolt = <2950000>;
-                       regulator-allow-set-load;
-               };
-               vreg_l21a_2p95: l21 {
-                       regulator-name = "vreg_l21a_2p95";
-                       regulator-min-microvolt = <2950000>;
-                       regulator-max-microvolt = <2950000>;
-                       regulator-allow-set-load;
-                       regulator-system-load = <200000>;
-               };
-               vreg_l22a_3p0: l22 {
-                       regulator-name = "vreg_l22a_3p0";
-                       regulator-min-microvolt = <3300000>;
-                       regulator-max-microvolt = <3300000>;
-               };
-               vreg_l23a_2p8: l23 {
-                       regulator-name = "vreg_l23a_2p8";
-                       regulator-min-microvolt = <2800000>;
-                       regulator-max-microvolt = <2800000>;
-               };
-               vreg_l24a_3p075: l24 {
-                       regulator-name = "vreg_l24a_3p075";
-                       regulator-min-microvolt = <3075000>;
-                       regulator-max-microvolt = <3075000>;
-               };
-               vreg_l25a_1p2: l25 {
-                       regulator-name = "vreg_l25a_1p2";
-                       regulator-min-microvolt = <1200000>;
-                       regulator-max-microvolt = <1200000>;
-                       regulator-allow-set-load;
-               };
-               vreg_l26a_0p8: l27 {
-                       regulator-name = "vreg_l26a_0p8";
-                       regulator-min-microvolt = <1000000>;
-                       regulator-max-microvolt = <1000000>;
-               };
-               vreg_l28a_0p925: l28 {
-                       regulator-name = "vreg_l28a_0p925";
-                       regulator-min-microvolt = <925000>;
-                       regulator-max-microvolt = <925000>;
-                       regulator-allow-set-load;
-               };
-               vreg_l29a_2p8: l29 {
-                       regulator-name = "vreg_l29a_2p8";
-                       regulator-min-microvolt = <2800000>;
-                       regulator-max-microvolt = <2800000>;
-               };
-               vreg_l30a_1p8: l30 {
-                       regulator-name = "vreg_l30a_1p8";
-                       regulator-min-microvolt = <1800000>;
-                       regulator-max-microvolt = <1800000>;
-               };
-               vreg_l32a_1p8: l32 {
-                       regulator-name = "vreg_l32a_1p8";
-                       regulator-min-microvolt = <1800000>;
-                       regulator-max-microvolt = <1800000>;
-               };
-
-               vreg_lvs1a_1p8: lvs1 {
-                       regulator-name = "vreg_lvs1a_1p8";
-               };
-
-               vreg_lvs2a_1p8: lvs2 {
-                       regulator-name = "vreg_lvs2a_1p8";
-               };
-       };
-
-       pmi8994-regulators {
-               compatible = "qcom,rpm-pmi8994-regulators";
-
-               vdd_s1-supply = <&vph_pwr>;
-               vdd_s2-supply = <&vph_pwr>;
-               vdd_s3-supply = <&vph_pwr>;
-               vdd_bst_byp-supply = <&vph_pwr>;
-
-               vph_pwr_bbyp: boost-bypass {
-                       regulator-name = "vph_pwr_bbyp";
-                       regulator-min-microvolt = <3300000>;
-                       regulator-max-microvolt = <3300000>;
-               };
-
-               vreg_s1b_1p025: s1 {
-                       regulator-name = "vreg_s1b_1p025";
-                       regulator-min-microvolt = <1025000>;
-                       regulator-max-microvolt = <1025000>;
-               };
-       };
-};
-
-&sdhc2 {
-       /* External SD card */
-       pinctrl-names = "default", "sleep";
-       pinctrl-0 = <&sdc2_state_on &sdc2_cd_on>;
-       pinctrl-1 = <&sdc2_state_off &sdc2_cd_off>;
-       cd-gpios = <&tlmm 38 GPIO_ACTIVE_LOW>;
-       vmmc-supply = <&vreg_l21a_2p95>;
-       vqmmc-supply = <&vreg_l13a_2p95>;
-       status = "okay";
-};
-
-&q6asmdai {
-       dai@0 {
-               reg = <0>;
-       };
-
-       dai@1 {
-               reg = <1>;
-       };
-
-       dai@2 {
-               reg = <2>;
-       };
-};
-
-&sound {
-       compatible = "qcom,apq8096-sndcard";
-       model = "DB820c";
-       audio-routing = "RX_BIAS", "MCLK",
-               "MM_DL1",  "MultiMedia1 Playback",
-               "MM_DL2",  "MultiMedia2 Playback",
-               "MultiMedia3 Capture", "MM_UL3";
-
-       mm1-dai-link {
-               link-name = "MultiMedia1";
-               cpu {
-                       sound-dai = <&q6asmdai  MSM_FRONTEND_DAI_MULTIMEDIA1>;
-               };
-       };
-
-       mm2-dai-link {
-               link-name = "MultiMedia2";
-               cpu {
-                       sound-dai = <&q6asmdai  MSM_FRONTEND_DAI_MULTIMEDIA2>;
-               };
-       };
-
-       mm3-dai-link {
-               link-name = "MultiMedia3";
-               cpu {
-                       sound-dai = <&q6asmdai  MSM_FRONTEND_DAI_MULTIMEDIA3>;
-               };
-       };
-
-       hdmi-dai-link {
-               link-name = "HDMI";
-               cpu {
-                       sound-dai = <&q6afedai HDMI_RX>;
-               };
-
-               platform {
-                       sound-dai = <&q6routing>;
-               };
-
-               codec {
-                       sound-dai = <&hdmi 0>;
-               };
-       };
-
-       slim-dai-link {
-               link-name = "SLIM Playback";
-               cpu {
-                       sound-dai = <&q6afedai SLIMBUS_6_RX>;
-               };
-
-               platform {
-                       sound-dai = <&q6routing>;
-       };
-
-               codec {
-                       sound-dai = <&wcd9335 6>;
-               };
-       };
-
-       slimcap-dai-link {
-               link-name = "SLIM Capture";
-               cpu {
-                       sound-dai = <&q6afedai SLIMBUS_0_TX>;
-               };
-
-               platform {
-                       sound-dai = <&q6routing>;
-               };
-
-               codec {
-                       sound-dai = <&wcd9335 1>;
-               };
-       };
-};
-
-&ufsphy {
-       status = "okay";
-
-       vdda-phy-supply = <&vreg_l28a_0p925>;
-       vdda-pll-supply = <&vreg_l12a_1p8>;
-       vddp-ref-clk-supply = <&vreg_l25a_1p2>;
-};
-
-&ufshc {
-       status = "okay";
-
-       vcc-supply = <&vreg_l20a_2p95>;
-       vccq-supply = <&vreg_l25a_1p2>;
-       vccq2-supply = <&vreg_s4a_1p8>;
-
-       vcc-max-microamp = <600000>;
-       vccq-max-microamp = <450000>;
-       vccq2-max-microamp = <450000>;
-};
-
-&usb2 {
-       status = "okay";
-       extcon = <&usb2_id>;
-
-       dwc3@7600000 {
-               extcon = <&usb2_id>;
-               dr_mode = "otg";
-               maximum-speed = "high-speed";
-       };
-};
-
-&usb3 {
-       status = "okay";
-       extcon = <&usb3_id>;
-
-       dwc3@6a00000 {
-               extcon = <&usb3_id>;
-               dr_mode = "otg";
-       };
-};
-
-&usb3phy {
-       status = "okay";
-
-       vdda-phy-supply = <&vreg_l28a_0p925>;
-       vdda-pll-supply = <&vreg_l12a_1p8>;
-
-};
-
-&venus {
-       status = "okay";
-};
-
-&wcd9335 {
-       clock-names = "mclk", "slimbus";
-       clocks = <&div1_mclk>,
-                <&rpmcc RPM_SMD_BB_CLK1>;
-
-       vdd-buck-supply = <&vreg_s4a_1p8>;
-       vdd-buck-sido-supply = <&vreg_s4a_1p8>;
-       vdd-tx-supply = <&vreg_s4a_1p8>;
-       vdd-rx-supply = <&vreg_s4a_1p8>;
-       vdd-io-supply = <&vreg_s4a_1p8>;
-};
index a57c600..567b331 100644 (file)
 
        vdda-phy-supply = <&vreg_l28a_0p925>;
        vdda-pll-supply = <&vreg_l12a_1p8>;
-
-       vdda-phy-max-microamp = <18380>;
-       vdda-pll-max-microamp = <9440>;
 };
 
 &venus {
index d2fe58e..933b561 100644 (file)
                        clock-names = "bam_clk";
                        #dma-cells = <1>;
                        qcom,ee = <1>;
-                       qcom,controlled-remotely = <1>;
-                       qcom,config-pipe-trust-reg = <0>;
+                       qcom,controlled-remotely;
                };
 
                crypto: crypto@73a000 {
                        compatible = "qcom,bam-v1.7.0";
                        reg = <0x0 0x07984000 0x0 0x1a000>;
                        interrupts = <GIC_SPI 146 IRQ_TYPE_LEVEL_HIGH>;
-                       clocks = <&gcc GCC_QPIC_CLK>,
-                                <&gcc GCC_QPIC_AHB_CLK>;
-                       clock-names = "iface_clk", "bam_clk";
+                       clocks = <&gcc GCC_QPIC_AHB_CLK>;
+                       clock-names = "bam_clk";
                        #dma-cells = <1>;
                        qcom,ee = <0>;
                        status = "disabled";
                        reset-names = "phy",
                                      "common";
 
-                       pcie_phy0: lane@84200 {
+                       pcie_phy0: phy@84200 {
                                reg = <0x0 0x84200 0x0 0x16c>, /* Serdes Tx */
                                      <0x0 0x84400 0x0 0x200>, /* Serdes Rx */
                                      <0x0 0x84800 0x0 0x4f4>; /* PCS: Lane0, COM, PCIE */
                        };
                };
 
+               ssphy_0: ssphy@78000 {
+                       compatible = "qcom,ipq6018-qmp-usb3-phy";
+                       reg = <0x0 0x78000 0x0 0x1C4>;
+                       #address-cells = <2>;
+                       #size-cells = <2>;
+                       #clock-cells = <1>;
+                       ranges;
+
+                       clocks = <&gcc GCC_USB0_AUX_CLK>,
+                                <&gcc GCC_USB0_PHY_CFG_AHB_CLK>, <&xo>;
+                       clock-names = "aux", "cfg_ahb", "ref";
+
+                       resets = <&gcc GCC_USB0_PHY_BCR>,
+                                <&gcc GCC_USB3PHY_0_PHY_BCR>;
+                       reset-names = "phy","common";
+                       status = "disabled";
+
+                       usb0_ssphy: lane@78200 {
+                               reg = <0x0 0x00078200 0x0 0x130>, /* Tx */
+                                     <0x0 0x00078400 0x0 0x200>, /* Rx */
+                                     <0x0 0x00078800 0x0 0x1F8>, /* PCS */
+                                     <0x0 0x00078600 0x0 0x044>; /* PCS misc */
+                               #phy-cells = <0>;
+                               clocks = <&gcc GCC_USB0_PIPE_CLK>;
+                               clock-names = "pipe0";
+                               clock-output-names = "gcc_usb0_pipe_clk_src";
+                       };
+               };
+
+               qusb_phy_0: qusb@79000 {
+                       compatible = "qcom,ipq6018-qusb2-phy";
+                       reg = <0x0 0x079000 0x0 0x180>;
+                       #phy-cells = <0>;
+
+                       clocks = <&gcc GCC_USB0_PHY_CFG_AHB_CLK>,
+                               <&xo>;
+                       clock-names = "cfg_ahb", "ref";
+
+                       resets = <&gcc GCC_QUSB2_0_PHY_BCR>;
+                       status = "disabled";
+               };
+
+               usb3: usb3@8A00000 {
+                       compatible = "qcom,ipq6018-dwc3", "qcom,dwc3";
+                       reg = <0x0 0x8AF8800 0x0 0x400>;
+                       #address-cells = <2>;
+                       #size-cells = <2>;
+                       ranges;
+
+                       clocks = <&gcc GCC_SYS_NOC_USB0_AXI_CLK>,
+                               <&gcc GCC_USB0_MASTER_CLK>,
+                               <&gcc GCC_USB0_SLEEP_CLK>,
+                               <&gcc GCC_USB0_MOCK_UTMI_CLK>;
+                       clock-names = "sys_noc_axi",
+                               "master",
+                               "sleep",
+                               "mock_utmi";
+
+                       assigned-clocks = <&gcc GCC_SYS_NOC_USB0_AXI_CLK>,
+                                         <&gcc GCC_USB0_MASTER_CLK>,
+                                         <&gcc GCC_USB0_MOCK_UTMI_CLK>;
+                       assigned-clock-rates = <133330000>,
+                                              <133330000>,
+                                              <20000000>;
+
+                       resets = <&gcc GCC_USB0_BCR>;
+                       status = "disabled";
+
+                       dwc_0: usb@8A00000 {
+                               compatible = "snps,dwc3";
+                               reg = <0x0 0x8A00000 0x0 0xcd00>;
+                               interrupts = <GIC_SPI 140 IRQ_TYPE_LEVEL_HIGH>;
+                               phys = <&qusb_phy_0>, <&usb0_ssphy>;
+                               phy-names = "usb2-phy", "usb3-phy";
+                               tx-fifo-resize;
+                               snps,is-utmi-l1-suspend;
+                               snps,hird-threshold = /bits/ 8 <0x0>;
+                               snps,dis_u2_susphy_quirk;
+                               snps,dis_u3_susphy_quirk;
+                               snps,ref-clock-period-ns = <0x32>;
+                               dr_mode = "host";
+                       };
+               };
        };
 
        wcss: wcss-smp2p {
index cc08dc4..b5e1eaa 100644 (file)
@@ -24,6 +24,8 @@
                device_type = "memory";
                reg = <0x0 0x40000000 0x0 0x20000000>;
        };
+
+       vreg_dummy: regulator-dummy { };
 };
 
 &blsp1_i2c2 {
 
 &ssphy_0 {
        status = "okay";
+       vdda-phy-supply = <&vreg_dummy>;
+       vdda-pll-supply = <&vreg_dummy>;
 };
 
 &ssphy_1 {
        status = "okay";
+       vdda-phy-supply = <&vreg_dummy>;
+       vdda-pll-supply = <&vreg_dummy>;
 };
 
 &usb_0 {
index db33300..6c6a0f8 100644 (file)
@@ -91,7 +91,6 @@
                ssphy_1: phy@58000 {
                        compatible = "qcom,ipq8074-qmp-usb3-phy";
                        reg = <0x00058000 0x1c4>;
-                       #clock-cells = <1>;
                        #address-cells = <1>;
                        #size-cells = <1>;
                        ranges;
                        reset-names = "phy","common";
                        status = "disabled";
 
-                       usb1_ssphy: lane@58200 {
+                       usb1_ssphy: phy@58200 {
                                reg = <0x00058200 0x130>,       /* Tx */
                                      <0x00058400 0x200>,     /* Rx */
                                      <0x00058800 0x1f8>,     /* PCS  */
                                      <0x00058600 0x044>;     /* PCS misc*/
                                #phy-cells = <0>;
+                               #clock-cells = <1>;
                                clocks = <&gcc GCC_USB1_PIPE_CLK>;
                                clock-names = "pipe0";
                                clock-output-names = "gcc_usb1_pipe_clk_src";
                ssphy_0: phy@78000 {
                        compatible = "qcom,ipq8074-qmp-usb3-phy";
                        reg = <0x00078000 0x1c4>;
-                       #clock-cells = <1>;
                        #address-cells = <1>;
                        #size-cells = <1>;
                        ranges;
                        reset-names = "phy","common";
                        status = "disabled";
 
-                       usb0_ssphy: lane@78200 {
+                       usb0_ssphy: phy@78200 {
                                reg = <0x00078200 0x130>,       /* Tx */
                                      <0x00078400 0x200>,     /* Rx */
                                      <0x00078800 0x1f8>,     /* PCS  */
                                      <0x00078600 0x044>;     /* PCS misc*/
                                #phy-cells = <0>;
+                               #clock-cells = <1>;
                                clocks = <&gcc GCC_USB0_PIPE_CLK>;
                                clock-names = "pipe0";
                                clock-output-names = "gcc_usb0_pipe_clk_src";
                        status = "disabled";
                };
 
-               pcie_phy0: phy@86000 {
+               pcie_qmp0: phy@86000 {
                        compatible = "qcom,ipq8074-qmp-pcie-phy";
                        reg = <0x00086000 0x1000>;
-                       #phy-cells = <0>;
-                       clocks = <&gcc GCC_PCIE0_PIPE_CLK>;
-                       clock-names = "pipe_clk";
-                       clock-output-names = "pcie20_phy0_pipe_clk";
+                       #address-cells = <1>;
+                       #size-cells = <1>;
+                       ranges;
 
+                       clocks = <&gcc GCC_PCIE0_AUX_CLK>,
+                               <&gcc GCC_PCIE0_AHB_CLK>;
+                       clock-names = "aux", "cfg_ahb";
                        resets = <&gcc GCC_PCIE0_PHY_BCR>,
                                <&gcc GCC_PCIE0PHY_PHY_BCR>;
                        reset-names = "phy",
                                      "common";
                        status = "disabled";
+
+                       pcie_phy0: phy@86200 {
+                               reg = <0x86200 0x16c>,
+                                     <0x86400 0x200>,
+                                     <0x86800 0x4f4>;
+                               #phy-cells = <0>;
+                               #clock-cells = <0>;
+                               clocks = <&gcc GCC_PCIE0_PIPE_CLK>;
+                               clock-names = "pipe0";
+                               clock-output-names = "pcie_0_pipe_clk";
+                       };
                };
 
-               pcie_phy1: phy@8e000 {
+               pcie_qmp1: phy@8e000 {
                        compatible = "qcom,ipq8074-qmp-pcie-phy";
                        reg = <0x0008e000 0x1000>;
-                       #phy-cells = <0>;
-                       clocks = <&gcc GCC_PCIE1_PIPE_CLK>;
-                       clock-names = "pipe_clk";
-                       clock-output-names = "pcie20_phy1_pipe_clk";
+                       #address-cells = <1>;
+                       #size-cells = <1>;
+                       ranges;
 
+                       clocks = <&gcc GCC_PCIE1_AUX_CLK>,
+                               <&gcc GCC_PCIE1_AHB_CLK>;
+                       clock-names = "aux", "cfg_ahb";
                        resets = <&gcc GCC_PCIE1_PHY_BCR>,
                                <&gcc GCC_PCIE1PHY_PHY_BCR>;
                        reset-names = "phy",
                                      "common";
                        status = "disabled";
+
+                       pcie_phy1: phy@8e200 {
+                               reg = <0x8e200 0x16c>,
+                                     <0x8e400 0x200>,
+                                     <0x8e800 0x4f4>;
+                               #phy-cells = <0>;
+                               #clock-cells = <0>;
+                               clocks = <&gcc GCC_PCIE1_PIPE_CLK>;
+                               clock-names = "pipe0";
+                               clock-output-names = "pcie_1_pipe_clk";
+                       };
                };
 
                prng: rng@e3000 {
                        status = "disabled";
                };
 
-               cryptobam: dma@704000 {
+               cryptobam: dma-controller@704000 {
                        compatible = "qcom,bam-v1.7.0";
                        reg = <0x00704000 0x20000>;
                        interrupts = <GIC_SPI 207 IRQ_TYPE_LEVEL_HIGH>;
                        clock-names = "bam_clk";
                        #dma-cells = <1>;
                        qcom,ee = <1>;
-                       qcom,controlled-remotely = <1>;
+                       qcom,controlled-remotely;
                        status = "disabled";
                };
 
                        #reset-cells = <0x1>;
                };
 
+               spmi_bus: spmi@200f000 {
+                       compatible = "qcom,spmi-pmic-arb";
+                       reg = <0x0200f000 0x001000>,
+                             <0x02400000 0x800000>,
+                             <0x02c00000 0x800000>,
+                             <0x03800000 0x200000>,
+                             <0x0200a000 0x000700>;
+                       reg-names = "core", "chnls", "obsrvr", "intr", "cnfg";
+                       interrupts = <GIC_SPI 190 IRQ_TYPE_LEVEL_HIGH>;
+                       interrupt-names = "periph_irq";
+                       qcom,ee = <0>;
+                       qcom,channel = <0>;
+                       #address-cells = <2>;
+                       #size-cells = <0>;
+                       interrupt-controller;
+                       #interrupt-cells = <4>;
+                       cell-index = <0>;
+               };
+
                sdhc_1: sdhci@7824900 {
                        compatible = "qcom,sdhci-msm-v4";
                        reg = <0x7824900 0x500>, <0x7824000 0x800>;
                        status = "disabled";
                };
 
+               blsp1_i2c5: i2c@78b9000 {
+                       compatible = "qcom,i2c-qup-v2.2.1";
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       reg = <0x78b9000 0x600>;
+                       interrupts = <GIC_SPI 299 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&gcc GCC_BLSP1_AHB_CLK>,
+                                <&gcc GCC_BLSP1_QUP5_I2C_APPS_CLK>;
+                       clock-names = "iface", "core";
+                       clock-frequency = <400000>;
+                       dmas = <&blsp_dma 21>, <&blsp_dma 20>;
+                       dma-names = "rx", "tx";
+                       status = "disabled";
+               };
+
                blsp1_i2c6: i2c@78ba000 {
                        compatible = "qcom,i2c-qup-v2.2.1";
                        #address-cells = <1>;
index 670bd1b..265e539 100644 (file)
@@ -9,6 +9,7 @@
 / {
        model = "Alcatel OneTouch Idol 3 (4.7)";
        compatible = "alcatel,idol347", "qcom,msm8916";
+       chassis-type = "handset";
 
        aliases {
                serial0 = &blsp1_uart2;
index cee451e..d4d33dd 100644 (file)
@@ -4,10 +4,13 @@
 
 #include "msm8916-pm8916.dtsi"
 #include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/input/input.h>
+#include <dt-bindings/interrupt-controller/irq.h>
 
 / {
        model = "Asus Zenfone 2 Laser";
        compatible = "asus,z00l", "qcom,msm8916";
+       chassis-type = "handset";
 
        aliases {
                serial0 = &blsp1_uart2;
                };
        };
 
+       reg_sd_vmmc: regulator-sdcard-vmmc {
+               compatible = "regulator-fixed";
+               regulator-name = "sdcard-vmmc";
+               regulator-min-microvolt = <2950000>;
+               regulator-max-microvolt = <2950000>;
+
+               gpio = <&msmgpio 87 GPIO_ACTIVE_HIGH>;
+               enable-active-high;
+
+               startup-delay-us = <200>;
+
+               pinctrl-names = "default";
+               pinctrl-0 = <&sd_vmmc_en_default>;
+       };
+
        usb_id: usb-id {
                compatible = "linux,extcon-usb-gpio";
                id-gpios = <&msmgpio 110 GPIO_ACTIVE_HIGH>;
        };
 };
 
+&blsp_i2c2 {
+       status = "okay";
+
+       magnetometer@c {
+               compatible = "asahi-kasei,ak09911";
+               reg = <0x0c>;
+
+               vdd-supply = <&pm8916_l8>;
+               vid-supply = <&pm8916_l6>;
+
+               reset-gpios = <&msmgpio 112 GPIO_ACTIVE_LOW>;
+
+               pinctrl-names = "default";
+               pinctrl-0 = <&mag_reset_default>;
+       };
+
+       imu@68 {
+               compatible = "invensense,mpu6515";
+               reg = <0x68>;
+
+               interrupt-parent = <&msmgpio>;
+               interrupts = <36 IRQ_TYPE_EDGE_RISING>;
+
+               vdd-supply = <&pm8916_l17>;
+               vddio-supply = <&pm8916_l6>;
+
+               pinctrl-names = "default";
+               pinctrl-0 = <&imu_default>;
+
+               mount-matrix = "1",  "0", "0",
+                              "0", "-1", "0",
+                              "0",  "0", "1";
+       };
+};
+
+&blsp_i2c5 {
+       status = "okay";
+
+       touchscreen@38 {
+               compatible = "edt,edt-ft5306";
+               reg = <0x38>;
+
+               interrupt-parent = <&msmgpio>;
+               interrupts = <13 IRQ_TYPE_EDGE_FALLING>;
+
+               reset-gpios = <&msmgpio 12 GPIO_ACTIVE_LOW>;
+
+               vcc-supply = <&pm8916_l11>;
+               iovcc-supply = <&pm8916_l6>;
+
+               touchscreen-size-x = <720>;
+               touchscreen-size-y = <1280>;
+
+               pinctrl-names = "default";
+               pinctrl-0 = <&touchscreen_default>;
+       };
+};
+
 &blsp1_uart2 {
        status = "okay";
 };
        pinctrl-1 = <&sdc1_clk_off &sdc1_cmd_off &sdc1_data_off>;
 };
 
+&sdhc_2 {
+       status = "okay";
+       vmmc-supply = <&reg_sd_vmmc>;
+
+       pinctrl-names = "default", "sleep";
+       pinctrl-0 = <&sdc2_clk_on &sdc2_cmd_on &sdc2_data_on &sdc2_cd_on>;
+       pinctrl-1 = <&sdc2_clk_off &sdc2_cmd_off &sdc2_data_off &sdc2_cd_off>;
+       cd-gpios = <&msmgpio 38 GPIO_ACTIVE_LOW>;
+};
+
 &usb {
        status = "okay";
        extcon = <&usb_id>, <&usb_id>;
                bias-pull-up;
        };
 
+       imu_default: imu-default {
+               pins = "gpio36";
+               function = "gpio";
+
+               drive-strength = <2>;
+               bias-disable;
+       };
+
+       mag_reset_default: mag-reset-default {
+               pins = "gpio112";
+               function = "gpio";
+
+               drive-strength = <2>;
+               bias-disable;
+       };
+
+       sd_vmmc_en_default: sd-vmmc-en-default {
+               pins = "gpio87";
+               function = "gpio";
+
+               drive-strength = <2>;
+               bias-disable;
+       };
+
+       touchscreen_default: touchscreen-default {
+               pins = "gpio13";
+               function = "gpio";
+
+               drive-strength = <2>;
+               bias-pull-up;
+
+               reset {
+                       pins = "gpio12";
+                       function = "gpio";
+
+                       drive-strength = <2>;
+                       bias-disable;
+               };
+       };
+
        usb_id_default: usb-id-default {
                pins = "gpio110";
                function = "gpio";
index e0075b5..42d93d3 100644 (file)
@@ -25,6 +25,7 @@
 / {
        model = "Huawei Ascend G7";
        compatible = "huawei,g7", "qcom,msm8916";
+       chassis-type = "handset";
 
        aliases {
                serial0 = &blsp1_uart2;
index 1e893c0..852de62 100644 (file)
@@ -11,6 +11,7 @@
 / {
        model = "Longcheer L8150";
        compatible = "longcheer,l8150", "qcom,msm8916-v1-qrd/9-v1", "qcom,msm8916";
+       chassis-type = "handset";
 
        aliases {
                serial0 = &blsp1_uart2;
                };
        };
 
-       // FIXME: Use extcon device provided by charger driver when available
-       usb_vbus: usb-vbus {
-               compatible = "linux,extcon-usb-gpio";
-               vbus-gpio = <&msmgpio 62 GPIO_ACTIVE_HIGH>;
-               pinctrl-names = "default";
-               pinctrl-0 = <&usb_vbus_default>;
-       };
-
        gpio-keys {
                compatible = "gpio-keys";
 
        status = "okay";
 
        accelerometer@10 {
-               compatible = "bosch,bmc150_accel";
+               compatible = "bosch,bmc156_accel";
                reg = <0x10>;
 
+               /*
+                * For some reason the interrupt line is usually not connected
+                * to the BMC156. However, there are two pads next to the chip
+                * that can be shorted to make it work if needed.
+                *
+                * interrupt-parent = <&msmgpio>;
+                * interrupts = <116 IRQ_TYPE_EDGE_RISING>;
+                */
+
+               pinctrl-names = "default";
+               pinctrl-0 = <&accel_int_default>;
+
                vdd-supply = <&pm8916_l17>;
                vddio-supply = <&pm8916_l6>;
 
        };
 
        magnetometer@12 {
-               compatible = "bosch,bmc150_magn";
+               compatible = "bosch,bmc156_magn";
                reg = <0x12>;
 
+               interrupt-parent = <&msmgpio>;
+               interrupts = <113 IRQ_TYPE_EDGE_RISING>;
+
+               pinctrl-names = "default";
+               pinctrl-0 = <&magn_int_default>;
+
                vdd-supply = <&pm8916_l17>;
                vddio-supply = <&pm8916_l6>;
        };
                reg = <0x68>;
 
                interrupt-parent = <&msmgpio>;
-               interrupts = <23 IRQ_TYPE_EDGE_RISING>;
+               interrupts = <23 IRQ_TYPE_EDGE_RISING>,
+                            <22 IRQ_TYPE_EDGE_RISING>;
 
                pinctrl-names = "default";
                pinctrl-0 = <&gyro_int_default>;
        linux,code = <KEY_VOLUMEDOWN>;
 };
 
+&pm8916_usbin {
+       status = "okay";
+};
+
 &pm8916_vib {
        status = "okay";
 };
 &usb {
        status = "okay";
        dr_mode = "peripheral";
-       extcon = <&usb_vbus>;
+       extcon = <&pm8916_usbin>;
 };
 
 &usb_hs_phy {
-       extcon = <&usb_vbus>;
+       extcon = <&pm8916_usbin>;
 };
 
 &smd_rpm_regulators {
 };
 
 &msmgpio {
+       accel_int_default: accel-int-default {
+               pins = "gpio116";
+               function = "gpio";
+
+               drive-strength = <2>;
+               bias-disable;
+       };
+
        camera_flash_default: camera-flash-default {
                pins = "gpio31", "gpio32";
                function = "gpio";
        };
 
        gyro_int_default: gyro-int-default {
-               pins = "gpio23";
+               pins = "gpio22", "gpio23";
                function = "gpio";
 
                drive-strength = <2>;
                bias-disable;
        };
 
-       tp_int_default: tp-int-default {
-               pins = "gpio13";
+       magn_int_default: magn-int-default {
+               pins = "gpio113";
                function = "gpio";
 
                drive-strength = <2>;
                bias-disable;
        };
 
-       usb_vbus_default: usb-vbus-default {
-               pins = "gpio62";
+       tp_int_default: tp-int-default {
+               pins = "gpio13";
                function = "gpio";
 
-               bias-pull-up;
+               drive-strength = <2>;
+               bias-disable;
        };
 };
index 2784518..f9ce123 100644 (file)
@@ -10,6 +10,7 @@
 / {
        model = "BQ Aquaris X5 (Longcheer L8910)";
        compatible = "longcheer,l8910", "qcom,msm8916";
+       chassis-type = "handset";
 
        aliases {
                serial0 = &blsp1_uart2;
index d66c155..7c0ceb3 100644 (file)
@@ -5,9 +5,22 @@
 
 /dts-v1/;
 
-#include "msm8916-mtp.dtsi"
+#include "msm8916-pm8916.dtsi"
 
 / {
        model = "Qualcomm Technologies, Inc. MSM 8916 MTP";
        compatible = "qcom,msm8916-mtp", "qcom,msm8916-mtp/1", "qcom,msm8916";
+
+       aliases {
+               serial0 = &blsp1_uart2;
+               usid0 = &pm8916_0;
+       };
+
+       chosen {
+               stdout-path = "serial0";
+       };
+};
+
+&blsp1_uart2 {
+       status = "okay";
 };
diff --git a/arch/arm64/boot/dts/qcom/msm8916-mtp.dtsi b/arch/arm64/boot/dts/qcom/msm8916-mtp.dtsi
deleted file mode 100644 (file)
index 1bd0504..0000000
+++ /dev/null
@@ -1,21 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0-only
-/*
- * Copyright (c) 2014-2015, The Linux Foundation. All rights reserved.
- */
-
-#include "msm8916-pm8916.dtsi"
-
-/ {
-       aliases {
-               serial0 = &blsp1_uart2;
-               usid0 = &pm8916_0;
-       };
-
-       chosen {
-               stdout-path = "serial0";
-       };
-};
-
-&blsp1_uart2 {
-       status = "okay";
-};
index 6cc2eae..4ba11b0 100644 (file)
@@ -7,6 +7,7 @@
 / {
        model = "Samsung Galaxy A3U (EUR)";
        compatible = "samsung,a3u-eur", "qcom,msm8916";
+       chassis-type = "handset";
 
        reg_panel_vdd3: regulator-panel-vdd3 {
                compatible = "regulator-fixed";
index c2eff5a..d978c9a 100644 (file)
@@ -7,6 +7,7 @@
 / {
        model = "Samsung Galaxy A5U (EUR)";
        compatible = "samsung,a5u-eur", "qcom,msm8916";
+       chassis-type = "handset";
 
        reg_touch_key: regulator-touch-key {
                compatible = "regulator-fixed";
diff --git a/arch/arm64/boot/dts/qcom/msm8916-samsung-serranove.dts b/arch/arm64/boot/dts/qcom/msm8916-samsung-serranove.dts
new file mode 100644 (file)
index 0000000..a78f87a
--- /dev/null
@@ -0,0 +1,534 @@
+// SPDX-License-Identifier: GPL-2.0-only
+// Copyright (C) 2019 Stephan Gerhold
+
+/dts-v1/;
+
+#include "msm8916-pm8916.dtsi"
+#include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/input/input.h>
+#include <dt-bindings/interrupt-controller/irq.h>
+
+/*
+ * NOTE: The original firmware from Samsung can only boot ARM32 kernels.
+ * Unfortunately, the firmware is signed and cannot be replaced easily.
+ * There seems to be no way to boot ARM64 kernels on this device at the moment,
+ * even though the hardware would support it.
+ *
+ * However, it is possible to use this device tree by compiling an ARM32 kernel
+ * instead. For clarity and build testing this device tree is maintained next
+ * to the other MSM8916 device trees. However, it is actually used through
+ *   arch/arm/boot/dts/qcom-msm8916-samsung-serranove.dts
+ */
+
+/ {
+       model = "Samsung Galaxy S4 Mini Value Edition";
+       compatible = "samsung,serranove", "qcom,msm8916";
+
+       aliases {
+               serial0 = &blsp1_uart2;
+       };
+
+       chosen {
+               stdout-path = "serial0";
+       };
+
+       reserved-memory {
+               /* Additional memory used by Samsung firmware modifications */
+               tz-apps@85500000 {
+                       reg = <0x0 0x85500000 0x0 0xb00000>;
+                       no-map;
+               };
+       };
+
+       gpio-keys {
+               compatible = "gpio-keys";
+
+               pinctrl-names = "default";
+               pinctrl-0 = <&gpio_keys_default>;
+
+               label = "GPIO Buttons";
+
+               volume-up {
+                       label = "Volume Up";
+                       gpios = <&msmgpio 107 GPIO_ACTIVE_LOW>;
+                       linux,code = <KEY_VOLUMEUP>;
+               };
+
+               home {
+                       label = "Home";
+                       gpios = <&msmgpio 109 GPIO_ACTIVE_LOW>;
+                       linux,code = <KEY_HOMEPAGE>;
+               };
+       };
+
+       gpio-hall-sensor {
+               compatible = "gpio-keys";
+
+               pinctrl-names = "default";
+               pinctrl-0 = <&gpio_hall_sensor_default>;
+
+               label = "GPIO Hall Effect Sensor";
+
+               hall-sensor {
+                       label = "Hall Effect Sensor";
+                       gpios = <&msmgpio 52 GPIO_ACTIVE_LOW>;
+                       linux,input-type = <EV_SW>;
+                       linux,code = <SW_LID>;
+                       linux,can-disable;
+               };
+       };
+
+       reg_vdd_tsp: regulator-vdd-tsp {
+               compatible = "regulator-fixed";
+               regulator-name = "vdd_tsp";
+               regulator-min-microvolt = <3300000>;
+               regulator-max-microvolt = <3300000>;
+
+               gpio = <&msmgpio 73 GPIO_ACTIVE_HIGH>;
+               enable-active-high;
+
+               pinctrl-names = "default";
+               pinctrl-0 = <&tsp_en_default>;
+       };
+
+       reg_touch_key: regulator-touch-key {
+               compatible = "regulator-fixed";
+               regulator-name = "touch_key";
+               regulator-min-microvolt = <2800000>;
+               regulator-max-microvolt = <2800000>;
+
+               gpio = <&msmgpio 86 GPIO_ACTIVE_HIGH>;
+               enable-active-high;
+
+               pinctrl-names = "default";
+               pinctrl-0 = <&tkey_en_default>;
+       };
+
+       reg_key_led: regulator-key-led {
+               compatible = "regulator-fixed";
+               regulator-name = "key_led";
+               regulator-min-microvolt = <3300000>;
+               regulator-max-microvolt = <3300000>;
+
+               gpio = <&msmgpio 60 GPIO_ACTIVE_HIGH>;
+               enable-active-high;
+
+               pinctrl-names = "default";
+               pinctrl-0 = <&tkey_led_en_default>;
+       };
+
+       i2c-muic {
+               compatible = "i2c-gpio";
+               sda-gpios = <&msmgpio 105 (GPIO_ACTIVE_HIGH|GPIO_OPEN_DRAIN)>;
+               scl-gpios = <&msmgpio 106 (GPIO_ACTIVE_HIGH|GPIO_OPEN_DRAIN)>;
+
+               pinctrl-names = "default";
+               pinctrl-0 = <&muic_i2c_default>;
+
+               #address-cells = <1>;
+               #size-cells = <0>;
+
+               muic: extcon@14 {
+                       compatible = "siliconmitus,sm5504-muic";
+                       reg = <0x14>;
+
+                       interrupt-parent = <&msmgpio>;
+                       interrupts = <12 IRQ_TYPE_EDGE_FALLING>;
+
+                       pinctrl-names = "default";
+                       pinctrl-0 = <&muic_irq_default>;
+               };
+       };
+
+       i2c-tkey {
+               compatible = "i2c-gpio";
+               sda-gpios = <&msmgpio 16 (GPIO_ACTIVE_HIGH|GPIO_OPEN_DRAIN)>;
+               scl-gpios = <&msmgpio 17 (GPIO_ACTIVE_HIGH|GPIO_OPEN_DRAIN)>;
+
+               pinctrl-names = "default";
+               pinctrl-0 = <&tkey_i2c_default>;
+
+               #address-cells = <1>;
+               #size-cells = <0>;
+
+               touchkey@20 {
+                       compatible = "coreriver,tc360-touchkey";
+                       reg = <0x20>;
+
+                       interrupt-parent = <&msmgpio>;
+                       interrupts = <98 IRQ_TYPE_EDGE_FALLING>;
+
+                       vcc-supply = <&reg_touch_key>;
+                       vdd-supply = <&reg_key_led>;
+                       vddio-supply = <&pm8916_l6>;
+
+                       linux,keycodes = <KEY_APPSELECT KEY_BACK>;
+
+                       pinctrl-names = "default";
+                       pinctrl-0 = <&tkey_default>;
+               };
+       };
+
+       i2c-nfc {
+               compatible = "i2c-gpio";
+               sda-gpios = <&msmgpio 0 (GPIO_ACTIVE_HIGH|GPIO_OPEN_DRAIN)>;
+               scl-gpios = <&msmgpio 1 (GPIO_ACTIVE_HIGH|GPIO_OPEN_DRAIN)>;
+
+               pinctrl-names = "default";
+               pinctrl-0 = <&nfc_i2c_default>;
+
+               #address-cells = <1>;
+               #size-cells = <0>;
+
+               nfc@2b {
+                       compatible = "nxp,pn547", "nxp,nxp-nci-i2c";
+                       reg = <0x2b>;
+
+                       interrupt-parent = <&msmgpio>;
+                       interrupts = <21 IRQ_TYPE_EDGE_RISING>;
+
+                       enable-gpios = <&msmgpio 20 GPIO_ACTIVE_HIGH>;
+                       firmware-gpios = <&msmgpio 49 GPIO_ACTIVE_HIGH>;
+
+                       pinctrl-names = "default";
+                       pinctrl-0 = <&nfc_default>;
+               };
+       };
+};
+
+&blsp_i2c2 {
+       status = "okay";
+
+       imu@6b {
+               compatible = "st,lsm6ds3";
+               reg = <0x6b>;
+
+               interrupt-parent = <&msmgpio>;
+               interrupts = <115 IRQ_TYPE_EDGE_RISING>;
+
+               pinctrl-names = "default";
+               pinctrl-0 = <&imu_irq_default>;
+       };
+};
+
+&blsp_i2c4 {
+       status = "okay";
+
+       battery@35 {
+               compatible = "richtek,rt5033-battery";
+               reg = <0x35>;
+
+               interrupt-parent = <&msmgpio>;
+               interrupts = <121 IRQ_TYPE_EDGE_FALLING>;
+
+               pinctrl-names = "default";
+               pinctrl-0 = <&fg_alert_default>;
+       };
+};
+
+&blsp_i2c5 {
+       status = "okay";
+
+       touchscreen@20 {
+               compatible = "zinitix,bt541";
+               reg = <0x20>;
+
+               interrupt-parent = <&msmgpio>;
+               interrupts = <13 IRQ_TYPE_EDGE_FALLING>;
+
+               touchscreen-size-x = <540>;
+               touchscreen-size-y = <960>;
+
+               vdd-supply = <&reg_vdd_tsp>;
+               vddo-supply = <&pm8916_l6>;
+
+               pinctrl-names = "default";
+               pinctrl-0 = <&tsp_irq_default>;
+       };
+};
+
+&blsp1_uart2 {
+       status = "okay";
+};
+
+&pm8916_resin {
+       status = "okay";
+       linux,code = <KEY_VOLUMEDOWN>;
+};
+
+&pm8916_vib {
+       status = "okay";
+};
+
+&pronto {
+       status = "okay";
+
+       iris {
+               compatible = "qcom,wcn3660b";
+       };
+};
+
+&sdhc_1 {
+       status = "okay";
+
+       pinctrl-names = "default", "sleep";
+       pinctrl-0 = <&sdc1_clk_on &sdc1_cmd_on &sdc1_data_on>;
+       pinctrl-1 = <&sdc1_clk_off &sdc1_cmd_off &sdc1_data_off>;
+};
+
+&sdhc_2 {
+       status = "okay";
+
+       pinctrl-names = "default", "sleep";
+       pinctrl-0 = <&sdc2_clk_on &sdc2_cmd_on &sdc2_data_on>;
+       pinctrl-1 = <&sdc2_clk_off &sdc2_cmd_off &sdc2_data_off>;
+
+       non-removable;
+
+       /*
+        * FIXME: Disable UHS-I modes since tuning fails with:
+        *
+        * sdhci_msm 7864900.sdhci: mmc1: No tuning point found
+        * mmc1: tuning execution failed: -5
+        * mmc1: error -5 whilst initialising SD card
+        *
+        * This is the quirk used on downstream, which suggests this is
+        * a hardware limitation. However, probing a card using DDR50 works
+        * (without tuning), so maybe only tuning is broken?
+        */
+       no-1-8-v;
+};
+
+&usb {
+       status = "okay";
+       extcon = <&muic>, <&muic>;
+};
+
+&usb_hs_phy {
+       extcon = <&muic>;
+};
+
+&smd_rpm_regulators {
+       vdd_l1_l2_l3-supply = <&pm8916_s3>;
+       vdd_l4_l5_l6-supply = <&pm8916_s4>;
+       vdd_l7-supply = <&pm8916_s4>;
+
+       s3 {
+               regulator-min-microvolt = <1200000>;
+               regulator-max-microvolt = <1300000>;
+       };
+
+       s4 {
+               regulator-min-microvolt = <1800000>;
+               regulator-max-microvolt = <2100000>;
+       };
+
+       l1 {
+               regulator-min-microvolt = <1225000>;
+               regulator-max-microvolt = <1225000>;
+       };
+
+       l2 {
+               regulator-min-microvolt = <1200000>;
+               regulator-max-microvolt = <1200000>;
+       };
+
+       l4 {
+               regulator-min-microvolt = <2050000>;
+               regulator-max-microvolt = <2050000>;
+       };
+
+       l5 {
+               regulator-min-microvolt = <1800000>;
+               regulator-max-microvolt = <1800000>;
+       };
+
+       l6 {
+               regulator-min-microvolt = <1800000>;
+               regulator-max-microvolt = <1800000>;
+       };
+
+       l7 {
+               regulator-min-microvolt = <1800000>;
+               regulator-max-microvolt = <1800000>;
+       };
+
+       l8 {
+               regulator-min-microvolt = <2850000>;
+               regulator-max-microvolt = <2900000>;
+       };
+
+       l9 {
+               regulator-min-microvolt = <3300000>;
+               regulator-max-microvolt = <3300000>;
+       };
+
+       l10 {
+               regulator-min-microvolt = <2700000>;
+               regulator-max-microvolt = <2800000>;
+       };
+
+       l11 {
+               regulator-min-microvolt = <1800000>;
+               regulator-max-microvolt = <2950000>;
+               regulator-allow-set-load;
+               regulator-system-load = <200000>;
+       };
+
+       l12 {
+               regulator-min-microvolt = <1800000>;
+               regulator-max-microvolt = <2950000>;
+       };
+
+       l13 {
+               regulator-min-microvolt = <3075000>;
+               regulator-max-microvolt = <3075000>;
+       };
+
+       l14 {
+               regulator-min-microvolt = <1800000>;
+               regulator-max-microvolt = <3300000>;
+       };
+
+       l15 {
+               regulator-min-microvolt = <1800000>;
+               regulator-max-microvolt = <3300000>;
+       };
+
+       l16 {
+               regulator-min-microvolt = <1800000>;
+               regulator-max-microvolt = <3300000>;
+       };
+
+       l17 {
+               regulator-min-microvolt = <2850000>;
+               regulator-max-microvolt = <2850000>;
+       };
+
+       l18 {
+               regulator-min-microvolt = <2700000>;
+               regulator-max-microvolt = <2700000>;
+       };
+};
+
+&msmgpio {
+       fg_alert_default: fg-alert-default {
+               pins = "gpio121";
+               function = "gpio";
+
+               drive-strength = <2>;
+               bias-disable;
+       };
+
+       gpio_keys_default: gpio-keys-default {
+               pins = "gpio107", "gpio109";
+               function = "gpio";
+
+               drive-strength = <2>;
+               bias-pull-up;
+       };
+
+       gpio_hall_sensor_default: gpio-hall-sensor-default {
+               pins = "gpio52";
+               function = "gpio";
+
+               drive-strength = <2>;
+               bias-disable;
+       };
+
+       imu_irq_default: imu-irq-default {
+               pins = "gpio115";
+               function = "gpio";
+
+               drive-strength = <2>;
+               bias-disable;
+       };
+
+       muic_i2c_default: muic-i2c-default {
+               pins = "gpio105", "gpio106";
+               function = "gpio";
+
+               drive-strength = <2>;
+               bias-disable;
+       };
+
+       muic_irq_default: muic-irq-default {
+               pins = "gpio12";
+               function = "gpio";
+
+               drive-strength = <2>;
+               bias-disable;
+       };
+
+       nfc_default: nfc-default {
+               pins = "gpio20", "gpio49";
+               function = "gpio";
+
+               drive-strength = <2>;
+               bias-disable;
+
+               irq {
+                       pins = "gpio21";
+                       function = "gpio";
+
+                       drive-strength = <2>;
+                       bias-pull-down;
+               };
+       };
+
+       nfc_i2c_default: nfc-i2c-default {
+               pins = "gpio0", "gpio1";
+               function = "gpio";
+
+               drive-strength = <2>;
+               bias-disable;
+       };
+
+       tkey_default: tkey-default {
+               pins = "gpio98";
+               function = "gpio";
+
+               drive-strength = <2>;
+               bias-disable;
+       };
+
+       tkey_en_default: tkey-en-default {
+               pins = "gpio86";
+               function = "gpio";
+
+               drive-strength = <2>;
+               bias-disable;
+       };
+
+       tkey_i2c_default: tkey-i2c-default {
+               pins = "gpio16", "gpio17";
+               function = "gpio";
+
+               drive-strength = <2>;
+               bias-disable;
+       };
+
+       tkey_led_en_default: tkey-led-en-default {
+               pins = "gpio60";
+               function = "gpio";
+
+               drive-strength = <2>;
+               bias-disable;
+       };
+
+       tsp_en_default: tsp-en-default {
+               pins = "gpio73";
+               function = "gpio";
+
+               drive-strength = <2>;
+               bias-disable;
+       };
+
+       tsp_irq_default: tsp-irq-default {
+               pins = "gpio13";
+               function = "gpio";
+
+               drive-strength = <2>;
+               bias-disable;
+       };
+};
index 4e20cc0..69a44c6 100644 (file)
@@ -11,6 +11,7 @@
 / {
        model = "Xiaomi Redmi 2 (Wingtech WT88047)";
        compatible = "wingtech,wt88047", "qcom,msm8916";
+       chassis-type = "handset";
 
        aliases {
                serial0 = &blsp1_uart2;
index 3f85e34..c1c42f2 100644 (file)
                        no-map;
                };
 
-               smem_mem: smem_region@86300000 {
+               smem@86300000 {
+                       compatible = "qcom,smem";
                        reg = <0x0 0x86300000 0x0 0x100000>;
                        no-map;
+
+                       hwlocks = <&tcsr_mutex 3>;
+                       qcom,rpm-msg-ram = <&rpm_msg_ram>;
                };
 
                hypervisor@86400000 {
                        #cooling-cells = <2>;
                        power-domains = <&CPU_PD0>;
                        power-domain-names = "psci";
+                       qcom,acc = <&cpu0_acc>;
+                       qcom,saw = <&cpu0_saw>;
                };
 
                CPU1: cpu@1 {
                        #cooling-cells = <2>;
                        power-domains = <&CPU_PD1>;
                        power-domain-names = "psci";
+                       qcom,acc = <&cpu1_acc>;
+                       qcom,saw = <&cpu1_saw>;
                };
 
                CPU2: cpu@2 {
                        #cooling-cells = <2>;
                        power-domains = <&CPU_PD2>;
                        power-domain-names = "psci";
+                       qcom,acc = <&cpu2_acc>;
+                       qcom,saw = <&cpu2_saw>;
                };
 
                CPU3: cpu@3 {
                        #cooling-cells = <2>;
                        power-domains = <&CPU_PD3>;
                        power-domain-names = "psci";
+                       qcom,acc = <&cpu3_acc>;
+                       qcom,saw = <&cpu3_saw>;
                };
 
                L2_0: l2-cache {
                };
        };
 
-       smem {
-               compatible = "qcom,smem";
-
-               memory-region = <&smem_mem>;
-               qcom,rpm-msg-ram = <&rpm_msg_ram>;
-
-               hwlocks = <&tcsr_mutex 3>;
-       };
-
        smp2p-hexagon {
                compatible = "qcom,smp2p";
                qcom,smem = <435>, <428>;
                };
        };
 
-       soc: soc {
+       soc: soc@0 {
                #address-cells = <1>;
                #size-cells = <1>;
                ranges = <0 0 0 0xffffffff>;
                        };
                };
 
-               rpm_msg_ram: memory@60000 {
+               rpm_msg_ram: sram@60000 {
                        compatible = "qcom,rpm-msg-ram";
                        reg = <0x00060000 0x8000>;
                };
                lpass: audio-controller@7708000 {
                        status = "disabled";
                        compatible = "qcom,lpass-cpu-apq8016";
+
+                       /*
+                        * Note: Unlike the name would suggest, the SEC_I2S_CLK
+                        * is actually only used by Tertiary MI2S while
+                        * Primary/Secondary MI2S both use the PRI_I2S_CLK.
+                        */
                        clocks = <&gcc GCC_ULTAUDIO_AHBFABRIC_IXFABRIC_CLK>,
                                 <&gcc GCC_ULTAUDIO_PCNOC_MPORT_CLK>,
                                 <&gcc GCC_ULTAUDIO_PCNOC_SWAY_CLK>,
                                 <&gcc GCC_ULTAUDIO_LPAIF_PRI_I2S_CLK>,
-                                <&gcc GCC_ULTAUDIO_LPAIF_SEC_I2S_CLK>,
+                                <&gcc GCC_ULTAUDIO_LPAIF_PRI_I2S_CLK>,
                                 <&gcc GCC_ULTAUDIO_LPAIF_SEC_I2S_CLK>,
                                 <&gcc GCC_ULTAUDIO_LPAIF_AUX_I2S_CLK>;
 
                };
 
                sdhc_1: sdhci@7824000 {
-                       compatible = "qcom,sdhci-msm-v4";
+                       compatible = "qcom,msm8916-sdhci", "qcom,sdhci-msm-v4";
                        reg = <0x07824900 0x11c>, <0x07824000 0x800>;
                        reg-names = "hc_mem", "core_mem";
 
                };
 
                sdhc_2: sdhci@7864000 {
-                       compatible = "qcom,sdhci-msm-v4";
+                       compatible = "qcom,msm8916-sdhci", "qcom,sdhci-msm-v4";
                        reg = <0x07864900 0x11c>, <0x07864000 0x800>;
                        reg-names = "hc_mem", "core_mem";
 
 
                                label = "pronto";
 
-                               wcnss {
+                               wcnss_ctrl: wcnss {
                                        compatible = "qcom,wcnss";
                                        qcom,smd-channels = "WCNSS_CTRL";
 
                                status = "disabled";
                        };
                };
+
+               cpu0_acc: power-manager@b088000 {
+                       compatible = "qcom,msm8916-acc";
+                       reg = <0x0b088000 0x1000>;
+                       status = "reserved"; /* Controlled by PSCI firmware */
+               };
+
+               cpu0_saw: power-manager@b089000 {
+                       compatible = "qcom,msm8916-saw2-v3.0-cpu", "qcom,saw2";
+                       reg = <0x0b089000 0x1000>;
+                       status = "reserved"; /* Controlled by PSCI firmware */
+               };
+
+               cpu1_acc: power-manager@b098000 {
+                       compatible = "qcom,msm8916-acc";
+                       reg = <0x0b098000 0x1000>;
+                       status = "reserved"; /* Controlled by PSCI firmware */
+               };
+
+               cpu1_saw: power-manager@b099000 {
+                       compatible = "qcom,msm8916-saw2-v3.0-cpu", "qcom,saw2";
+                       reg = <0x0b099000 0x1000>;
+                       status = "reserved"; /* Controlled by PSCI firmware */
+               };
+
+               cpu2_acc: power-manager@b0a8000 {
+                       compatible = "qcom,msm8916-acc";
+                       reg = <0x0b0a8000 0x1000>;
+                       status = "reserved"; /* Controlled by PSCI firmware */
+               };
+
+               cpu2_saw: power-manager@b0a9000 {
+                       compatible = "qcom,msm8916-saw2-v3.0-cpu", "qcom,saw2";
+                       reg = <0x0b0a9000 0x1000>;
+                       status = "reserved"; /* Controlled by PSCI firmware */
+               };
+
+               cpu3_acc: power-manager@b0b8000 {
+                       compatible = "qcom,msm8916-acc";
+                       reg = <0x0b0b8000 0x1000>;
+                       status = "reserved"; /* Controlled by PSCI firmware */
+               };
+
+               cpu3_saw: power-manager@b0b9000 {
+                       compatible = "qcom,msm8916-saw2-v3.0-cpu", "qcom,saw2";
+                       reg = <0x0b0b9000 0x1000>;
+                       status = "reserved"; /* Controlled by PSCI firmware */
+               };
        };
 
        thermal-zones {
index 1ccca83..4da6c44 100644 (file)
@@ -16,6 +16,8 @@
 / {
        model = "LG Nexus 5X";
        compatible = "lg,bullhead", "qcom,msm8992";
+       chassis-type = "handset";
+
        /* required for bootloader to select correct board */
        qcom,msm-id = <251 0>, <252 0>;
        qcom,board-id = <0xb64 0>;
index 5322b9c..8933b53 100644 (file)
@@ -12,4 +12,5 @@
 / {
        model = "Microsoft Lumia 950";
        compatible = "microsoft,talkman", "qcom,msm8992";
+       chassis-type = "handset";
 };
index 357d554..69fcb6b 100644 (file)
@@ -14,6 +14,8 @@
 / {
        model = "Xiaomi Mi 4C";
        compatible = "xiaomi,libra", "qcom,msm8992";
+       chassis-type = "handset";
+
        /* required for bootloader to select correct board */
        qcom,msm-id = <251 0 252 0>;
        qcom,pmic-id = <65545 65546 0 0>;
index c096b77..0e3dd48 100644 (file)
@@ -14,6 +14,7 @@
 / {
        model = "Huawei Nexus 6P";
        compatible = "huawei,angler", "qcom,msm8994";
+       chassis-type = "handset";
        /* required for bootloader to select correct board */
        qcom,msm-id = <207 0x20000>;
        qcom,pmic-id = <0x10009 0x1000A 0x0 0x0>;
index d0aaf57..c593418 100644 (file)
@@ -12,4 +12,5 @@
 / {
        model = "Microsoft Lumia 950 XL";
        compatible = "microsoft,cityman", "qcom,msm8994";
+       chassis-type = "handset";
 };
index b5e90c8..99388b0 100644 (file)
@@ -10,6 +10,7 @@
 / {
        model = "Sony Xperia Z3+/Z4";
        compatible = "sony,ivy-row", "qcom,msm8994";
+       chassis-type = "handset";
 };
 
 &pm8994_l3 {
index a1d1a07..71758d2 100644 (file)
@@ -10,6 +10,7 @@
 / {
        model = "Sony Xperia Z4 Tablet (LTE)";
        compatible = "sony,karin-row", "qcom,msm8994";
+       chassis-type = "tablet";
 };
 
 &blsp2_i2c5 {
index 1385956..69b7df0 100644 (file)
@@ -10,6 +10,7 @@
 / {
        model = "Sony Xperia Z5 Premium";
        compatible = "sony,satsuki-row", "qcom,msm8994";
+       chassis-type = "handset";
 };
 
 &pm8994_l14 {
index d3ba986..466508c 100644 (file)
@@ -10,6 +10,7 @@
 / {
        model = "Sony Xperia Z5";
        compatible = "sony,sumire-row", "qcom,msm8994";
+       chassis-type = "handset";
 };
 
 /delete-node/ &pm8994_l19;
index f129479..76bf501 100644 (file)
@@ -10,6 +10,7 @@
 / {
        model = "Sony Xperia Z5 Compact";
        compatible = "sony,suzuran-row", "qcom,msm8994";
+       chassis-type = "handset";
 };
 
 &pm8994_l14 {
index 986fe60..5a9a5ed 100644 (file)
                        reg = <0xfc400000 0x2000>;
                };
 
-               rpm_msg_ram: memory@fc428000 {
+               rpm_msg_ram: sram@fc428000 {
                        compatible = "qcom,rpm-msg-ram";
                        reg = <0xfc428000 0x4000>;
                };
index 45ed594..7d9fc35 100644 (file)
@@ -5,9 +5,31 @@
 
 /dts-v1/;
 
-#include "msm8996-mtp.dtsi"
+#include "msm8996.dtsi"
 
 / {
        model = "Qualcomm Technologies, Inc. MSM 8996 MTP";
        compatible = "qcom,msm8996-mtp";
+
+       aliases {
+               serial0 = &blsp2_uart2;
+       };
+
+       chosen {
+               stdout-path = "serial0";
+       };
+
+       soc {
+               serial@75b0000 {
+                       status = "okay";
+               };
+       };
+};
+
+&hdmi {
+       status = "okay";
+};
+
+&hdmi_phy {
+       status = "okay";
 };
diff --git a/arch/arm64/boot/dts/qcom/msm8996-mtp.dtsi b/arch/arm64/boot/dts/qcom/msm8996-mtp.dtsi
deleted file mode 100644 (file)
index ac43a91..0000000
+++ /dev/null
@@ -1,30 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0-only
-/*
- * Copyright (c) 2014-2015, The Linux Foundation. All rights reserved.
- */
-
-#include "msm8996.dtsi"
-
-/ {
-       aliases {
-               serial0 = &blsp2_uart2;
-       };
-
-       chosen {
-               stdout-path = "serial0";
-       };
-
-       soc {
-               serial@75b0000 {
-                       status = "okay";
-               };
-       };
-};
-
-&hdmi {
-       status = "okay";
-};
-
-&hdmi_phy {
-       status = "okay";
-};
index b4cca54..4a0645d 100644 (file)
@@ -12,6 +12,7 @@
 / {
        model = "Sony Xperia X Performance";
        compatible = "sony,dora-row", "qcom,msm8996";
+       chassis-type = "handset";
 };
 
 /delete-node/ &tof_sensor;
index be6ea85..d3100dd 100644 (file)
@@ -12,4 +12,5 @@
 / {
        model = "Sony Xperia XZ";
        compatible = "sony,kagura-row", "qcom,msm8996";
+       chassis-type = "handset";
 };
index 1eee7d0..3e5bdab 100644 (file)
@@ -12,6 +12,7 @@
 / {
        model = "Sony Xperia XZs";
        compatible = "sony,keyaki-row", "qcom,msm8996";
+       chassis-type = "handset";
 };
 
 &pm8994_l19 {
index 507396c..ff7f39d 100644 (file)
 &pmi8994_wled {
        status = "okay";
        default-brightness = <512>;
+       qcom,num-strings = <3>;
 };
 
 &rpm_requests {
diff --git a/arch/arm64/boot/dts/qcom/msm8996-xiaomi-common.dtsi b/arch/arm64/boot/dts/qcom/msm8996-xiaomi-common.dtsi
new file mode 100644 (file)
index 0000000..01e573f
--- /dev/null
@@ -0,0 +1,673 @@
+// SPDX-License-Identifier: BSD-3-Clause
+/*
+ * Copyright (c) 2020, Yassine Oudjana <y.oudjana@protonmail.com>
+ */
+
+/dts-v1/;
+
+#include "msm8996.dtsi"
+#include "pm8994.dtsi"
+#include "pmi8994.dtsi"
+#include <dt-bindings/input/input.h>
+#include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/leds/common.h>
+#include <dt-bindings/pinctrl/qcom,pmic-gpio.h>
+
+/ {
+       clocks {
+               compatible = "simple-bus";
+
+               divclk1_cdc: divclk1 {
+                       compatible = "gpio-gate-clock";
+                       clocks = <&rpmcc RPM_SMD_DIV_CLK1>;
+                       #clock-cells = <0>;
+                       enable-gpios = <&pm8994_gpios 15 GPIO_ACTIVE_HIGH>;
+
+                       pinctrl-names = "default";
+                       pinctrl-0 = <&divclk1_default>;
+               };
+
+               divclk4: divclk4 {
+                       compatible = "fixed-clock";
+                       #clock-cells = <0>;
+                       clock-frequency = <32768>;
+                       clock-output-names = "divclk4";
+
+                       pinctrl-names = "default";
+                       pinctrl-0 = <&divclk4_pin_a>;
+               };
+       };
+
+       gpio_keys {
+               compatible = "gpio-keys";
+
+               vol_up {
+                       label = "Volume Up";
+                       gpios = <&pm8994_gpios 2 GPIO_ACTIVE_LOW>;
+                       linux,code = <KEY_VOLUMEUP>;
+                       wakeup-source;
+                       debounce-interval = <15>;
+               };
+
+               dome {
+                       label = "Home";
+                       gpios = <&tlmm 34 GPIO_ACTIVE_LOW>;
+                       linux,code = <KEY_HOME>;
+                       wakeup-source;
+                       debounce-interval = <15>;
+               };
+       };
+
+       reserved-memory {
+               memory@88800000 {
+                       reg = <0x0 0x88800000 0x0 0x1400000>;
+                       no-map;
+               };
+
+               /* This platform has all PIL regions offset by 0x1400000 */
+               /delete-node/ mpss@88800000;
+               mpss_region: mpss@89c00000 {
+                       reg = <0x0 0x89c00000 0x0 0x6200000>;
+                       no-map;
+               };
+
+               /delete-node/ adsp@8ea00000;
+               adsp_region: adsp@8ea00000 {
+                       reg = <0x0 0x8fe00000 0x0 0x1b00000>;
+                       no-map;
+               };
+
+               /delete-node/ slpi@90b00000;
+               slpi_region: slpi@91900000 {
+                       reg = <0x0 0x91900000 0x0 0xa00000>;
+                       no-map;
+               };
+
+               /delete-node/ gpu@8f200000;
+               zap_shader_region: gpu@92300000 {
+                       compatible = "shared-dma-pool";
+                       reg = <0x0 0x92300000 0x0 0x2000>;
+                       no-map;
+               };
+
+               /delete-node/ venus@91000000;
+               venus_region: venus@90400000 {
+                       reg = <0x0 0x92400000 0x0 0x500000>;
+                       no-map;
+               };
+
+               ramoops@92900000 {
+                       compatible = "ramoops";
+                       reg = <0x0 0x92900000 0x0 0x100000>;
+                       no-map;
+
+                       record-size = <0x8000>;
+                       console-size = <0x80000>;
+                       ftrace-size = <0x20000>;
+                       pmsg-size = <0x40000>;
+               };
+
+               /delete-node/ rmtfs@86700000;
+               rmtfs@f6c00000 {
+                       compatible = "qcom,rmtfs-mem";
+                       reg = <0 0xf6c00000 0 0x200000>;
+                       no-map;
+
+                       qcom,client-id = <1>;
+                       qcom,vmid = <15>;
+               };
+
+               /delete-node/ mba@91500000;
+               mba_region: mba@f6f00000 {
+                       reg = <0x0 0xf6f00000 0x0 0x100000>;
+                       no-map;
+               };
+       };
+
+       vph_pwr: vph-pwr-regulator {
+               compatible = "regulator-fixed";
+               regulator-name = "vph_pwr";
+               regulator-min-microvolt = <3800000>;
+               regulator-max-microvolt = <3800000>;
+               regulator-always-on;
+               regulator-boot-on;
+       };
+
+       vdd_3v2_tp: vdd-3v2-tp {
+               compatible = "regulator-fixed";
+               regulator-name = "vdd_3v2_tp";
+               regulator-min-microvolt = <3200000>;
+               regulator-max-microvolt = <3200000>;
+               startup-delay-us = <4000>;
+               vin-supply = <&vph_pwr>;
+
+               gpio = <&tlmm 73 0>;
+               enable-active-high;
+       };
+
+       vdd_3v3: rome-vreg {
+               compatible = "regulator-fixed";
+               regulator-name = "vdd_3v3";
+               regulator-min-microvolt = <3300000>;
+               regulator-max-microvolt = <3300000>;
+               startup-delay-us = <4000>;
+               vin-supply = <&vph_pwr_bbyp>;
+
+               gpio = <&pm8994_gpios 9 0>;
+               enable-active-high;
+               pinctrl-names = "default";
+               pinctrl-0 = <&rome_enable_default>;
+
+               /* Required by QCA6174a - vddpe-3v3 */
+               regulator-always-on;
+       };
+
+       /* WL_EN pin defined as a fixed regulator */
+       wlan_en: wlan-en-1-8v {
+               compatible = "regulator-fixed";
+               regulator-name = "wlan-en-regulator";
+               regulator-min-microvolt = <1800000>;
+               regulator-max-microvolt = <1800000>;
+
+               gpio = <&pm8994_gpios 8 0>;
+               /* WLAN card specific delay */
+               startup-delay-us = <70000>;
+               enable-active-high;
+               pinctrl-names = "default";
+               pinctrl-0 = <&wlan_en_default>;
+       };
+};
+
+&adsp_pil {
+       status = "okay";
+};
+
+&blsp2_i2c2 {
+       status = "okay";
+       label = "NFC_I2C";
+       clock-frequency = <400000>;
+
+       nfc: pn548@28 {
+               compatible = "nxp,nxp-nci-i2c";
+
+               reg = <0x28>;
+
+               interrupt-parent = <&tlmm>;
+               interrupts = <9 IRQ_TYPE_LEVEL_HIGH>;
+
+               enable-gpios = <&tlmm 12 GPIO_ACTIVE_HIGH>;
+               firmware-gpios = <&tlmm 21 GPIO_ACTIVE_HIGH>;
+
+               pinctrl-names = "default";
+               pinctrl-0 = <&nfc_default>;
+       };
+};
+
+&blsp2_i2c3 {
+       status = "okay";
+       label = "TYPEC_I2C";
+
+       typec: tusb320@47 {
+               compatible = "ti,tusb320";
+               reg = <0x47>;
+               interrupt-parent = <&tlmm>;
+               interrupts = <63 IRQ_TYPE_EDGE_RISING>;
+       };
+};
+
+&blsp2_i2c6 {
+       status = "okay";
+       label = "MSM_TS_I2C";
+};
+
+&blsp1_uart2 {
+       status = "okay";
+       label = "QCA_UART";
+
+       bluetooth: qca6174a {
+               compatible = "qcom,qca6174-bt";
+
+               enable-gpios = <&pm8994_gpios 19 GPIO_ACTIVE_HIGH>;
+               clocks = <&divclk4>;
+       };
+};
+
+&dsi0 {
+       status = "okay";
+
+       vdd-supply = <&vreg_l2a_1p25>;
+       vddio-supply = <&vreg_l14a_1p8>;
+
+       pinctrl-names = "default", "sleep";
+       pinctrl-0 = <&mdss_dsi_default &mdss_te_default>;
+       pinctrl-1 = <&mdss_dsi_sleep &mdss_te_sleep>;
+};
+
+&dsi0_out {
+       status = "okay";
+
+       data-lanes = <0 1 2 3>;
+};
+
+&dsi0_phy {
+       status = "okay";
+
+       vcca-supply = <&vreg_l28a_0p925>;
+};
+
+&gpu {
+       status = "okay";
+};
+
+&mdss {
+       status = "okay";
+};
+
+&mmcc {
+       vdd-gfx-supply = <&vdd_gfx>;
+};
+
+&pcie0 {
+       status = "okay";
+
+       /* Supplied by vdd_3v3, but choose wlan_en to drive enable pin high */
+       vddpe-3v3-supply = <&wlan_en>;
+       vdda-supply = <&vreg_l28a_0p925>;
+
+       perst-gpios = <&tlmm 35 GPIO_ACTIVE_LOW>;
+       wake-gpios = <&tlmm 37 GPIO_ACTIVE_HIGH>;
+};
+
+&pcie_phy {
+       status = "okay";
+
+       vdda-phy-supply = <&vreg_l28a_0p925>;
+       vdda-pll-supply = <&vreg_l12a_1p8>;
+};
+
+&pm8994_resin {
+       status = "okay";
+
+       linux,code = <KEY_VOLUMEDOWN>;
+};
+
+&usb3 {
+       status = "okay";
+       extcon = <&typec>;
+
+       qcom,select-utmi-as-pipe-clk;
+
+       dwc3@6a00000 {
+               extcon = <&typec>;
+
+               /* usb3-phy is not used on this device */
+               phys = <&hsusb_phy1>;
+               phy-names = "usb2-phy";
+
+               maximum-speed = "high-speed";
+               snps,is-utmi-l1-suspend;
+               snps,usb2-gadget-lpm-disable;
+               snps,hird-threshold = /bits/ 8 <0>;
+       };
+};
+
+&hsusb_phy1 {
+       status = "okay";
+       extcon = <&typec>;
+
+       vdda-pll-supply = <&vreg_l12a_1p8>;
+       vdda-phy-dpdm-supply = <&vreg_l24a_3p075>;
+};
+
+&ufshc {
+       status = "okay";
+
+       vcc-supply = <&vreg_l20a_2p95>;
+       vccq-supply = <&vreg_l25a_1p2>;
+       vccq2-supply = <&vreg_s4a_1p8>;
+
+       vcc-max-microamp = <600000>;
+       vccq-max-microamp = <450000>;
+       vccq2-max-microamp = <450000>;
+};
+
+&ufsphy {
+       status = "okay";
+
+       vdda-phy-supply = <&vreg_l28a_0p925>;
+       vdda-pll-supply = <&vreg_l12a_1p8>;
+
+       vdda-phy-max-microamp = <18380>;
+       vdda-pll-max-microamp = <9440>;
+
+       vddp-ref-clk-supply = <&vreg_l25a_1p2>;
+       vddp-ref-clk-max-microamp = <100>;
+       vddp-ref-clk-always-on;
+};
+
+&venus {
+       status = "okay";
+};
+
+&wcd9335 {
+       clock-names = "mclk", "slimbus";
+       clocks = <&divclk1_cdc>,
+                <&rpmcc RPM_SMD_BB_CLK1>;
+
+       vdd-buck-supply = <&vreg_s4a_1p8>;
+       vdd-buck-sido-supply = <&vreg_s4a_1p8>;
+       vdd-rx-supply = <&vreg_s4a_1p8>;
+       vdd-tx-supply = <&vreg_s4a_1p8>;
+       vdd-vbat-supply = <&vph_pwr>;
+       vdd-micbias-supply = <&vph_pwr_bbyp>;
+       vdd-io-supply = <&vreg_s4a_1p8>;
+};
+
+&rpm_requests {
+       pm8994-regulators {
+               compatible = "qcom,rpm-pm8994-regulators";
+
+               vdd_s1-supply = <&vph_pwr>;
+               vdd_s2-supply = <&vph_pwr>;
+               vdd_s3-supply = <&vph_pwr>;
+               vdd_s4-supply = <&vph_pwr>;
+               vdd_s5-supply = <&vph_pwr>;
+               vdd_s6-supply = <&vph_pwr>;
+               vdd_s7-supply = <&vph_pwr>;
+               vdd_s8-supply = <&vph_pwr>;
+               vdd_s9-supply = <&vph_pwr>;
+               vdd_s10-supply = <&vph_pwr>;
+               vdd_s11-supply = <&vph_pwr>;
+               vdd_s12-supply = <&vph_pwr>;
+               vdd_l1-supply = <&vreg_s1b_1p025>;
+               vdd_l2_l26_l28-supply = <&vreg_s3a_1p3>;
+               vdd_l3_l11-supply = <&vreg_s3a_1p3>;
+               vdd_l4_l27_l31-supply = <&vreg_s3a_1p3>;
+               vdd_l5_l7-supply = <&vreg_s5a_2p15>;
+               vdd_l6_l12_l32-supply = <&vreg_s5a_2p15>;
+               vdd_l8_l16_l30-supply = <&vph_pwr>;
+               vdd_l9_l10_l18_l22-supply = <&vph_pwr_bbyp>;
+               vdd_l13_l19_l23_l24-supply = <&vph_pwr_bbyp>;
+               vdd_l14_l15-supply = <&vreg_s5a_2p15>;
+               vdd_l17_l29-supply = <&vph_pwr_bbyp>;
+               vdd_l20_l21-supply = <&vph_pwr_bbyp>;
+               vdd_l25-supply = <&vreg_s3a_1p3>;
+               vdd_lvs1_2-supply = <&vreg_s4a_1p8>;
+
+               vreg_s3a_1p3: s3 {
+                       regulator-name = "vreg_s3a_1p3";
+                       regulator-min-microvolt = <1300000>;
+                       regulator-max-microvolt = <1300000>;
+
+                       /* Required by QCA6174a - vdd-core */
+                       regulator-always-on;
+               };
+               vreg_s4a_1p8: s4 {
+                       regulator-name = "vreg_s4a_1p8";
+                       regulator-min-microvolt = <1800000>;
+                       regulator-max-microvolt = <1800000>;
+                       regulator-allow-set-load;
+
+                       /* Required by QCA6174a - vddio */
+                       regulator-always-on;
+               };
+               vreg_s5a_2p15: s5 {
+                       regulator-name = "vreg_s5a_2p15";
+                       regulator-min-microvolt = <2150000>;
+                       regulator-max-microvolt = <2150000>;
+               };
+               vreg_s7a_0p8: s7 {
+                       regulator-name = "vreg_s7a_0p8";
+                       regulator-min-microvolt = <800000>;
+                       regulator-max-microvolt = <800000>;
+               };
+               vreg_l1a_1p0: l1 {
+                       regulator-name = "vreg_l1a_1p0";
+                       regulator-min-microvolt = <1000000>;
+                       regulator-max-microvolt = <1000000>;
+               };
+               vreg_l2a_1p25: l2 {
+                       regulator-name = "vreg_l2a_1p25";
+                       regulator-min-microvolt = <1250000>;
+                       regulator-max-microvolt = <1250000>;
+               };
+               vreg_l4a_1p225: l4 {
+                       regulator-name = "vreg_l4a_1p225";
+                       regulator-min-microvolt = <1225000>;
+                       regulator-max-microvolt = <1225000>;
+               };
+               vreg_l6a_1p8: l6 {
+                       regulator-name = "vreg_l6a_1p8";
+                       regulator-min-microvolt = <1800000>;
+                       regulator-max-microvolt = <1800000>;
+               };
+               vreg_l8a_1p8: l8 {
+                       regulator-name = "vreg_l8a_1p8";
+                       regulator-min-microvolt = <1800000>;
+                       regulator-max-microvolt = <1800000>;
+               };
+               vreg_l9a_1p8: l9 {
+                       regulator-name = "vreg_l9a_1p8";
+                       regulator-min-microvolt = <1800000>;
+                       regulator-max-microvolt = <1800000>;
+               };
+               vreg_l10a_1p8: l10 {
+                       regulator-name = "vreg_l10a_1p8";
+                       regulator-min-microvolt = <1800000>;
+                       regulator-max-microvolt = <1800000>;
+               };
+               vreg_l12a_1p8: l12 {
+                       regulator-name = "vreg_l12a_1p8";
+                       regulator-min-microvolt = <1800000>;
+                       regulator-max-microvolt = <1800000>;
+                       regulator-allow-set-load;
+               };
+               vreg_l13a_2p95: l13 {
+                       regulator-name = "vreg_l13a_2p95";
+                       regulator-min-microvolt = <1800000>;
+                       regulator-max-microvolt = <2950000>;
+               };
+               vreg_l14a_1p8: l14 {
+                       regulator-name = "vreg_l14a_1p8";
+                       regulator-min-microvolt = <1800000>;
+                       regulator-max-microvolt = <1800000>;
+               };
+               vreg_l15a_1p8: l15 {
+                       regulator-name = "vreg_l15a_1p8";
+                       regulator-min-microvolt = <1800000>;
+                       regulator-max-microvolt = <1800000>;
+               };
+               vreg_l16a_2p7: l16 {
+                       regulator-name = "vreg_l16a_2p7";
+                       regulator-min-microvolt = <2700000>;
+                       regulator-max-microvolt = <2700000>;
+               };
+               vreg_l19a_3p3: l19 {
+                       regulator-name = "vreg_l19a_3p3";
+                       regulator-min-microvolt = <3000000>;
+                       regulator-max-microvolt = <3000000>;
+               };
+               vreg_l20a_2p95: l20 {
+                       regulator-name = "vreg_l20a_2p95";
+                       regulator-min-microvolt = <2950000>;
+                       regulator-max-microvolt = <2950000>;
+                       regulator-allow-set-load;
+               };
+               vreg_l21a_2p95: l21 {
+                       regulator-name = "vreg_l21a_2p95";
+                       regulator-min-microvolt = <3300000>;
+                       regulator-max-microvolt = <3300000>;
+                       regulator-always-on;
+               };
+               vreg_l23a_2p8: l23 {
+                       regulator-name = "vreg_l23a_2p8";
+                       regulator-min-microvolt = <2800000>;
+                       regulator-max-microvolt = <2800000>;
+               };
+               vreg_l24a_3p075: l24 {
+                       regulator-name = "vreg_l24a_3p075";
+                       regulator-min-microvolt = <3075000>;
+                       regulator-max-microvolt = <3075000>;
+               };
+               vreg_l25a_1p2: l25 {
+                       regulator-name = "vreg_l25a_1p2";
+                       regulator-min-microvolt = <1200000>;
+                       regulator-max-microvolt = <1200000>;
+                       regulator-allow-set-load;
+               };
+               vreg_l27a_1p2: l27 {
+                       regulator-name = "vreg_l27a_1p2";
+                       regulator-min-microvolt = <1200000>;
+                       regulator-max-microvolt = <1200000>;
+               };
+               vreg_l28a_0p925: l28 {
+                       regulator-name = "vreg_l28a_0p925";
+                       regulator-min-microvolt = <925000>;
+                       regulator-max-microvolt = <925000>;
+                       regulator-allow-set-load;
+               };
+               vreg_l30a_1p8: l30 {
+                       regulator-name = "vreg_l30a_1p8";
+                       regulator-min-microvolt = <1800000>;
+                       regulator-max-microvolt = <1800000>;
+
+                       /* Required by QCA6174a - vddio-xtal */
+                       regulator-always-on;
+               };
+               vreg_l32a_1p8: l32 {
+                       regulator-name = "vreg_l32a_1p8";
+                       regulator-min-microvolt = <1800000>;
+                       regulator-max-microvolt = <1800000>;
+               };
+               vreg_lvs1a_1p8: lvs1 {
+                       regulator-min-microvolt = <1800000>;
+                       regulator-max-microvolt = <1800000>;
+               };
+               vreg_lvs2a_1p8: lvs2 {
+                       regulator-min-microvolt = <1800000>;
+                       regulator-max-microvolt = <1800000>;
+               };
+       };
+
+       pmi8994-regulators {
+               compatible = "qcom,rpm-pmi8994-regulators";
+
+               vdd_s1-supply = <&vph_pwr>;
+               vdd_s2-supply = <&vph_pwr>;
+               vdd_s3-supply = <&vph_pwr>;
+               vdd_bst_byp-supply = <&vph_pwr>;
+
+               vreg_s1b_1p025: s1 {
+                       regulator-name = "vreg_s1b_1p025";
+                       regulator-min-microvolt = <1025000>;
+                       regulator-max-microvolt = <1025000>;
+               };
+
+               vph_pwr_bbyp: boost-bypass {
+                       regulator-name = "vph_pwr_bbyp";
+                       regulator-min-microvolt = <3150000>;
+                       regulator-max-microvolt = <3600000>;
+               };
+       };
+};
+
+&pm8994_spmi_regulators {
+       qcom,saw-reg = <&saw3>;
+       s8 {
+               qcom,saw-slave;
+       };
+       s9 {
+               qcom,saw-slave;
+       };
+       s10 {
+               qcom,saw-slave;
+       };
+       vreg_apc_0p8: s11 {
+               qcom,saw-leader;
+               regulator-name = "vreg_apc_0p8";
+               regulator-min-microvolt = <470000>;
+               regulator-max-microvolt = <1140000>;
+               regulator-max-step-microvolt = <150000>;
+               regulator-always-on;
+       };
+};
+
+&pmi8994_spmi_regulators {
+       vdd_gfx: s2 {
+               regulator-name = "vdd_gfx";
+               regulator-min-microvolt = <400000>;
+               regulator-max-microvolt = <1015000>;
+               regulator-enable-ramp-delay = <500>;
+       };
+};
+
+&pm8994_gpios {
+       wlan_en_default: wlan-en-default {
+               pins = "gpio8";
+               function = PMIC_GPIO_FUNC_NORMAL;
+               output-low;
+               qcom,drive-strength = <PMIC_GPIO_STRENGTH_LOW>;
+               power-source = <PM8994_GPIO_S4>;
+               bias-disable;
+       };
+
+       rome_enable_default: rome-enable-default {
+               pins = "gpio9";
+               function = PMIC_GPIO_FUNC_NORMAL;
+               output-high;
+               qcom,drive-strength = <PMIC_GPIO_STRENGTH_LOW>;
+               power-source = <PM8994_GPIO_VPH>;
+       };
+
+       divclk1_default: divclk1_default {
+               pins = "gpio15";
+               function = PMIC_GPIO_FUNC_FUNC1;
+               bias-disable;
+               power-source = <PM8994_GPIO_S4>;
+               qcom,drive-strength = <PMIC_GPIO_STRENGTH_LOW>;
+       };
+
+       divclk4_pin_a: divclk4 {
+               pins = "gpio18";
+               function = PMIC_GPIO_FUNC_FUNC2;
+               bias-disable;
+               power-source = <PM8994_GPIO_S4>;
+       };
+};
+
+&tlmm {
+       mdss_dsi_default: mdss_dsi_default {
+               pins = "gpio8";
+               function = "gpio";
+               drive-strength = <8>;
+               bias-disable;
+       };
+
+       mdss_dsi_sleep: mdss_dsi_sleep {
+               pins = "gpio8";
+               function = "gpio";
+               drive-strength = <2>;
+               bias-pull-down;
+       };
+
+       mdss_te_default: mdss_te_default {
+               pins = "gpio10";
+               function = "mdp_vsync";
+               drive-strength = <2>;
+               bias-pull-down;
+       };
+
+       mdss_te_sleep: mdss_te_sleep {
+               pins = "gpio10";
+               function = "mdp_vsync";
+               drive-strength = <2>;
+               bias-pull-down;
+       };
+
+       nfc_default: nfc_default {
+               pins = "gpio12", "gpio21";
+               function = "gpio";
+               drive-strength = <16>;
+               bias-pull-up;
+       };
+};
diff --git a/arch/arm64/boot/dts/qcom/msm8996-xiaomi-gemini.dts b/arch/arm64/boot/dts/qcom/msm8996-xiaomi-gemini.dts
new file mode 100644 (file)
index 0000000..34f82e0
--- /dev/null
@@ -0,0 +1,465 @@
+// SPDX-License-Identifier: BSD-3-Clause
+/*
+ * Copyright (c) 2021, Raffaele Tranquillini <raffaele.tranquillini@gmail.com>
+ */
+
+/dts-v1/;
+
+#include "msm8996-xiaomi-common.dtsi"
+#include <dt-bindings/sound/qcom,q6afe.h>
+#include <dt-bindings/sound/qcom,q6asm.h>
+#include <dt-bindings/input/ti-drv260x.h>
+
+/ {
+       model = "Xiaomi Mi 5";
+       compatible = "xiaomi,gemini", "qcom,msm8996";
+       chassis-type = "handset";
+       qcom,msm-id = <246 0x30001>;
+       qcom,pmic-id = <0x20009 0x2000a 0x00 0x00>;
+       qcom,board-id = <31 0>;
+
+       clocks {
+               divclk2_haptics: divclk2 {
+                       compatible = "fixed-clock";
+                       #clock-cells = <0>;
+                       clock-frequency = <32768>;
+                       clock-output-names = "divclk2";
+
+                       pinctrl-names = "default";
+                       pinctrl-0 = <&divclk2_pin_a>;
+               };
+       };
+};
+
+&adsp_pil {
+       firmware-name = "qcom/msm8996/gemini/adsp.mbn";
+};
+
+&blsp2_i2c3 {
+       haptics: drv2604@5a {
+               compatible = "ti,drv2604";
+               reg = <0x5a>;
+               enable-gpio = <&tlmm 93 0x00>;
+               mode = <DRV260X_LRA_MODE>;
+               library-sel = <DRV260X_LIB_LRA>;
+               pinctrl-names = "default","sleep";
+               pinctrl-0 = <&vibrator_default>;
+               pinctrl-1 = <&vibrator_sleep>;
+       };
+
+       lp5562@30 {
+               compatible = "ti,lp5562";
+               reg = <0x30>;
+               #address-cells = <1>;
+               #size-cells = <0>;
+               enable-gpio = <&pm8994_gpios 7 1>;
+               clock-mode = /bits/8 <2>;
+               label = "button-backlight";
+
+               led@0 {
+                       reg = <0>;
+                       chan-name = "button-backlight";
+                       led-cur = /bits/ 8 <0x32>;
+                       max-cur = /bits/ 8 <0xC8>;
+               };
+
+               led@1 {
+                       reg = <0>;
+                       chan-name = "button-backlight1";
+                       led-cur = /bits/ 8 <0x32>;
+                       max-cur = /bits/ 8 <0xC8>;
+               };
+       };
+};
+
+&blsp2_i2c6 {
+       synaptics@20 {
+               compatible = "syna,rmi4-i2c";
+               reg = <0x20>;
+               #address-cells = <1>;
+               #size-cells = <0>;
+               interrupt-parent = <&tlmm>;
+               interrupts = <125 IRQ_TYPE_LEVEL_LOW>;
+               vdda-supply = <&vreg_l6a_1p8>;
+               vdd-supply = <&vdd_3v2_tp>;
+               reset-gpios = <&tlmm 89 GPIO_ACTIVE_LOW>;
+
+               pinctrl-names = "default", "sleep";
+               pinctrl-0 = <&touchscreen_default>;
+               pinctrl-1 = <&touchscreen_sleep>;
+       };
+
+};
+
+&dsi0 {
+       status = "okay";
+
+       vdd-supply = <&vreg_l2a_1p25>;
+       vdda-supply = <&vreg_l19a_3p3>;
+       vddio-supply = <&vreg_l14a_1p8>;
+
+       pinctrl-names = "default", "sleep";
+       pinctrl-0 = <&mdss_dsi_default &mdss_te_default>;
+       pinctrl-1 = <&mdss_dsi_sleep &mdss_te_sleep>;
+
+       panel: panel@0 {
+               compatible = "jdi,fhd-r63452";
+               reg = <0>;
+               reset-gpios = <&tlmm 8 GPIO_ACTIVE_LOW>;
+               backlight = <&pmi8994_wled>;
+
+               port {
+                       panel_in: endpoint {
+                               remote-endpoint = <&dsi0_out>;
+                       };
+               };
+       };
+};
+
+&dsi0_out {
+       remote-endpoint = <&panel_in>;
+};
+
+&gpu {
+       zap-shader {
+               firmware-name = "qcom/msm8996/gemini/a530_zap.mbn";
+       };
+};
+
+&pmi8994_wled {
+       status = "okay";
+};
+
+&q6asmdai {
+       dai@0 {
+               reg = <0>;
+       };
+
+       dai@1 {
+               reg = <1>;
+       };
+
+       dai@2 {
+               reg = <2>;
+       };
+};
+
+&sound {
+       compatible = "qcom,apq8096-sndcard";
+       model = "gemini";
+       audio-routing = "RX_BIAS", "MCLK",
+               "MM_DL1",  "MultiMedia1 Playback",
+               "MM_DL2",  "MultiMedia2 Playback",
+               "MultiMedia3 Capture", "MM_UL3";
+
+       mm1-dai-link {
+               link-name = "MultiMedia1";
+               cpu {
+                       sound-dai = <&q6asmdai MSM_FRONTEND_DAI_MULTIMEDIA1>;
+               };
+       };
+
+       mm2-dai-link {
+               link-name = "MultiMedia2";
+               cpu {
+                       sound-dai = <&q6asmdai MSM_FRONTEND_DAI_MULTIMEDIA2>;
+               };
+       };
+
+       mm3-dai-link {
+               link-name = "MultiMedia3";
+               cpu {
+                       sound-dai = <&q6asmdai MSM_FRONTEND_DAI_MULTIMEDIA3>;
+               };
+       };
+
+       slim-dai-link {
+               link-name = "SLIM Playback";
+               cpu {
+                       sound-dai = <&q6afedai SLIMBUS_6_RX>;
+               };
+
+               platform {
+                       sound-dai = <&q6routing>;
+               };
+
+               codec {
+                       sound-dai = <&wcd9335 6>;
+               };
+       };
+
+       slimcap-dai-link {
+               link-name = "SLIM Capture";
+               cpu {
+                       sound-dai = <&q6afedai SLIMBUS_0_TX>;
+               };
+
+               platform {
+                       sound-dai = <&q6routing>;
+               };
+
+               codec {
+                       sound-dai = <&wcd9335 1>;
+               };
+       };
+};
+
+&venus {
+       firmware-name = "qcom/msm8996/gemini/venus.mbn";
+};
+
+&rpm_requests {
+       pm8994-regulators {
+               vreg_l17a_2p8: l17 {
+                       regulator-name = "vreg_l17a_2p8";
+                       regulator-min-microvolt = <2500000>;
+                       regulator-max-microvolt = <2500000>;
+               };
+               vreg_l29a_2p7: l29 {
+                       regulator-name = "vreg_l29a_2p7";
+                       regulator-min-microvolt = <2800000>;
+                       regulator-max-microvolt = <2800000>;
+               };
+       };
+};
+
+&pm8994_gpios {
+       gpio-line-names =
+               "NC",                   /* GPIO_1  */
+               "VOL_UP_N",             /* GPIO_2  */
+               "SPKR_ID",              /* GPIO_3  */
+               "PWM_HAPTICS",          /* GPIO_4  */
+               "INFARED_DRV",          /* GPIO_5  */
+               "NC",                   /* GPIO_6  */
+               "KEYPAD_LED_EN",        /* GPIO_7  */
+               "WL_EN",                /* GPIO_8  */
+               "3P3_ENABLE",           /* GPIO_9  */
+               "FP_ID",                /* GPIO_10 */
+               "NC",                   /* GPIO_11 */
+               "NC",                   /* GPIO_12 */
+               "NC",                   /* GPIO_13 */
+               "NC",                   /* GPIO_14 */
+               "DIVCLK1_CDC",          /* GPIO_15 */
+               "DIVCLK2_HAPTICS",      /* GPIO_16 */
+               "NC",                   /* GPIO_17 */
+               "32KHz_CLK_IN",         /* GPIO_18 */
+               "BT_EN",                /* GPIO_19 */
+               "PMIC_SLB",             /* GPIO_20 */
+               "UIM_BATT_ALARM",       /* GPIO_21 */
+               "NC";                   /* GPIO_22 */
+
+       divclk2_pin_a: divclk2 {
+               pins = "gpio16";
+               function = PMIC_GPIO_FUNC_FUNC2;
+               bias-disable;
+               power-source = <PM8994_GPIO_S4>;
+       };
+};
+
+&pm8994_mpps {
+       gpio-line-names =
+               "NC",                   /* MPP_1 */
+               "CCI_TIMER1",           /* MPP_2 */
+               "PMIC_SLB",             /* MPP_3 */
+               "EXT_FET_WLED_PWR_EN_N",/* MPP_4 */
+               "NC",                   /* MPP_5 */
+               "NC",                   /* MPP_6 */
+               "NC",                   /* MPP_7 */
+               "NC";                   /* MPP_8 */
+};
+
+&pmi8994_gpios {
+       gpio-line-names =
+               "NC",                   /* GPIO_1  */
+               "SPKR_PA_RST",          /* GPIO_2  */
+               "NC",                   /* GPIO_3  */
+               "NC",                   /* GPIO_4  */
+               "NC",                   /* GPIO_5  */
+               "NC",                   /* GPIO_6  */
+               "NC",                   /* GPIO_7  */
+               "NC",                   /* GPIO_8  */
+               "NC",                   /* GPIO_9  */
+               "NC";                   /* GPIO_10 */
+};
+
+&tlmm {
+       gpio-line-names =
+               "ESE_SPI_MOSI",         /* GPIO_0   */
+               "ESE_SPI_MISO",         /* GPIO_1   */
+               "ERR_INT_N",            /* GPIO_2   */
+               "ESE_SPI_CLK",          /* GPIO_3   */
+               "MSM_UART_TX",          /* GPIO_4   */
+               "MSM_UART_RX",          /* GPIO_5   */
+               "NFC_I2C_SDA",          /* GPIO_6   */
+               "NFC_I2C_SCL",          /* GPIO_7   */
+               "LCD0_RESET_N",         /* GPIO_8   */
+               "NFC_IRQ",              /* GPIO_9   */
+               "LCD_TE",               /* GPIO_10  */
+               "LCD_ID_DET1",          /* GPIO_11  */
+               "NFC_DISABLE",          /* GPIO_12  */
+               "CAM_MCLK0",            /* GPIO_13  */
+               "NC",                   /* GPIO_14  */
+               "CAM_MCLK2",            /* GPIO_15  */
+               "ESE_PWR_REQ",          /* GPIO_16  */
+               "CCI_I2C_SDA0",         /* GPIO_17  */
+               "CCI_I2C_SCL0",         /* GPIO_18  */
+               "CCI_I2C_SDA1",         /* GPIO_19  */
+               "CCI_I2C_SCL1",         /* GPIO_20  */
+               "NFC_DWL_REQ",          /* GPIO_21  */
+               "CCI_TIMER1",           /* GPIO_22  */
+               "WEBCAM1_RESET_N",      /* GPIO_23  */
+               "ESE_IRQ",              /* GPIO_24  */
+               "NC",                   /* GPIO_25  */
+               "WEBCAM1_STANDBY",      /* GPIO_26  */
+               "NC",                   /* GPIO_27  */
+               "NC",                   /* GPIO_28  */
+               "NC",                   /* GPIO_29  */
+               "CAM1_RST_N",           /* GPIO_30  */
+               "NC",                   /* GPIO_31  */
+               "NC",                   /* GPIO_32  */
+               "NC",                   /* GPIO_33  */
+               "FP_DOME_SW",           /* GPIO_34  */
+               "PCI_E0_RST_N",         /* GPIO_35  */
+               "PCI_E0_CLKREQ_N",      /* GPIO_36  */
+               "PCI_E0_WAKE",          /* GPIO_37  */
+               "FM_INT_N",             /* GPIO_38  */
+               "FM_RESET_N",           /* GPIO_39  */
+               "NC",                   /* GPIO_40  */
+               "QCA_UART_TXD",         /* GPIO_41  */
+               "QCA_UART_RXD",         /* GPIO_42  */
+               "QCA_UART_CTS",         /* GPIO_43  */
+               "QCA_UART_RTS",         /* GPIO_44  */
+               "MAWC_UART_TX",         /* GPIO_45  */
+               "MAWC_UART_RX",         /* GPIO_46  */
+               "NC",                   /* GPIO_47  */
+               "NC",                   /* GPIO_48  */
+               "AUDIO_SWITCH_EN",      /* GPIO_49  */
+               "FP_SPI_RST",           /* GPIO_50  */
+               "TYPEC_I2C_SDA",        /* GPIO_51  */
+               "TYPEC_I2C_SCL",        /* GPIO_52  */
+               "CODEC_INT2_N",         /* GPIO_53  */
+               "CODEC_INT1_N",         /* GPIO_54  */
+               "APPS_I2C7_SDA",        /* GPIO_55  */
+               "APPS_I2C7_SCL",        /* GPIO_56  */
+               "FORCE_USB_BOOT",       /* GPIO_57  */
+               "SPKR_I2S_BCK",         /* GPIO_58  */
+               "SPKR_I2S_WS",          /* GPIO_59  */
+               "SPKR_I2S_DOUT",        /* GPIO_60  */
+               "SPKR_I2S_DIN",         /* GPIO_61  */
+               "ESE_RSTN",             /* GPIO_62  */
+               "TYPEC_INT",            /* GPIO_63  */
+               "CODEC_RESET_N",        /* GPIO_64  */
+               "PCM_CLK",              /* GPIO_65  */
+               "PCM_SYNC",             /* GPIO_66  */
+               "PCM_DIN",              /* GPIO_67  */
+               "PCM_DOUT",             /* GPIO_68  */
+               "HIFI_CLK",             /* GPIO_69  */
+               "SLIMBUS_CLK",          /* GPIO_70  */
+               "SLIMBUS_DATA0",        /* GPIO_71  */
+               "SLIMBUS_DATA1",        /* GPIO_72  */
+               "LDO_5V_IN_EN",         /* GPIO_73  */
+               "NC",                   /* GPIO_74  */
+               "FM_I2S_CLK",           /* GPIO_75  */
+               "FM_I2S_SYNC",          /* GPIO_76  */
+               "FM_I2S_DATA",          /* GPIO_77  */
+               "FM_STATUS",            /* GPIO_78  */
+               "NC",                   /* GPIO_79  */
+               "SENSOR_RESET_N",       /* GPIO_80  */
+               "FP_SPI_MOSI",          /* GPIO_81  */
+               "FP_SPI_MISO",          /* GPIO_82  */
+               "FP_SPI_CS_N",          /* GPIO_83  */
+               "FP_SPI_CLK",           /* GPIO_84  */
+               "NC",                   /* GPIO_85  */
+               "CAM_VDD_1P05_EN",      /* GPIO_86  */
+               "MSM_TS_I2C_SDA",       /* GPIO_87  */
+               "MSM_TS_I2C_SCL",       /* GPIO_88  */
+               "TS_RESOUT_N",          /* GPIO_89  */
+               "ESE_SPI_CS_N",         /* GPIO_90  */
+               "NC",                   /* GPIO_91  */
+               "NC",                   /* GPIO_92  */
+               "HAPTICS_EN",           /* GPIO_93  */
+               "NC",                   /* GPIO_94  */
+               "NC",                   /* GPIO_95  */
+               "NC",                   /* GPIO_96  */
+               "NC",                   /* GPIO_97  */
+               "GRFC_1",               /* GPIO_98  */
+               "NC",                   /* GPIO_99  */
+               "GRFC_3",               /* GPIO_100 */
+               "GRFC_4",               /* GPIO_101 */
+               "NC",                   /* GPIO_102 */
+               "NC",                   /* GPIO_103 */
+               "GRFC_7",               /* GPIO_104 */
+               "UIM2_DATA",            /* GPIO_105 */
+               "UIM2_CLK",             /* GPIO_106 */
+               "UIM2_RESET",           /* GPIO_107 */
+               "UIM2_PRESENT",         /* GPIO_108 */
+               "UIM1_DATA",            /* GPIO_109 */
+               "UIM1_CLK",             /* GPIO_110 */
+               "UIM1_RESET",           /* GPIO_111 */
+               "UIM1_PRESENT",         /* GPIO_112 */
+               "UIM_BATT_ALARM",       /* GPIO_113 */
+               "GRFC_8",               /* GPIO_114 */
+               "GRFC_9",               /* GPIO_115 */
+               "TX_GTR_THRES",         /* GPIO_116 */
+               "ACCEL_INT",            /* GPIO_117 */
+               "GYRO_INT",             /* GPIO_118 */
+               "COMPASS_INT",          /* GPIO_119 */
+               "PROXIMITY_INT_N",      /* GPIO_120 */
+               "FP_IRQ",               /* GPIO_121 */
+               "NC",                   /* GPIO_122 */
+               "HALL_INTR2",           /* GPIO_123 */
+               "HALL_INTR1",           /* GPIO_124 */
+               "TS_INT_N",             /* GPIO_125 */
+               "NC",                   /* GPIO_126 */
+               "GRFC_11",              /* GPIO_127 */
+               "NC",                   /* GPIO_128 */
+               "EXT_GPS_LNA_EN",       /* GPIO_129 */
+               "NC",                   /* GPIO_130 */
+               "NC",                   /* GPIO_131 */
+               "NC",                   /* GPIO_132 */
+               "GRFC_14",              /* GPIO_133 */
+               "GSM_TX2_PHASE_D",      /* GPIO_134 */
+               "NC",                   /* GPIO_135 */
+               "NC",                   /* GPIO_136 */
+               "RFFE3_DATA",           /* GPIO_137 */
+               "RFFE3_CLK",            /* GPIO_138 */
+               "NC",                   /* GPIO_139 */
+               "NC",                   /* GPIO_140 */
+               "RFFE5_DATA",           /* GPIO_141 */
+               "RFFE5_CLK",            /* GPIO_142 */
+               "NC",                   /* GPIO_143 */
+               "COEX_UART_TX",         /* GPIO_144 */
+               "COEX_UART_RX",         /* GPIO_145 */
+               "RFFE2_DATA",           /* GPIO_146 */
+               "RFFE2_CLK",            /* GPIO_147 */
+               "RFFE1_DATA",           /* GPIO_148 */
+               "RFFE1_CLK";            /* GPIO_149 */
+
+       touchscreen_default: touchscreen_default {
+               pins = "gpio89", "gpio125";
+               function = "gpio";
+               drive-strength = <10>;
+               bias-pull-up;
+       };
+
+       touchscreen_sleep: touchscreen_sleep {
+               pins = "gpio89", "gpio125";
+               function = "gpio";
+               drive-strength = <2>;
+               bias-disable;
+       };
+
+       vibrator_default: vibrator_default {
+               pins = "gpio93";
+               function = "gpio";
+               drive-strength = <8>;
+               bias-pull-up;
+       };
+
+       vibrator_sleep: vibrator_sleep {
+               pins = "gpio93";
+               function = "gpio";
+               drive-strength = <2>;
+               bias-disable;
+       };
+};
diff --git a/arch/arm64/boot/dts/qcom/msm8996-xiaomi-scorpio.dts b/arch/arm64/boot/dts/qcom/msm8996-xiaomi-scorpio.dts
new file mode 100644 (file)
index 0000000..e5b8402
--- /dev/null
@@ -0,0 +1,432 @@
+// SPDX-License-Identifier: BSD-3-Clause
+/*
+ * Copyright (c) 2020, Yassine Oudjana <y.oudjana@protonmail.com>
+ */
+
+/dts-v1/;
+
+#include "msm8996-xiaomi-common.dtsi"
+#include "pmi8996.dtsi"
+#include <dt-bindings/sound/qcom,q6afe.h>
+#include <dt-bindings/sound/qcom,q6asm.h>
+
+/ {
+       model = "Xiaomi Mi Note 2";
+       compatible = "xiaomi,scorpio", "qcom,msm8996";
+       chassis-type = "handset";
+       qcom,msm-id = <305 0x10000>;
+       qcom,board-id = <34 0>;
+
+       chosen {
+               #address-cells = <2>;
+               #size-cells = <2>;
+               ranges;
+
+               framebuffer0: framebuffer@83401000 {
+                       compatible = "simple-framebuffer";
+                       reg = <0x00 0x83401000 0x00 (1080 * 1920 * 3)>;
+                       width = <1080>;
+                       height = <1920>;
+                       stride = <(1080 * 3)>;
+                       format = "r8g8b8";
+
+                       /* DSI0 and MDP SMMU clocks */
+                       clocks = <&mmcc MDSS_MDP_CLK>,
+                                <&mmcc MMSS_MMAGIC_AHB_CLK>,
+                                <&mmcc MDSS_AHB_CLK>,
+                                <&mmcc MDSS_AXI_CLK>,
+                                <&mmcc MMSS_MISC_AHB_CLK>,
+                                <&mmcc MDSS_BYTE0_CLK>,
+                                <&mmcc MDSS_PCLK0_CLK>,
+                                <&mmcc MDSS_ESC0_CLK>,
+                                <&mmcc SMMU_MDP_AHB_CLK>,
+                                <&mmcc SMMU_MDP_AXI_CLK>;
+
+                       /* MDSS power domain */
+                       power-domains = <&mmcc MDSS_GDSC>;
+               };
+       };
+
+       reserved-memory {
+               cont_splash_mem: memory@83401000 {
+                       reg = <0x0 0x83401000 0x0 (1080 * 1920 * 3)>;
+                       no-map;
+               };
+       };
+};
+
+&adsp_pil {
+       firmware-name = "qcom/msm8996/scorpio/adsp.mbn";
+};
+
+&blsp2_i2c6 {
+       touchscreen: atmel-mxt-ts@4a {
+               compatible = "atmel,maxtouch";
+               reg = <0x4a>;
+               interrupt-parent = <&tlmm>;
+               interrupts = <125 IRQ_TYPE_LEVEL_LOW>;
+               vdda-supply = <&vreg_l6a_1p8>;
+               vdd-supply = <&vdd_3v2_tp>;
+               reset-gpios = <&tlmm 75 GPIO_ACTIVE_LOW>;
+
+               pinctrl-names = "default", "sleep";
+               pinctrl-0 = <&touchscreen_default>;
+               pinctrl-1 = <&touchscreen_sleep>;
+       };
+};
+
+&gpu {
+       zap-shader {
+               firmware-name = "qcom/msm8996/scorpio/a530_zap.mbn";
+       };
+};
+
+&mdp_smmu {
+       /*
+        * Probing this SMMU causes a crash due to writing to some secure
+        * registers. Disable it for now.
+        */
+       status = "disabled";
+};
+
+&mdss {
+       /*
+        * MDSS depends on the MDP SMMU, and probing it alters the bootloader
+        * configured framebuffer used by simplefb. Disable it for now.
+        */
+       status = "disabled";
+};
+
+&q6asmdai {
+       dai@0 {
+               reg = <0>;
+       };
+
+       dai@1 {
+               reg = <1>;
+       };
+
+       dai@2 {
+               reg = <2>;
+       };
+};
+
+&sound {
+       compatible = "qcom,apq8096-sndcard";
+       model = "scorpio";
+       audio-routing = "RX_BIAS", "MCLK";
+
+       mm1-dai-link {
+               link-name = "MultiMedia1";
+               cpu {
+                       sound-dai = <&q6asmdai MSM_FRONTEND_DAI_MULTIMEDIA1>;
+               };
+       };
+
+       mm2-dai-link {
+               link-name = "MultiMedia2";
+               cpu {
+                       sound-dai = <&q6asmdai MSM_FRONTEND_DAI_MULTIMEDIA2>;
+               };
+       };
+
+       mm3-dai-link {
+               link-name = "MultiMedia3";
+               cpu {
+                       sound-dai = <&q6asmdai MSM_FRONTEND_DAI_MULTIMEDIA3>;
+               };
+       };
+
+       slim-dai-link {
+               link-name = "SLIM Playback";
+               cpu {
+                       sound-dai = <&q6afedai SLIMBUS_6_RX>;
+               };
+
+               platform {
+                       sound-dai = <&q6routing>;
+               };
+
+               codec {
+                       sound-dai = <&wcd9335 6>;
+               };
+       };
+
+       slimcap-dai-link {
+               link-name = "SLIM Capture";
+               cpu {
+                       sound-dai = <&q6afedai SLIMBUS_0_TX>;
+               };
+
+               platform {
+                       sound-dai = <&q6routing>;
+               };
+
+               codec {
+                       sound-dai = <&wcd9335 1>;
+               };
+       };
+};
+
+&venus {
+       firmware-name = "qcom/msm8996/scorpio/venus.mbn";
+};
+
+&rpm_requests {
+       pm8994-regulators {
+               vreg_l3a_0p875: l3 {
+                       regulator-name = "vreg_l3a_0p875";
+                       regulator-min-microvolt = <850000>;
+                       regulator-max-microvolt = <1300000>;
+               };
+               vreg_l11a_1p1: l11 {
+                       regulator-name = "vreg_l11a_1p1";
+                       regulator-min-microvolt = <1100000>;
+                       regulator-max-microvolt = <1100000>;
+               };
+               vreg_l17a_2p8: l17 {
+                       regulator-name = "vreg_l17a_2p8";
+                       regulator-min-microvolt = <2800000>;
+                       regulator-max-microvolt = <2800000>;
+               };
+               vreg_l18a_2p8: l18 {
+                       regulator-name = "vreg_l18a_2p8";
+                       regulator-min-microvolt = <2800000>;
+                       regulator-max-microvolt = <2800000>;
+               };
+               vreg_l22a_3p0: l22 {
+                       regulator-name = "vreg_l22a_3p0";
+                       regulator-min-microvolt = <2950000>;
+                       regulator-max-microvolt = <3500000>;
+               };
+               vreg_l29a_2p7: l29 {
+                       regulator-name = "vreg_l29a_2p7";
+                       regulator-min-microvolt = <2700000>;
+                       regulator-max-microvolt = <2700000>;
+               };
+       };
+};
+
+&vdd_gfx {
+       regulator-max-microvolt = <1065000>;
+};
+
+&pm8994_gpios {
+       gpio-line-names =
+               "NC",                   /* GPIO_1  */
+               "VOL_UP_N",             /* GPIO_2  */
+               "SPKR_ID",              /* GPIO_3  */
+               "PWM_HAPTICS",          /* GPIO_4  */
+               "INFARED_DRV",          /* GPIO_5  */
+               "NC",                   /* GPIO_6  */
+               "KEYPAD_LED_EN_A",      /* GPIO_7  */
+               "WL_EN",                /* GPIO_8  */
+               "3P3_ENABLE",           /* GPIO_9  */
+               "KEYPAD_LED_EN_B",      /* GPIO_10 */
+               "FP_ID",                /* GPIO_11 */
+               "NC",                   /* GPIO_12 */
+               "NC",                   /* GPIO_13 */
+               "NC",                   /* GPIO_14 */
+               "DIVCLK1_CDC",          /* GPIO_15 */
+               "DIVCLK2_HAPTICS",      /* GPIO_16 */
+               "NC",                   /* GPIO_17 */
+               "32KHz_CLK_IN",         /* GPIO_18 */
+               "BT_EN",                /* GPIO_19 */
+               "PMIC_SLB",             /* GPIO_20 */
+               "UIM_BATT_ALARM",       /* GPIO_21 */
+               "NC";                   /* GPIO_22 */
+};
+
+&pm8994_mpps {
+       gpio-line-names =
+               "VREF_SDC_UIM_APC",     /* MPP_1 */
+               "NC",                   /* MPP_2 */
+               "VREF_DACX",            /* MPP_3 */
+               "NC",                   /* MPP_4 */
+               "NC",                   /* MPP_5 */
+               "STAT_SMB1351",         /* MPP_6 */
+               "NC",                   /* MPP_7 */
+               "NC";                   /* MPP_8 */
+};
+
+&pmi8994_gpios {
+       gpio-line-names =
+               "NC",                   /* GPIO_1  */
+               "SPKR_PA_RST",          /* GPIO_2  */
+               "NC",                   /* GPIO_3  */
+               "NC",                   /* GPIO_4  */
+               "NC",                   /* GPIO_5  */
+               "NC",                   /* GPIO_6  */
+               "NC",                   /* GPIO_7  */
+               "NC",                   /* GPIO_8  */
+               "NC",                   /* GPIO_9  */
+               "NC";                   /* GPIO_10 */
+};
+
+&tlmm {
+       gpio-line-names =
+               "ESE_SPI_MOSI",         /* GPIO_0   */
+               "ESE_SPI_MISO",         /* GPIO_1   */
+               "NC",                   /* GPIO_2   */
+               "ESE_SPI_CLK",          /* GPIO_3   */
+               "MSM_UART_TX",          /* GPIO_4   */
+               "MSM_UART_RX",          /* GPIO_5   */
+               "NFC_I2C_SDA",          /* GPIO_6   */
+               "NFC_I2C_SCL",          /* GPIO_7   */
+               "OLED_RESET_N",         /* GPIO_8   */
+               "NFC_IRQ",              /* GPIO_9   */
+               "OLED_TE",              /* GPIO_10  */
+               "OLED_ID_DET1",         /* GPIO_11  */
+               "NFC_DISABLE",          /* GPIO_12  */
+               "CAM_MCLK0",            /* GPIO_13  */
+               "OLED_ID_DET2",         /* GPIO_14  */
+               "CAM_MCLK2",            /* GPIO_15  */
+               "ESE_PWR_REQ",          /* GPIO_16  */
+               "CCI_I2C_SDA0",         /* GPIO_17  */
+               "CCI_I2C_SCL0",         /* GPIO_18  */
+               "CCI_I2C_SDA1",         /* GPIO_19  */
+               "CCI_I2C_SCL1",         /* GPIO_20  */
+               "NFC_DWL_REQ",          /* GPIO_21  */
+               "CCI_TIMER1",           /* GPIO_22  */
+               "WEBCAM1_RESET_N",      /* GPIO_23  */
+               "ESE_IRQ",              /* GPIO_24  */
+               "NC",                   /* GPIO_25  */
+               "WEBCAM1_STANDBY",      /* GPIO_26  */
+               "NC",                   /* GPIO_27  */
+               "NC",                   /* GPIO_28  */
+               "OLED_ERR_FG",          /* GPIO_29  */
+               "CAM1_RST_N",           /* GPIO_30  */
+               "HIFI_SW_MUTE",         /* GPIO_31  */
+               "NC",                   /* GPIO_32  */
+               "NC",                   /* GPIO_33  */
+               "FP_DOME_SW",           /* GPIO_34  */
+               "PCI_E0_RST_N",         /* GPIO_35  */
+               "PCI_E0_CLKREQ_N",      /* GPIO_36  */
+               "PCI_E0_WAKE",          /* GPIO_37  */
+               "OV_PWDN",              /* GPIO_38  */
+               "NC",                   /* GPIO_39  */
+               "VDDR_1P6_EN",          /* GPIO_40  */
+               "QCA_UART_TXD",         /* GPIO_41  */
+               "QCA_UART_RXD",         /* GPIO_42  */
+               "QCA_UART_CTS",         /* GPIO_43  */
+               "QCA_UART_RTS",         /* GPIO_44  */
+               "MAWC_UART_TX",         /* GPIO_45  */
+               "MAWC_UART_RX",         /* GPIO_46  */
+               "NC",                   /* GPIO_47  */
+               "NC",                   /* GPIO_48  */
+               "AUDIO_SWITCH_EN",      /* GPIO_49  */
+               "FP_SPI_RST",           /* GPIO_50  */
+               "TYPEC_I2C_SDA",        /* GPIO_51  */
+               "TYPEC_I2C_SCL",        /* GPIO_52  */
+               "CODEC_INT2_N",         /* GPIO_53  */
+               "CODEC_INT1_N",         /* GPIO_54  */
+               "APPS_I2C7_SDA",        /* GPIO_55  */
+               "APPS_I2C7_SCL",        /* GPIO_56  */
+               "FORCE_USB_BOOT",       /* GPIO_57  */
+               "SPKR_I2S_BCK",         /* GPIO_58  */
+               "SPKR_I2S_WS",          /* GPIO_59  */
+               "SPKR_I2S_DOUT",        /* GPIO_60  */
+               "SPKR_I2S_DIN",         /* GPIO_61  */
+               "ESE_RSTN",             /* GPIO_62  */
+               "TYPEC_INT",            /* GPIO_63  */
+               "CODEC_RESET_N",        /* GPIO_64  */
+               "PCM_CLK",              /* GPIO_65  */
+               "PCM_SYNC",             /* GPIO_66  */
+               "PCM_DIN",              /* GPIO_67  */
+               "PCM_DOUT",             /* GPIO_68  */
+               "CDC_44K1_CLK",         /* GPIO_69  */
+               "SLIMBUS_CLK",          /* GPIO_70  */
+               "SLIMBUS_DATA0",        /* GPIO_71  */
+               "SLIMBUS_DATA1",        /* GPIO_72  */
+               "LDO_5V_IN_EN",         /* GPIO_73  */
+               "NC",                   /* GPIO_74  */
+               "TSP_RST_N",            /* GPIO_75  */
+               "NC",                   /* GPIO_76  */
+               "TOUCHKEY_INT",         /* GPIO_77  */
+               "SPKR_I2S_MCLK",        /* GPIO_78  */
+               "SPKR_PA_INT",          /* GPIO_79  */
+               "SENSOR_RESET_N",       /* GPIO_80  */
+               "FP_SPI_MOSI",          /* GPIO_81  */
+               "FP_SPI_MISO",          /* GPIO_82  */
+               "FP_SPI_CS_N",          /* GPIO_83  */
+               "FP_SPI_CLK",           /* GPIO_84  */
+               "HIFI_SD",              /* GPIO_85  */
+               "CAM_VDD_1P05_EN",      /* GPIO_86  */
+               "MSM_TS_I2C_SDA",       /* GPIO_87  */
+               "MSM_TS_I2C_SCL",       /* GPIO_88  */
+               "NC",                   /* GPIO_89  */
+               "ESE_SPI_CS_N",         /* GPIO_90  */
+               "NC",                   /* GPIO_91  */
+               "NC",                   /* GPIO_92  */
+               "NC",                   /* GPIO_93  */
+               "NC",                   /* GPIO_94  */
+               "NC",                   /* GPIO_95  */
+               "NC",                   /* GPIO_96  */
+               "GRFC_0",               /* GPIO_97  */
+               "GRFC_1",               /* GPIO_98  */
+               "NC",                   /* GPIO_99  */
+               "GRFC_3",               /* GPIO_100 */
+               "GRFC_4",               /* GPIO_101 */
+               "NC",                   /* GPIO_102 */
+               "NC",                   /* GPIO_103 */
+               "GRFC_7",               /* GPIO_104 */
+               "UIM2_DATA",            /* GPIO_105 */
+               "UIM2_CLK",             /* GPIO_106 */
+               "UIM2_RESET",           /* GPIO_107 */
+               "UIM2_PRESENT",         /* GPIO_108 */
+               "UIM1_DATA",            /* GPIO_109 */
+               "UIM1_CLK",             /* GPIO_110 */
+               "UIM1_RESET",           /* GPIO_111 */
+               "UIM1_PRESENT",         /* GPIO_112 */
+               "UIM_BATT_ALARM",       /* GPIO_113 */
+               "GRFC_8",               /* GPIO_114 */
+               "GRFC_9",               /* GPIO_115 */
+               "TX_GTR_THRES",         /* GPIO_116 */
+               "ACC_INT",              /* GPIO_117 */
+               "GYRO_INT",             /* GPIO_118 */
+               "COMPASS_INT",          /* GPIO_119 */
+               "PROXIMITY_INT_N",      /* GPIO_120 */
+               "FP_IRQ",               /* GPIO_121 */
+               "TSP_TA",               /* GPIO_122 */
+               "HALL_INTR2",           /* GPIO_123 */
+               "HALL_INTR1",           /* GPIO_124 */
+               "TS_INT_N",             /* GPIO_125 */
+               "NC",                   /* GPIO_126 */
+               "GRFC_11",              /* GPIO_127 */
+               "HIFI_PWR_EN",          /* GPIO_128 */
+               "EXT_GPS_LNA_EN",       /* GPIO_129 */
+               "NC",                   /* GPIO_130 */
+               "NC",                   /* GPIO_131 */
+               "NC",                   /* GPIO_132 */
+               "GRFC_14",              /* GPIO_133 */
+               "GSM_TX2_PHASE_D",      /* GPIO_134 */
+               "HIFI_SW_SEL",          /* GPIO_135 */
+               "GRFC_15",              /* GPIO_136 */
+               "RFFE3_DATA",           /* GPIO_137 */
+               "RFFE3_CLK",            /* GPIO_138 */
+               "NC",                   /* GPIO_139 */
+               "NC",                   /* GPIO_140 */
+               "RFFE5_DATA",           /* GPIO_141 */
+               "RFFE5_CLK",            /* GPIO_142 */
+               "NC",                   /* GPIO_143 */
+               "COEX_UART_TX",         /* GPIO_144 */
+               "COEX_UART_RX",         /* GPIO_145 */
+               "RFFE2_DATA",           /* GPIO_146 */
+               "RFFE2_CLK",            /* GPIO_147 */
+               "RFFE1_DATA",           /* GPIO_148 */
+               "RFFE1_CLK";            /* GPIO_149 */
+
+       touchscreen_default: touchscreen_default {
+               pins = "gpio75", "gpio125";
+               function = "gpio";
+               drive-strength = <10>;
+               bias-pull-up;
+       };
+
+       touchscreen_sleep: touchscreen_sleep {
+               pins = "gpio75", "gpio125";
+               function = "gpio";
+               drive-strength = <2>;
+               bias-disable;
+       };
+};
index 52df22a..bccc2d0 100644 (file)
                pcie_phy: phy@34000 {
                        compatible = "qcom,msm8996-qmp-pcie-phy";
                        reg = <0x00034000 0x488>;
-                       #clock-cells = <1>;
                        #address-cells = <1>;
                        #size-cells = <1>;
                        ranges;
                        reset-names = "phy", "common", "cfg";
                        status = "disabled";
 
-                       pciephy_0: lane@35000 {
+                       pciephy_0: phy@35000 {
                                reg = <0x00035000 0x130>,
                                      <0x00035200 0x200>,
                                      <0x00035400 0x1dc>;
                                #phy-cells = <0>;
 
+                               #clock-cells = <1>;
                                clock-output-names = "pcie_0_pipe_clk_src";
                                clocks = <&gcc GCC_PCIE_0_PIPE_CLK>;
                                clock-names = "pipe0";
                                reset-names = "lane0";
                        };
 
-                       pciephy_1: lane@36000 {
+                       pciephy_1: phy@36000 {
                                reg = <0x00036000 0x130>,
                                      <0x00036200 0x200>,
                                      <0x00036400 0x1dc>;
                                reset-names = "lane1";
                        };
 
-                       pciephy_2: lane@37000 {
+                       pciephy_2: phy@37000 {
                                reg = <0x00037000 0x130>,
                                      <0x00037200 0x200>,
                                      <0x00037400 0x1dc>;
                        };
                };
 
-               rpm_msg_ram: memory@68000 {
+               rpm_msg_ram: sram@68000 {
                        compatible = "qcom,rpm-msg-ram";
                        reg = <0x00068000 0x6000>;
                };
                        #thermal-sensor-cells = <1>;
                };
 
+               cryptobam: dma@644000 {
+                       compatible = "qcom,bam-v1.7.0";
+                       reg = <0x00644000 0x24000>;
+                       interrupts = <GIC_SPI 206 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&gcc GCC_CE1_CLK>;
+                       clock-names = "bam_clk";
+                       #dma-cells = <1>;
+                       qcom,ee = <0>;
+                       qcom,controlled-remotely = <1>;
+               };
+
+               crypto: crypto@67a000 {
+                       compatible = "qcom,crypto-v5.4";
+                       reg = <0x0067a000 0x6000>;
+                       clocks = <&gcc GCC_CE1_AHB_CLK>,
+                                <&gcc GCC_CE1_AXI_CLK>,
+                                <&gcc GCC_CE1_CLK>;
+                       clock-names = "iface", "bus", "core";
+                       dmas = <&cryptobam 6>, <&cryptobam 7>;
+                       dma-names = "rx", "tx";
+               };
+
                tcsr_mutex_regs: syscon@740000 {
                        compatible = "syscon";
                        reg = <0x00740000 0x40000>;
                                };
                        };
 
+                       blsp1_uart2_default: blsp1-uart2-default {
+                               pins = "gpio41", "gpio42", "gpio43", "gpio44";
+                               function = "blsp_uart2";
+                               drive-strength = <16>;
+                               bias-disable;
+                       };
+
+                       blsp1_uart2_sleep: blsp1-uart2-sleep {
+                               pins = "gpio41", "gpio42", "gpio43", "gpio44";
+                               function = "gpio";
+                               drive-strength = <2>;
+                               bias-disable;
+                       };
+
                        blsp1_i2c3_default: blsp1-i2c2-default {
                                pins = "gpio47", "gpio48";
                                function = "blsp_i2c3";
                                bias-disable;
                        };
 
+                       blsp2_i2c3_default: blsp2-i2c3 {
+                               pins = "gpio51", "gpio52";
+                               function = "blsp_i2c9";
+                               drive-strength = <16>;
+                               bias-disable;
+                       };
+
+                       blsp2_i2c3_sleep: blsp2-i2c3-sleep {
+                               pins = "gpio51", "gpio52";
+                               function = "gpio";
+                               drive-strength = <2>;
+                               bias-disable;
+                       };
+
                        wcd_intr_default: wcd-intr-default{
                                pins = "gpio54";
                                function = "gpio";
                        };
                };
 
+               sram@290000 {
+                       compatible = "qcom,rpm-stats";
+                       reg = <0x00290000 0x10000>;
+               };
+
                spmi_bus: qcom,spmi@400f000 {
                        compatible = "qcom,spmi-pmic-arb";
                        reg = <0x0400f000 0x1000>,
                        reset-names = "ufsphy";
                        status = "disabled";
 
-                       ufsphy_lane: lanes@627400 {
+                       ufsphy_lane: phy@627400 {
                                reg = <0x627400 0x12c>,
                                      <0x627600 0x200>,
                                      <0x627c00 0x1b4>;
                usb3phy: phy@7410000 {
                        compatible = "qcom,msm8996-qmp-usb3-phy";
                        reg = <0x07410000 0x1c4>;
-                       #clock-cells = <1>;
                        #address-cells = <1>;
                        #size-cells = <1>;
                        ranges;
                        reset-names = "phy", "common";
                        status = "disabled";
 
-                       ssusb_phy_0: lane@7410200 {
+                       ssusb_phy_0: phy@7410200 {
                                reg = <0x07410200 0x200>,
                                      <0x07410400 0x130>,
                                      <0x07410600 0x1a8>;
                                #phy-cells = <0>;
 
+                               #clock-cells = <1>;
                                clock-output-names = "usb3_phy_pipe_clk_src";
                                clocks = <&gcc GCC_USB3_PHY_PIPE_CLK>;
                                clock-names = "pipe0";
                        status = "disabled";
                 };
 
-               blsp1_dma: dma@7544000 {
+               blsp1_dma: dma-controller@7544000 {
                        compatible = "qcom,bam-v1.7.0";
                        reg = <0x07544000 0x2b000>;
                        interrupts = <GIC_SPI 238 IRQ_TYPE_LEVEL_HIGH>;
                        clocks = <&gcc GCC_BLSP1_UART2_APPS_CLK>,
                                 <&gcc GCC_BLSP1_AHB_CLK>;
                        clock-names = "core", "iface";
+                       pinctrl-names = "default", "sleep";
+                       pinctrl-0 = <&blsp1_uart2_default>;
+                       pinctrl-1 = <&blsp1_uart2_sleep>;
                        dmas = <&blsp1_dma 2>, <&blsp1_dma 3>;
                        dma-names = "tx", "rx";
                        status = "disabled";
                        status = "disabled";
                };
 
-               blsp2_dma: dma@7584000 {
+               blsp2_dma: dma-controller@7584000 {
                        compatible = "qcom,bam-v1.7.0";
                        reg = <0x07584000 0x2b000>;
                        interrupts = <GIC_SPI 239 IRQ_TYPE_LEVEL_HIGH>;
                        status = "disabled";
                };
 
+               blsp2_i2c3: i2c@75b7000 {
+                       compatible = "qcom,i2c-qup-v2.2.1";
+                       reg = <0x075b7000 0x1000>;
+                       interrupts = <GIC_SPI 103 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&gcc GCC_BLSP2_AHB_CLK>,
+                               <&gcc GCC_BLSP2_QUP3_I2C_APPS_CLK>;
+                       clock-names = "iface", "core";
+                       clock-frequency = <400000>;
+                       pinctrl-names = "default", "sleep";
+                       pinctrl-0 = <&blsp2_i2c3_default>;
+                       pinctrl-1 = <&blsp2_i2c3_sleep>;
+                       dmas = <&blsp2_dma 16>, <&blsp2_dma 17>;
+                       dma-names = "tx", "rx";
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       status = "disabled";
+               };
+
                blsp2_i2c5: i2c@75b9000 {
                        compatible = "qcom,i2c-qup-v2.2.1";
                        reg = <0x75b9000 0x1000>;
index db5821b..e204b70 100644 (file)
@@ -8,6 +8,7 @@
 / {
        model = "Asus NovaGo TP370QL";
        compatible = "asus,novago-tp370ql", "qcom,msm8998";
+       chassis-type = "convertible";
 };
 
 &blsp1_i2c6 {
index 125d792..3f60575 100644 (file)
 
 &ufsphy {
        status = "okay";
+       vdda-phy-supply = <&vreg_l1a_0p875>;
+       vdda-pll-supply = <&vreg_l2a_1p2>;
 };
 
 &usb3 {
diff --git a/arch/arm64/boot/dts/qcom/msm8998-fxtec-pro1.dts b/arch/arm64/boot/dts/qcom/msm8998-fxtec-pro1.dts
new file mode 100644 (file)
index 0000000..3d495ce
--- /dev/null
@@ -0,0 +1,320 @@
+// SPDX-License-Identifier: BSD-3-Clause
+/*
+ * Copyright (c) 2021, AngeloGioacchino Del Regno
+ *                     <angelogioacchino.delregno@somainline.org>
+ */
+
+/dts-v1/;
+
+#include "msm8998-mtp.dtsi"
+
+#include <dt-bindings/input/input.h>
+#include <dt-bindings/leds/common.h>
+#include <dt-bindings/pinctrl/qcom,pmic-gpio.h>
+
+/ {
+       model = "F(x)tec Pro1 (QX1000)";
+       compatible = "fxtec,pro1", "qcom,msm8998";
+       chassis-type = "handset";
+       qcom,board-id = <0x02000b 0x10>;
+
+       /*
+        * Until we hook up type-c detection, we
+        * have to stick with this. But it works.
+        */
+       extcon_usb: extcon-usb {
+               compatible = "linux,extcon-usb-gpio";
+               id-gpio = <&tlmm 38 GPIO_ACTIVE_HIGH>;
+       };
+
+       gpio-hall-sensors {
+               compatible = "gpio-keys";
+               input-name = "hall-sensors";
+               label = "Hall sensors";
+               pinctrl-names = "default";
+               pinctrl-0 = <&hall_sensor1_default>;
+
+               hall-sensor1 {
+                       label = "Keyboard Hall Sensor";
+                       gpios = <&tlmm 124 GPIO_ACTIVE_HIGH>;
+                       debounce-interval = <15>;
+                       gpio-key,wakeup;
+                       linux,input-type = <EV_SW>;
+                       linux,code = <SW_KEYPAD_SLIDE>;
+               };
+       };
+
+       gpio-kb-extra-keys {
+               compatible = "gpio-keys";
+               input-name = "extra-kb-keys";
+               label = "Keyboard extra keys";
+               pinctrl-names = "default";
+               pinctrl-0 = <&gpio_kb_pins_extra>;
+
+               home {
+                       label = "Home";
+                       gpios = <&tlmm 21 GPIO_ACTIVE_LOW>;
+                       linux,code = <KEY_HOMEPAGE>;
+                       debounce-interval = <15>;
+                       linux,can-disable;
+               };
+
+               super-l {
+                       label = "Super Left";
+                       gpios = <&tlmm 32 GPIO_ACTIVE_LOW>;
+                       linux,code = <KEY_FN>;
+                       debounce-interval = <15>;
+                       linux,can-disable;
+               };
+
+               super-r {
+                       label = "Super Right";
+                       gpios = <&tlmm 33 GPIO_ACTIVE_LOW>;
+                       linux,code = <KEY_FN>;
+                       debounce-interval = <15>;
+                       linux,can-disable;
+               };
+
+               shift {
+                       label = "Shift";
+                       gpios = <&tlmm 114 GPIO_ACTIVE_LOW>;
+                       linux,code = <KEY_RIGHTSHIFT>;
+                       debounce-interval = <15>;
+                       linux,can-disable;
+               };
+
+               ctrl {
+                       label = "Ctrl";
+                       gpios = <&tlmm 128 GPIO_ACTIVE_LOW>;
+                       linux,code = <KEY_LEFTCTRL>;
+                       debounce-interval = <15>;
+                       linux,can-disable;
+               };
+
+               alt {
+                       label = "Alt";
+                       gpios = <&tlmm 129 GPIO_ACTIVE_LOW>;
+                       linux,code = <KEY_LEFTALT>;
+                       debounce-interval = <15>;
+                       linux,can-disable;
+               };
+       };
+
+       gpio-keys {
+               compatible = "gpio-keys";
+               input-name = "side-buttons";
+               label = "Side buttons";
+               #address-cells = <1>;
+               #size-cells = <0>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&vol_up_pin_a>, <&cam_focus_pin_a>,
+                           <&cam_snapshot_pin_a>;
+               vol-up {
+                       label = "Volume Up";
+                       gpios = <&pm8998_gpio 6 GPIO_ACTIVE_LOW>;
+                       linux,input-type = <EV_KEY>;
+                       linux,code = <KEY_VOLUMEUP>;
+                       gpio-key,wakeup;
+                       debounce-interval = <15>;
+               };
+
+               camera-snapshot {
+                       label = "Camera Snapshot";
+                       gpios = <&pm8998_gpio 7 GPIO_ACTIVE_LOW>;
+                       linux,input-type = <EV_KEY>;
+                       linux,code = <KEY_CAMERA>;
+                       debounce-interval = <15>;
+               };
+
+               camera-focus {
+                       label = "Camera Focus";
+                       gpios = <&pm8998_gpio 8 GPIO_ACTIVE_LOW>;
+                       linux,input-type = <EV_KEY>;
+                       linux,code = <KEY_CAMERA_FOCUS>;
+                       debounce-interval = <15>;
+               };
+       };
+
+       keyboard-leds {
+               compatible = "gpio-leds";
+
+               backlight {
+                       color = <LED_COLOR_ID_WHITE>;
+                       default-state = "off";
+                       function = LED_FUNCTION_KBD_BACKLIGHT;
+                       gpios = <&tlmm 16 GPIO_ACTIVE_HIGH>;
+                       label = "white:kbd_backlight";
+                       retain-state-suspended;
+               };
+
+               caps-lock {
+                       color = <LED_COLOR_ID_YELLOW>;
+                       default-state = "off";
+                       function = LED_FUNCTION_CAPSLOCK;
+                       gpios = <&tlmm 26 GPIO_ACTIVE_HIGH>;
+                       label = "yellow:capslock";
+                       linux,default-trigger = "kbd-capslock";
+               };
+       };
+
+       reserved-memory {
+               cont_splash_mem: memory@9d400000 {
+                       reg = <0x0 0x9d400000 0x0 0x2000000>;
+                       no-map;
+               };
+
+               zap_shader_region: memory@f6400000 {
+                       compatible = "shared-dma-pool";
+                       reg = <0x0 0xf6400000 0x0 0x2000>;
+                       no-map;
+               };
+
+               ramoops@ffc00000 {
+                       compatible = "ramoops";
+                       reg = <0x0 0xffc00000 0x0 0x100000>;
+                       console-size = <0x60000>;
+                       ecc-size = <16>;
+                       ftrace-size = <0x10000>;
+                       pmsg-size = <0x20000>;
+                       record-size = <0x10000>;
+               };
+       };
+
+       ts_vio_vreg: ts-vio-vreg {
+               compatible = "regulator-fixed";
+               regulator-name = "ts_vio_reg";
+               startup-delay-us = <2>;
+               enable-active-high;
+               gpio = <&tlmm 81 GPIO_ACTIVE_HIGH>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&ts_vio_default>;
+               regulator-always-on;
+       };
+};
+
+&blsp2_i2c1 {
+       status = "ok";
+
+       touchscreen@14 {
+               compatible = "goodix,gt9286";
+               reg = <0x14>;
+               interrupt-parent = <&tlmm>;
+               interrupts = <125 IRQ_TYPE_LEVEL_LOW>;
+               reset-gpios = <&tlmm 89 GPIO_ACTIVE_HIGH>;
+               AVDD28-supply = <&vreg_l28_3p0>;
+               VDDIO-supply = <&ts_vio_vreg>;
+               pinctrl-names = "active";
+               pinctrl-0 = <&ts_rst_n>, <&ts_int_n>;
+       };
+};
+
+&mmcc {
+       status = "ok";
+};
+
+&mmss_smmu {
+       status = "ok";
+};
+
+&pm8998_gpio {
+       vol_up_pin_a: vol-up-active {
+               pins = "gpio6";
+               function = "normal";
+               bias-pull-up;
+               input-enable;
+               qcom,drive-strength = <PMIC_GPIO_STRENGTH_NO>;
+       };
+
+       cam_focus_pin_a: cam-focus-btn-active {
+               pins = "gpio7";
+               function = "normal";
+               bias-pull-up;
+               input-enable;
+               qcom,drive-strength = <PMIC_GPIO_STRENGTH_NO>;
+       };
+
+       cam_snapshot_pin_a: cam-snapshot-btn-active {
+               pins = "gpio8";
+               function = "normal";
+               bias-pull-up;
+               input-enable;
+               qcom,drive-strength = <PMIC_GPIO_STRENGTH_NO>;
+       };
+};
+
+&pm8998_pon {
+       resin {
+               compatible = "qcom,pm8941-resin";
+               interrupts = <GIC_SPI 0x8 1 IRQ_TYPE_EDGE_BOTH>;
+               bias-pull-up;
+               debounce = <15625>;
+               linux,code = <KEY_VOLUMEDOWN>;
+       };
+};
+
+&tlmm {
+       gpio-reserved-ranges = <0 4>;
+
+       mdp_vsync_n: mdp-vsync-n {
+               pins = "gpio10";
+               function = "mdp_vsync_a";
+               bias-pull-down;
+               drive-strength = <2>;
+       };
+
+       gpio_kb_pins_extra: gpio-kb-pins-extra {
+               pins = "gpio21", "gpio32", "gpio33", "gpio114",
+                      "gpio128", "gpio129";
+               function = "gpio";
+               drive-strength = <2>;
+               bias-pull-up;
+       };
+
+       ts_vio_default: ts-vio-def {
+               pins = "gpio81";
+               function = "gpio";
+               bias-disable;
+               drive-strength = <2>;
+       };
+
+       ts_rst_n: ts-rst-n {
+               pins = "gpio89";
+               function = "gpio";
+               bias-pull-up;
+               drive-strength = <8>;
+       };
+
+       hall_sensor1_default: hall-sensor1-def {
+               pins = "gpio124";
+               function = "gpio";
+               bias-disable;
+               drive-strength = <2>;
+               input-enable;
+       };
+
+       ts_int_n: ts-int-n {
+               pins = "gpio125";
+               function = "gpio";
+               bias-disable;
+               drive-strength = <8>;
+       };
+};
+
+&ufshc {
+       status = "ok";
+};
+
+&ufsphy {
+       status = "ok";
+};
+
+&usb3_dwc3 {
+       dr_mode = "peripheral";
+       extcon = <&extcon_usb>;
+};
+
+/* GT9286 analog supply */
+&vreg_l28_3p0 {
+       regulator-min-microvolt = <2800000>;
+       regulator-max-microvolt = <2800000>;
+};
index 2407312..1eb406b 100644 (file)
@@ -8,6 +8,7 @@
 / {
        model = "HP Envy x2";
        compatible = "hp,envy-x2", "qcom,msm8998";
+       chassis-type = "convertible";
 };
 
 &blsp1_i2c6 {
index 89492ed..f55f6f3 100644 (file)
@@ -8,6 +8,7 @@
 / {
        model = "Lenovo Miix 630";
        compatible = "lenovo,miix-630", "qcom,msm8998";
+       chassis-type = "convertible";
 };
 
 &blsp1_i2c6 {
index a1d15ea..af67c64 100644 (file)
        vdda-phy-supply = <&vreg_l1a_0p875>;
        vdda-pll-supply = <&vreg_l2a_1p2>;
        vddp-ref-clk-supply = <&vreg_l26a_1p2>;
-       vdda-phy-max-microamp = <51400>;
-       vdda-pll-max-microamp = <14600>;
-       vddp-ref-clk-max-microamp = <100>;
-       vddp-ref-clk-always-on;
 };
 
 &usb3 {
index 66b9297..9563eb6 100644 (file)
@@ -11,6 +11,7 @@
 / {
        model = "OnePlus 5";
        compatible = "oneplus,cheeseburger", "qcom,msm8998";
+       chassis-type = "handset";
        /* Required for bootloader to select correct board */
        qcom,board-id = <8 0 16859 23>;
 
index 0f5c782..6541880 100644 (file)
        vdda-phy-supply = <&vreg_l1a_0p875>;
        vdda-pll-supply = <&vreg_l2a_1p2>;
        vddp-ref-clk-supply = <&vreg_l26a_1p2>;
-       vdda-phy-max-microamp = <51400>;
-       vdda-pll-max-microamp = <14600>;
-       vddp-ref-clk-max-microamp = <100>;
-       vddp-ref-clk-always-on;
 };
 
 &usb3 {
index 544b9b0..5d0dabb 100644 (file)
@@ -10,6 +10,7 @@
 / {
        model = "OnePlus 5T";
        compatible = "oneplus,dumpling", "qcom,msm8998";
+       chassis-type = "handset";
        /* Required for bootloader to select correct board */
        qcom,board-id = <8 0 17801 43>;
 };
diff --git a/arch/arm64/boot/dts/qcom/msm8998-sony-xperia-yoshino-lilac.dts b/arch/arm64/boot/dts/qcom/msm8998-sony-xperia-yoshino-lilac.dts
new file mode 100644 (file)
index 0000000..caacb7c
--- /dev/null
@@ -0,0 +1,31 @@
+// SPDX-License-Identifier: BSD-3-Clause
+/*
+ * Copyright (c) 2021, AngeloGioacchino Del Regno
+ *                     <angelogioacchino.delregno@somainline.org>
+ */
+
+/dts-v1/;
+
+#include "msm8998-sony-xperia-yoshino.dtsi"
+
+/ {
+       model = "Sony Xperia XZ1 Compact";
+       compatible = "sony,xperia-lilac", "qcom,msm8998";
+       chassis-type = "handset";
+};
+
+&ibb {
+       regulator-min-microvolt = <5500000>;
+       regulator-max-microvolt = <5500000>;
+};
+
+&lab {
+       regulator-min-microvolt = <5500000>;
+       regulator-max-microvolt = <5500000>;
+       qcom,soft-start-us = <800>;
+};
+
+&vreg_l22a_2p85 {
+       regulator-min-microvolt = <2800000>;
+       regulator-max-microvolt = <2800000>;
+};
diff --git a/arch/arm64/boot/dts/qcom/msm8998-sony-xperia-yoshino-maple.dts b/arch/arm64/boot/dts/qcom/msm8998-sony-xperia-yoshino-maple.dts
new file mode 100644 (file)
index 0000000..978495a
--- /dev/null
@@ -0,0 +1,55 @@
+// SPDX-License-Identifier: BSD-3-Clause
+/*
+ * Copyright (c) 2021, AngeloGioacchino Del Regno
+ *                     <angelogioacchino.delregno@somainline.org>
+ */
+
+/dts-v1/;
+
+#include "msm8998-sony-xperia-yoshino.dtsi"
+
+/ {
+       model = "Sony Xperia XZ Premium";
+       compatible = "sony,xperia-maple", "qcom,msm8998";
+       chassis-type = "handset";
+
+       disp_dvdd_vreg: disp-dvdd-vreg {
+               compatible = "regulator-fixed";
+               regulator-name = "disp_dvdd_en";
+               regulator-min-microvolt = <1350000>;
+               regulator-max-microvolt = <1350000>;
+               startup-delay-us = <0>;
+               enable-active-high;
+               gpio = <&pmi8998_gpio 10 GPIO_ACTIVE_HIGH>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&disp_dvdd_en>;
+       };
+};
+
+&ibb {
+       regulator-min-microvolt = <5600000>;
+       regulator-max-microvolt = <5600000>;
+};
+
+&lab {
+       regulator-min-microvolt = <5800000>;
+       regulator-max-microvolt = <5800000>;
+       qcom,soft-start-us = <200>;
+};
+
+&pmi8998_gpio {
+       disp_dvdd_en: disp-dvdd-en-active {
+               pins = "gpio10";
+               function = "normal";
+               bias-disable;
+               drive-push-pull;
+               output-high;
+               power-source = <0>;
+               qcom,drive-strength = <1>;
+       };
+};
+
+&vreg_l22a_2p85 {
+       regulator-min-microvolt = <2704000>;
+       regulator-max-microvolt = <2704000>;
+};
diff --git a/arch/arm64/boot/dts/qcom/msm8998-sony-xperia-yoshino-poplar.dts b/arch/arm64/boot/dts/qcom/msm8998-sony-xperia-yoshino-poplar.dts
new file mode 100644 (file)
index 0000000..4a1f98a
--- /dev/null
@@ -0,0 +1,36 @@
+// SPDX-License-Identifier: BSD-3-Clause
+/*
+ * Copyright (c) 2021, AngeloGioacchino Del Regno
+ *                     <angelogioacchino.delregno@somainline.org>
+ */
+
+/dts-v1/;
+
+#include "msm8998-sony-xperia-yoshino.dtsi"
+
+/ {
+       model = "Sony Xperia XZ1";
+       compatible = "sony,xperia-poplar", "qcom,msm8998";
+       chassis-type = "handset";
+};
+
+&ibb {
+       regulator-min-microvolt = <5600000>;
+       regulator-max-microvolt = <5600000>;
+};
+
+&lab {
+       regulator-min-microvolt = <5600000>;
+       regulator-max-microvolt = <5600000>;
+       qcom,soft-start-us = <800>;
+};
+
+&vreg_l18a_2p85 {
+       regulator-min-microvolt = <2850000>;
+       regulator-max-microvolt = <2850000>;
+};
+
+&vreg_l22a_2p85 {
+       regulator-min-microvolt = <2700000>;
+       regulator-max-microvolt = <2700000>;
+};
diff --git a/arch/arm64/boot/dts/qcom/msm8998-sony-xperia-yoshino.dtsi b/arch/arm64/boot/dts/qcom/msm8998-sony-xperia-yoshino.dtsi
new file mode 100644 (file)
index 0000000..91e3912
--- /dev/null
@@ -0,0 +1,670 @@
+// SPDX-License-Identifier: BSD-3-Clause
+/*
+ * Copyright (c) 2021, AngeloGioacchino Del Regno
+ *                     <angelogioacchino.delregno@somainline.org>
+ * Copyright (c) 2021, Konrad Dybcio <konrad.dybcio@somainline.org>
+ */
+
+#include "msm8998.dtsi"
+#include "pm8005.dtsi"
+#include "pm8998.dtsi"
+#include "pmi8998.dtsi"
+#include <dt-bindings/input/input.h>
+#include <dt-bindings/leds/common.h>
+#include <dt-bindings/pinctrl/qcom,pmic-gpio.h>
+#include <dt-bindings/sound/qcom,q6afe.h>
+#include <dt-bindings/sound/qcom,q6asm.h>
+
+/ {
+       /* required for bootloader to select correct board */
+       qcom,msm-id = <0x124 0x20000>, <0x124 0x20001>; /* 8998v2, v2.1 */
+       qcom,board-id = <8 0>;
+
+       clocks {
+               compatible = "simple-bus";
+
+               div1_mclk: divclk1 {
+                       compatible = "gpio-gate-clock";
+                       pinctrl-0 = <&audio_mclk_pin>;
+                       pinctrl-names = "default";
+                       clocks = <&rpmcc RPM_SMD_DIV_CLK1>;
+                       #clock-cells = <0>;
+                       enable-gpios = <&pm8998_gpio 13 GPIO_ACTIVE_HIGH>;
+               };
+       };
+
+       board_vbat: vbat-regulator {
+               compatible = "regulator-fixed";
+               regulator-name = "VBAT";
+
+               regulator-min-microvolt = <4000000>;
+               regulator-max-microvolt = <4000000>;
+               regulator-always-on;
+               regulator-boot-on;
+       };
+
+       cam0_vdig_vreg: cam0-vdig {
+               compatible = "regulator-fixed";
+               regulator-name = "cam0_vdig";
+               startup-delay-us = <0>;
+               enable-active-high;
+               gpio = <&tlmm 21 GPIO_ACTIVE_HIGH>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&cam0_vdig_default>;
+       };
+
+       cam1_vdig_vreg: cam1-vdig {
+               compatible = "regulator-fixed";
+               regulator-name = "cam1_vdig";
+               startup-delay-us = <0>;
+               enable-active-high;
+               gpio = <&tlmm 25 GPIO_ACTIVE_HIGH>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&cam1_vdig_default>;
+               vin-supply = <&vreg_s3a_1p35>;
+       };
+
+       cam_vio_vreg: cam-vio-vreg {
+               compatible = "regulator-fixed";
+               regulator-name = "cam_vio_vreg";
+               startup-delay-us = <0>;
+               enable-active-high;
+               gpio = <&pmi8998_gpio 1 GPIO_ACTIVE_HIGH>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&cam_vio_default>;
+               vin-supply = <&vreg_lvs1a_1p8>;
+       };
+
+       touch_vddio_vreg: touch-vddio-vreg {
+               compatible = "regulator-fixed";
+               regulator-name = "touch_vddio_vreg";
+               startup-delay-us = <10000>;
+               gpio = <&tlmm 133 GPIO_ACTIVE_HIGH>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&ts_vddio_en>;
+       };
+
+       vph_pwr: vph-pwr-regulator {
+               compatible = "regulator-fixed";
+               regulator-name = "vph_pwr";
+               regulator-always-on;
+               regulator-boot-on;
+       };
+
+       gpio-keys {
+               compatible = "gpio-keys";
+               input-name = "gpio-keys";
+               label = "Side buttons";
+               pinctrl-names = "default";
+               pinctrl-0 = <&vol_down_pin_a>, <&cam_focus_pin_a>,
+                           <&cam_snapshot_pin_a>;
+               vol-down {
+                       label = "Volume Down";
+                       gpios = <&pm8998_gpio 5 GPIO_ACTIVE_LOW>;
+                       linux,input-type = <EV_KEY>;
+                       linux,code = <KEY_VOLUMEDOWN>;
+                       gpio-key,wakeup;
+                       debounce-interval = <15>;
+               };
+
+               camera-snapshot {
+                       label = "Camera Snapshot";
+                       gpios = <&pm8998_gpio 7 GPIO_ACTIVE_LOW>;
+                       linux,input-type = <EV_KEY>;
+                       linux,code = <KEY_CAMERA>;
+                       debounce-interval = <15>;
+               };
+
+               camera-focus {
+                       label = "Camera Focus";
+                       gpios = <&pm8998_gpio 8 GPIO_ACTIVE_LOW>;
+                       linux,input-type = <EV_KEY>;
+                       linux,code = <KEY_CAMERA_FOCUS>;
+                       debounce-interval = <15>;
+               };
+       };
+
+       gpio-hall-sensor {
+               compatible = "gpio-keys";
+               input-name = "hall-sensors";
+               label = "Hall sensors";
+               pinctrl-names = "default";
+               pinctrl-0 = <&hall_sensor0_default>;
+
+               hall-sensor0 {
+                       label = "Cover Hall Sensor";
+                       gpios = <&tlmm 124 GPIO_ACTIVE_LOW>;
+                       linux,input-type = <EV_SW>;
+                       linux,code = <SW_LID>;
+                       gpio-key,wakeup;
+                       debounce-interval = <30>;
+               };
+       };
+
+       reserved-memory {
+               #address-cells = <2>;
+               #size-cells = <2>;
+               ranges;
+
+               hyp_mem: memory@85800000 {
+                       reg = <0x0 0x85800000 0x0 0x3700000>;
+                       no-map;
+               };
+
+               cont_splash_mem: memory@9d400000 {
+                       reg = <0x0 0x9d400000 0x0 0x2400000>;
+                       no-map;
+               };
+
+               zap_shader_region: memory@f6400000 {
+                       compatible = "shared-dma-pool";
+                       reg = <0x0 0xf6400000 0x0 0x2000>;
+                       no-map;
+               };
+
+               adsp_region: memory@fe000000 {
+                       reg = <0x0 0xfe000000 0x0 0x800000>;
+                       no-map;
+               };
+
+               qseecom_region: memory@fe800000 {
+                       reg = <0x0 0xfe800000 0x0 0x1400000>;
+                       no-map;
+               };
+
+               ramoops@ffc00000 {
+                       compatible = "ramoops";
+                       reg = <0x0 0xffc00000 0x0 0x100000>;
+                       record-size = <0x10000>;
+                       console-size = <0x60000>;
+                       ftrace-size = <0x10000>;
+                       pmsg-size = <0x20000>;
+                       ecc-size = <16>;
+               };
+       };
+
+       vibrator {
+               compatible = "gpio-vibrator";
+               enable-gpios = <&pmi8998_gpio 5 GPIO_ACTIVE_HIGH>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&vib_default>;
+       };
+};
+
+&blsp1_i2c5 {
+       status = "okay";
+       clock-frequency = <355000>;
+
+       touchscreen@2c {
+               compatible = "syna,rmi4-i2c";
+               reg = <0x2c>;
+               #address-cells = <1>;
+               #size-cells = <0>;
+               interrupts-extended = <&tlmm 125 IRQ_TYPE_EDGE_FALLING>;
+
+               pinctrl-names = "default";
+               pinctrl-0 = <&ts_int_n>;
+
+               vdd-supply = <&vreg_l28_3p0>;
+               vio-supply = <&touch_vddio_vreg>;
+
+               syna,reset-delay-ms = <220>;
+               syna,startup-delay-ms = <1000>;
+
+               rmi4-f01@1 {
+                       reg = <0x01>;
+                       syna,nosleep-mode = <1>;
+               };
+
+               rmi4-f11@11 {
+                       reg = <0x11>;
+                       syna,sensor-type = <1>;
+               };
+       };
+};
+
+&blsp1_i2c5_sleep {
+       bias-disable;
+};
+
+&blsp1_uart3 {
+       status = "okay";
+
+       bluetooth {
+               compatible = "qcom,wcn3990-bt";
+
+               vddio-supply = <&vreg_s4a_1p8>;
+               vddxo-supply = <&vreg_l7a_1p8>;
+               vddrf-supply = <&vreg_l17a_1p3>;
+               vddch0-supply = <&vreg_l25a_3p3>;
+               max-speed = <3200000>;
+
+               clocks = <&rpmcc RPM_SMD_RF_CLK2_PIN>;
+       };
+};
+
+&blsp2_uart1 {
+       status = "okay";
+};
+
+&ibb {
+       regulator-min-microamp = <800000>;
+       regulator-max-microamp = <800000>;
+       regulator-enable-ramp-delay = <200>;
+       regulator-over-current-protection;
+       regulator-pull-down;
+       regulator-ramp-delay = <1>;
+       regulator-settling-time-up-us = <600>;
+       regulator-settling-time-down-us = <1000>;
+       regulator-soft-start;
+       qcom,discharge-resistor-kohms = <300>;
+};
+
+&lab {
+       regulator-min-microamp = <200000>;
+       regulator-max-microamp = <200000>;
+       regulator-enable-ramp-delay = <500>;
+       regulator-over-current-protection;
+       regulator-pull-down;
+       regulator-ramp-delay = <1>;
+       regulator-settling-time-up-us = <50000>;
+       regulator-settling-time-down-us = <3000>;
+       regulator-soft-start;
+};
+
+&mmcc {
+       status = "ok";
+};
+
+&mmss_smmu {
+       status = "ok";
+};
+
+&pm8005_lsid1 {
+       pm8005-regulators {
+               compatible = "qcom,pm8005-regulators";
+
+               vdd_s1-supply = <&vph_pwr>;
+
+               /* VDD_GFX supply */
+               pm8005_s1: s1 {
+                       regulator-min-microvolt = <524000>;
+                       regulator-max-microvolt = <1088000>;
+                       regulator-enable-ramp-delay = <500>;
+                       regulator-always-on;
+               };
+       };
+};
+
+&pm8998_gpio {
+       vol_down_pin_a: vol-down-active {
+               pins = "gpio5";
+               function = PMIC_GPIO_FUNC_NORMAL;
+               bias-pull-up;
+               input-enable;
+               qcom,drive-strength = <PMIC_GPIO_STRENGTH_NO>;
+       };
+
+       cam_focus_pin_a: cam-focus-btn-active {
+               pins = "gpio7";
+               function = PMIC_GPIO_FUNC_NORMAL;
+               bias-pull-up;
+               input-enable;
+               qcom,drive-strength = <PMIC_GPIO_STRENGTH_NO>;
+       };
+
+       cam_snapshot_pin_a: cam-snapshot-btn-active {
+               pins = "gpio8";
+               function = PMIC_GPIO_FUNC_NORMAL;
+               bias-pull-up;
+               input-enable;
+               qcom,drive-strength = <PMIC_GPIO_STRENGTH_NO>;
+       };
+
+       audio_mclk_pin: audio-mclk-pin-active {
+               pins = "gpio13";
+               function = "func2";
+               power-source = <0>;
+       };
+};
+
+&pmi8998_gpio {
+       cam_vio_default: cam-vio-active {
+               pins = "gpio1";
+               function = PMIC_GPIO_FUNC_NORMAL;
+               bias-disable;
+               drive-push-pull;
+               output-low;
+               qcom,drive-strength = <PMIC_GPIO_STRENGTH_HIGH>;
+               power-source = <1>;
+       };
+
+       vib_default: vib-en {
+               pins = "gpio5";
+               function = PMIC_GPIO_FUNC_NORMAL;
+               bias-disable;
+               drive-push-pull;
+               output-low;
+               qcom,drive-strength = <PMIC_GPIO_STRENGTH_NO>;
+               power-source = <0>;
+       };
+};
+
+&pm8998_pon {
+       resin {
+               compatible = "qcom,pm8941-resin";
+               interrupts = <GIC_SPI 0x8 1 IRQ_TYPE_EDGE_BOTH>;
+               debounce = <15625>;
+               bias-pull-up;
+               linux,code = <KEY_VOLUMEUP>;
+       };
+};
+
+&qusb2phy {
+       status = "okay";
+
+       vdda-pll-supply = <&vreg_l12a_1p8>;
+       vdda-phy-dpdm-supply = <&vreg_l24a_3p075>;
+};
+
+&rpm_requests {
+       pm8998-regulators {
+               compatible = "qcom,rpm-pm8998-regulators";
+
+               vdd_s1-supply = <&vph_pwr>;
+               vdd_s2-supply = <&vph_pwr>;
+               vdd_s3-supply = <&vph_pwr>;
+               vdd_s4-supply = <&vph_pwr>;
+               vdd_s5-supply = <&vph_pwr>;
+               vdd_s6-supply = <&vph_pwr>;
+               vdd_s7-supply = <&vph_pwr>;
+               vdd_s8-supply = <&vph_pwr>;
+               vdd_s9-supply = <&vph_pwr>;
+               vdd_s10-supply = <&vph_pwr>;
+               vdd_s11-supply = <&vph_pwr>;
+               vdd_s12-supply = <&vph_pwr>;
+               vdd_s13-supply = <&vph_pwr>;
+               vdd_l1_l27-supply = <&vreg_s7a_1p025>;
+               vdd_l2_l8_l17-supply = <&vreg_s3a_1p35>;
+               vdd_l3_l11-supply = <&vreg_s7a_1p025>;
+               vdd_l4_l5-supply = <&vreg_s7a_1p025>;
+               vdd_l6-supply = <&vreg_s5a_2p04>;
+               vdd_l7_l12_l14_l15-supply = <&vreg_s5a_2p04>;
+               vdd_l9-supply = <&vreg_bob>;
+               vdd_l10_l23_l25-supply = <&vreg_bob>;
+               vdd_l13_l19_l21-supply = <&vreg_bob>;
+               vdd_l16_l28-supply = <&vreg_bob>;
+               vdd_l18_l22-supply = <&vreg_bob>;
+               vdd_l20_l24-supply = <&vreg_bob>;
+               vdd_l26-supply = <&vreg_s3a_1p35>;
+               vdd_lvs1_lvs2-supply = <&vreg_s4a_1p8>;
+
+               vreg_s3a_1p35: s3 {
+                       regulator-min-microvolt = <1352000>;
+                       regulator-max-microvolt = <1352000>;
+               };
+               vreg_s4a_1p8: s4 {
+                       regulator-min-microvolt = <1800000>;
+                       regulator-max-microvolt = <1800000>;
+                       regulator-system-load = <100000>;
+                       regulator-allow-set-load;
+               };
+               vreg_s5a_2p04: s5 {
+                       regulator-min-microvolt = <1904000>;
+                       regulator-max-microvolt = <2032000>;
+               };
+               vreg_s7a_1p025: s7 {
+                       regulator-min-microvolt = <900000>;
+                       regulator-max-microvolt = <1028000>;
+               };
+               vreg_l1a_0p875: l1 {
+                       regulator-min-microvolt = <880000>;
+                       regulator-max-microvolt = <880000>;
+                       regulator-system-load = <73400>;
+                       regulator-allow-set-load;
+               };
+               vreg_l2a_1p2: l2 {
+                       regulator-min-microvolt = <1200000>;
+                       regulator-max-microvolt = <1200000>;
+                       regulator-system-load = <12560>;
+                       regulator-allow-set-load;
+               };
+               vreg_l3a_1p0: l3 {
+                       regulator-min-microvolt = <1000000>;
+                       regulator-max-microvolt = <1000000>;
+               };
+               vreg_l5a_0p8: l5 {
+                       regulator-min-microvolt = <800000>;
+                       regulator-max-microvolt = <800000>;
+               };
+               vreg_l6a_1p8: l6 {
+                       regulator-min-microvolt = <1800000>;
+                       regulator-max-microvolt = <1800000>;
+               };
+               vreg_l7a_1p8: l7 {
+                       regulator-min-microvolt = <1800000>;
+                       regulator-max-microvolt = <1800000>;
+               };
+               vreg_l8a_1p2: l8 {
+                       regulator-min-microvolt = <1200000>;
+                       regulator-max-microvolt = <1200000>;
+               };
+               vreg_l9a_1p8: l9 {
+                       regulator-min-microvolt = <1808000>;
+                       regulator-max-microvolt = <2960000>;
+               };
+               vreg_l10a_1p8: l10 {
+                       regulator-min-microvolt = <1808000>;
+                       regulator-max-microvolt = <2960000>;
+               };
+               vreg_l11a_1p0: l11 {
+                       regulator-min-microvolt = <1000000>;
+                       regulator-max-microvolt = <1000000>;
+               };
+               vreg_l12a_1p8: l12 {
+                       regulator-min-microvolt = <1800000>;
+                       regulator-max-microvolt = <1800000>;
+               };
+               vreg_l13a_2p95: l13 {
+                       regulator-min-microvolt = <1808000>;
+                       regulator-max-microvolt = <2960000>;
+                       regulator-allow-set-load;
+               };
+               vreg_l14a_1p85: l14 {
+                       regulator-min-microvolt = <1848000>;
+                       regulator-max-microvolt = <1856000>;
+                       regulator-system-load = <32000>;
+                       regulator-allow-set-load;
+               };
+               vreg_l15a_1p8: l15 {
+                       regulator-min-microvolt = <1800000>;
+                       regulator-max-microvolt = <1800000>;
+               };
+               vreg_l16a_2p7: l16 {
+                       regulator-min-microvolt = <2704000>;
+                       regulator-max-microvolt = <2704000>;
+               };
+               vreg_l17a_1p3: l17 {
+                       regulator-min-microvolt = <1304000>;
+                       regulator-max-microvolt = <1304000>;
+               };
+               vreg_l18a_2p85: l18 {};
+               vreg_l19a_2p7: l19 {
+                       regulator-min-microvolt = <2696000>;
+                       regulator-max-microvolt = <2704000>;
+               };
+               vreg_l20a_2p95: l20 {
+                       regulator-min-microvolt = <2960000>;
+                       regulator-max-microvolt = <2960000>;
+                       regulator-system-load = <10000>;
+                       regulator-allow-set-load;
+               };
+               vreg_l21a_2p95: l21 {
+                       regulator-min-microvolt = <2960000>;
+                       regulator-max-microvolt = <2960000>;
+                       regulator-system-load = <800000>;
+                       regulator-allow-set-load;
+               };
+               vreg_l22a_2p85: l22 { };
+               vreg_l23a_3p3: l23 {
+                       regulator-min-microvolt = <3312000>;
+                       regulator-max-microvolt = <3312000>;
+               };
+               vreg_l24a_3p075: l24 {
+                       regulator-min-microvolt = <3088000>;
+                       regulator-max-microvolt = <3088000>;
+               };
+               vreg_l25a_3p3: l25 {
+                       regulator-min-microvolt = <3104000>;
+                       regulator-max-microvolt = <3312000>;
+               };
+               vreg_l26a_1p2: l26 {
+                       regulator-min-microvolt = <1200000>;
+                       regulator-max-microvolt = <1200000>;
+                       regulator-allow-set-load;
+               };
+               vreg_l28_3p0: l28 {
+                       regulator-min-microvolt = <3000000>;
+                       regulator-max-microvolt = <3000000>;
+               };
+               vreg_lvs1a_1p8: lvs1 { };
+               vreg_lvs2a_1p8: lvs2 { };
+       };
+
+       pmi8998-regulators {
+               compatible = "qcom,rpm-pmi8998-regulators";
+
+               vdd_bob-supply = <&vph_pwr>;
+
+               vreg_bob: bob {
+                       regulator-min-microvolt = <3312000>;
+                       regulator-max-microvolt = <3600000>;
+               };
+       };
+};
+
+&sdhc2 {
+       status = "okay";
+       cd-gpios = <&tlmm 95 GPIO_ACTIVE_HIGH>;
+
+       vmmc-supply = <&vreg_l21a_2p95>;
+       vqmmc-supply = <&vreg_l13a_2p95>;
+
+       pinctrl-names = "default", "sleep";
+       pinctrl-0 = <&sdc2_clk_on  &sdc2_cmd_on  &sdc2_data_on  &sdc2_cd_on>;
+       pinctrl-1 = <&sdc2_clk_off &sdc2_cmd_off &sdc2_data_off &sdc2_cd_off>;
+};
+
+&tlmm {
+       gpio-reserved-ranges = <0 4>, <81 4>;
+
+       mdp_vsync_n: mdp-vsync-n {
+               pins = "gpio10";
+               function = "mdp_vsync_a";
+               drive-strength = <2>;
+               bias-pull-down;
+       };
+
+       nfc_ven: nfc-ven {
+               pins = "gpio12";
+               function = "gpio";
+               bias-disable;
+               drive-strength = <2>;
+               output-low;
+       };
+
+       msm_mclk0_default: msm-mclk0-active {
+               pins = "gpio13";
+               function = "cam_mclk";
+               drive-strength = <2>;
+               bias-disable;
+       };
+
+       msm_mclk1_default: msm-mclk1-active {
+               pins = "gpio14";
+               function = "cam_mclk";
+               drive-strength = <2>;
+               bias-disable;
+       };
+
+       cci0_default: cci0-default {
+               pins = "gpio18", "gpio19";
+               function = "cci_i2c";
+               bias-disable;
+               drive-strength = <2>;
+       };
+
+       cci1_default: cci1-default {
+               pins = "gpio19", "gpio20";
+               function = "cci_i2c";
+               bias-disable;
+               drive-strength = <2>;
+       };
+
+       cam0_vdig_default: cam0-vdig-default {
+               pins = "gpio21";
+               function = "gpio";
+               bias-disable;
+               drive-strength = <2>;
+       };
+
+       cam1_vdig_default: cam1-vdig-default {
+               pins = "gpio25";
+               function = "gpio";
+               bias-disable;
+               drive-strength = <2>;
+       };
+
+       hall_sensor0_default: acc-cover-open {
+               pins = "gpio124";
+               function = "gpio";
+               bias-disable;
+               drive-strength = <2>;
+               input-enable;
+       };
+
+       ts_int_n: ts-int-n {
+               pins = "gpio125";
+               function = "gpio";
+               drive-strength = <8>;
+               bias-pull-up;
+       };
+
+       ts_vddio_en: ts-vddio-en-default {
+               pins = "gpio133";
+               function = "gpio";
+               bias-disable;
+               drive-strength = <2>;
+               output-low;
+       };
+};
+
+/*
+ * WARNING:
+ * Disable UFS until card quirks are in to avoid unrecoverable hard-brick
+ * that would happen as soon as the UFS card gets probed as, without the
+ * required quirks, the bootloader will be erased right after card probe.
+ */
+&ufshc {
+       status = "disabled";
+};
+
+&ufsphy {
+       status = "disabled";
+};
+
+&usb3 {
+       status = "okay";
+};
+
+&usb3_dwc3 {
+       /* Force to peripheral until we have Type-C hooked up */
+       dr_mode = "peripheral";
+};
+
+&usb3phy {
+       status = "okay";
+
+       vdda-phy-supply = <&vreg_l1a_0p875>;
+       vdda-pll-supply = <&vreg_l2a_1p2>;
+};
index 34039b5..408f265 100644 (file)
@@ -4,6 +4,7 @@
 #include <dt-bindings/interrupt-controller/arm-gic.h>
 #include <dt-bindings/clock/qcom,gcc-msm8998.h>
 #include <dt-bindings/clock/qcom,gpucc-msm8998.h>
+#include <dt-bindings/clock/qcom,mmcc-msm8998.h>
 #include <dt-bindings/clock/qcom,rpmcc.h>
 #include <dt-bindings/power/qcom-rpmpd.h>
 #include <dt-bindings/gpio/gpio.h>
                        clock-output-names = "xo_board";
                };
 
-               sleep_clk {
+               sleep_clk: sleep-clk {
                        compatible = "fixed-clock";
                        #clock-cells = <0>;
                        clock-frequency = <32764>;
                        LITTLE_CPU_SLEEP_0: cpu-sleep-0-0 {
                                compatible = "arm,idle-state";
                                idle-state-name = "little-retention";
+                               /* CPU Retention (C2D), L2 Active */
                                arm,psci-suspend-param = <0x00000002>;
                                entry-latency-us = <81>;
                                exit-latency-us = <86>;
-                               min-residency-us = <200>;
+                               min-residency-us = <504>;
                        };
 
                        LITTLE_CPU_SLEEP_1: cpu-sleep-0-1 {
                                compatible = "arm,idle-state";
                                idle-state-name = "little-power-collapse";
+                               /* CPU + L2 Power Collapse (C3, D4) */
                                arm,psci-suspend-param = <0x40000003>;
-                               entry-latency-us = <273>;
-                               exit-latency-us = <612>;
-                               min-residency-us = <1000>;
+                               entry-latency-us = <814>;
+                               exit-latency-us = <4562>;
+                               min-residency-us = <9183>;
                                local-timer-stop;
                        };
 
                        BIG_CPU_SLEEP_0: cpu-sleep-1-0 {
                                compatible = "arm,idle-state";
                                idle-state-name = "big-retention";
+                               /* CPU Retention (C2D), L2 Active */
                                arm,psci-suspend-param = <0x00000002>;
                                entry-latency-us = <79>;
                                exit-latency-us = <82>;
-                               min-residency-us = <200>;
+                               min-residency-us = <1302>;
                        };
 
                        BIG_CPU_SLEEP_1: cpu-sleep-1-1 {
                                compatible = "arm,idle-state";
                                idle-state-name = "big-power-collapse";
+                               /* CPU + L2 Power Collapse (C3, D4) */
                                arm,psci-suspend-param = <0x40000003>;
-                               entry-latency-us = <336>;
-                               exit-latency-us = <525>;
-                               min-residency-us = <1000>;
+                               entry-latency-us = <724>;
+                               exit-latency-us = <2027>;
+                               min-residency-us = <9419>;
                                local-timer-stop;
                        };
                };
                        #reset-cells = <1>;
                        #power-domain-cells = <1>;
                        reg = <0x00100000 0xb0000>;
+
+                       clock-names = "xo", "sleep_clk";
+                       clocks = <&xo>, <&sleep_clk>;
                };
 
-               rpm_msg_ram: memory@778000 {
+               rpm_msg_ram: sram@778000 {
                        compatible = "qcom,rpm-msg-ram";
                        reg = <0x00778000 0x7000>;
                };
 
-               qfprom: qfprom@780000 {
+               qfprom: qfprom@784000 {
                        compatible = "qcom,qfprom";
-                       reg = <0x00780000 0x621c>;
+                       reg = <0x00784000 0x621c>;
                        #address-cells = <1>;
                        #size-cells = <1>;
 
-                       qusb2_hstx_trim: hstx-trim@423a {
-                               reg = <0x423a 0x1>;
+                       qusb2_hstx_trim: hstx-trim@23a {
+                               reg = <0x23a 0x1>;
                                bits = <0 4>;
                        };
                };
                        interrupts = <GIC_SPI 405 IRQ_TYPE_LEVEL_HIGH>;
                        interrupt-names = "msi";
                        interrupt-map-mask = <0 0 0 0x7>;
-                       interrupt-map = <0 0 0 1 &intc 0 135 IRQ_TYPE_LEVEL_HIGH>,
-                                       <0 0 0 2 &intc 0 136 IRQ_TYPE_LEVEL_HIGH>,
-                                       <0 0 0 3 &intc 0 138 IRQ_TYPE_LEVEL_HIGH>,
-                                       <0 0 0 4 &intc 0 139 IRQ_TYPE_LEVEL_HIGH>;
+                       interrupt-map = <0 0 0 1 &intc 0 135 IRQ_TYPE_LEVEL_HIGH>,
+                                       <0 0 0 2 &intc 0 136 IRQ_TYPE_LEVEL_HIGH>,
+                                       <0 0 0 3 &intc 0 138 IRQ_TYPE_LEVEL_HIGH>,
+                                       <0 0 0 4 &intc 0 139 IRQ_TYPE_LEVEL_HIGH>;
 
                        clocks = <&gcc GCC_PCIE_0_PIPE_CLK>,
                                 <&gcc GCC_PCIE_0_MSTR_AXI_CLK>,
                        vdda-phy-supply = <&vreg_l1a_0p875>;
                        vdda-pll-supply = <&vreg_l2a_1p2>;
 
-                       pciephy: lane@1c06800 {
+                       pciephy: phy@1c06800 {
                                reg = <0x01c06200 0x128>, <0x01c06400 0x1fc>, <0x01c06800 0x20c>;
                                #phy-cells = <0>;
 
                        reset-names = "ufsphy";
                        resets = <&ufshc 0>;
 
-                       ufsphy_lanes: lanes@1da7400 {
+                       ufsphy_lanes: phy@1da7400 {
                                reg = <0x01da7400 0x128>,
                                      <0x01da7600 0x1fc>,
                                      <0x01da7c00 0x1dc>,
                        };
                };
 
+               adreno_gpu: gpu@5000000 {
+                       compatible = "qcom,adreno-540.1", "qcom,adreno";
+                       reg = <0x05000000 0x40000>;
+                       reg-names = "kgsl_3d0_reg_memory";
+
+                       clocks = <&gcc GCC_GPU_CFG_AHB_CLK>,
+                               <&gpucc RBBMTIMER_CLK>,
+                               <&gcc GCC_BIMC_GFX_CLK>,
+                               <&gcc GCC_GPU_BIMC_GFX_CLK>,
+                               <&gpucc RBCPR_CLK>,
+                               <&gpucc GFX3D_CLK>;
+                       clock-names = "iface",
+                               "rbbmtimer",
+                               "mem",
+                               "mem_iface",
+                               "rbcpr",
+                               "core";
+
+                       interrupts = <0 300 IRQ_TYPE_LEVEL_HIGH>;
+                       iommus = <&adreno_smmu 0>;
+                       operating-points-v2 = <&gpu_opp_table>;
+                       power-domains = <&rpmpd MSM8998_VDDMX>;
+                       #stream-id-cells = <16>;
+                       status = "disabled";
+
+                       gpu_opp_table: opp-table {
+                               compatible  = "operating-points-v2";
+                               opp-710000097 {
+                                       opp-hz = /bits/ 64 <710000097>;
+                                       opp-level = <RPM_SMD_LEVEL_TURBO>;
+                                       opp-supported-hw = <0xFF>;
+                               };
+
+                               opp-670000048 {
+                                       opp-hz = /bits/ 64 <670000048>;
+                                       opp-level = <RPM_SMD_LEVEL_NOM_PLUS>;
+                                       opp-supported-hw = <0xFF>;
+                               };
+
+                               opp-596000097 {
+                                       opp-hz = /bits/ 64 <596000097>;
+                                       opp-level = <RPM_SMD_LEVEL_NOM>;
+                                       opp-supported-hw = <0xFF>;
+                               };
+
+                               opp-515000097 {
+                                       opp-hz = /bits/ 64 <515000097>;
+                                       opp-level = <RPM_SMD_LEVEL_SVS_PLUS>;
+                                       opp-supported-hw = <0xFF>;
+                               };
+
+                               opp-414000000 {
+                                       opp-hz = /bits/ 64 <414000000>;
+                                       opp-level = <RPM_SMD_LEVEL_SVS>;
+                                       opp-supported-hw = <0xFF>;
+                               };
+
+                               opp-342000000 {
+                                       opp-hz = /bits/ 64 <342000000>;
+                                       opp-level = <RPM_SMD_LEVEL_LOW_SVS>;
+                                       opp-supported-hw = <0xFF>;
+                               };
+
+                               opp-257000000 {
+                                       opp-hz = /bits/ 64 <257000000>;
+                                       opp-level = <RPM_SMD_LEVEL_MIN_SVS>;
+                                       opp-supported-hw = <0xFF>;
+                               };
+                       };
+               };
+
+               adreno_smmu: iommu@5040000 {
+                       compatible = "qcom,msm8998-smmu-v2", "qcom,smmu-v2";
+                       reg = <0x05040000 0x10000>;
+                       clocks = <&gcc GCC_GPU_CFG_AHB_CLK>,
+                                <&gcc GCC_BIMC_GFX_CLK>,
+                                <&gcc GCC_GPU_BIMC_GFX_CLK>;
+                       clock-names = "iface", "mem", "mem_iface";
+
+                       #global-interrupts = <0>;
+                       #iommu-cells = <1>;
+                       interrupts =
+                               <GIC_SPI 329 IRQ_TYPE_LEVEL_HIGH>,
+                               <GIC_SPI 330 IRQ_TYPE_LEVEL_HIGH>,
+                               <GIC_SPI 331 IRQ_TYPE_LEVEL_HIGH>;
+                       /*
+                        * GPU-GX GDSC's parent is GPU-CX. We need to bring up the
+                        * GPU-CX for SMMU but we need both of them up for Adreno.
+                        * Contemporarily, we also need to manage the VDDMX rpmpd
+                        * domain in the Adreno driver.
+                        * Enable GPU CX/GX GDSCs here so that we can manage the
+                        * SoC VDDMX RPM Power Domain in the Adreno driver.
+                        */
+                       power-domains = <&gpucc GPU_GX_GDSC>;
+                       status = "disabled";
+               };
+
                gpucc: clock-controller@5065000 {
                        compatible = "qcom,msm8998-gpucc";
                        #clock-cells = <1>;
                        };
                };
 
+               sram@290000 {
+                       compatible = "qcom,rpm-stats";
+                       reg = <0x00290000 0x10000>;
+               };
+
                spmi_bus: spmi@800f000 {
                        compatible = "qcom,spmi-pmic-arb";
                        reg =   <0x0800f000 0x1000>,
                        compatible = "qcom,msm8998-qmp-usb3-phy";
                        reg = <0x0c010000 0x18c>;
                        status = "disabled";
-                       #clock-cells = <1>;
                        #address-cells = <1>;
                        #size-cells = <1>;
                        ranges;
                                 <&gcc GCC_USB3PHY_PHY_BCR>;
                        reset-names = "phy", "common";
 
-                       usb1_ssphy: lane@c010200 {
+                       usb1_ssphy: phy@c010200 {
                                reg = <0xc010200 0x128>,
                                      <0xc010400 0x200>,
                                      <0xc010c00 0x20c>,
                                      <0xc010600 0x128>,
                                      <0xc010800 0x200>;
                                #phy-cells = <0>;
+                               #clock-cells = <1>;
                                clocks = <&gcc GCC_USB3_PHY_PIPE_CLK>;
                                clock-names = "pipe0";
                                clock-output-names = "usb3_phy_pipe_clk_src";
                        #size-cells = <0>;
                };
 
-               blsp2_dma: dma@c184000 {
+               blsp2_dma: dma-controller@c184000 {
                        compatible = "qcom,bam-v1.7.0";
                        reg = <0x0c184000 0x25000>;
                        interrupts = <GIC_SPI 239 IRQ_TYPE_LEVEL_HIGH>;
                        #size-cells = <0>;
                };
 
+               mmcc: clock-controller@c8c0000 {
+                       compatible = "qcom,mmcc-msm8998";
+                       #clock-cells = <1>;
+                       #reset-cells = <1>;
+                       #power-domain-cells = <1>;
+                       reg = <0xc8c0000 0x40000>;
+                       status = "disabled";
+
+                       clock-names = "xo",
+                                     "gpll0",
+                                     "dsi0dsi",
+                                     "dsi0byte",
+                                     "dsi1dsi",
+                                     "dsi1byte",
+                                     "hdmipll",
+                                     "dplink",
+                                     "dpvco",
+                                     "core_bi_pll_test_se";
+                       clocks = <&rpmcc RPM_SMD_XO_CLK_SRC>,
+                                <&gcc GCC_MMSS_GPLL0_CLK>,
+                                <0>,
+                                <0>,
+                                <0>,
+                                <0>,
+                                <0>,
+                                <0>,
+                                <0>,
+                                <0>;
+               };
+
+               mmss_smmu: iommu@cd00000 {
+                       compatible = "qcom,msm8998-smmu-v2", "qcom,smmu-v2";
+                       reg = <0x0cd00000 0x40000>;
+                       #iommu-cells = <1>;
+
+                       clocks = <&mmcc MNOC_AHB_CLK>,
+                                <&mmcc BIMC_SMMU_AHB_CLK>,
+                                <&rpmcc RPM_SMD_MMAXI_CLK>,
+                                <&mmcc BIMC_SMMU_AXI_CLK>;
+                       clock-names = "iface-mm", "iface-smmu",
+                                     "bus-mm", "bus-smmu";
+                       status = "disabled";
+
+                       #global-interrupts = <0>;
+                       interrupts =
+                               <GIC_SPI 263 IRQ_TYPE_LEVEL_HIGH>,
+                               <GIC_SPI 266 IRQ_TYPE_LEVEL_HIGH>,
+                               <GIC_SPI 267 IRQ_TYPE_LEVEL_HIGH>,
+                               <GIC_SPI 268 IRQ_TYPE_LEVEL_HIGH>,
+                               <GIC_SPI 244 IRQ_TYPE_LEVEL_HIGH>,
+                               <GIC_SPI 245 IRQ_TYPE_LEVEL_HIGH>,
+                               <GIC_SPI 247 IRQ_TYPE_LEVEL_HIGH>,
+                               <GIC_SPI 248 IRQ_TYPE_LEVEL_HIGH>,
+                               <GIC_SPI 249 IRQ_TYPE_LEVEL_HIGH>,
+                               <GIC_SPI 250 IRQ_TYPE_LEVEL_HIGH>,
+                               <GIC_SPI 251 IRQ_TYPE_LEVEL_HIGH>,
+                               <GIC_SPI 252 IRQ_TYPE_LEVEL_HIGH>,
+                               <GIC_SPI 253 IRQ_TYPE_LEVEL_HIGH>,
+                               <GIC_SPI 254 IRQ_TYPE_LEVEL_HIGH>,
+                               <GIC_SPI 255 IRQ_TYPE_LEVEL_HIGH>,
+                               <GIC_SPI 256 IRQ_TYPE_LEVEL_HIGH>,
+                               <GIC_SPI 260 IRQ_TYPE_LEVEL_HIGH>,
+                               <GIC_SPI 261 IRQ_TYPE_LEVEL_HIGH>,
+                               <GIC_SPI 262 IRQ_TYPE_LEVEL_HIGH>,
+                               <GIC_SPI 272 IRQ_TYPE_LEVEL_HIGH>;
+               };
+
                remoteproc_adsp: remoteproc@17300000 {
                        compatible = "qcom,msm8998-adsp-pas";
                        reg = <0x17300000 0x4040>;
index b49860c..3ca2860 100644 (file)
@@ -1,6 +1,7 @@
 // SPDX-License-Identifier: BSD-3-Clause
 // Copyright (c) 2019, The Linux Foundation. All rights reserved.
 
+#include <dt-bindings/iio/qcom,spmi-vadc.h>
 #include <dt-bindings/interrupt-controller/irq.h>
 #include <dt-bindings/spmi/spmi.h>
 
diff --git a/arch/arm64/boot/dts/qcom/pm6350.dtsi b/arch/arm64/boot/dts/qcom/pm6350.dtsi
new file mode 100644 (file)
index 0000000..c5d8506
--- /dev/null
@@ -0,0 +1,54 @@
+// SPDX-License-Identifier: BSD-3-Clause
+/*
+ * Copyright (c) 2021, Luca Weiss <luca@z3ntu.xyz>
+ */
+
+#include <dt-bindings/spmi/spmi.h>
+
+&spmi_bus {
+       pmic@0 {
+               compatible = "qcom,pm6350", "qcom,spmi-pmic";
+               reg = <0x0 SPMI_USID>;
+               #address-cells = <1>;
+               #size-cells = <0>;
+
+               pm6350_pon: pon@800 {
+                       compatible = "qcom,pm8998-pon";
+                       reg = <0x800>;
+                       mode-bootloader = <0x2>;
+                       mode-recovery = <0x1>;
+
+                       pm6350_pwrkey: pwrkey {
+                               compatible = "qcom,pm8941-pwrkey";
+                               interrupts = <0x0 0x8 0x0 IRQ_TYPE_EDGE_BOTH>;
+                               debounce = <15625>;
+                               bias-pull-up;
+                               linux,code = <KEY_POWER>;
+                       };
+
+                       pm6350_resin: resin {
+                               compatible = "qcom,pm8941-resin";
+                               interrupts = <0x0 0x8 0x1 IRQ_TYPE_EDGE_BOTH>;
+                               debounce = <15625>;
+                               bias-pull-up;
+                               status = "disabled";
+                       };
+               };
+
+               pm6350_gpios: gpios@c000 {
+                       compatible = "qcom,pm6350-gpio";
+                       reg = <0xc000>;
+                       gpio-controller;
+                       #gpio-cells = <2>;
+                       interrupt-controller;
+                       #interrupt-cells = <2>;
+               };
+       };
+
+       pmic@1 {
+               compatible = "qcom,pm6350", "qcom,spmi-pmic";
+               reg = <0x1 SPMI_USID>;
+               #address-cells = <1>;
+               #size-cells = <0>;
+       };
+};
index e847d72..d0ef8a1 100644 (file)
                };
 
                pon: pon@800 {
-                       compatible = "qcom,pm8916-pon";
-
+                       compatible = "qcom,pm8998-pon";
                        reg = <0x800>;
+                       mode-bootloader = <0x2>;
+                       mode-recovery = <0x1>;
 
                        pwrkey {
                                compatible = "qcom,pm8941-pwrkey";
index 05086cb..cfef423 100644 (file)
                        interrupt-names = "ovp";
                        label = "backlight";
 
-                       qcom,switching-freq = <800>;
-                       qcom,ovp-millivolt = <29600>;
-                       qcom,current-boost-limit = <970>;
-                       qcom,current-limit-microamp = <20000>;
-                       qcom,num-strings = <2>;
-                       qcom,enabled-strings = <0 1>;
-
                        status = "disabled";
                };
 
index f931cb0..d589024 100644 (file)
                        };
                };
 
+               pm8916_usbin: extcon@1300 {
+                       compatible = "qcom,pm8941-misc";
+                       reg = <0x1300>;
+                       interrupts = <0x0 0x13 1 IRQ_TYPE_EDGE_BOTH>;
+                       interrupt-names = "usb_vbus";
+                       status = "disabled";
+               };
+
                pm8916_temp: temp-alarm@2400 {
                        compatible = "qcom,spmi-temp-alarm";
                        reg = <0x2400>;
                rtc@6000 {
                        compatible = "qcom,pm8941-rtc";
                        reg = <0x6000>;
-                       reg-names = "rtc", "alarm";
                        interrupts = <0x0 0x61 0x1 IRQ_TYPE_EDGE_RISING>;
                };
 
                pm8916_mpps: mpps@a000 {
-                       compatible = "qcom,pm8916-mpp";
+                       compatible = "qcom,pm8916-mpp", "qcom,spmi-mpp";
                        reg = <0xa000>;
                        gpio-controller;
                        #gpio-cells = <2>;
-                       interrupts = <0 0xa0 0 IRQ_TYPE_NONE>,
-                                    <0 0xa1 0 IRQ_TYPE_NONE>,
-                                    <0 0xa2 0 IRQ_TYPE_NONE>,
-                                    <0 0xa3 0 IRQ_TYPE_NONE>;
+                       gpio-ranges = <&pm8916_mpps 0 0 4>;
+                       interrupt-controller;
+                       #interrupt-cells = <2>;
                };
 
                pm8916_gpios: gpios@c000 {
index ad19016..5ab4611 100644 (file)
                };
 
                pm8994_mpps: mpps@a000 {
-                       compatible = "qcom,pm8994-mpp";
+                       compatible = "qcom,pm8994-mpp", "qcom,spmi-mpp";
                        reg = <0xa000>;
                        gpio-controller;
                        #gpio-cells = <2>;
-                       interrupts = <0 0xa0 0 IRQ_TYPE_NONE>,
-                                    <0 0xa1 0 IRQ_TYPE_NONE>,
-                                    <0 0xa2 0 IRQ_TYPE_NONE>,
-                                    <0 0xa3 0 IRQ_TYPE_NONE>,
-                                    <0 0xa4 0 IRQ_TYPE_NONE>,
-                                    <0 0xa5 0 IRQ_TYPE_NONE>,
-                                    <0 0xa6 0 IRQ_TYPE_NONE>,
-                                    <0 0xa7 0 IRQ_TYPE_NONE>;
+                       gpio-ranges = <&pm8994_mpps 0 0 8>;
+                       interrupt-controller;
+                       #interrupt-cells = <2>;
                };
        };
 
index b4ac900..6e7c252 100644 (file)
                        reg = <0xd800 0xd900>;
                        interrupts = <3 0xd8 0x02 IRQ_TYPE_EDGE_RISING>;
                        interrupt-names = "short";
-                       qcom,num-strings = <3>;
-                       /* Yes, all four strings *have to* be defined or things won't work. */
-                       qcom,enabled-strings = <0 1 2 3>;
                        qcom,cabc;
-                       qcom,eternal-pfet;
+                       qcom,external-pfet;
                        status = "disabled";
                };
        };
index d230c51..0fef5f1 100644 (file)
                                interrupt-names = "sc-err", "ocp";
                        };
                };
+
+               pmi8998_wled: leds@d800 {
+                       compatible = "qcom,pmi8998-wled";
+                       reg = <0xd800 0xd900>;
+                       interrupts = <0x3 0xd8 0x1 IRQ_TYPE_EDGE_RISING>,
+                                    <0x3 0xd8 0x2 IRQ_TYPE_EDGE_RISING>;
+                       interrupt-names = "ovp", "short";
+                       label = "backlight";
+
+                       status = "disabled";
+               };
+
        };
 };
index 04fc263..769f972 100644 (file)
@@ -59,6 +59,7 @@
                        reg = <0x6100>, <0x6200>;
                        reg-names = "rtc", "alarm";
                        interrupts = <0x0 0x62 0x1 IRQ_TYPE_EDGE_RISING>;
+                       status = "disabled";
                };
 
                pmk8350_gpios: gpio@b000 {
index 339790b..6db753b 100644 (file)
                        status = "disabled";
                };
 
-               rpm_msg_ram: memory@60000 {
+               rpm_msg_ram: sram@60000 {
                        compatible = "qcom,rpm-msg-ram";
                        reg = <0x00060000 0x6000>;
                };
                        reg = <0x01937000 0x25000>;
                };
 
+               sram@290000 {
+                       compatible = "qcom,rpm-stats";
+                       reg = <0x00290000 0x10000>;
+               };
+
                spmi_bus: spmi@200f000 {
                        compatible = "qcom,spmi-pmic-arb";
                        reg = <0x0200f000 0x001000>,
index 28d5b55..845eb7a 100644 (file)
@@ -16,6 +16,8 @@
 / {
        model = "Qualcomm Technologies, Inc. Robotics RB5";
        compatible = "qcom,qrb5165-rb5", "qcom,sm8250";
+       qcom,msm-id = <455 0x20001>;
+       qcom,board-id = <11 3>;
 
        aliases {
                serial0 = &uart12;
        status = "okay";
 
        vdda-phy-supply = <&vreg_l5a_0p88>;
-       vdda-max-microamp = <89900>;
        vdda-pll-supply = <&vreg_l9a_1p2>;
-       vdda-pll-max-microamp = <18800>;
 };
 
 &usb_1 {
index 5ae2ddc..8756c2b 100644 (file)
        status = "okay";
 };
 
+&remoteproc_adsp {
+       status = "okay";
+       firmware-name = "qcom/sa8155p/adsp.mdt";
+};
+
+&remoteproc_cdsp {
+       status = "okay";
+       firmware-name = "qcom/sa8155p/cdsp.mdt";
+};
+
 &uart2 {
        status = "okay";
 };
        status = "okay";
 
        vdda-phy-supply = <&vreg_l8c_1p2>;
-       vdda-max-microamp = <87100>;
        vdda-pll-supply = <&vreg_l5a_0p88>;
-       vdda-pll-max-microamp = <18300>;
 };
 
 &usb_1 {
index 21b516e..8290d03 100644 (file)
        status = "disabled";
 };
 
+&pm6150_adc {
+       status = "disabled";
+
+       /delete-node/ skin-temp-thermistor@4e;
+       /delete-node/ charger-thermistor@4f;
+};
+
+&pm6150_adc_tm {
+       status = "disabled";
+
+       /delete-node/ charger-thermistor@0;
+       /delete-node/ skin-temp-thermistor@1;
+};
+
 /*
  * CoachZ rev1 is stuffed with a 47k NTC as thermistor for skin temperature,
  * which currently is not supported by the PM6150 ADC driver. Disable the
index a758e4d..14ed09f 100644 (file)
@@ -11,6 +11,7 @@ ap_ec_spi: &spi6 {};
 ap_h1_spi: &spi0 {};
 
 #include "sc7180-trogdor.dtsi"
+#include "sc7180-trogdor-ti-sn65dsi86.dtsi"
 
 /* Deleted nodes from trogdor.dtsi */
 
@@ -33,7 +34,7 @@ ap_h1_spi: &spi0 {};
                        polling-delay = <0>;
 
                        thermal-sensors = <&pm6150_adc_tm 1>;
-                       sustainable-power = <814>;
+                       sustainable-power = <965>;
 
                        trips {
                                skin_temp_alert0: trip-point0 {
diff --git a/arch/arm64/boot/dts/qcom/sc7180-trogdor-homestar-r2.dts b/arch/arm64/boot/dts/qcom/sc7180-trogdor-homestar-r2.dts
new file mode 100644 (file)
index 0000000..db6c2da
--- /dev/null
@@ -0,0 +1,20 @@
+// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
+/*
+ * Google Homestar board device tree source
+ *
+ * Copyright 2021 Google LLC.
+ */
+
+/dts-v1/;
+
+#include "sc7180-trogdor-homestar.dtsi"
+
+/ {
+       model = "Google Homestar (rev2)";
+       compatible = "google,homestar-rev2","google,homestar-rev23", "qcom,sc7180";
+};
+
+&panel {
+       /delete-property/hpd-gpios;
+       no-hpd;
+};
diff --git a/arch/arm64/boot/dts/qcom/sc7180-trogdor-homestar-r3.dts b/arch/arm64/boot/dts/qcom/sc7180-trogdor-homestar-r3.dts
new file mode 100644 (file)
index 0000000..3fd8aa5
--- /dev/null
@@ -0,0 +1,15 @@
+// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
+/*
+ * Google Homestar board device tree source
+ *
+ * Copyright 2021 Google LLC.
+ */
+
+/dts-v1/;
+
+#include "sc7180-trogdor-homestar.dtsi"
+
+/ {
+       model = "Google Homestar (rev3+)";
+       compatible = "google,homestar", "qcom,sc7180";
+};
diff --git a/arch/arm64/boot/dts/qcom/sc7180-trogdor-homestar.dtsi b/arch/arm64/boot/dts/qcom/sc7180-trogdor-homestar.dtsi
new file mode 100644 (file)
index 0000000..4ab890b
--- /dev/null
@@ -0,0 +1,336 @@
+// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
+/*
+ * Google Homestar board device tree source
+ *
+ * Copyright 2021 Google LLC.
+ */
+
+#include "sc7180.dtsi"
+
+ap_ec_spi: &spi6 {};
+ap_h1_spi: &spi0 {};
+
+#include "sc7180-trogdor.dtsi"
+#include "sc7180-trogdor-ti-sn65dsi86.dtsi"
+
+/ {
+       /* BOARD-SPECIFIC TOP LEVEL NODES */
+
+       max98360a_1: max98360a_1 {
+               compatible = "maxim,max98360a";
+               #sound-dai-cells = <0>;
+       };
+
+       max98360a_2: max98360a_2 {
+               compatible = "maxim,max98360a";
+               #sound-dai-cells = <0>;
+       };
+
+       max98360a_3: max98360a_3 {
+               compatible = "maxim,max98360a";
+               #sound-dai-cells = <0>;
+       };
+
+       pp3300_touch: pp3300-touch {
+               compatible = "regulator-fixed";
+               regulator-name = "pp3300_touch";
+
+               regulator-min-microvolt = <3300000>;
+               regulator-max-microvolt = <3300000>;
+
+               gpio = <&tlmm 87 GPIO_ACTIVE_HIGH>;
+               enable-active-high;
+               pinctrl-names = "default";
+               pinctrl-0 = <&en_pp3300_touch>;
+
+               vin-supply = <&pp3300_a>;
+       };
+
+       thermal-zones {
+               skin_temp_thermal: skin-temp-thermal {
+                       polling-delay-passive = <250>;
+                       polling-delay = <0>;
+
+                       thermal-sensors = <&pm6150_adc_tm 1>;
+                       sustainable-power = <965>;
+
+                       trips {
+                               skin_temp_alert0: trip-point0 {
+                                       temperature = <55000>;
+                                       hysteresis = <1000>;
+                                       type = "passive";
+                               };
+
+                               skin_temp_alert1: trip-point1 {
+                                       temperature = <58000>;
+                                       hysteresis = <1000>;
+                                       type = "passive";
+                               };
+
+                               skin-temp-crit {
+                                       temperature = <73000>;
+                                       hysteresis = <1000>;
+                                       type = "critical";
+                               };
+                       };
+
+                       cooling-maps {
+                               map0 {
+                                       trip = <&skin_temp_alert0>;
+                                       cooling-device = <&CPU6 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
+                                                        <&CPU7 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>;
+                               };
+
+                               map1 {
+                                       trip = <&skin_temp_alert1>;
+                                       cooling-device = <&CPU6 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
+                                                        <&CPU7 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>;
+                               };
+                       };
+               };
+       };
+};
+
+&ap_tp_i2c {
+       status = "disabled";
+};
+
+ap_ts_pen_1v8: &i2c4 {
+       status = "okay";
+       clock-frequency = <400000>;
+
+       ap_ts: touchscreen@14 {
+               compatible = "goodix,gt7375p";
+               reg = <0x14>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&ts_int_l>, <&ts_reset_l>;
+
+               interrupt-parent = <&tlmm>;
+               interrupts = <9 IRQ_TYPE_LEVEL_LOW>;
+
+               reset-gpios = <&tlmm 8 GPIO_ACTIVE_LOW>;
+
+               vdd-supply = <&pp3300_touch>;
+       };
+};
+
+/* Panel controls backlight over aux channel */
+
+&backlight {
+       status = "disabled";
+};
+
+&camcc {
+       status = "okay";
+};
+
+&panel {
+       compatible = "samsung,atna33xc20";
+       enable-gpios = <&tlmm 12 GPIO_ACTIVE_HIGH>;
+       /delete-property/ backlight;
+};
+
+&pm6150_adc {
+       skin-temp-thermistor@4d {
+               reg = <ADC5_AMUX_THM1_100K_PU>;
+               qcom,ratiometric;
+               qcom,hw-settle-time = <200>;
+       };
+};
+
+&pm6150_adc_tm {
+       status = "okay";
+
+       skin-temp-thermistor@1 {
+               reg = <1>;
+               io-channels = <&pm6150_adc ADC5_AMUX_THM1_100K_PU>;
+               qcom,ratiometric;
+               qcom,hw-settle-time-us = <200>;
+       };
+};
+
+&pp3300_dx_edp {
+       gpio = <&tlmm 67 GPIO_ACTIVE_HIGH>;
+};
+
+&secondary_mi2s {
+       qcom,playback-sd-lines = <0 1>;
+};
+
+&sound_multimedia1_codec {
+       sound-dai = <&max98360a>, <&max98360a_1>, <&max98360a_2>, <&max98360a_3> ;
+};
+
+&wifi {
+       qcom,ath10k-calibration-variant = "GO_HOMESTAR";
+};
+
+/* PINCTRL - modifications to sc7180-trogdor.dtsi */
+
+&en_pp3300_dx_edp {
+       pinmux {
+               pins = "gpio67";
+       };
+
+       pinconf {
+               pins = "gpio67";
+       };
+};
+
+&sec_mi2s_active{
+       pinmux {
+               pins = "gpio49", "gpio50", "gpio51", "gpio52";
+               function = "mi2s_1";
+       };
+};
+
+&ts_reset_l {
+       pinconf {
+               /*
+                * We want reset state by default and it will be up to the
+                * driver to disable this when it's ready.
+                */
+               output-low;
+       };
+};
+
+/* PINCTRL - board-specific pinctrl */
+
+&tlmm {
+       gpio-line-names = "HUB_RST_L",
+                         "AP_RAM_ID0",
+                         "AP_SKU_ID2",
+                         "AP_RAM_ID1",
+                         "",
+                         "AP_RAM_ID2",
+                         "UF_CAM_EN",
+                         "WF_CAM_EN",
+                         "TS_RESET_L",
+                         "TS_INT_L",
+                         "",
+                         "EDP_BRIJ_IRQ",
+                         "AP_EDP_BKLTEN",
+                         "UF_CAM_MCLK",
+                         "WF_CAM_CLK",
+                         "EDP_BRIJ_I2C_SDA",
+                         "EDP_BRIJ_I2C_SCL",
+                         "UF_CAM_SDA",
+                         "UF_CAM_SCL",
+                         "WF_CAM_SDA",
+                         "WF_CAM_SCL",
+                         "AVEE_LCD_EN",
+                         "",
+                         "AMP_EN",
+                         "AMP_EN2",
+                         "AP_SAR_SENSOR_SDA",
+                         "AP_SAR_SENSOR_SCL",
+                         "SEL_LCM",
+                         "HP_IRQ",
+                         "WF_CAM_RST_L",
+                         "UF_CAM_RST_L",
+                         "AP_BRD_ID2",
+                         "BRIJ_SUSPEND",
+                         "AP_BRD_ID0",
+                         "AP_H1_SPI_MISO",
+                         "AP_H1_SPI_MOSI",
+                         "AP_H1_SPI_CLK",
+                         "AP_H1_SPI_CS_L",
+                         "BT_UART_CTS",
+                         "BT_UART_RTS",
+                         "BT_UART_TXD",
+                         "BT_UART_RXD",
+                         "H1_AP_INT_ODL",
+                         "",
+                         "UART_AP_TX_DBG_RX",
+                         "UART_DBG_TX_AP_RX",
+                         "HP_I2C_SDA",
+                         "HP_I2C_SCL",
+                         "FORCED_USB_BOOT",
+                         "AMP_BCLK",
+                         "AMP_LRCLK",
+                         "AMP_DIN",
+                         "AMP_DIN_2",
+                         "HP_BCLK",
+                         "HP_LRCLK",
+                         "HP_DOUT",
+                         "HP_DIN",
+                         "HP_MCLK",
+                         "AP_SKU_ID0",
+                         "AP_EC_SPI_MISO",
+                         "AP_EC_SPI_MOSI",
+                         "AP_EC_SPI_CLK",
+                         "AP_EC_SPI_CS_L",
+                         "AP_SPI_CLK",
+                         "AP_SPI_MOSI",
+                         "AP_SPI_MISO",
+                         /*
+                          * AP_FLASH_WP_L is crossystem ABI. Schematics
+                          * call it BIOS_FLASH_WP_L.
+                          */
+                         "AP_FLASH_WP_L",
+                         "EN_PP3300_DX_EDP",
+                         "AP_SPI_CS0_L",
+                         "SD_CD_ODL",
+                         "",
+                         "",
+                         "",
+                         "WLAN_SW_CTRL",
+                         "",
+                         "REPORT_E",
+                         "VDD_RESET_1.8V",
+                         "ID0",
+                         "",
+                         "ID1",
+                         "AVDD_LCD_EN",
+                         "MIPI_1.8V_EN",
+                         "",
+                         "CODEC_PWR_EN",
+                         "HUB_EN",
+                         "",
+                         "PP1800_MIPI_SW_EN",
+                         "EN_PP3300_TOUCH",
+                         "",
+                         "",
+                         "AP_SKU_ID1",
+                         "AP_RST_REQ",
+                         "",
+                         "AP_BRD_ID1",
+                         "AP_EC_INT_L",
+                         "SDM_GRFC_3",
+                         "",
+                         "",
+                         "BOOT_CONFIG_4",
+                         "BOOT_CONFIG_2",
+                         "",
+                         "",
+                         "",
+                         "",
+                         "EDP_BRIJ_EN",
+                         "",
+                         "",
+                         "BOOT_CONFIG_3",
+                         "WCI2_LTE_COEX_TXD",
+                         "WCI2_LTE_COEX_RXD",
+                         "",
+                         "",
+                         "",
+                         "",
+                         "FORCED_USB_BOOT_POL",
+                         "AP_TS_PEN_I2C_SDA",
+                         "AP_TS_PEN_I2C_SCL",
+                         "DP_HOT_PLUG_DET",
+                         "EC_IN_RW_ODL";
+
+       en_pp3300_touch: en-pp3300-touch {
+               pinmux {
+                       pins = "gpio87";
+                       function = "gpio";
+               };
+
+               pinconf {
+                       pins = "gpio87";
+                       drive-strength = <2>;
+                       bias-disable;
+               };
+       };
+};
index 00535aa..8b79fbb 100644 (file)
@@ -11,6 +11,7 @@ ap_ec_spi: &spi6 {};
 ap_h1_spi: &spi0 {};
 
 #include "sc7180-trogdor.dtsi"
+#include "sc7180-trogdor-ti-sn65dsi86.dtsi"
 
 &ap_sar_sensor {
        semtech,cs0-ground;
@@ -54,6 +55,18 @@ ap_ts_pen_1v8: &i2c4 {
        compatible = "boe,nv133fhm-n62";
 };
 
+&pm6150_adc {
+       status = "disabled";
+
+       /delete-node/ charger-thermistor@4f;
+};
+
+&pm6150_adc_tm {
+       status = "disabled";
+
+       /delete-node/ charger-thermistor@0;
+};
+
 &trackpad {
        interrupts = <58 IRQ_TYPE_EDGE_FALLING>;
 };
index 469aad4..fd4b712 100644 (file)
        firmware-name = "qcom/sc7180-trogdor/modem/mba.mbn",
                        "qcom/sc7180-trogdor/modem/qdsp6sw.mbn";
 };
+
+&ipa {
+       status = "okay";
+
+       /*
+        * Trogdor doesn't have QHEE (Qualcomm's EL2 blob), so the
+        * modem needs to cover certain init steps (GSI init), and
+        * the AP needs to wait for it.
+        */
+       modem-init;
+};
diff --git a/arch/arm64/boot/dts/qcom/sc7180-trogdor-parade-ps8640.dtsi b/arch/arm64/boot/dts/qcom/sc7180-trogdor-parade-ps8640.dtsi
new file mode 100644 (file)
index 0000000..a3d6954
--- /dev/null
@@ -0,0 +1,109 @@
+// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
+/*
+ * Google Trogdor dts fragment for the boards with Parade ps8640 edp bridge
+ *
+ * Copyright 2021 Google LLC.
+ */
+
+/ {
+       pp3300_brij_ps8640: pp3300-brij-ps8640 {
+               compatible = "regulator-fixed";
+               status = "okay";
+               regulator-name = "pp3300_brij_ps8640";
+
+               regulator-min-microvolt = <3300000>;
+               regulator-max-microvolt = <3300000>;
+
+               gpio = <&tlmm 32 GPIO_ACTIVE_HIGH>;
+               enable-active-high;
+
+               pinctrl-names = "default";
+               pinctrl-0 = <&en_pp3300_edp_brij_ps8640>;
+
+               vin-supply = <&pp3300_a>;
+       };
+};
+
+&dsi0_out {
+       remote-endpoint = <&ps8640_in>;
+};
+
+edp_brij_i2c: &i2c2 {
+       status = "okay";
+       clock-frequency = <400000>;
+
+       ps8640_bridge: bridge@8 {
+               compatible = "parade,ps8640";
+               reg = <0x8>;
+
+               powerdown-gpios = <&tlmm 104 GPIO_ACTIVE_LOW>;
+               reset-gpios = <&tlmm 11 GPIO_ACTIVE_LOW>;
+
+               pinctrl-names = "default";
+               pinctrl-0 = <&edp_brij_en>, <&edp_brij_ps8640_rst>;
+
+               vdd12-supply = <&pp1200_brij>;
+               vdd33-supply = <&pp3300_brij_ps8640>;
+
+               ports {
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+
+                       port@0 {
+                               reg = <0>;
+                               ps8640_in: endpoint {
+                                       remote-endpoint = <&dsi0_out>;
+                               };
+                       };
+
+                       port@1 {
+                               reg = <1>;
+                               ps8640_out: endpoint {
+                                       remote-endpoint = <&panel_in_edp>;
+                               };
+                       };
+               };
+
+               aux-bus {
+                       panel: panel {
+                               /* Compatible will be filled in per-board */
+                               power-supply = <&pp3300_dx_edp>;
+                               backlight = <&backlight>;
+
+                               port {
+                                       panel_in_edp: endpoint {
+                                               remote-endpoint = <&ps8640_out>;
+                                       };
+                               };
+                       };
+               };
+       };
+};
+
+&tlmm {
+       edp_brij_ps8640_rst: edp-brij-ps8640-rst {
+               pinmux {
+                       pins = "gpio11";
+                       function = "gpio";
+               };
+
+               pinconf {
+                       pins = "gpio11";
+                       drive-strength = <2>;
+                       bias-disable;
+               };
+       };
+
+       en_pp3300_edp_brij_ps8640: en-pp3300-edp-brij-ps8640 {
+               pinmux {
+                       pins = "gpio32";
+                       function = "gpio";
+               };
+
+               pinconf {
+                       pins = "gpio32";
+                       drive-strength = <2>;
+                       bias-disable;
+               };
+       };
+};
index e122a6b..76a130b 100644 (file)
        status = "disabled";
 };
 
+&pm6150_adc {
+       /delete-node/ charger-thermistor@4f;
+};
+
+&pm6150_adc_tm {
+       /delete-node/ charger-thermistor@0;
+};
+
 &pp3300_hub {
        /* pp3300_l7c is used to power the USB hub */
        /delete-property/regulator-always-on;
index 4f32e67..88cf224 100644 (file)
 &charger_thermal {
        status = "disabled";
 };
+
+&pm6150_adc {
+       /delete-node/ charger-thermistor@4f;
+};
+
+&pm6150_adc_tm {
+       /delete-node/ charger-thermistor@0;
+};
index a246dbd..e90f99e 100644 (file)
@@ -11,6 +11,7 @@ ap_ec_spi: &spi6 {};
 ap_h1_spi: &spi0 {};
 
 #include "sc7180-trogdor.dtsi"
+#include "sc7180-trogdor-ti-sn65dsi86.dtsi"
 
 / {
        thermal-zones {
@@ -44,7 +45,7 @@ ap_h1_spi: &spi0 {};
 };
 
 &cpu6_thermal {
-       sustainable-power = <948>;
+       sustainable-power = <1124>;
 };
 
 &cpu7_alert0 {
@@ -56,7 +57,7 @@ ap_h1_spi: &spi0 {};
 };
 
 &cpu7_thermal {
-       sustainable-power = <948>;
+       sustainable-power = <1124>;
 };
 
 &cpu8_alert0 {
@@ -68,7 +69,7 @@ ap_h1_spi: &spi0 {};
 };
 
 &cpu8_thermal {
-       sustainable-power = <948>;
+       sustainable-power = <1124>;
 };
 
 &cpu9_alert0 {
@@ -80,7 +81,7 @@ ap_h1_spi: &spi0 {};
 };
 
 &cpu9_thermal {
-       sustainable-power = <948>;
+       sustainable-power = <1124>;
 };
 
 &gpio_keys {
index 2b522f9..457c254 100644 (file)
@@ -13,6 +13,7 @@ ap_ec_spi: &spi6 {};
 ap_h1_spi: &spi0 {};
 
 #include "sc7180-trogdor.dtsi"
+#include "sc7180-trogdor-ti-sn65dsi86.dtsi"
 
 / {
        model = "Google Trogdor (rev1+)";
diff --git a/arch/arm64/boot/dts/qcom/sc7180-trogdor-ti-sn65dsi86.dtsi b/arch/arm64/boot/dts/qcom/sc7180-trogdor-ti-sn65dsi86.dtsi
new file mode 100644 (file)
index 0000000..97d5e45
--- /dev/null
@@ -0,0 +1,90 @@
+// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
+/*
+ * Google Trogdor dts fragment for the boards with TI sn65dsi86 edp bridge
+ *
+ * Copyright 2021 Google LLC.
+ */
+
+&dsi0_out {
+       remote-endpoint = <&sn65dsi86_in>;
+       data-lanes = <0 1 2 3>;
+};
+
+edp_brij_i2c: &i2c2 {
+       status = "okay";
+       clock-frequency = <400000>;
+
+       sn65dsi86_bridge: bridge@2d {
+               compatible = "ti,sn65dsi86";
+               reg = <0x2d>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&edp_brij_en>, <&edp_brij_irq>;
+               gpio-controller;
+               #gpio-cells = <2>;
+
+               interrupt-parent = <&tlmm>;
+               interrupts = <11 IRQ_TYPE_LEVEL_HIGH>;
+
+               enable-gpios = <&tlmm 104 GPIO_ACTIVE_HIGH>;
+
+               vpll-supply = <&pp1800_edp_vpll>;
+               vccio-supply = <&pp1800_brij_vccio>;
+               vcca-supply = <&pp1200_brij>;
+               vcc-supply = <&pp1200_brij>;
+
+               clocks = <&rpmhcc RPMH_LN_BB_CLK3>;
+               clock-names = "refclk";
+
+               no-hpd;
+
+               ports {
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+
+                       port@0 {
+                               reg = <0>;
+                               sn65dsi86_in: endpoint {
+                                       remote-endpoint = <&dsi0_out>;
+                               };
+                       };
+
+                       port@1 {
+                               reg = <1>;
+                               sn65dsi86_out: endpoint {
+                                       data-lanes = <0 1>;
+                                       remote-endpoint = <&panel_in_edp>;
+                               };
+                       };
+               };
+
+               aux-bus {
+                       panel: panel {
+                               /* Compatible will be filled in per-board */
+                               power-supply = <&pp3300_dx_edp>;
+                               backlight = <&backlight>;
+                               hpd-gpios = <&sn65dsi86_bridge 2 GPIO_ACTIVE_HIGH>;
+
+                               port {
+                                       panel_in_edp: endpoint {
+                                               remote-endpoint = <&sn65dsi86_out>;
+                                       };
+                               };
+                       };
+               };
+       };
+};
+
+&tlmm {
+       edp_brij_irq: edp-brij-irq {
+               pinmux {
+                       pins = "gpio11";
+                       function = "gpio";
+               };
+
+               pinconf {
+                       pins = "gpio11";
+                       drive-strength = <2>;
+                       bias-pull-down;
+               };
+       };
+};
index 70c88c3..d4f4441 100644 (file)
 &dsi0 {
        status = "okay";
        vdda-supply = <&vdda_mipi_dsi0_1p2>;
-
-       ports {
-               port@1 {
-                       endpoint {
-                               remote-endpoint = <&sn65dsi86_in>;
-                               data-lanes = <0 1 2 3>;
-                       };
-               };
-       };
 };
 
 &dsi_phy {
        vdds-supply = <&vdda_mipi_dsi0_pll>;
 };
 
-edp_brij_i2c: &i2c2 {
-       status = "okay";
-       clock-frequency = <400000>;
-
-       sn65dsi86_bridge: bridge@2d {
-               compatible = "ti,sn65dsi86";
-               reg = <0x2d>;
-               pinctrl-names = "default";
-               pinctrl-0 = <&edp_brij_en>, <&edp_brij_irq>;
-               gpio-controller;
-               #gpio-cells = <2>;
-
-               interrupt-parent = <&tlmm>;
-               interrupts = <11 IRQ_TYPE_LEVEL_HIGH>;
-
-               enable-gpios = <&tlmm 104 GPIO_ACTIVE_HIGH>;
-
-               vpll-supply = <&pp1800_edp_vpll>;
-               vccio-supply = <&pp1800_brij_vccio>;
-               vcca-supply = <&pp1200_brij>;
-               vcc-supply = <&pp1200_brij>;
-
-               clocks = <&rpmhcc RPMH_LN_BB_CLK3>;
-               clock-names = "refclk";
-
-               no-hpd;
-
-               ports {
-                       #address-cells = <1>;
-                       #size-cells = <0>;
-
-                       port@0 {
-                               reg = <0>;
-                               sn65dsi86_in: endpoint {
-                                       remote-endpoint = <&dsi0_out>;
-                               };
-                       };
-
-                       port@1 {
-                               reg = <1>;
-                               sn65dsi86_out: endpoint {
-                                       data-lanes = <0 1>;
-                                       remote-endpoint = <&panel_in_edp>;
-                               };
-                       };
-               };
-
-               aux-bus {
-                       panel: panel {
-                               /* Compatible will be filled in per-board */
-                               power-supply = <&pp3300_dx_edp>;
-                               backlight = <&backlight>;
-                               hpd-gpios = <&sn65dsi86_bridge 2 GPIO_ACTIVE_HIGH>;
-
-                               port {
-                                       panel_in_edp: endpoint {
-                                               remote-endpoint = <&sn65dsi86_out>;
-                                       };
-                               };
-                       };
-               };
-       };
-};
-
 ap_sar_sensor_i2c: &i2c5 {
        clock-frequency = <400000>;
 
@@ -750,17 +677,6 @@ hp_i2c: &i2c9 {
        };
 };
 
-&ipa {
-       status = "okay";
-
-       /*
-        * Trogdor doesn't have QHEE (Qualcomm's EL2 blob), so the
-        * modem needs to cover certain init steps (GSI init), and
-        * the AP needs to wait for it.
-        */
-       modem-init;
-};
-
 &lpass_cpu {
        status = "okay";
 
@@ -1244,19 +1160,6 @@ ap_spi_fp: &spi10 {
                };
        };
 
-       edp_brij_irq: edp-brij-irq {
-               pinmux {
-                       pins = "gpio11";
-                       function = "gpio";
-               };
-
-               pinconf {
-                       pins = "gpio11";
-                       drive-strength = <2>;
-                       bias-pull-down;
-               };
-       };
-
        en_pp3300_codec: en-pp3300-codec {
                pinmux {
                        pins = "gpio83";
@@ -1523,13 +1426,13 @@ ap_spi_fp: &spi10 {
                pinconf-cmd {
                        pins = "sdc1_cmd";
                        bias-pull-up;
-                       drive-strength = <10>;
+                       drive-strength = <16>;
                };
 
                pinconf-data {
                        pins = "sdc1_data";
                        bias-pull-up;
-                       drive-strength = <10>;
+                       drive-strength = <16>;
                };
 
                pinconf-rclk {
index c8921e2..faf8b80 100644 (file)
@@ -15,7 +15,6 @@
 #include <dt-bindings/interconnect/qcom,sc7180.h>
 #include <dt-bindings/interrupt-controller/arm-gic.h>
 #include <dt-bindings/phy/phy-qcom-qusb2.h>
-#include <dt-bindings/power/qcom-aoss-qmp.h>
 #include <dt-bindings/power/qcom-rpmpd.h>
 #include <dt-bindings/reset/qcom,sdm845-aoss.h>
 #include <dt-bindings/reset/qcom,sdm845-pdc.h>
                        cpu-idle-states = <&LITTLE_CPU_SLEEP_0
                                           &LITTLE_CPU_SLEEP_1
                                           &CLUSTER_SLEEP_0>;
-                       capacity-dmips-mhz = <1024>;
-                       dynamic-power-coefficient = <100>;
+                       capacity-dmips-mhz = <415>;
+                       dynamic-power-coefficient = <137>;
                        operating-points-v2 = <&cpu0_opp_table>;
                        interconnects = <&gem_noc MASTER_APPSS_PROC 3 &mc_virt SLAVE_EBI1 3>,
                                        <&osm_l3 MASTER_OSM_L3_APPS &osm_l3 SLAVE_OSM_L3>;
                        cpu-idle-states = <&LITTLE_CPU_SLEEP_0
                                           &LITTLE_CPU_SLEEP_1
                                           &CLUSTER_SLEEP_0>;
-                       capacity-dmips-mhz = <1024>;
-                       dynamic-power-coefficient = <100>;
+                       capacity-dmips-mhz = <415>;
+                       dynamic-power-coefficient = <137>;
                        next-level-cache = <&L2_100>;
                        operating-points-v2 = <&cpu0_opp_table>;
                        interconnects = <&gem_noc MASTER_APPSS_PROC 3 &mc_virt SLAVE_EBI1 3>,
                        cpu-idle-states = <&LITTLE_CPU_SLEEP_0
                                           &LITTLE_CPU_SLEEP_1
                                           &CLUSTER_SLEEP_0>;
-                       capacity-dmips-mhz = <1024>;
-                       dynamic-power-coefficient = <100>;
+                       capacity-dmips-mhz = <415>;
+                       dynamic-power-coefficient = <137>;
                        next-level-cache = <&L2_200>;
                        operating-points-v2 = <&cpu0_opp_table>;
                        interconnects = <&gem_noc MASTER_APPSS_PROC 3 &mc_virt SLAVE_EBI1 3>,
                        cpu-idle-states = <&LITTLE_CPU_SLEEP_0
                                           &LITTLE_CPU_SLEEP_1
                                           &CLUSTER_SLEEP_0>;
-                       capacity-dmips-mhz = <1024>;
-                       dynamic-power-coefficient = <100>;
+                       capacity-dmips-mhz = <415>;
+                       dynamic-power-coefficient = <137>;
                        next-level-cache = <&L2_300>;
                        operating-points-v2 = <&cpu0_opp_table>;
                        interconnects = <&gem_noc MASTER_APPSS_PROC 3 &mc_virt SLAVE_EBI1 3>,
                        cpu-idle-states = <&LITTLE_CPU_SLEEP_0
                                           &LITTLE_CPU_SLEEP_1
                                           &CLUSTER_SLEEP_0>;
-                       capacity-dmips-mhz = <1024>;
-                       dynamic-power-coefficient = <100>;
+                       capacity-dmips-mhz = <415>;
+                       dynamic-power-coefficient = <137>;
                        next-level-cache = <&L2_400>;
                        operating-points-v2 = <&cpu0_opp_table>;
                        interconnects = <&gem_noc MASTER_APPSS_PROC 3 &mc_virt SLAVE_EBI1 3>,
                        cpu-idle-states = <&LITTLE_CPU_SLEEP_0
                                           &LITTLE_CPU_SLEEP_1
                                           &CLUSTER_SLEEP_0>;
-                       capacity-dmips-mhz = <1024>;
-                       dynamic-power-coefficient = <100>;
+                       capacity-dmips-mhz = <415>;
+                       dynamic-power-coefficient = <137>;
                        next-level-cache = <&L2_500>;
                        operating-points-v2 = <&cpu0_opp_table>;
                        interconnects = <&gem_noc MASTER_APPSS_PROC 3 &mc_virt SLAVE_EBI1 3>,
                        cpu-idle-states = <&BIG_CPU_SLEEP_0
                                           &BIG_CPU_SLEEP_1
                                           &CLUSTER_SLEEP_0>;
-                       capacity-dmips-mhz = <1740>;
-                       dynamic-power-coefficient = <405>;
+                       capacity-dmips-mhz = <1024>;
+                       dynamic-power-coefficient = <480>;
                        next-level-cache = <&L2_600>;
                        operating-points-v2 = <&cpu6_opp_table>;
                        interconnects = <&gem_noc MASTER_APPSS_PROC 3 &mc_virt SLAVE_EBI1 3>,
                        cpu-idle-states = <&BIG_CPU_SLEEP_0
                                           &BIG_CPU_SLEEP_1
                                           &CLUSTER_SLEEP_0>;
-                       capacity-dmips-mhz = <1740>;
-                       dynamic-power-coefficient = <405>;
+                       capacity-dmips-mhz = <1024>;
+                       dynamic-power-coefficient = <480>;
                        next-level-cache = <&L2_700>;
                        operating-points-v2 = <&cpu6_opp_table>;
                        interconnects = <&gem_noc MASTER_APPSS_PROC 3 &mc_virt SLAVE_EBI1 3>,
                        clock-names = "iface", "bus", "nav", "snoc_axi",
                                      "mnoc_axi", "xo";
 
-                       power-domains = <&aoss_qmp AOSS_QMP_LS_MODEM>,
-                                       <&rpmhpd SC7180_CX>,
+                       power-domains = <&rpmhpd SC7180_CX>,
                                        <&rpmhpd SC7180_MX>,
                                        <&rpmhpd SC7180_MSS>;
-                       power-domain-names = "load_state", "cx", "mx", "mss";
+                       power-domain-names = "cx", "mx", "mss";
 
                        memory-region = <&mpss_mem>;
 
+                       qcom,qmp = <&aoss_qmp>;
+
                        qcom,smem-states = <&modem_smp2p_out 0>;
                        qcom,smem-state-names = "stop";
 
                };
 
                qspi: spi@88dc000 {
-                       compatible = "qcom,qspi-v1";
+                       compatible = "qcom,sc7180-qspi", "qcom,qspi-v1";
                        reg = <0 0x088dc000 0 0x600>;
                        #address-cells = <1>;
                        #size-cells = <0>;
 
                aoss_qmp: power-controller@c300000 {
                        compatible = "qcom,sc7180-aoss-qmp";
-                       reg = <0 0x0c300000 0 0x100000>;
+                       reg = <0 0x0c300000 0 0x400>;
                        interrupts = <GIC_SPI 389 IRQ_TYPE_EDGE_RISING>;
                        mboxes = <&apss_shared 0>;
 
                        #clock-cells = <0>;
-                       #power-domain-cells = <1>;
+               };
+
+               sram@c3f0000 {
+                       compatible = "qcom,rpmh-stats";
+                       reg = <0 0x0c3f0000 0 0x400>;
                };
 
                spmi_bus: spmi@c440000 {
                        cell-index = <0>;
                };
 
+               imem@146aa000 {
+                       compatible = "simple-mfd";
+                       reg = <0 0x146aa000 0 0x2000>;
+
+                       #address-cells = <1>;
+                       #size-cells = <1>;
+
+                       ranges = <0 0 0x146aa000 0x2000>;
+
+                       pil-reloc@94c {
+                               compatible = "qcom,pil-reloc-info";
+                               reg = <0x94c 0xc8>;
+                       };
+               };
+
                apps_smmu: iommu@15000000 {
                        compatible = "qcom,sc7180-smmu-500", "arm,mmu-500";
                        reg = <0 0x15000000 0 0x100000>;
                        polling-delay = <0>;
 
                        thermal-sensors = <&tsens0 1>;
-                       sustainable-power = <768>;
+                       sustainable-power = <1052>;
 
                        trips {
                                cpu0_alert0: trip-point0 {
                        polling-delay = <0>;
 
                        thermal-sensors = <&tsens0 2>;
-                       sustainable-power = <768>;
+                       sustainable-power = <1052>;
 
                        trips {
                                cpu1_alert0: trip-point0 {
                        polling-delay = <0>;
 
                        thermal-sensors = <&tsens0 3>;
-                       sustainable-power = <768>;
+                       sustainable-power = <1052>;
 
                        trips {
                                cpu2_alert0: trip-point0 {
                        polling-delay = <0>;
 
                        thermal-sensors = <&tsens0 4>;
-                       sustainable-power = <768>;
+                       sustainable-power = <1052>;
 
                        trips {
                                cpu3_alert0: trip-point0 {
                        polling-delay = <0>;
 
                        thermal-sensors = <&tsens0 5>;
-                       sustainable-power = <768>;
+                       sustainable-power = <1052>;
 
                        trips {
                                cpu4_alert0: trip-point0 {
                        polling-delay = <0>;
 
                        thermal-sensors = <&tsens0 6>;
-                       sustainable-power = <768>;
+                       sustainable-power = <1052>;
 
                        trips {
                                cpu5_alert0: trip-point0 {
                        polling-delay = <0>;
 
                        thermal-sensors = <&tsens0 9>;
-                       sustainable-power = <1202>;
+                       sustainable-power = <1425>;
 
                        trips {
                                cpu6_alert0: trip-point0 {
                        polling-delay = <0>;
 
                        thermal-sensors = <&tsens0 10>;
-                       sustainable-power = <1202>;
+                       sustainable-power = <1425>;
 
                        trips {
                                cpu7_alert0: trip-point0 {
                        polling-delay = <0>;
 
                        thermal-sensors = <&tsens0 11>;
-                       sustainable-power = <1202>;
+                       sustainable-power = <1425>;
 
                        trips {
                                cpu8_alert0: trip-point0 {
                        polling-delay = <0>;
 
                        thermal-sensors = <&tsens0 12>;
-                       sustainable-power = <1202>;
+                       sustainable-power = <1425>;
 
                        trips {
                                cpu9_alert0: trip-point0 {
diff --git a/arch/arm64/boot/dts/qcom/sc7280-herobrine.dts b/arch/arm64/boot/dts/qcom/sc7280-herobrine.dts
new file mode 100644 (file)
index 0000000..7a92679
--- /dev/null
@@ -0,0 +1,14 @@
+// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
+/*
+ * Google Herobrine board device tree source
+ *
+ * Copyright 2021 Google LLC.
+ */
+
+#include "sc7280-herobrine.dtsi"
+
+/ {
+       model = "Google Herobrine";
+       compatible = "google,herobrine",
+                    "qcom,sc7280";
+};
diff --git a/arch/arm64/boot/dts/qcom/sc7280-herobrine.dtsi b/arch/arm64/boot/dts/qcom/sc7280-herobrine.dtsi
new file mode 100644 (file)
index 0000000..4619fa9
--- /dev/null
@@ -0,0 +1,1412 @@
+// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
+/*
+ * Google Herobrine board device tree source
+ *
+ * Copyright 2021 Google LLC.
+ */
+
+/dts-v1/;
+
+#include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/iio/qcom,spmi-adc7-pmk8350.h>
+#include <dt-bindings/iio/qcom,spmi-adc7-pmr735a.h>
+#include <dt-bindings/input/gpio-keys.h>
+#include <dt-bindings/input/input.h>
+#include <dt-bindings/pinctrl/qcom,pmic-gpio.h>
+#include <dt-bindings/regulator/qcom,rpmh-regulator.h>
+
+#include "sc7280.dtsi"
+
+/* PMICs depend on spmi_bus label and so must come after SoC */
+#include "pm7325.dtsi"
+#include "pm8350c.dtsi"
+#include "pmk8350.dtsi"
+
+/*
+ * Reserved memory changes
+ *
+ * Delete all unused memory nodes and define the peripheral memory regions
+ * required by the board dts.
+ *
+ */
+
+/delete-node/ &hyp_mem;
+/delete-node/ &xbl_mem;
+/delete-node/ &sec_apps_mem;
+
+/* Increase the size from 2MB to 8MB */
+&rmtfs_mem {
+       reg = <0x0 0x83600000 0x0 0x800000>;
+};
+
+/ {
+       reserved-memory {
+               adsp_mem: memory@86700000 {
+                       reg = <0x0 0x86700000 0x0 0x2800000>;
+                       no-map;
+               };
+
+               camera_mem: memory@8ad00000 {
+                       reg = <0x0 0x8ad00000 0x0 0x500000>;
+                       no-map;
+               };
+
+               venus_mem: memory@8b200000 {
+                       reg = <0x0 0x8b200000 0x0 0x500000>;
+                       no-map;
+               };
+
+               mpss_mem: memory@8b800000 {
+                       reg = <0x0 0x8b800000 0x0 0xf600000>;
+                       no-map;
+               };
+
+               wpss_mem: memory@9ae00000 {
+                       reg = <0x0 0x9ae00000 0x0 0x1900000>;
+                       no-map;
+               };
+
+               mba_mem: memory@9c700000 {
+                       reg = <0x0 0x9c700000 0x0 0x200000>;
+                       no-map;
+               };
+       };
+
+       aliases {
+               serial0 = &uart5;
+               serial1 = &uart7;
+       };
+
+       chosen {
+               stdout-path = "serial0:115200n8";
+       };
+
+       /* FIXED REGULATORS - parents above children */
+
+       /* This is the top level supply and variable voltage */
+       ppvar_sys: ppvar-sys-regulator {
+               compatible = "regulator-fixed";
+               regulator-name = "ppvar_sys";
+               regulator-always-on;
+               regulator-boot-on;
+       };
+
+       /* This divides ppvar_sys by 2, so voltage is variable */
+       src_vph_pwr: src-vph-pwr-regulator {
+               compatible = "regulator-fixed";
+               regulator-name = "src_vph_pwr";
+
+               /* EC turns on with switchcap_on; always on for AP */
+               regulator-always-on;
+               regulator-boot-on;
+
+               vin-supply = <&ppvar_sys>;
+       };
+
+       pp5000_s3: pp5000-s3-regulator {
+               compatible = "regulator-fixed";
+               regulator-name = "pp5000_s3";
+
+               /* EC turns on with en_pp5000_s3; always on for AP */
+               regulator-always-on;
+               regulator-boot-on;
+               regulator-min-microvolt = <5000000>;
+               regulator-max-microvolt = <5000000>;
+
+               vin-supply = <&ppvar_sys>;
+       };
+
+       pp3300_z1: pp3300-z1-regulator {
+               compatible = "regulator-fixed";
+               regulator-name = "pp3300_z1";
+
+               /* EC turns on with en_pp3300_z1; always on for AP */
+               regulator-always-on;
+               regulator-boot-on;
+               regulator-min-microvolt = <3300000>;
+               regulator-max-microvolt = <3300000>;
+
+               vin-supply = <&ppvar_sys>;
+       };
+
+       pp3300_audio:
+       pp3300_codec: pp3300-codec-regulator {
+               compatible = "regulator-fixed";
+               regulator-name = "pp3300_codec";
+
+               regulator-min-microvolt = <3300000>;
+               regulator-max-microvolt = <3300000>;
+
+               gpio = <&tlmm 67 GPIO_ACTIVE_HIGH>;
+               enable-active-high;
+               pinctrl-names = "default";
+               pinctrl-0 = <&en_pp3300_codec>;
+
+               vin-supply = <&pp3300_z1>;
+       };
+
+       pp3300_cam:
+       pp3300_edp:
+       pp3300_ts: pp3300-edp-regulator {
+               compatible = "regulator-fixed";
+               regulator-name = "pp3300_edp";
+
+               regulator-min-microvolt = <3300000>;
+               regulator-max-microvolt = <3300000>;
+
+               gpio = <&tlmm 80 GPIO_ACTIVE_HIGH>;
+               enable-active-high;
+               pinctrl-names = "default";
+               pinctrl-0 = <&en_pp3300_dx_edp>;
+
+               vin-supply = <&pp3300_z1>;
+       };
+
+       pp3300_fp:
+       pp3300_fp_ls:
+       pp3300_mcu: pp3300-fp-regulator {
+               compatible = "regulator-fixed";
+               regulator-name = "pp3300_fp";
+
+               regulator-min-microvolt = <3300000>;
+               regulator-max-microvolt = <3300000>;
+
+               regulator-boot-on;
+               regulator-always-on;
+
+               /*
+                * WARNING: it is intentional that GPIO 42 isn't listed here.
+                * The userspace script for updating the fingerprint firmware
+                * needs to control the FP regulators during a FW update,
+                * hence the signal can't be owned by the kernel regulator.
+                */
+
+               pinctrl-names = "default";
+               pinctrl-0 = <&en_fp_rails>;
+
+               vin-supply = <&pp3300_z1>;
+       };
+
+       pp3300_hub: pp3300-hub-regulator {
+               compatible = "regulator-fixed";
+               regulator-name = "pp3300_hub";
+
+               regulator-min-microvolt = <3300000>;
+               regulator-max-microvolt = <3300000>;
+
+               regulator-boot-on;
+               regulator-always-on;
+
+               gpio = <&tlmm 24 GPIO_ACTIVE_HIGH>;
+               enable-active-high;
+               pinctrl-names = "default";
+               pinctrl-0 = <&en_pp3300_hub>;
+
+               vin-supply = <&pp3300_z1>;
+       };
+
+       pp3300_tp: pp3300-tp-regulator {
+               compatible = "regulator-fixed";
+               regulator-name = "pp3300_tp";
+
+               regulator-min-microvolt = <3300000>;
+               regulator-max-microvolt = <3300000>;
+
+               /* AP turns on with PP1800_L18B_S0; always on for AP */
+               regulator-always-on;
+               regulator-boot-on;
+
+               vin-supply = <&pp3300_z1>;
+       };
+
+       pp2850_uf_cam: pp2850-uf-cam {
+               compatible = "regulator-fixed";
+               regulator-name = "pp2850_uf_cam";
+
+               regulator-min-microvolt = <2850000>;
+               regulator-max-microvolt = <2850000>;
+
+               gpio = <&tlmm 6 GPIO_ACTIVE_HIGH>;
+               enable-active-high;
+               pinctrl-names = "default";
+               pinctrl-0 = <&uf_cam_en>;
+
+               vin-supply = <&pp3300_cam>;
+       };
+
+       pp2850_vcm_wf_cam: pp2850-vcm-wf-cam {
+               compatible = "regulator-fixed";
+               regulator-name = "pp2850_vcm_wf_cam";
+
+               regulator-min-microvolt = <2850000>;
+               regulator-max-microvolt = <2850000>;
+
+               gpio = <&tlmm 7 GPIO_ACTIVE_HIGH>;
+               enable-active-high;
+               pinctrl-names = "default";
+               pinctrl-0 = <&wf_cam_en>;
+
+               vin-supply = <&pp3300_cam>;
+       };
+
+       pp2850_wf_cam: pp2850-wf-cam {
+               compatible = "regulator-fixed";
+               regulator-name = "pp2850_wf_cam";
+
+               regulator-min-microvolt = <2850000>;
+               regulator-max-microvolt = <2850000>;
+
+               gpio = <&tlmm 7 GPIO_ACTIVE_HIGH>;
+               enable-active-high;
+               /*
+                * The pinconf can only be referenced once so we put it on the
+                * first regulator and comment it out here.
+                *
+                * pinctrl-names = "default";
+                * pinctrl-0 = <&wf_cam_en>;
+                */
+
+               vin-supply = <&pp3300_cam>;
+       };
+
+       pp1800_fp: pp1800-fp-regulator {
+               compatible = "regulator-fixed";
+               regulator-name = "pp1800_fp";
+
+               regulator-min-microvolt = <1800000>;
+               regulator-max-microvolt = <1800000>;
+
+               regulator-boot-on;
+               regulator-always-on;
+
+               /*
+                * WARNING: it is intentional that GPIO 42 isn't listed here.
+                * The userspace script for updating the fingerprint firmware
+                * needs to control the FP regulators during a FW update,
+                * hence the signal can't be owned by the kernel regulator.
+                */
+
+               pinctrl-names = "default";
+               pinctrl-0 = <&en_fp_rails>;
+
+               vin-supply = <&pp1800_l18b_s0>;
+               status = "disabled";
+       };
+
+       pp1800_uf_cam: pp1800-uf-cam {
+               compatible = "regulator-fixed";
+               regulator-name = "pp1800_uf_cam";
+
+               regulator-min-microvolt = <1800000>;
+               regulator-max-microvolt = <1800000>;
+
+               gpio = <&tlmm 6 GPIO_ACTIVE_HIGH>;
+               enable-active-high;
+               /*
+                * The pinconf can only be referenced once so we put it on the
+                * first regulator and comment it out here.
+                *
+                * pinctrl-names = "default";
+                * pinctrl-0 = <&uf_cam_en>;
+                */
+
+               vin-supply = <&pp1800_l19b>;
+       };
+
+       pp1800_wf_cam: pp1800-wf-cam {
+               compatible = "regulator-fixed";
+               regulator-name = "pp1800_wf_cam";
+
+               regulator-min-microvolt = <1800000>;
+               regulator-max-microvolt = <1800000>;
+
+               gpio = <&tlmm 7 GPIO_ACTIVE_HIGH>;
+               enable-active-high;
+               /*
+                * The pinconf can only be referenced once so we put it on the
+                * first regulator and comment it out here.
+                *
+                * pinctrl-names = "default";
+                * pinctrl-0 = <&wf_cam_en>;
+                */
+
+               vin-supply = <&pp1800_l19b>;
+       };
+
+       pp1200_wf_cam: pp1200-wf-cam {
+               compatible = "regulator-fixed";
+               regulator-name = "pp1200_wf_cam";
+
+               regulator-min-microvolt = <1200000>;
+               regulator-max-microvolt = <1200000>;
+
+               gpio = <&tlmm 7 GPIO_ACTIVE_HIGH>;
+               enable-active-high;
+               /*
+                * The pinconf can only be referenced once so we put it on the
+                * first regulator and comment it out here.
+                *
+                * pinctrl-names = "default";
+                * pinctrl-0 = <&wf_cam_en>;
+                */
+
+               vin-supply = <&pp1200_l6b>;
+       };
+
+       /* BOARD-SPECIFIC TOP LEVEL NODES */
+
+       gpio_keys: gpio-keys {
+               compatible = "gpio-keys";
+               status = "disabled";
+               pinctrl-names = "default";
+               pinctrl-0 = <&pen_pdct_l>;
+
+               pen_insert: pen-insert {
+                       label = "Pen Insert";
+
+                       /* Insert = low, eject = high */
+                       gpios = <&tlmm 39 GPIO_ACTIVE_LOW>;
+                       linux,code = <SW_PEN_INSERTED>;
+                       linux,input-type = <EV_SW>;
+                       wakeup-event-action = <EV_ACT_DEASSERTED>;
+                       wakeup-source;
+               };
+       };
+
+       pwmleds {
+               compatible = "pwm-leds";
+               status = "disabled";
+               keyboard_backlight: keyboard-backlight {
+                       status = "disabled";
+                       label = "cros_ec::kbd_backlight";
+                       pwms = <&cros_ec_pwm 0>;
+                       max-brightness = <1023>;
+               };
+       };
+};
+
+&apps_rsc {
+       pm7325-regulators {
+               compatible = "qcom,pm7325-rpmh-regulators";
+               qcom,pmic-id = "b";
+
+               vdd19_pmu_pcie_i:
+               vdd19_pmu_rfa_i:
+               vreg_s1b_wlan:
+               vreg_s1b: smps1 {
+                       regulator-min-microvolt = <1856000>;
+                       regulator-max-microvolt = <2040000>;
+               };
+
+               vdd_pmu_aon_i:
+               vreg_s7b_wlan:
+               vreg_s7b: smps7 {
+                       regulator-min-microvolt = <535000>;
+                       regulator-max-microvolt = <1120000>;
+               };
+
+               vdd13_pmu_pcie_i:
+               vdd13_pmu_rfa_i:
+               vreg_s8b_wlan:
+               vreg_s8b: smps8 {
+                       regulator-min-microvolt = <1256000>;
+                       regulator-max-microvolt = <1500000>;
+               };
+
+               vdda_usb_ss_dp_core:
+               vreg_l1b: ldo1 {
+                       regulator-min-microvolt = <825000>;
+                       regulator-max-microvolt = <925000>;
+                       regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+               };
+
+               vdda_usb_hs0_3p1:
+               vreg_l2b: ldo2 {
+                       regulator-min-microvolt = <2700000>;
+                       regulator-max-microvolt = <3544000>;
+                       regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+               };
+
+               pp1200_l6b:
+               vdd_ufs_1p2:
+               vdd_vref:
+               vdda_csi01_1p2:
+               vdda_csi23_1p2:
+               vdda_csi4_1p2:
+               vdda_dsi0_1p2:
+               vdda_pcie0_1p2:
+               vdda_pcie1_1p2:
+               vdda_usb_ss_dp_1p2:
+               vdda_qlink0_1p2_ck:
+               vdda_qlink1_1p2_ck:
+               vreg_l6b_1p2:
+               vreg_l6b: ldo6 {
+                       regulator-min-microvolt = <1120000>;
+                       regulator-max-microvolt = <1408000>;
+                       regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+               };
+
+               pp2950_l7b:
+               vreg_l7b: ldo7 {
+                       regulator-min-microvolt = <2960000>;
+                       regulator-max-microvolt = <2960000>;
+                       regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+               };
+
+               codec_vcc:
+               pp1800_l18b_s0:
+               pp1800_ts:
+               vdd1:
+               vddpx_0:
+               vddpx_3:
+               vddpx_7:
+               vreg_l18b: ldo18 {
+                       regulator-min-microvolt = <1800000>;
+                       regulator-max-microvolt = <2000000>;
+                       regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+               };
+
+               pp1800_l19b:
+               vddpx_ts:
+               vddpx_wl4otp:
+               vreg_l19b: ldo19 {
+                       regulator-min-microvolt = <1800000>;
+                       regulator-max-microvolt = <1800000>;
+                       regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+               };
+       };
+
+       pm8350c-regulators {
+               compatible = "qcom,pm8350c-rpmh-regulators";
+               qcom,pmic-id = "c";
+
+               vreg_s1c: smps1 {
+                       regulator-min-microvolt = <2190000>;
+                       regulator-max-microvolt = <2210000>;
+               };
+
+               vddpx_1:
+               vreg_s9c: smps9 {
+                       regulator-min-microvolt = <1010000>;
+                       regulator-max-microvolt = <1170000>;
+               };
+
+               pp1800_l1c:
+               pp1800_pen:
+               vdd_a_gfx_cs_1p1:
+               vdd_a_cxo_1p8:
+               vdd_qfprom:
+               vdda_apc_cs_1p8:
+               vdda_qrefs_1p8:
+               vdda_turing_q6_cs_1p8:
+               vdda_usb_hs0_1p8:
+               vreg_l1c: ldo1 {
+                       regulator-min-microvolt = <1800000>;
+                       regulator-max-microvolt = <1980000>;
+                       regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+               };
+
+               dmic_vdd:
+               pp1800_alc5682:
+               pp1800_l2c:
+               pp1800_vreg_alc5682:
+               vreg_l2c: ldo2 {
+                       regulator-min-microvolt = <1620000>;
+                       regulator-max-microvolt = <1980000>;
+                       regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+               };
+
+               pp3300_sar:
+               pp3300_sensor:
+               vreg_l3c: ldo3 {
+                       regulator-min-microvolt = <2800000>;
+                       regulator-max-microvolt = <3540000>;
+                       regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+               };
+
+               ppvar_uim1:
+               vddpx_5:
+               vreg_l4c: ldo4 {
+                       regulator-min-microvolt = <1620000>;
+                       regulator-max-microvolt = <3300000>;
+                       regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+               };
+
+               pp2950_l5c:
+               uim_vcc:
+               vddpx_6:
+               vreg_l5c: ldo5 {
+                       regulator-min-microvolt = <1620000>;
+                       regulator-max-microvolt = <3300000>;
+                       regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+               };
+
+               ppvar_l6c:
+               vddpx_2:
+               vreg_l6c: ldo6 {
+                       regulator-min-microvolt = <1800000>;
+                       regulator-max-microvolt = <2950000>;
+                       regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+               };
+
+               vreg_l7c: ldo7 {
+                       regulator-min-microvolt = <3000000>;
+                       regulator-max-microvolt = <3544000>;
+                       regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+               };
+
+               pp1800_prox:
+               pp1800_sar:
+               vreg_l8c: ldo8 {
+                       regulator-min-microvolt = <1620000>;
+                       regulator-max-microvolt = <2000000>;
+                       regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+               };
+
+               pp2950_l9c:
+               vreg_l9c: ldo9 {
+                       regulator-min-microvolt = <2960000>;
+                       regulator-max-microvolt = <2960000>;
+                       regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+               };
+
+               vdd_a_gnss_0p9:
+               vdd_ufs_core:
+               vdd_usb_hs0_core:
+               vdd_vref_0p9:
+               vdda_csi01_0p9:
+               vdda_csi23_0p9:
+               vdda_csi4_0p9:
+               vdda_dsi0_pll_0p9:
+               vdda_dsi0_0p9:
+               vdda_pcie0_core:
+               vdda_pcie1_core:
+               vdda_qlink0_0p9:
+               vdda_qlink1_0p9:
+               vdda_qlink0_0p9_ck:
+               vdda_qlink1_0p9_ck:
+               vdda_qrefs_0p875:
+               vreg_l10c_0p8:
+               vreg_l10c: ldo10 {
+                       regulator-min-microvolt = <720000>;
+                       regulator-max-microvolt = <1050000>;
+                       regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+               };
+
+               pp2800_l11c:
+               vreg_l11c: ldo11 {
+                       regulator-min-microvolt = <2800000>;
+                       regulator-max-microvolt = <3544000>;
+                       regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+               };
+
+               pp1800_l12c:
+               vreg_l12c: ldo12 {
+                       regulator-min-microvolt = <1650000>;
+                       regulator-max-microvolt = <2000000>;
+                       regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+               };
+
+               pp3300_l13c:
+               vreg_l13c: ldo13 {
+                       regulator-min-microvolt = <2700000>;
+                       regulator-max-microvolt = <3544000>;
+                       regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+               };
+
+               vreg_bob: bob {
+                       regulator-min-microvolt = <3008000>;
+                       regulator-max-microvolt = <3960000>;
+                       regulator-initial-mode = <RPMH_REGULATOR_MODE_AUTO>;
+               };
+       };
+};
+
+ap_tp_i2c: &i2c1 {
+       status = "okay";
+       clock-frequency = <400000>;
+
+       trackpad: trackpad@15 {
+               compatible = "elan,ekth3000";
+               reg = <0x15>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&tp_int_odl>;
+
+               interrupt-parent = <&tlmm>;
+               interrupts = <102 IRQ_TYPE_EDGE_FALLING>;
+
+               vcc-supply = <&pp3300_z1>;
+
+               wakeup-source;
+       };
+};
+
+ap_h1_i2c: &i2c12 {
+       status = "okay";
+       clock-frequency = <400000>;
+
+       tpm@50 {
+               compatible = "google,cr50";
+               reg = <0x50>;
+
+               pinctrl-names = "default";
+               pinctrl-0 = <&h1_ap_int_odl>;
+
+               interrupt-parent = <&tlmm>;
+               interrupts = <54 IRQ_TYPE_EDGE_RISING>;
+       };
+};
+
+ap_ts_pen: &i2c13 {
+       status = "okay";
+       clock-frequency = <400000>;
+
+       ap_ts: touchscreen@10 {
+               compatible = "hid-over-i2c";
+               reg = <0x10>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&ts_int_l>, <&ts_reset_l>;
+
+               interrupt-parent = <&tlmm>;
+               interrupts = <81 IRQ_TYPE_LEVEL_LOW>;
+
+               post-power-on-delay-ms = <20>;
+               hid-descr-addr = <0x0001>;
+
+               vdd-supply = <&pp3300_ts>;
+       };
+};
+
+&pm7325_gpios {
+       status = "disabled"; /* No GPIOs are connected */
+};
+
+&pmk8350_gpios {
+       status = "disabled"; /* No GPIOs are connected */
+};
+
+&pmk8350_pon {
+       status = "disabled";
+};
+
+&pmk8350_rtc {
+       status = "disabled";
+};
+
+&pmk8350_vadc {
+       pmk8350_die_temp {
+               reg = <PMK8350_ADC7_DIE_TEMP>;
+               label = "pmk8350_die_temp";
+               qcom,pre-scaling = <1 1>;
+       };
+
+       pmr735a_die_temp {
+               reg = <PMR735A_ADC7_DIE_TEMP>;
+               label = "pmr735a_die_temp";
+               qcom,pre-scaling = <1 1>;
+       };
+};
+
+&qfprom {
+       vcc-supply = <&vdd_qfprom>;
+};
+
+&qspi {
+       status = "okay";
+       pinctrl-names = "default";
+       pinctrl-0 = <&qspi_clk>, <&qspi_cs0>, <&qspi_data01>;
+
+       flash@0 {
+               compatible = "jedec,spi-nor";
+               reg = <0>;
+
+               spi-max-frequency = <37500000>;
+               spi-tx-bus-width = <2>;
+               spi-rx-bus-width = <2>;
+       };
+};
+
+&qupv3_id_0 {
+       status = "okay";
+};
+
+&qupv3_id_1 {
+       status = "okay";
+};
+
+&sdhc_1 {
+       status = "okay";
+
+       pinctrl-names = "default", "sleep";
+       pinctrl-0 = <&sdc1_on>;
+       pinctrl-1 = <&sdc1_off>;
+       vmmc-supply = <&pp2950_l7b>;
+       vqmmc-supply = <&pp1800_l19b>;
+};
+
+&sdhc_2 {
+       status = "okay";
+
+       pinctrl-names = "default", "sleep";
+       pinctrl-0 = <&sdc2_on>;
+       pinctrl-1 = <&sdc2_off>;
+       vmmc-supply = <&pp2950_l9c>;
+       vqmmc-supply = <&ppvar_l6c>;
+
+       cd-gpios = <&tlmm 91 GPIO_ACTIVE_LOW>;
+};
+
+ap_ec_spi: &spi8 {
+       status = "okay";
+
+       pinctrl-0 = <&qup_spi8_data_clk>, <&qup_spi8_cs_gpio_init_high>, <&qup_spi8_cs_gpio>;
+       cs-gpios = <&tlmm 35 GPIO_ACTIVE_LOW>;
+
+       cros_ec: ec@0 {
+               compatible = "google,cros-ec-spi";
+               reg = <0>;
+               interrupt-parent = <&tlmm>;
+               interrupts = <142 IRQ_TYPE_LEVEL_LOW>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&ap_ec_int_l>;
+               spi-max-frequency = <3000000>;
+
+               cros_ec_pwm: ec-pwm {
+                       compatible = "google,cros-ec-pwm";
+                       #pwm-cells = <1>;
+               };
+
+               i2c_tunnel: i2c-tunnel {
+                       compatible = "google,cros-ec-i2c-tunnel";
+                       google,remote-bus = <0>;
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+               };
+
+               typec {
+                       compatible = "google,cros-ec-typec";
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+
+                       usb_c0: connector@0 {
+                               compatible = "usb-c-connector";
+                               reg = <0>;
+                               label = "left";
+                               power-role = "dual";
+                               data-role = "host";
+                               try-power-role = "source";
+                       };
+
+                       usb_c1: connector@1 {
+                               compatible = "usb-c-connector";
+                               reg = <1>;
+                               label = "right";
+                               power-role = "dual";
+                               data-role = "host";
+                               try-power-role = "source";
+                       };
+               };
+       };
+};
+
+#include <arm/cros-ec-keyboard.dtsi>
+#include <arm/cros-ec-sbs.dtsi>
+
+&keyboard_controller {
+       function-row-physmap = <
+               MATRIX_KEY(0x00, 0x02, 0)       /* T1 */
+               MATRIX_KEY(0x03, 0x02, 0)       /* T2 */
+               MATRIX_KEY(0x02, 0x02, 0)       /* T3 */
+               MATRIX_KEY(0x01, 0x02, 0)       /* T4 */
+               MATRIX_KEY(0x03, 0x04, 0)       /* T5 */
+               MATRIX_KEY(0x02, 0x04, 0)       /* T6 */
+               MATRIX_KEY(0x01, 0x04, 0)       /* T7 */
+               MATRIX_KEY(0x02, 0x09, 0)       /* T8 */
+               MATRIX_KEY(0x01, 0x09, 0)       /* T9 */
+               MATRIX_KEY(0x00, 0x04, 0)       /* T10 */
+       >;
+       linux,keymap = <
+               MATRIX_KEY(0x00, 0x02, KEY_BACK)
+               MATRIX_KEY(0x03, 0x02, KEY_REFRESH)
+               MATRIX_KEY(0x02, 0x02, KEY_ZOOM)
+               MATRIX_KEY(0x01, 0x02, KEY_SCALE)
+               MATRIX_KEY(0x03, 0x04, KEY_SYSRQ)
+               MATRIX_KEY(0x02, 0x04, KEY_BRIGHTNESSDOWN)
+               MATRIX_KEY(0x01, 0x04, KEY_BRIGHTNESSUP)
+               MATRIX_KEY(0x02, 0x09, KEY_MUTE)
+               MATRIX_KEY(0x01, 0x09, KEY_VOLUMEDOWN)
+               MATRIX_KEY(0x00, 0x04, KEY_VOLUMEUP)
+
+               CROS_STD_MAIN_KEYMAP
+       >;
+};
+
+&uart5 {
+       compatible = "qcom,geni-debug-uart";
+       status = "okay";
+};
+
+&uart7 {
+       status = "okay";
+};
+
+&usb_1 {
+       status = "okay";
+};
+
+&usb_1_dwc3 {
+       dr_mode = "host";
+};
+
+&usb_1_hsphy {
+       status = "okay";
+
+       vdda-pll-supply = <&vdd_usb_hs0_core>;
+       vdda33-supply = <&vdda_usb_hs0_3p1>;
+       vdda18-supply = <&vdda_usb_hs0_1p8>;
+};
+
+&usb_1_qmpphy {
+       status = "okay";
+
+       vdda-phy-supply = <&vdda_usb_ss_dp_1p2>;
+       vdda-pll-supply = <&vdda_usb_ss_dp_core>;
+};
+
+&usb_2 {
+       status = "okay";
+};
+
+&usb_2_dwc3 {
+       dr_mode = "host";
+};
+
+&usb_2_hsphy {
+       status = "okay";
+
+       vdda-pll-supply = <&vdd_usb_hs0_core>;
+       vdda33-supply = <&vdda_usb_hs0_3p1>;
+       vdda18-supply = <&vdda_usb_hs0_1p8>;
+};
+
+/* PINCTRL - additions to nodes defined in sc7280.dtsi */
+
+&qspi_cs0 {
+       bias-disable;
+};
+
+&qspi_clk {
+       bias-disable;
+};
+
+&qspi_data01 {
+       /* High-Z when no transfers; nice to park the lines */
+       bias-pull-up;
+};
+
+&qup_uart5_rx {
+       drive-strength = <2>;
+       bias-pull-up;
+};
+
+&qup_uart5_tx {
+       drive-strength = <2>;
+       bias-disable;
+};
+
+&qup_uart7_cts {
+       /*
+        * Configure a pull-down on CTS to match the pull of
+        * the Bluetooth module.
+        */
+       bias-pull-down;
+};
+
+&qup_uart7_rts {
+       /* We'll drive RTS, so no pull */
+       drive-strength = <2>;
+       bias-disable;
+};
+
+&qup_uart7_tx {
+       /* We'll drive TX, so no pull */
+       drive-strength = <2>;
+       bias-disable;
+};
+
+&qup_uart7_rx {
+       /*
+        * Configure a pull-up on RX. This is needed to avoid
+        * garbage data when the TX pin of the Bluetooth module is
+        * in tri-state (module powered off or not driving the
+        * signal yet).
+        */
+       bias-pull-up;
+};
+
+&sdc1_on {
+       clk {
+               bias-disable;
+               drive-strength = <16>;
+       };
+
+       cmd {
+               bias-pull-up;
+               drive-strength = <10>;
+       };
+
+       data {
+               bias-pull-up;
+               drive-strength = <10>;
+       };
+
+       rclk {
+               bias-pull-down;
+       };
+};
+
+&sdc2_on {
+       clk {
+               bias-disable;
+               drive-strength = <16>;
+       };
+
+       cmd {
+               bias-pull-up;
+               drive-strength = <10>;
+       };
+
+       data {
+               bias-pull-up;
+               drive-strength = <10>;
+       };
+
+       sd-cd {
+               pins = "gpio91";
+               bias-pull-up;
+       };
+};
+
+/* PINCTRL - board-specific pinctrl */
+
+&pm8350c_gpios {
+       gpio-line-names = "AP_SUSPEND",
+                         "",
+                         "",
+                         "AP_BL_EN",
+                         "",
+                         "SD_CD_ODL",
+                         "",
+                         "",
+                         "AP_BL_PWM";
+
+       ap_bl_en: ap-bl-en {
+               pins = "gpio4";
+               function = "normal";
+               qcom,drive-strength = <PMIC_GPIO_STRENGTH_LOW>;
+               bias-disable;
+
+               /* Force backlight to be disabled to match state at boot. */
+               output-low;
+       };
+};
+
+&tlmm {
+       gpio-line-names = "HP_I2C_SDA",                 /* 0 */
+                         "HP_I2C_SCL",
+                         "SSD_RST_L",
+                         "PE_WAKE_ODL",
+                         "AP_TP_I2C_SDA",
+                         "AP_TP_I2C_SCL",
+                         "UF_CAM_EN",
+                         "WF_CAM_EN",
+                         "AP_SAR_SENSOR_SDA",
+                         "AP_SAR_SENSOR_SCL",
+
+                         "",                           /* 10 */
+                         "",
+                         "AP_SPI_MOSI",
+                         "AP_SPI_MISO",
+                         "AP_SPI_CLK",
+                         "AP_SPI_CS0_L",
+                         "",
+                         "",
+                         "EDP_HPD",
+                         "",
+
+                         "UF_CAM_RST_L",               /* 20 */
+                         "WF_CAM_RST_L",
+                         "UART_AP_TX_DBG_RX",
+                         "UART_DBG_TX_AP_RX",
+                         "EN_PP3300_HUB",
+                         "",
+                         "HOST2WLAN_SOL",
+                         "WLAN2HOST_SOL",
+                         "BT_UART_CTS",
+                         "BT_UART_RTS",
+
+                         "BT_UART_TXD",                /* 30 */
+                         "BT_UART_RXD",
+                         "AP_EC_SPI_MISO",
+                         "AP_EC_SPI_MOSI",
+                         "AP_EC_SPI_CLK",
+                         "AP_EC_SPI_CS_L",
+                         "",
+                         "",
+                         "",
+                         "PEN_PDCT_L",
+
+                         "IO_BRD_ID0",                 /* 40 */
+                         "IO_BRD_ID1",
+                         "EN_FP_RAILS",
+                         "PEN_IRQ_L",
+                         "AP_SPI_FP_MISO",
+                         "AP_SPI_FP_MOSI",
+                         "AP_SPI_FP_CLK",
+                         "AP_SPI_FP_CS_L",
+                         "AP_H1_SPI_MISO",
+                         "AP_H1_SPI_MOSI",
+
+                         "AP_H1_SPI_CLK",              /* 50 */
+                         "AP_H1_SPI_CS_L",
+                         "AP_TS_PEN_I2C_SDA",
+                         "AP_TS_PEN_I2C_SCL",
+                         "H1_AP_INT_ODL",
+                         "",
+                         "LCM_RST_1V8_L",
+                         "AMP_EN",
+                         "",
+                         "DP_HOT_PLUG_DET",
+
+                         "HUB_RST_L",                  /* 60 */
+                         "FP_TO_AP_IRQ_L",
+                         "",
+                         "",
+                         "UF_CAM_MCLK",
+                         "WF_CAM_MCLK",
+                         "IO_BRD_ID2",
+                         "EN_PP3300_CODEC",
+                         "EC_IN_RW_ODL",
+                         "UF_CAM_SDA",
+
+                         "UF_CAM_SCL",                 /* 70 */
+                         "WF_CAM_SDA",
+                         "WF_CAM_SCL",
+                         "AP_BRD_ID0",
+                         "AP_BRD_ID1",
+                         "AP_BRD_ID2",
+                         "",
+                         "FPMCU_BOOT0",
+                         "FP_RST_L",
+                         "PE_CLKREQ_ODL",
+
+                         "EN_EDP_PP3300",              /* 80 */
+                         "TS_INT_L",
+                         "FORCE_USB_BOOT",
+                         "WCD_RST_L",
+                         "WLAN_EN",
+                         "BT_EN",
+                         "WLAN_SW_CTRL",
+                         "PCIE0_RESET_L",
+                         "PCIE0_CLK_REQ_L",
+                         "PCIE0_WAKE_L",
+
+                         "AS_EN",                      /* 90 */
+                         "SD_CD_ODL",
+                         "",
+                         /*
+                          * AP_FLASH_WP_L is crossystem ABI. Schematics
+                          * call it BIOS_FLASH_WP_L.
+                          */
+                         "AP_FLASH_WP_L",
+                         "BT_WLAN_SB_CLK",
+                         "BT_WLAN_SB_DATA",
+                         "HP_MCLK",
+                         "HP_BCLK",
+                         "HP_DOUT",
+                         "HP_DIN",
+
+                         "HP_LRCLK",                   /* 100 */
+                         "HP_IRQ",
+                         "TP_INT_ODL",
+                         "",
+                         "IO_SKU_ID2",
+                         "TS_RESET_L",
+                         "AMP_BCLK",
+                         "AMP_DIN",
+                         "AMP_LRCLK",
+                         "UIM2_DATA",
+
+                         "UIM2_CLK",                   /* 110 */
+                         "UIM2_RST",
+                         "UIM2_PRESENT",
+                         "UIM1_DATA",
+                         "UIM1_CLK",
+                         "UIM1_RST",
+                         "",
+                         "RFFE0_CLK",
+                         "RFFE0_DATA/BOOT_CONFIG_0",
+                         "RFFE1_CLK",
+
+                         "RFFE1_DATA/BOOT_CONFIG_1",   /* 120 */
+                         "RFFE2_CLK",
+                         "RFFE2_DATA/BOOT_CONFIG_2",
+                         "RFFE3_CLK",
+                         "RFFE3_DATA/BOOT_CONFIG_3",
+                         "RFFE4_CLK",
+                         "RFFE4_DATA",
+                         "WCI2_LTE_COEX_RXD",
+                         "WCI2_LTE_COEX_TXD",
+                         "IO_SKU_ID0",
+
+                         "IO_SKU_ID1",                 /* 130 */
+                         "",
+                         "",
+                         "QLINK0_REQ",
+                         "QLINK0_EN",
+                         "QLINK0_WMSS_RESET_L",
+                         "QLINK1_REQ",
+                         "QLINK1_EN",
+                         "QLINK1_WMSS_RESET_L",
+                         "FORCED_USB_BOOT_POL",
+
+                         "",                           /* 140 */
+                         "P_SENSOR_INT_L",
+                         "AP_EC_INT_L",
+                         "",
+                         "WCD_SWR_TX_CLK",
+                         "WCD_SWR_TX_DATA_0",
+                         "WCD_SWR_TX_DATA_1",
+                         "WCD_SWR_RX_CLK",
+                         "WCD_SWR_RX_DATA_0",
+                         "WCD_SWR_RX_DATA_1",
+
+                         "",                           /* 150 */
+                         "",
+                         "",
+                         "",
+                         "",
+                         "",
+                         "",
+                         "",
+                         "WCD_SWR_TX_DATA_2",
+                         "",
+
+                         "",                           /* 160 */
+                         "",
+                         "",
+                         "",
+                         "",
+                         "",
+                         "",
+                         "",
+                         "",
+                         "",
+
+                         "",                           /* 170 */
+                         "SENS_UART_TXD",
+                         "SENS_UART_RXD",
+                         "",
+                         "",
+                         "";
+
+       /*
+        * pinctrl settings for pins that have no real owners.
+        */
+       pinctrl-names = "default";
+       pinctrl-0 = <&bios_flash_wp_l>;
+
+       amp_en: amp-en {
+               pins = "gpio57";
+               function = "gpio";
+               bias-pull-down;
+       };
+
+       ap_ec_int_l: ap-ec-int-l {
+               pins = "gpio142";
+               input-enable;
+               bias-pull-up;
+       };
+
+       bios_flash_wp_l: bios-flash-wp-l {
+               pins = "gpio93";
+               function = "gpio";
+               input-enable;
+               bias-disable;
+       };
+
+       bt_en: bt-en {
+               pins = "gpio85";
+               function = "gpio";
+               drive-strength = <2>;
+               output-low;
+               bias-pull-down;
+       };
+
+       en_fp_rails: en-fp-rails {
+               pins = "gpio42";
+               drive-strength = <2>;
+               output-high;
+               bias-disable;
+       };
+
+       en_pp3300_codec: en-pp3300-codec {
+               pins = "gpio67";
+               drive-strength = <2>;
+               bias-disable;
+       };
+
+       en_pp3300_dx_edp: en-pp3300-dx-edp {
+               pins = "gpio80";
+               function = "gpio";
+               drive-strength = <2>;
+               /* Has external pulldown */
+               bias-disable;
+       };
+
+       en_pp3300_hub: en-pp3300-hub {
+               pins = "gpio24";
+               function = "gpio";
+               drive-strength = <2>;
+               /* Has external pulldown */
+               bias-disable;
+       };
+
+       fp_to_ap_irq_l: fp-to-ap-irq-l {
+               pins = "gpio61";
+               function = "gpio";
+               input-enable;
+               /* Has external pullup */
+               bias-disable;
+       };
+
+       h1_ap_int_odl: h1-ap-int-odl {
+               pins = "gpio54";
+               function = "gpio";
+               input-enable;
+               bias-pull-up;
+       };
+
+       hp_irq: hp-irq {
+               pins = "gpio101";
+               function = "gpio";
+               bias-pull-up;
+       };
+
+       p_sensor_int_l: p-sensor-int-l {
+               pins = "gpio141";
+               function = "gpio";
+               input-enable;
+               bias-pull-up;
+       };
+
+       pen_irq_l: pen-irq-l {
+               pins = "gpio43";
+               function = "gpio";
+               /* Has external pullup */
+               bias-disable;
+       };
+
+       pen_pdct_l: pen-pdct-l {
+               pins = "gpio39";
+               function = "gpio";
+               /* Has external pullup */
+               bias-disable;
+       };
+
+       qup_spi8_cs_gpio_init_high: qup-spi8-cs-gpio-init-high {
+               pins = "gpio35";
+               output-high;
+       };
+
+       qup_spi11_cs_gpio_init_high: qup-spi11-cs-gpio-init-high {
+               pins = "gpio47";
+               output-high;
+       };
+
+       qup_spi12_cs_gpio_init_high: qup-spi12-cs-gpio-init-high {
+               pins = "gpio51";
+               output-high;
+       };
+
+       qup_uart7_sleep_cts: qup-uart7-sleep-cts {
+               pins = "gpio28";
+               function = "gpio";
+               /*
+                * Configure a pull-down on CTS to match the pull of
+                * the Bluetooth module.
+                */
+               bias-pull-down;
+       };
+
+       qup_uart7_sleep_rts: qup-uart7-sleep-rts {
+               pins = "gpio29";
+               function = "gpio";
+               /*
+                * Configure pull-down on RTS. As RTS is active low
+                * signal, pull it low to indicate the BT SoC that it
+                * can wakeup the system anytime from suspend state by
+                * pulling RX low (by sending wakeup bytes).
+                */
+               bias-pull-down;
+       };
+
+       qup_uart7_sleep_rx: qup-uart7-sleep-rx {
+               pins = "gpio31";
+               function = "gpio";
+               /*
+                * Configure a pull-up on RX. This is needed to avoid
+                * garbage data when the TX pin of the Bluetooth module
+                * is floating which may cause spurious wakeups.
+                */
+               bias-pull-up;
+       };
+
+       qup_uart7_sleep_tx: qup-uart7-sleep-tx {
+               pins = "gpio30";
+               function = "gpio";
+               /*
+                * Configure pull-up on TX when it isn't actively driven
+                * to prevent BT SoC from receiving garbage during sleep.
+                */
+               bias-pull-up;
+       };
+
+       tp_int_odl: tp-int-odl {
+               pins = "gpio102";
+               function = "gpio";
+               /* Has external pullup */
+               bias-disable;
+       };
+
+       ts_int_l: ts-int-l {
+               pins = "gpio81";
+               function = "gpio";
+               /* Has external pullup */
+               bias-pull-up;
+       };
+
+       ts_reset_l: ts-reset-l {
+               pins = "gpio105";
+               function = "gpio";
+               /* Has external pullup */
+               bias-disable;
+               drive-strength = <2>;
+       };
+
+       uf_cam_en: uf-cam-en {
+               pins = "gpio6";
+               function = "gpio";
+               drive-strength = <2>;
+               /* Has external pulldown */
+               bias-disable;
+       };
+
+       wf_cam_en: wf-cam-en {
+               pins = "gpio7";
+               function = "gpio";
+               drive-strength = <2>;
+               /* Has external pulldown */
+               bias-disable;
+       };
+};
index 64fc22a..9b991ba 100644 (file)
        modem-init;
 };
 
+&pmk8350_rtc {
+       status = "okay";
+};
+
+&nvme_pwren {
+       pins = "gpio19";
+};
+
+&nvme_3v3_regulator {
+       gpio = <&tlmm 19 GPIO_ACTIVE_HIGH>;
+};
+
 &pmk8350_vadc {
        pmr735a_die_temp {
                reg = <PMR735A_ADC7_DIE_TEMP>;
index 371a2a9..d623d71 100644 (file)
@@ -7,11 +7,96 @@
 
 #include <dt-bindings/gpio/gpio.h>
 #include <dt-bindings/iio/qcom,spmi-adc7-pmk8350.h>
+#include <dt-bindings/input/linux-event-codes.h>
 #include "sc7280.dtsi"
 #include "pm7325.dtsi"
 #include "pm8350c.dtsi"
 #include "pmk8350.dtsi"
 
+/ {
+       gpio-keys {
+               compatible = "gpio-keys";
+               label = "gpio-keys";
+
+               pinctrl-names = "default";
+               pinctrl-0 = <&key_vol_up_default>;
+
+               volume-up {
+                       label = "volume_up";
+                       gpios = <&pm7325_gpios 6 GPIO_ACTIVE_LOW>;
+                       linux,input-type = <1>;
+                       linux,code = <KEY_VOLUMEUP>;
+                       gpio-key,wakeup;
+                       debounce-interval = <15>;
+                       linux,can-disable;
+               };
+       };
+
+       nvme_3v3_regulator: nvme-3v3-regulator {
+               compatible = "regulator-fixed";
+               regulator-name = "VLDO_3V3";
+
+               regulator-min-microvolt = <3300000>;
+               regulator-max-microvolt = <3300000>;
+
+               enable-active-high;
+               pinctrl-names = "default";
+               pinctrl-0 = <&nvme_pwren>;
+       };
+};
+
+/*
+ * Reserved memory changes
+ *
+ * Delete all unused memory nodes and define the peripheral memory regions
+ * required by the board dts.
+ *
+ */
+
+/delete-node/ &hyp_mem;
+/delete-node/ &xbl_mem;
+/delete-node/ &reserved_xbl_uefi_log;
+/delete-node/ &sec_apps_mem;
+
+/* Increase the size from 2.5MB to 8MB */
+&rmtfs_mem {
+       reg = <0x0 0x9c900000 0x0 0x800000>;
+};
+
+/ {
+       reserved-memory {
+               adsp_mem: memory@86700000 {
+                       reg = <0x0 0x86700000 0x0 0x2800000>;
+                       no-map;
+               };
+
+               camera_mem: memory@8ad00000 {
+                       reg = <0x0 0x8ad00000 0x0 0x500000>;
+                       no-map;
+               };
+
+               venus_mem: memory@8b200000 {
+                       reg = <0x0 0x8b200000 0x0 0x500000>;
+                       no-map;
+               };
+
+               mpss_mem: memory@8b800000 {
+                       reg = <0x0 0x8b800000 0x0 0xf600000>;
+                       no-map;
+               };
+
+               wpss_mem: memory@9ae00000 {
+                       reg = <0x0 0x9ae00000 0x0 0x1900000>;
+                       no-map;
+               };
+
+               mba_mem: memory@9c700000 {
+                       reg = <0x0 0x9c700000 0x0 0x200000>;
+                       no-map;
+               };
+       };
+};
+
 &apps_rsc {
        pm7325-regulators {
                compatible = "qcom,pm7325-rpmh-regulators";
        modem-init;
 };
 
+&pcie1 {
+       status = "okay";
+       perst-gpio = <&tlmm 2 GPIO_ACTIVE_LOW>;
+
+       vddpe-3v3-supply = <&nvme_3v3_regulator>;
+
+       pinctrl-names = "default";
+       pinctrl-0 = <&pcie1_reset_n>, <&pcie1_wake_n>;
+};
+
+&pcie1_phy {
+       status = "okay";
+
+       vdda-phy-supply = <&vreg_l10c_0p8>;
+       vdda-pll-supply = <&vreg_l6b_1p2>;
+};
+
 &pmk8350_vadc {
        pmk8350_die_temp {
                reg = <PMK8350_ADC7_DIE_TEMP>;
        };
 };
 
+&qfprom {
+       vcc-supply = <&vreg_l1c_1p8>;
+};
+
+&qspi {
+       status = "okay";
+       pinctrl-names = "default";
+       pinctrl-0 = <&qspi_clk>, <&qspi_cs0>, <&qspi_data01>;
+
+       flash@0 {
+               compatible = "jedec,spi-nor";
+               reg = <0>;
+               spi-max-frequency = <37500000>;
+               spi-tx-bus-width = <2>;
+               spi-rx-bus-width = <2>;
+       };
+};
+
 &qupv3_id_0 {
        status = "okay";
 };
 
+&qupv3_id_1 {
+       status = "okay";
+};
+
+&remoteproc_mpss {
+       status = "okay";
+       compatible = "qcom,sc7280-mss-pil";
+       iommus = <&apps_smmu 0x124 0x0>, <&apps_smmu 0x488 0x7>;
+       memory-region = <&mba_mem &mpss_mem>;
+};
+
 &sdhc_1 {
        status = "okay";
 
 };
 
 &uart5 {
+       compatible = "qcom,geni-debug-uart";
        status = "okay";
 };
 
        vdda18-supply = <&vreg_l1c_1p8>;
 };
 
+&uart7 {
+       status = "okay";
+
+       /delete-property/interrupts;
+       interrupts-extended = <&intc GIC_SPI 608 IRQ_TYPE_LEVEL_HIGH>,
+                               <&tlmm 31 IRQ_TYPE_EDGE_FALLING>;
+       pinctrl-names = "default", "sleep";
+       pinctrl-1 = <&qup_uart7_sleep_cts>, <&qup_uart7_sleep_rts>, <&qup_uart7_sleep_tx>, <&qup_uart7_sleep_rx>;
+};
+
 /* PINCTRL - additions to nodes defined in sc7280.dtsi */
 
-&qup_uart5_default {
-       tx {
-               pins = "gpio46";
-               drive-strength = <2>;
+&pm7325_gpios {
+       key_vol_up_default: key-vol-up-default {
+               pins = "gpio6";
+               function = "normal";
+               input-enable;
+               bias-pull-up;
+               power-source = <0>;
+               qcom,drive-strength = <3>;
+       };
+};
+
+&qspi_cs0 {
+       bias-disable;
+};
+
+&qspi_clk {
+       bias-disable;
+};
+
+&qspi_data01 {
+       /* High-Z when no transfers; nice to park the lines */
+       bias-pull-up;
+};
+
+&qup_uart5_tx {
+       drive-strength = <2>;
+       bias-disable;
+};
+
+&qup_uart5_rx {
+       drive-strength = <2>;
+       bias-pull-up;
+};
+
+&qup_uart7_cts {
+       /*
+        * Configure a pull-down on CTS to match the pull of
+        * the Bluetooth module.
+        */
+       bias-pull-down;
+};
+
+&qup_uart7_rts {
+       /* We'll drive RTS, so no pull */
+       drive-strength = <2>;
+       bias-disable;
+};
+
+&qup_uart7_tx {
+       /* We'll drive TX, so no pull */
+       drive-strength = <2>;
+       bias-disable;
+};
+
+&qup_uart7_rx {
+       /*
+        * Configure a pull-up on RX. This is needed to avoid
+        * garbage data when the TX pin of the Bluetooth module is
+        * in tri-state (module powered off or not driving the
+        * signal yet).
+        */
+       bias-pull-up;
+};
+
+&tlmm {
+       nvme_pwren: nvme-pwren {
+               function = "gpio";
+       };
+
+       pcie1_reset_n: pcie1-reset-n {
+               pins = "gpio2";
+               function = "gpio";
+
+               drive-strength = <16>;
+               output-low;
                bias-disable;
        };
 
-       rx {
-               pins = "gpio47";
+       pcie1_wake_n: pcie1-wake-n {
+               pins = "gpio3";
+               function = "gpio";
+
                drive-strength = <2>;
                bias-pull-up;
        };
+
+       qup_uart7_sleep_cts: qup-uart7-sleep-cts {
+               pins = "gpio28";
+               function = "gpio";
+               /*
+                * Configure a pull-down on CTS to match the pull of
+                * the Bluetooth module.
+                */
+               bias-pull-down;
+       };
+
+       qup_uart7_sleep_rts: qup-uart7-sleep-rts {
+               pins = "gpio29";
+               function = "gpio";
+               /*
+                * Configure pull-down on RTS. As RTS is active low
+                * signal, pull it low to indicate the BT SoC that it
+                * can wakeup the system anytime from suspend state by
+                * pulling RX low (by sending wakeup bytes).
+                */
+               bias-pull-down;
+       };
+
+       qup_uart7_sleep_tx: qup-uart7-sleep-tx {
+               pins = "gpio30";
+               function = "gpio";
+               /*
+                * Configure pull-up on TX when it isn't actively driven
+                * to prevent BT SoC from receiving garbage during sleep.
+                */
+               bias-pull-up;
+       };
+
+       qup_uart7_sleep_rx: qup-uart7-sleep-rx {
+               pins = "gpio31";
+               function = "gpio";
+               /*
+                * Configure a pull-up on RX. This is needed to avoid
+                * garbage data when the TX pin of the Bluetooth module
+                * is floating which may cause spurious wakeups.
+                */
+               bias-pull-up;
+       };
 };
 
 &sdc1_on {
        };
 
        sd-cd {
+               pins = "gpio91";
                bias-pull-up;
        };
 };
index 1fc2add..3ae9969 100644 (file)
                stdout-path = "serial0:115200n8";
        };
 };
+
+&nvme_pwren {
+       pins = "gpio51";
+};
+
+&nvme_3v3_regulator {
+       gpio = <&tlmm 51 GPIO_ACTIVE_HIGH>;
+};
index fd78f16..365a2e0 100644 (file)
@@ -5,12 +5,14 @@
  * Copyright (c) 2020-2021, The Linux Foundation. All rights reserved.
  */
 
+#include <dt-bindings/clock/qcom,dispcc-sc7280.h>
 #include <dt-bindings/clock/qcom,gcc-sc7280.h>
+#include <dt-bindings/clock/qcom,gpucc-sc7280.h>
 #include <dt-bindings/clock/qcom,rpmh.h>
+#include <dt-bindings/clock/qcom,videocc-sc7280.h>
 #include <dt-bindings/interconnect/qcom,sc7280.h>
 #include <dt-bindings/interrupt-controller/arm-gic.h>
 #include <dt-bindings/mailbox/qcom-ipcc.h>
-#include <dt-bindings/power/qcom-aoss-qmp.h>
 #include <dt-bindings/power/qcom-rpmpd.h>
 #include <dt-bindings/reset/qcom,sdm845-aoss.h>
 #include <dt-bindings/reset/qcom,sdm845-pdc.h>
        chosen { };
 
        aliases {
+               i2c0 = &i2c0;
+               i2c1 = &i2c1;
+               i2c2 = &i2c2;
+               i2c3 = &i2c3;
+               i2c4 = &i2c4;
+               i2c5 = &i2c5;
+               i2c6 = &i2c6;
+               i2c7 = &i2c7;
+               i2c8 = &i2c8;
+               i2c9 = &i2c9;
+               i2c10 = &i2c10;
+               i2c11 = &i2c11;
+               i2c12 = &i2c12;
+               i2c13 = &i2c13;
+               i2c14 = &i2c14;
+               i2c15 = &i2c15;
                mmc1 = &sdhc_1;
                mmc2 = &sdhc_2;
+               spi0 = &spi0;
+               spi1 = &spi1;
+               spi2 = &spi2;
+               spi3 = &spi3;
+               spi4 = &spi4;
+               spi5 = &spi5;
+               spi6 = &spi6;
+               spi7 = &spi7;
+               spi8 = &spi8;
+               spi9 = &spi9;
+               spi10 = &spi10;
+               spi11 = &spi11;
+               spi12 = &spi12;
+               spi13 = &spi13;
+               spi14 = &spi14;
+               spi15 = &spi15;
        };
 
        clocks {
                #size-cells = <2>;
                ranges;
 
+               hyp_mem: memory@80000000 {
+                       reg = <0x0 0x80000000 0x0 0x600000>;
+                       no-map;
+               };
+
+               xbl_mem: memory@80600000 {
+                       reg = <0x0 0x80600000 0x0 0x200000>;
+                       no-map;
+               };
+
                aop_mem: memory@80800000 {
                        reg = <0x0 0x80800000 0x0 0x60000>;
                        no-map;
                        no-map;
                };
 
+               reserved_xbl_uefi_log: memory@80880000 {
+                       reg = <0x0 0x80884000 0x0 0x10000>;
+                       no-map;
+               };
+
+               sec_apps_mem: memory@808ff000 {
+                       reg = <0x0 0x808ff000 0x0 0x1000>;
+                       no-map;
+               };
+
                smem_mem: memory@80900000 {
                        reg = <0x0 0x80900000 0x0 0x200000>;
                        no-map;
                        reg = <0x0 0x80b00000 0x0 0x100000>;
                };
 
+               wlan_fw_mem: memory@80c00000 {
+                       reg = <0x0 0x80c00000 0x0 0xc00000>;
+                       no-map;
+               };
+
                ipa_fw_mem: memory@8b700000 {
                        reg = <0 0x8b700000 0 0x10000>;
                        no-map;
                };
+
+               rmtfs_mem: memory@9c900000 {
+                       compatible = "qcom,rmtfs-mem";
+                       reg = <0x0 0x9c900000 0x0 0x280000>;
+                       no-map;
+
+                       qcom,client-id = <1>;
+                       qcom,vmid = <15>;
+               };
        };
 
        cpus {
                        };
                };
 
+               cpu-map {
+                       cluster0 {
+                               core0 {
+                                       cpu = <&CPU0>;
+                               };
+
+                               core1 {
+                                       cpu = <&CPU1>;
+                               };
+
+                               core2 {
+                                       cpu = <&CPU2>;
+                               };
+
+                               core3 {
+                                       cpu = <&CPU3>;
+                               };
+
+                               core4 {
+                                       cpu = <&CPU4>;
+                               };
+
+                               core5 {
+                                       cpu = <&CPU5>;
+                               };
+
+                               core6 {
+                                       cpu = <&CPU6>;
+                               };
+
+                               core7 {
+                                       cpu = <&CPU7>;
+                               };
+                       };
+               };
+
                idle-states {
                        entry-method = "psci";
 
                method = "smc";
        };
 
+       qspi_opp_table: qspi-opp-table {
+               compatible = "operating-points-v2";
+
+               opp-75000000 {
+                       opp-hz = /bits/ 64 <75000000>;
+                       required-opps = <&rpmhpd_opp_low_svs>;
+               };
+
+               opp-150000000 {
+                       opp-hz = /bits/ 64 <150000000>;
+                       required-opps = <&rpmhpd_opp_svs>;
+               };
+
+               opp-200000000 {
+                       opp-hz = /bits/ 64 <200000000>;
+                       required-opps = <&rpmhpd_opp_svs_l1>;
+               };
+
+               opp-300000000 {
+                       opp-hz = /bits/ 64 <300000000>;
+                       required-opps = <&rpmhpd_opp_nom>;
+               };
+       };
+
+       qup_opp_table: qup-opp-table {
+               compatible = "operating-points-v2";
+
+               opp-75000000 {
+                       opp-hz = /bits/ 64 <75000000>;
+                       required-opps = <&rpmhpd_opp_low_svs>;
+               };
+
+               opp-100000000 {
+                       opp-hz = /bits/ 64 <100000000>;
+                       required-opps = <&rpmhpd_opp_svs>;
+               };
+
+               opp-128000000 {
+                       opp-hz = /bits/ 64 <128000000>;
+                       required-opps = <&rpmhpd_opp_nom>;
+               };
+       };
+
        soc: soc@0 {
                #address-cells = <2>;
                #size-cells = <2>;
                qupv3_id_0: geniqup@9c0000 {
                        compatible = "qcom,geni-se-qup";
                        reg = <0 0x009c0000 0 0x2000>;
-                       clock-names = "m-ahb", "s-ahb";
                        clocks = <&gcc GCC_QUPV3_WRAP_0_M_AHB_CLK>,
                                 <&gcc GCC_QUPV3_WRAP_0_S_AHB_CLK>;
+                       clock-names = "m-ahb", "s-ahb";
                        #address-cells = <2>;
                        #size-cells = <2>;
                        ranges;
+                       iommus = <&apps_smmu 0x123 0x0>;
                        status = "disabled";
 
-                       uart5: serial@994000 {
-                               compatible = "qcom,geni-debug-uart";
-                               reg = <0 0x00994000 0 0x4000>;
+                       i2c0: i2c@980000 {
+                               compatible = "qcom,geni-i2c";
+                               reg = <0 0x00980000 0 0x4000>;
+                               clocks = <&gcc GCC_QUPV3_WRAP0_S0_CLK>;
                                clock-names = "se";
-                               clocks = <&gcc GCC_QUPV3_WRAP0_S5_CLK>;
                                pinctrl-names = "default";
-                               pinctrl-0 = <&qup_uart5_default>;
-                               interrupts = <GIC_SPI 606 IRQ_TYPE_LEVEL_HIGH>;
+                               pinctrl-0 = <&qup_i2c0_data_clk>;
+                               interrupts = <GIC_SPI 601 IRQ_TYPE_LEVEL_HIGH>;
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+                               interconnects = <&clk_virt MASTER_QUP_CORE_0 0 &clk_virt SLAVE_QUP_CORE_0 0>,
+                                               <&gem_noc MASTER_APPSS_PROC 0 &cnoc2 SLAVE_QUP_0 0>,
+                                               <&aggre1_noc MASTER_QUP_0 0 &mc_virt SLAVE_EBI1 0>;
+                               interconnect-names = "qup-core", "qup-config",
+                                                       "qup-memory";
                                status = "disabled";
                        };
-               };
 
-               cnoc2: interconnect@1500000 {
-                       reg = <0 0x01500000 0 0x1000>;
-                       compatible = "qcom,sc7280-cnoc2";
-                       #interconnect-cells = <2>;
-                       qcom,bcm-voters = <&apps_bcm_voter>;
-               };
+                       spi0: spi@980000 {
+                               compatible = "qcom,geni-spi";
+                               reg = <0 0x00980000 0 0x4000>;
+                               clocks = <&gcc GCC_QUPV3_WRAP0_S0_CLK>;
+                               clock-names = "se";
+                               pinctrl-names = "default";
+                               pinctrl-0 = <&qup_spi0_data_clk>, <&qup_spi0_cs>;
+                               interrupts = <GIC_SPI 601 IRQ_TYPE_LEVEL_HIGH>;
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+                               power-domains = <&rpmhpd SC7280_CX>;
+                               operating-points-v2 = <&qup_opp_table>;
+                               interconnects = <&clk_virt MASTER_QUP_CORE_0 0 &clk_virt SLAVE_QUP_CORE_0 0>,
+                                               <&gem_noc MASTER_APPSS_PROC 0 &cnoc2 SLAVE_QUP_0 0>;
+                               interconnect-names = "qup-core", "qup-config";
+                               status = "disabled";
+                       };
 
-               cnoc3: interconnect@1502000 {
-                       reg = <0 0x01502000 0 0x1000>;
-                       compatible = "qcom,sc7280-cnoc3";
-                       #interconnect-cells = <2>;
-                       qcom,bcm-voters = <&apps_bcm_voter>;
-               };
+                       uart0: serial@980000 {
+                               compatible = "qcom,geni-uart";
+                               reg = <0 0x00980000 0 0x4000>;
+                               clocks = <&gcc GCC_QUPV3_WRAP0_S0_CLK>;
+                               clock-names = "se";
+                               pinctrl-names = "default";
+                               pinctrl-0 = <&qup_uart0_cts>, <&qup_uart0_rts>, <&qup_uart0_tx>, <&qup_uart0_rx>;
+                               interrupts = <GIC_SPI 601 IRQ_TYPE_LEVEL_HIGH>;
+                               power-domains = <&rpmhpd SC7280_CX>;
+                               operating-points-v2 = <&qup_opp_table>;
+                               interconnects = <&clk_virt MASTER_QUP_CORE_0 0 &clk_virt SLAVE_QUP_CORE_0 0>,
+                                               <&gem_noc MASTER_APPSS_PROC 0 &cnoc2 SLAVE_QUP_0 0>;
+                               interconnect-names = "qup-core", "qup-config";
+                               status = "disabled";
+                       };
 
-               mc_virt: interconnect@1580000 {
-                       reg = <0 0x01580000 0 0x4>;
-                       compatible = "qcom,sc7280-mc-virt";
-                       #interconnect-cells = <2>;
-                       qcom,bcm-voters = <&apps_bcm_voter>;
-               };
+                       i2c1: i2c@984000 {
+                               compatible = "qcom,geni-i2c";
+                               reg = <0 0x00984000 0 0x4000>;
+                               clocks = <&gcc GCC_QUPV3_WRAP0_S1_CLK>;
+                               clock-names = "se";
+                               pinctrl-names = "default";
+                               pinctrl-0 = <&qup_i2c1_data_clk>;
+                               interrupts = <GIC_SPI 602 IRQ_TYPE_LEVEL_HIGH>;
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+                               interconnects = <&clk_virt MASTER_QUP_CORE_0 0 &clk_virt SLAVE_QUP_CORE_0 0>,
+                                               <&gem_noc MASTER_APPSS_PROC 0 &cnoc2 SLAVE_QUP_0 0>,
+                                               <&aggre1_noc MASTER_QUP_0 0 &mc_virt SLAVE_EBI1 0>;
+                               interconnect-names = "qup-core", "qup-config",
+                                                       "qup-memory";
+                               status = "disabled";
+                       };
 
-               system_noc: interconnect@1680000 {
-                       reg = <0 0x01680000 0 0x15480>;
-                       compatible = "qcom,sc7280-system-noc";
-                       #interconnect-cells = <2>;
-                       qcom,bcm-voters = <&apps_bcm_voter>;
-               };
+                       spi1: spi@984000 {
+                               compatible = "qcom,geni-spi";
+                               reg = <0 0x00984000 0 0x4000>;
+                               clocks = <&gcc GCC_QUPV3_WRAP0_S1_CLK>;
+                               clock-names = "se";
+                               pinctrl-names = "default";
+                               pinctrl-0 = <&qup_spi1_data_clk>, <&qup_spi1_cs>;
+                               interrupts = <GIC_SPI 602 IRQ_TYPE_LEVEL_HIGH>;
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+                               power-domains = <&rpmhpd SC7280_CX>;
+                               operating-points-v2 = <&qup_opp_table>;
+                               interconnects = <&clk_virt MASTER_QUP_CORE_0 0 &clk_virt SLAVE_QUP_CORE_0 0>,
+                                               <&gem_noc MASTER_APPSS_PROC 0 &cnoc2 SLAVE_QUP_0 0>;
+                               interconnect-names = "qup-core", "qup-config";
+                               status = "disabled";
+                       };
 
-               aggre1_noc: interconnect@16e0000 {
-                       compatible = "qcom,sc7280-aggre1-noc";
-                       reg = <0 0x016e0000 0 0x1c080>;
-                       #interconnect-cells = <2>;
-                       qcom,bcm-voters = <&apps_bcm_voter>;
-               };
+                       uart1: serial@984000 {
+                               compatible = "qcom,geni-uart";
+                               reg = <0 0x00984000 0 0x4000>;
+                               clocks = <&gcc GCC_QUPV3_WRAP0_S1_CLK>;
+                               clock-names = "se";
+                               pinctrl-names = "default";
+                               pinctrl-0 = <&qup_uart1_cts>, <&qup_uart1_rts>, <&qup_uart1_tx>, <&qup_uart1_rx>;
+                               interrupts = <GIC_SPI 602 IRQ_TYPE_LEVEL_HIGH>;
+                               power-domains = <&rpmhpd SC7280_CX>;
+                               operating-points-v2 = <&qup_opp_table>;
+                               interconnects = <&clk_virt MASTER_QUP_CORE_0 0 &clk_virt SLAVE_QUP_CORE_0 0>,
+                                               <&gem_noc MASTER_APPSS_PROC 0 &cnoc2 SLAVE_QUP_0 0>;
+                               interconnect-names = "qup-core", "qup-config";
+                               status = "disabled";
+                       };
 
-               aggre2_noc: interconnect@1700000 {
-                       reg = <0 0x01700000 0 0x2b080>;
-                       compatible = "qcom,sc7280-aggre2-noc";
-                       #interconnect-cells = <2>;
-                       qcom,bcm-voters = <&apps_bcm_voter>;
-               };
+                       i2c2: i2c@988000 {
+                               compatible = "qcom,geni-i2c";
+                               reg = <0 0x00988000 0 0x4000>;
+                               clocks = <&gcc GCC_QUPV3_WRAP0_S2_CLK>;
+                               clock-names = "se";
+                               pinctrl-names = "default";
+                               pinctrl-0 = <&qup_i2c2_data_clk>;
+                               interrupts = <GIC_SPI 603 IRQ_TYPE_LEVEL_HIGH>;
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+                               interconnects = <&clk_virt MASTER_QUP_CORE_0 0 &clk_virt SLAVE_QUP_CORE_0 0>,
+                                               <&gem_noc MASTER_APPSS_PROC 0 &cnoc2 SLAVE_QUP_0 0>,
+                                               <&aggre1_noc MASTER_QUP_0 0 &mc_virt SLAVE_EBI1 0>;
+                               interconnect-names = "qup-core", "qup-config",
+                                                       "qup-memory";
+                               status = "disabled";
+                       };
 
-               mmss_noc: interconnect@1740000 {
-                       reg = <0 0x01740000 0 0x1e080>;
-                       compatible = "qcom,sc7280-mmss-noc";
-                       #interconnect-cells = <2>;
-                       qcom,bcm-voters = <&apps_bcm_voter>;
-               };
+                       spi2: spi@988000 {
+                               compatible = "qcom,geni-spi";
+                               reg = <0 0x00988000 0 0x4000>;
+                               clocks = <&gcc GCC_QUPV3_WRAP0_S2_CLK>;
+                               clock-names = "se";
+                               pinctrl-names = "default";
+                               pinctrl-0 = <&qup_spi2_data_clk>, <&qup_spi2_cs>;
+                               interrupts = <GIC_SPI 603 IRQ_TYPE_LEVEL_HIGH>;
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+                               power-domains = <&rpmhpd SC7280_CX>;
+                               operating-points-v2 = <&qup_opp_table>;
+                               interconnects = <&clk_virt MASTER_QUP_CORE_0 0 &clk_virt SLAVE_QUP_CORE_0 0>,
+                                               <&gem_noc MASTER_APPSS_PROC 0 &cnoc2 SLAVE_QUP_0 0>;
+                               interconnect-names = "qup-core", "qup-config";
+                               status = "disabled";
+                       };
 
-               ipa: ipa@1e40000 {
-                       compatible = "qcom,sc7280-ipa";
+                       uart2: serial@988000 {
+                               compatible = "qcom,geni-uart";
+                               reg = <0 0x00988000 0 0x4000>;
+                               clocks = <&gcc GCC_QUPV3_WRAP0_S2_CLK>;
+                               clock-names = "se";
+                               pinctrl-names = "default";
+                               pinctrl-0 = <&qup_uart2_cts>, <&qup_uart2_rts>, <&qup_uart2_tx>, <&qup_uart2_rx>;
+                               interrupts = <GIC_SPI 603 IRQ_TYPE_LEVEL_HIGH>;
+                               power-domains = <&rpmhpd SC7280_CX>;
+                               operating-points-v2 = <&qup_opp_table>;
+                               interconnects = <&clk_virt MASTER_QUP_CORE_0 0 &clk_virt SLAVE_QUP_CORE_0 0>,
+                                               <&gem_noc MASTER_APPSS_PROC 0 &cnoc2 SLAVE_QUP_0 0>;
+                               interconnect-names = "qup-core", "qup-config";
+                               status = "disabled";
+                       };
 
-                       iommus = <&apps_smmu 0x480 0x0>,
-                                <&apps_smmu 0x482 0x0>;
-                       reg = <0 0x1e40000 0 0x8000>,
-                             <0 0x1e50000 0 0x4ad0>,
-                             <0 0x1e04000 0 0x23000>;
-                       reg-names = "ipa-reg",
-                                   "ipa-shared",
-                                   "gsi";
+                       i2c3: i2c@98c000 {
+                               compatible = "qcom,geni-i2c";
+                               reg = <0 0x0098c000 0 0x4000>;
+                               clocks = <&gcc GCC_QUPV3_WRAP0_S3_CLK>;
+                               clock-names = "se";
+                               pinctrl-names = "default";
+                               pinctrl-0 = <&qup_i2c3_data_clk>;
+                               interrupts = <GIC_SPI 604 IRQ_TYPE_LEVEL_HIGH>;
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+                               interconnects = <&clk_virt MASTER_QUP_CORE_0 0 &clk_virt SLAVE_QUP_CORE_0 0>,
+                                               <&gem_noc MASTER_APPSS_PROC 0 &cnoc2 SLAVE_QUP_0 0>,
+                                               <&aggre1_noc MASTER_QUP_0 0 &mc_virt SLAVE_EBI1 0>;
+                               interconnect-names = "qup-core", "qup-config",
+                                                       "qup-memory";
+                               status = "disabled";
+                       };
 
-                       interrupts-extended = <&intc 0 654 IRQ_TYPE_EDGE_RISING>,
-                                             <&intc 0 432 IRQ_TYPE_LEVEL_HIGH>,
-                                             <&ipa_smp2p_in 0 IRQ_TYPE_EDGE_RISING>,
-                                             <&ipa_smp2p_in 1 IRQ_TYPE_EDGE_RISING>;
-                       interrupt-names = "ipa",
-                                         "gsi",
-                                         "ipa-clock-query",
-                                         "ipa-setup-ready";
+                       spi3: spi@98c000 {
+                               compatible = "qcom,geni-spi";
+                               reg = <0 0x0098c000 0 0x4000>;
+                               clocks = <&gcc GCC_QUPV3_WRAP0_S3_CLK>;
+                               clock-names = "se";
+                               pinctrl-names = "default";
+                               pinctrl-0 = <&qup_spi3_data_clk>, <&qup_spi3_cs>;
+                               interrupts = <GIC_SPI 604 IRQ_TYPE_LEVEL_HIGH>;
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+                               power-domains = <&rpmhpd SC7280_CX>;
+                               operating-points-v2 = <&qup_opp_table>;
+                               interconnects = <&clk_virt MASTER_QUP_CORE_0 0 &clk_virt SLAVE_QUP_CORE_0 0>,
+                                               <&gem_noc MASTER_APPSS_PROC 0 &cnoc2 SLAVE_QUP_0 0>;
+                               interconnect-names = "qup-core", "qup-config";
+                               status = "disabled";
+                       };
 
-                       clocks = <&rpmhcc RPMH_IPA_CLK>;
-                       clock-names = "core";
+                       uart3: serial@98c000 {
+                               compatible = "qcom,geni-uart";
+                               reg = <0 0x0098c000 0 0x4000>;
+                               clocks = <&gcc GCC_QUPV3_WRAP0_S3_CLK>;
+                               clock-names = "se";
+                               pinctrl-names = "default";
+                               pinctrl-0 = <&qup_uart3_cts>, <&qup_uart3_rts>, <&qup_uart3_tx>, <&qup_uart3_rx>;
+                               interrupts = <GIC_SPI 604 IRQ_TYPE_LEVEL_HIGH>;
+                               power-domains = <&rpmhpd SC7280_CX>;
+                               operating-points-v2 = <&qup_opp_table>;
+                               interconnects = <&clk_virt MASTER_QUP_CORE_0 0 &clk_virt SLAVE_QUP_CORE_0 0>,
+                                               <&gem_noc MASTER_APPSS_PROC 0 &cnoc2 SLAVE_QUP_0 0>;
+                               interconnect-names = "qup-core", "qup-config";
+                               status = "disabled";
+                       };
 
-                       interconnects = <&aggre2_noc MASTER_IPA 0 &mc_virt SLAVE_EBI1 0>,
-                                       <&gem_noc MASTER_APPSS_PROC 0 &cnoc2 SLAVE_IPA_CFG 0>;
-                       interconnect-names = "memory",
-                                            "config";
+                       i2c4: i2c@990000 {
+                               compatible = "qcom,geni-i2c";
+                               reg = <0 0x00990000 0 0x4000>;
+                               clocks = <&gcc GCC_QUPV3_WRAP0_S4_CLK>;
+                               clock-names = "se";
+                               pinctrl-names = "default";
+                               pinctrl-0 = <&qup_i2c4_data_clk>;
+                               interrupts = <GIC_SPI 605 IRQ_TYPE_LEVEL_HIGH>;
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+                               interconnects = <&clk_virt MASTER_QUP_CORE_0 0 &clk_virt SLAVE_QUP_CORE_0 0>,
+                                               <&gem_noc MASTER_APPSS_PROC 0 &cnoc2 SLAVE_QUP_0 0>,
+                                               <&aggre1_noc MASTER_QUP_0 0 &mc_virt SLAVE_EBI1 0>;
+                               interconnect-names = "qup-core", "qup-config",
+                                                       "qup-memory";
+                               status = "disabled";
+                       };
 
-                       qcom,smem-states = <&ipa_smp2p_out 0>,
-                                          <&ipa_smp2p_out 1>;
-                       qcom,smem-state-names = "ipa-clock-enabled-valid",
-                                               "ipa-clock-enabled";
+                       spi4: spi@990000 {
+                               compatible = "qcom,geni-spi";
+                               reg = <0 0x00990000 0 0x4000>;
+                               clocks = <&gcc GCC_QUPV3_WRAP0_S4_CLK>;
+                               clock-names = "se";
+                               pinctrl-names = "default";
+                               pinctrl-0 = <&qup_spi4_data_clk>, <&qup_spi4_cs>;
+                               interrupts = <GIC_SPI 605 IRQ_TYPE_LEVEL_HIGH>;
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+                               power-domains = <&rpmhpd SC7280_CX>;
+                               operating-points-v2 = <&qup_opp_table>;
+                               interconnects = <&clk_virt MASTER_QUP_CORE_0 0 &clk_virt SLAVE_QUP_CORE_0 0>,
+                                               <&gem_noc MASTER_APPSS_PROC 0 &cnoc2 SLAVE_QUP_0 0>;
+                               interconnect-names = "qup-core", "qup-config";
+                               status = "disabled";
+                       };
 
-                       status = "disabled";
-               };
+                       uart4: serial@990000 {
+                               compatible = "qcom,geni-uart";
+                               reg = <0 0x00990000 0 0x4000>;
+                               clocks = <&gcc GCC_QUPV3_WRAP0_S4_CLK>;
+                               clock-names = "se";
+                               pinctrl-names = "default";
+                               pinctrl-0 = <&qup_uart4_cts>, <&qup_uart4_rts>, <&qup_uart4_tx>, <&qup_uart4_rx>;
+                               interrupts = <GIC_SPI 605 IRQ_TYPE_LEVEL_HIGH>;
+                               power-domains = <&rpmhpd SC7280_CX>;
+                               operating-points-v2 = <&qup_opp_table>;
+                               interconnects = <&clk_virt MASTER_QUP_CORE_0 0 &clk_virt SLAVE_QUP_CORE_0 0>,
+                                               <&gem_noc MASTER_APPSS_PROC 0 &cnoc2 SLAVE_QUP_0 0>;
+                               interconnect-names = "qup-core", "qup-config";
+                               status = "disabled";
+                       };
 
-               tcsr_mutex: hwlock@1f40000 {
-                       compatible = "qcom,tcsr-mutex", "syscon";
-                       reg = <0 0x01f40000 0 0x40000>;
-                       #hwlock-cells = <1>;
-               };
+                       i2c5: i2c@994000 {
+                               compatible = "qcom,geni-i2c";
+                               reg = <0 0x00994000 0 0x4000>;
+                               clocks = <&gcc GCC_QUPV3_WRAP0_S5_CLK>;
+                               clock-names = "se";
+                               pinctrl-names = "default";
+                               pinctrl-0 = <&qup_i2c5_data_clk>;
+                               interrupts = <GIC_SPI 606 IRQ_TYPE_LEVEL_HIGH>;
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+                               interconnects = <&clk_virt MASTER_QUP_CORE_0 0 &clk_virt SLAVE_QUP_CORE_0 0>,
+                                               <&gem_noc MASTER_APPSS_PROC 0 &cnoc2 SLAVE_QUP_0 0>,
+                                               <&aggre1_noc MASTER_QUP_0 0 &mc_virt SLAVE_EBI1 0>;
+                               interconnect-names = "qup-core", "qup-config",
+                                                       "qup-memory";
+                               status = "disabled";
+                       };
 
-               lpasscc: lpasscc@3000000 {
-                       compatible = "qcom,sc7280-lpasscc";
-                       reg = <0 0x03000000 0 0x40>,
-                             <0 0x03c04000 0 0x4>,
-                             <0 0x03389000 0 0x24>;
-                       reg-names = "qdsp6ss", "top_cc", "cc";
-                       clocks = <&gcc GCC_CFG_NOC_LPASS_CLK>;
-                       clock-names = "iface";
-                       #clock-cells = <1>;
-               };
+                       spi5: spi@994000 {
+                               compatible = "qcom,geni-spi";
+                               reg = <0 0x00994000 0 0x4000>;
+                               clocks = <&gcc GCC_QUPV3_WRAP0_S5_CLK>;
+                               clock-names = "se";
+                               pinctrl-names = "default";
+                               pinctrl-0 = <&qup_spi5_data_clk>, <&qup_spi5_cs>;
+                               interrupts = <GIC_SPI 606 IRQ_TYPE_LEVEL_HIGH>;
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+                               power-domains = <&rpmhpd SC7280_CX>;
+                               operating-points-v2 = <&qup_opp_table>;
+                               interconnects = <&clk_virt MASTER_QUP_CORE_0 0 &clk_virt SLAVE_QUP_CORE_0 0>,
+                                               <&gem_noc MASTER_APPSS_PROC 0 &cnoc2 SLAVE_QUP_0 0>;
+                               interconnect-names = "qup-core", "qup-config";
+                               status = "disabled";
+                       };
 
-               lpass_ag_noc: interconnect@3c40000 {
-                       reg = <0 0x03c40000 0 0xf080>;
-                       compatible = "qcom,sc7280-lpass-ag-noc";
-                       #interconnect-cells = <2>;
-                       qcom,bcm-voters = <&apps_bcm_voter>;
-               };
+                       uart5: serial@994000 {
+                               compatible = "qcom,geni-uart";
+                               reg = <0 0x00994000 0 0x4000>;
+                               clocks = <&gcc GCC_QUPV3_WRAP0_S5_CLK>;
+                               clock-names = "se";
+                               pinctrl-names = "default";
+                               pinctrl-0 = <&qup_uart5_cts>, <&qup_uart5_rts>, <&qup_uart5_tx>, <&qup_uart5_rx>;
+                               interrupts = <GIC_SPI 606 IRQ_TYPE_LEVEL_HIGH>;
+                               power-domains = <&rpmhpd SC7280_CX>;
+                               operating-points-v2 = <&qup_opp_table>;
+                               interconnects = <&clk_virt MASTER_QUP_CORE_0 0 &clk_virt SLAVE_QUP_CORE_0 0>,
+                                               <&gem_noc MASTER_APPSS_PROC 0 &cnoc2 SLAVE_QUP_0 0>;
+                               interconnect-names = "qup-core", "qup-config";
+                               status = "disabled";
+                       };
 
-               gpucc: clock-controller@3d90000 {
-                       compatible = "qcom,sc7280-gpucc";
-                       reg = <0 0x03d90000 0 0x9000>;
-                       clocks = <&rpmhcc RPMH_CXO_CLK>,
-                                <&gcc GCC_GPU_GPLL0_CLK_SRC>,
-                                <&gcc GCC_GPU_GPLL0_DIV_CLK_SRC>;
-                       clock-names = "bi_tcxo",
-                                     "gcc_gpu_gpll0_clk_src",
-                                     "gcc_gpu_gpll0_div_clk_src";
-                       #clock-cells = <1>;
-                       #reset-cells = <1>;
-                       #power-domain-cells = <1>;
-               };
-
-               stm@6002000 {
-                       compatible = "arm,coresight-stm", "arm,primecell";
-                       reg = <0 0x06002000 0 0x1000>,
-                             <0 0x16280000 0 0x180000>;
-                       reg-names = "stm-base", "stm-stimulus-base";
-
-                       clocks = <&aoss_qmp>;
-                       clock-names = "apb_pclk";
-
-                       out-ports {
-                               port {
-                                       stm_out: endpoint {
-                                               remote-endpoint = <&funnel0_in7>;
-                                       };
-                               };
+                       i2c6: i2c@998000 {
+                               compatible = "qcom,geni-i2c";
+                               reg = <0 0x00998000 0 0x4000>;
+                               clocks = <&gcc GCC_QUPV3_WRAP0_S6_CLK>;
+                               clock-names = "se";
+                               pinctrl-names = "default";
+                               pinctrl-0 = <&qup_i2c6_data_clk>;
+                               interrupts = <GIC_SPI 607 IRQ_TYPE_LEVEL_HIGH>;
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+                               interconnects = <&clk_virt MASTER_QUP_CORE_0 0 &clk_virt SLAVE_QUP_CORE_0 0>,
+                                               <&gem_noc MASTER_APPSS_PROC 0 &cnoc2 SLAVE_QUP_0 0>,
+                                               <&aggre1_noc MASTER_QUP_0 0 &mc_virt SLAVE_EBI1 0>;
+                               interconnect-names = "qup-core", "qup-config",
+                                                       "qup-memory";
+                               status = "disabled";
                        };
-               };
 
-               funnel@6041000 {
-                       compatible = "arm,coresight-dynamic-funnel", "arm,primecell";
-                       reg = <0 0x06041000 0 0x1000>;
+                       spi6: spi@998000 {
+                               compatible = "qcom,geni-spi";
+                               reg = <0 0x00998000 0 0x4000>;
+                               clocks = <&gcc GCC_QUPV3_WRAP0_S6_CLK>;
+                               clock-names = "se";
+                               pinctrl-names = "default";
+                               pinctrl-0 = <&qup_spi6_data_clk>, <&qup_spi6_cs>;
+                               interrupts = <GIC_SPI 607 IRQ_TYPE_LEVEL_HIGH>;
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+                               power-domains = <&rpmhpd SC7280_CX>;
+                               operating-points-v2 = <&qup_opp_table>;
+                               interconnects = <&clk_virt MASTER_QUP_CORE_0 0 &clk_virt SLAVE_QUP_CORE_0 0>,
+                                               <&gem_noc MASTER_APPSS_PROC 0 &cnoc2 SLAVE_QUP_0 0>;
+                               interconnect-names = "qup-core", "qup-config";
+                               status = "disabled";
+                       };
 
-                       clocks = <&aoss_qmp>;
-                       clock-names = "apb_pclk";
+                       uart6: serial@998000 {
+                               compatible = "qcom,geni-uart";
+                               reg = <0 0x00998000 0 0x4000>;
+                               clocks = <&gcc GCC_QUPV3_WRAP0_S6_CLK>;
+                               clock-names = "se";
+                               pinctrl-names = "default";
+                               pinctrl-0 = <&qup_uart6_cts>, <&qup_uart6_rts>, <&qup_uart6_tx>, <&qup_uart6_rx>;
+                               interrupts = <GIC_SPI 607 IRQ_TYPE_LEVEL_HIGH>;
+                               power-domains = <&rpmhpd SC7280_CX>;
+                               operating-points-v2 = <&qup_opp_table>;
+                               interconnects = <&clk_virt MASTER_QUP_CORE_0 0 &clk_virt SLAVE_QUP_CORE_0 0>,
+                                               <&gem_noc MASTER_APPSS_PROC 0 &cnoc2 SLAVE_QUP_0 0>;
+                               interconnect-names = "qup-core", "qup-config";
+                               status = "disabled";
+                       };
 
-                       out-ports {
-                               port {
-                                       funnel0_out: endpoint {
-                                               remote-endpoint = <&merge_funnel_in0>;
-                                       };
-                               };
+                       i2c7: i2c@99c000 {
+                               compatible = "qcom,geni-i2c";
+                               reg = <0 0x0099c000 0 0x4000>;
+                               clocks = <&gcc GCC_QUPV3_WRAP0_S7_CLK>;
+                               clock-names = "se";
+                               pinctrl-names = "default";
+                               pinctrl-0 = <&qup_i2c7_data_clk>;
+                               interrupts = <GIC_SPI 608 IRQ_TYPE_LEVEL_HIGH>;
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+                               interconnects = <&clk_virt MASTER_QUP_CORE_0 0 &clk_virt SLAVE_QUP_CORE_0 0>,
+                                               <&gem_noc MASTER_APPSS_PROC 0 &cnoc2 SLAVE_QUP_0 0>,
+                                               <&aggre1_noc MASTER_QUP_0 0 &mc_virt SLAVE_EBI1 0>;
+                               interconnect-names = "qup-core", "qup-config",
+                                                       "qup-memory";
+                               status = "disabled";
                        };
 
-                       in-ports {
+                       spi7: spi@99c000 {
+                               compatible = "qcom,geni-spi";
+                               reg = <0 0x0099c000 0 0x4000>;
+                               clocks = <&gcc GCC_QUPV3_WRAP0_S7_CLK>;
+                               clock-names = "se";
+                               pinctrl-names = "default";
+                               pinctrl-0 = <&qup_spi7_data_clk>, <&qup_spi7_cs>;
+                               interrupts = <GIC_SPI 608 IRQ_TYPE_LEVEL_HIGH>;
                                #address-cells = <1>;
                                #size-cells = <0>;
+                               power-domains = <&rpmhpd SC7280_CX>;
+                               operating-points-v2 = <&qup_opp_table>;
+                               interconnects = <&clk_virt MASTER_QUP_CORE_0 0 &clk_virt SLAVE_QUP_CORE_0 0>,
+                                               <&gem_noc MASTER_APPSS_PROC 0 &cnoc2 SLAVE_QUP_0 0>;
+                               interconnect-names = "qup-core", "qup-config";
+                               status = "disabled";
+                       };
 
-                               port@7 {
-                                       reg = <7>;
-                                       funnel0_in7: endpoint {
-                                               remote-endpoint = <&stm_out>;
-                                       };
-                               };
+                       uart7: serial@99c000 {
+                               compatible = "qcom,geni-uart";
+                               reg = <0 0x0099c000 0 0x4000>;
+                               clocks = <&gcc GCC_QUPV3_WRAP0_S7_CLK>;
+                               clock-names = "se";
+                               pinctrl-names = "default";
+                               pinctrl-0 = <&qup_uart7_cts>, <&qup_uart7_rts>, <&qup_uart7_tx>, <&qup_uart7_rx>;
+                               interrupts = <GIC_SPI 608 IRQ_TYPE_LEVEL_HIGH>;
+                               power-domains = <&rpmhpd SC7280_CX>;
+                               operating-points-v2 = <&qup_opp_table>;
+                               interconnects = <&clk_virt MASTER_QUP_CORE_0 0 &clk_virt SLAVE_QUP_CORE_0 0>,
+                                               <&gem_noc MASTER_APPSS_PROC 0 &cnoc2 SLAVE_QUP_0 0>;
+                               interconnect-names = "qup-core", "qup-config";
+                               status = "disabled";
                        };
                };
 
-               funnel@6042000 {
-                       compatible = "arm,coresight-dynamic-funnel", "arm,primecell";
-                       reg = <0 0x06042000 0 0x1000>;
-
-                       clocks = <&aoss_qmp>;
-                       clock-names = "apb_pclk";
+               qupv3_id_1: geniqup@ac0000 {
+                       compatible = "qcom,geni-se-qup";
+                       reg = <0 0x00ac0000 0 0x2000>;
+                       clocks = <&gcc GCC_QUPV3_WRAP_1_M_AHB_CLK>,
+                                <&gcc GCC_QUPV3_WRAP_1_S_AHB_CLK>;
+                       clock-names = "m-ahb", "s-ahb";
+                       #address-cells = <2>;
+                       #size-cells = <2>;
+                       ranges;
+                       iommus = <&apps_smmu 0x43 0x0>;
+                       status = "disabled";
 
-                       out-ports {
-                               port {
-                                       funnel1_out: endpoint {
-                                               remote-endpoint = <&merge_funnel_in1>;
-                                       };
-                               };
+                       i2c8: i2c@a80000 {
+                               compatible = "qcom,geni-i2c";
+                               reg = <0 0x00a80000 0 0x4000>;
+                               clocks = <&gcc GCC_QUPV3_WRAP1_S0_CLK>;
+                               clock-names = "se";
+                               pinctrl-names = "default";
+                               pinctrl-0 = <&qup_i2c8_data_clk>;
+                               interrupts = <GIC_SPI 353 IRQ_TYPE_LEVEL_HIGH>;
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+                               interconnects = <&clk_virt MASTER_QUP_CORE_1 0 &clk_virt SLAVE_QUP_CORE_1 0>,
+                                               <&gem_noc MASTER_APPSS_PROC 0 &cnoc2 SLAVE_QUP_1 0>,
+                                               <&aggre2_noc MASTER_QUP_1 0 &mc_virt SLAVE_EBI1 0>;
+                               interconnect-names = "qup-core", "qup-config",
+                                                       "qup-memory";
+                               status = "disabled";
                        };
 
-                       in-ports {
+                       spi8: spi@a80000 {
+                               compatible = "qcom,geni-spi";
+                               reg = <0 0x00a80000 0 0x4000>;
+                               clocks = <&gcc GCC_QUPV3_WRAP1_S0_CLK>;
+                               clock-names = "se";
+                               pinctrl-names = "default";
+                               pinctrl-0 = <&qup_spi8_data_clk>, <&qup_spi8_cs>;
+                               interrupts = <GIC_SPI 353 IRQ_TYPE_LEVEL_HIGH>;
                                #address-cells = <1>;
                                #size-cells = <0>;
+                               power-domains = <&rpmhpd SC7280_CX>;
+                               operating-points-v2 = <&qup_opp_table>;
+                               interconnects = <&clk_virt MASTER_QUP_CORE_1 0 &clk_virt SLAVE_QUP_CORE_1 0>,
+                                               <&gem_noc MASTER_APPSS_PROC 0 &cnoc2 SLAVE_QUP_1 0>;
+                               interconnect-names = "qup-core", "qup-config";
+                               status = "disabled";
+                       };
 
-                               port@4 {
-                                       reg = <4>;
-                                       funnel1_in4: endpoint {
-                                               remote-endpoint = <&apss_merge_funnel_out>;
-                                       };
-                               };
+                       uart8: serial@a80000 {
+                               compatible = "qcom,geni-uart";
+                               reg = <0 0x00a80000 0 0x4000>;
+                               clocks = <&gcc GCC_QUPV3_WRAP1_S0_CLK>;
+                               clock-names = "se";
+                               pinctrl-names = "default";
+                               pinctrl-0 = <&qup_uart8_cts>, <&qup_uart8_rts>, <&qup_uart8_tx>, <&qup_uart8_rx>;
+                               interrupts = <GIC_SPI 353 IRQ_TYPE_LEVEL_HIGH>;
+                               power-domains = <&rpmhpd SC7280_CX>;
+                               operating-points-v2 = <&qup_opp_table>;
+                               interconnects = <&clk_virt MASTER_QUP_CORE_1 0 &clk_virt SLAVE_QUP_CORE_1 0>,
+                                               <&gem_noc MASTER_APPSS_PROC 0 &cnoc2 SLAVE_QUP_1 0>;
+                               interconnect-names = "qup-core", "qup-config";
+                               status = "disabled";
                        };
-               };
 
-               funnel@6045000 {
-                       compatible = "arm,coresight-dynamic-funnel", "arm,primecell";
-                       reg = <0 0x06045000 0 0x1000>;
+                       i2c9: i2c@a84000 {
+                               compatible = "qcom,geni-i2c";
+                               reg = <0 0x00a84000 0 0x4000>;
+                               clocks = <&gcc GCC_QUPV3_WRAP1_S1_CLK>;
+                               clock-names = "se";
+                               pinctrl-names = "default";
+                               pinctrl-0 = <&qup_i2c9_data_clk>;
+                               interrupts = <GIC_SPI 354 IRQ_TYPE_LEVEL_HIGH>;
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+                               interconnects = <&clk_virt MASTER_QUP_CORE_1 0 &clk_virt SLAVE_QUP_CORE_1 0>,
+                                               <&gem_noc MASTER_APPSS_PROC 0 &cnoc2 SLAVE_QUP_1 0>,
+                                               <&aggre2_noc MASTER_QUP_1 0 &mc_virt SLAVE_EBI1 0>;
+                               interconnect-names = "qup-core", "qup-config",
+                                                       "qup-memory";
+                               status = "disabled";
+                       };
 
-                       clocks = <&aoss_qmp>;
-                       clock-names = "apb_pclk";
+                       spi9: spi@a84000 {
+                               compatible = "qcom,geni-spi";
+                               reg = <0 0x00a84000 0 0x4000>;
+                               clocks = <&gcc GCC_QUPV3_WRAP1_S1_CLK>;
+                               clock-names = "se";
+                               pinctrl-names = "default";
+                               pinctrl-0 = <&qup_spi9_data_clk>, <&qup_spi9_cs>;
+                               interrupts = <GIC_SPI 354 IRQ_TYPE_LEVEL_HIGH>;
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+                               power-domains = <&rpmhpd SC7280_CX>;
+                               operating-points-v2 = <&qup_opp_table>;
+                               interconnects = <&clk_virt MASTER_QUP_CORE_1 0 &clk_virt SLAVE_QUP_CORE_1 0>,
+                                               <&gem_noc MASTER_APPSS_PROC 0 &cnoc2 SLAVE_QUP_1 0>;
+                               interconnect-names = "qup-core", "qup-config";
+                               status = "disabled";
+                       };
 
-                       out-ports {
-                               port {
-                                       merge_funnel_out: endpoint {
-                                               remote-endpoint = <&swao_funnel_in>;
-                                       };
-                               };
+                       uart9: serial@a84000 {
+                               compatible = "qcom,geni-uart";
+                               reg = <0 0x00a84000 0 0x4000>;
+                               clocks = <&gcc GCC_QUPV3_WRAP1_S1_CLK>;
+                               clock-names = "se";
+                               pinctrl-names = "default";
+                               pinctrl-0 = <&qup_uart9_cts>, <&qup_uart9_rts>, <&qup_uart9_tx>, <&qup_uart9_rx>;
+                               interrupts = <GIC_SPI 354 IRQ_TYPE_LEVEL_HIGH>;
+                               power-domains = <&rpmhpd SC7280_CX>;
+                               operating-points-v2 = <&qup_opp_table>;
+                               interconnects = <&clk_virt MASTER_QUP_CORE_1 0 &clk_virt SLAVE_QUP_CORE_1 0>,
+                                               <&gem_noc MASTER_APPSS_PROC 0 &cnoc2 SLAVE_QUP_1 0>;
+                               interconnect-names = "qup-core", "qup-config";
+                               status = "disabled";
                        };
 
-                       in-ports {
+                       i2c10: i2c@a88000 {
+                               compatible = "qcom,geni-i2c";
+                               reg = <0 0x00a88000 0 0x4000>;
+                               clocks = <&gcc GCC_QUPV3_WRAP1_S2_CLK>;
+                               clock-names = "se";
+                               pinctrl-names = "default";
+                               pinctrl-0 = <&qup_i2c10_data_clk>;
+                               interrupts = <GIC_SPI 355 IRQ_TYPE_LEVEL_HIGH>;
                                #address-cells = <1>;
                                #size-cells = <0>;
+                               interconnects = <&clk_virt MASTER_QUP_CORE_1 0 &clk_virt SLAVE_QUP_CORE_1 0>,
+                                               <&gem_noc MASTER_APPSS_PROC 0 &cnoc2 SLAVE_QUP_1 0>,
+                                               <&aggre2_noc MASTER_QUP_1 0 &mc_virt SLAVE_EBI1 0>;
+                               interconnect-names = "qup-core", "qup-config",
+                                                       "qup-memory";
+                               status = "disabled";
+                       };
 
-                               port@0 {
-                                       reg = <0>;
-                                       merge_funnel_in0: endpoint {
-                                               remote-endpoint = <&funnel0_out>;
-                                       };
-                               };
-
-                               port@1 {
-                                       reg = <1>;
-                                       merge_funnel_in1: endpoint {
-                                               remote-endpoint = <&funnel1_out>;
-                                       };
-                               };
+                       spi10: spi@a88000 {
+                               compatible = "qcom,geni-spi";
+                               reg = <0 0x00a88000 0 0x4000>;
+                               clocks = <&gcc GCC_QUPV3_WRAP1_S2_CLK>;
+                               clock-names = "se";
+                               pinctrl-names = "default";
+                               pinctrl-0 = <&qup_spi10_data_clk>, <&qup_spi10_cs>;
+                               interrupts = <GIC_SPI 355 IRQ_TYPE_LEVEL_HIGH>;
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+                               power-domains = <&rpmhpd SC7280_CX>;
+                               operating-points-v2 = <&qup_opp_table>;
+                               interconnects = <&clk_virt MASTER_QUP_CORE_1 0 &clk_virt SLAVE_QUP_CORE_1 0>,
+                                               <&gem_noc MASTER_APPSS_PROC 0 &cnoc2 SLAVE_QUP_1 0>;
+                               interconnect-names = "qup-core", "qup-config";
+                               status = "disabled";
                        };
-               };
 
-               replicator@6046000 {
-                       compatible = "arm,coresight-dynamic-replicator", "arm,primecell";
-                       reg = <0 0x06046000 0 0x1000>;
+                       uart10: serial@a88000 {
+                               compatible = "qcom,geni-uart";
+                               reg = <0 0x00a88000 0 0x4000>;
+                               clocks = <&gcc GCC_QUPV3_WRAP1_S2_CLK>;
+                               clock-names = "se";
+                               pinctrl-names = "default";
+                               pinctrl-0 = <&qup_uart10_cts>, <&qup_uart10_rts>, <&qup_uart10_tx>, <&qup_uart10_rx>;
+                               interrupts = <GIC_SPI 355 IRQ_TYPE_LEVEL_HIGH>;
+                               power-domains = <&rpmhpd SC7280_CX>;
+                               operating-points-v2 = <&qup_opp_table>;
+                               interconnects = <&clk_virt MASTER_QUP_CORE_1 0 &clk_virt SLAVE_QUP_CORE_1 0>,
+                                               <&gem_noc MASTER_APPSS_PROC 0 &cnoc2 SLAVE_QUP_1 0>;
+                               interconnect-names = "qup-core", "qup-config";
+                               status = "disabled";
+                       };
 
-                       clocks = <&aoss_qmp>;
-                       clock-names = "apb_pclk";
+                       i2c11: i2c@a8c000 {
+                               compatible = "qcom,geni-i2c";
+                               reg = <0 0x00a8c000 0 0x4000>;
+                               clocks = <&gcc GCC_QUPV3_WRAP1_S3_CLK>;
+                               clock-names = "se";
+                               pinctrl-names = "default";
+                               pinctrl-0 = <&qup_i2c11_data_clk>;
+                               interrupts = <GIC_SPI 356 IRQ_TYPE_LEVEL_HIGH>;
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+                               interconnects = <&clk_virt MASTER_QUP_CORE_1 0 &clk_virt SLAVE_QUP_CORE_1 0>,
+                                               <&gem_noc MASTER_APPSS_PROC 0 &cnoc2 SLAVE_QUP_1 0>,
+                                               <&aggre2_noc MASTER_QUP_1 0 &mc_virt SLAVE_EBI1 0>;
+                               interconnect-names = "qup-core", "qup-config",
+                                                       "qup-memory";
+                               status = "disabled";
+                       };
 
-                       out-ports {
-                               port {
-                                       replicator_out: endpoint {
-                                               remote-endpoint = <&etr_in>;
-                                       };
-                               };
+                       spi11: spi@a8c000 {
+                               compatible = "qcom,geni-spi";
+                               reg = <0 0x00a8c000 0 0x4000>;
+                               clocks = <&gcc GCC_QUPV3_WRAP1_S3_CLK>;
+                               clock-names = "se";
+                               pinctrl-names = "default";
+                               pinctrl-0 = <&qup_spi11_data_clk>, <&qup_spi11_cs>;
+                               interrupts = <GIC_SPI 356 IRQ_TYPE_LEVEL_HIGH>;
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+                               power-domains = <&rpmhpd SC7280_CX>;
+                               operating-points-v2 = <&qup_opp_table>;
+                               interconnects = <&clk_virt MASTER_QUP_CORE_1 0 &clk_virt SLAVE_QUP_CORE_1 0>,
+                                               <&gem_noc MASTER_APPSS_PROC 0 &cnoc2 SLAVE_QUP_1 0>;
+                               interconnect-names = "qup-core", "qup-config";
+                               status = "disabled";
                        };
 
-                       in-ports {
-                               port {
-                                       replicator_in: endpoint {
-                                               remote-endpoint = <&swao_replicator_out>;
-                                       };
-                               };
+                       uart11: serial@a8c000 {
+                               compatible = "qcom,geni-uart";
+                               reg = <0 0x00a8c000 0 0x4000>;
+                               clocks = <&gcc GCC_QUPV3_WRAP1_S3_CLK>;
+                               clock-names = "se";
+                               pinctrl-names = "default";
+                               pinctrl-0 = <&qup_uart11_cts>, <&qup_uart11_rts>, <&qup_uart11_tx>, <&qup_uart11_rx>;
+                               interrupts = <GIC_SPI 356 IRQ_TYPE_LEVEL_HIGH>;
+                               power-domains = <&rpmhpd SC7280_CX>;
+                               operating-points-v2 = <&qup_opp_table>;
+                               interconnects = <&clk_virt MASTER_QUP_CORE_1 0 &clk_virt SLAVE_QUP_CORE_1 0>,
+                                               <&gem_noc MASTER_APPSS_PROC 0 &cnoc2 SLAVE_QUP_1 0>;
+                               interconnect-names = "qup-core", "qup-config";
+                               status = "disabled";
                        };
-               };
 
-               etr@6048000 {
-                       compatible = "arm,coresight-tmc", "arm,primecell";
-                       reg = <0 0x06048000 0 0x1000>;
-                       iommus = <&apps_smmu 0x04c0 0>;
+                       i2c12: i2c@a90000 {
+                               compatible = "qcom,geni-i2c";
+                               reg = <0 0x00a90000 0 0x4000>;
+                               clocks = <&gcc GCC_QUPV3_WRAP1_S4_CLK>;
+                               clock-names = "se";
+                               pinctrl-names = "default";
+                               pinctrl-0 = <&qup_i2c12_data_clk>;
+                               interrupts = <GIC_SPI 357 IRQ_TYPE_LEVEL_HIGH>;
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+                               interconnects = <&clk_virt MASTER_QUP_CORE_1 0 &clk_virt SLAVE_QUP_CORE_1 0>,
+                                               <&gem_noc MASTER_APPSS_PROC 0 &cnoc2 SLAVE_QUP_1 0>,
+                                               <&aggre2_noc MASTER_QUP_1 0 &mc_virt SLAVE_EBI1 0>;
+                               interconnect-names = "qup-core", "qup-config",
+                                                       "qup-memory";
+                               status = "disabled";
+                       };
 
-                       clocks = <&aoss_qmp>;
-                       clock-names = "apb_pclk";
-                       arm,scatter-gather;
+                       spi12: spi@a90000 {
+                               compatible = "qcom,geni-spi";
+                               reg = <0 0x00a90000 0 0x4000>;
+                               clocks = <&gcc GCC_QUPV3_WRAP1_S4_CLK>;
+                               clock-names = "se";
+                               pinctrl-names = "default";
+                               pinctrl-0 = <&qup_spi12_data_clk>, <&qup_spi12_cs>;
+                               interrupts = <GIC_SPI 357 IRQ_TYPE_LEVEL_HIGH>;
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+                               power-domains = <&rpmhpd SC7280_CX>;
+                               operating-points-v2 = <&qup_opp_table>;
+                               interconnects = <&clk_virt MASTER_QUP_CORE_1 0 &clk_virt SLAVE_QUP_CORE_1 0>,
+                                               <&gem_noc MASTER_APPSS_PROC 0 &cnoc2 SLAVE_QUP_1 0>;
+                               interconnect-names = "qup-core", "qup-config";
+                               status = "disabled";
+                       };
 
-                       in-ports {
-                               port {
-                                       etr_in: endpoint {
-                                               remote-endpoint = <&replicator_out>;
-                                       };
-                               };
+                       uart12: serial@a90000 {
+                               compatible = "qcom,geni-uart";
+                               reg = <0 0x00a90000 0 0x4000>;
+                               clocks = <&gcc GCC_QUPV3_WRAP1_S4_CLK>;
+                               clock-names = "se";
+                               pinctrl-names = "default";
+                               pinctrl-0 = <&qup_uart12_cts>, <&qup_uart12_rts>, <&qup_uart12_tx>, <&qup_uart12_rx>;
+                               interrupts = <GIC_SPI 357 IRQ_TYPE_LEVEL_HIGH>;
+                               power-domains = <&rpmhpd SC7280_CX>;
+                               operating-points-v2 = <&qup_opp_table>;
+                               interconnects = <&clk_virt MASTER_QUP_CORE_1 0 &clk_virt SLAVE_QUP_CORE_1 0>,
+                                               <&gem_noc MASTER_APPSS_PROC 0 &cnoc2 SLAVE_QUP_1 0>;
+                               interconnect-names = "qup-core", "qup-config";
+                               status = "disabled";
                        };
-               };
 
-               funnel@6b04000 {
-                       compatible = "arm,coresight-dynamic-funnel", "arm,primecell";
-                       reg = <0 0x06b04000 0 0x1000>;
+                       i2c13: i2c@a94000 {
+                               compatible = "qcom,geni-i2c";
+                               reg = <0 0x00a94000 0 0x4000>;
+                               clocks = <&gcc GCC_QUPV3_WRAP1_S5_CLK>;
+                               clock-names = "se";
+                               pinctrl-names = "default";
+                               pinctrl-0 = <&qup_i2c13_data_clk>;
+                               interrupts = <GIC_SPI 358 IRQ_TYPE_LEVEL_HIGH>;
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+                               interconnects = <&clk_virt MASTER_QUP_CORE_1 0 &clk_virt SLAVE_QUP_CORE_1 0>,
+                                               <&gem_noc MASTER_APPSS_PROC 0 &cnoc2 SLAVE_QUP_1 0>,
+                                               <&aggre2_noc MASTER_QUP_1 0 &mc_virt SLAVE_EBI1 0>;
+                               interconnect-names = "qup-core", "qup-config",
+                                                       "qup-memory";
+                               status = "disabled";
+                       };
 
-                       clocks = <&aoss_qmp>;
-                       clock-names = "apb_pclk";
+                       spi13: spi@a94000 {
+                               compatible = "qcom,geni-spi";
+                               reg = <0 0x00a94000 0 0x4000>;
+                               clocks = <&gcc GCC_QUPV3_WRAP1_S5_CLK>;
+                               clock-names = "se";
+                               pinctrl-names = "default";
+                               pinctrl-0 = <&qup_spi13_data_clk>, <&qup_spi13_cs>;
+                               interrupts = <GIC_SPI 358 IRQ_TYPE_LEVEL_HIGH>;
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+                               power-domains = <&rpmhpd SC7280_CX>;
+                               operating-points-v2 = <&qup_opp_table>;
+                               interconnects = <&clk_virt MASTER_QUP_CORE_1 0 &clk_virt SLAVE_QUP_CORE_1 0>,
+                                               <&gem_noc MASTER_APPSS_PROC 0 &cnoc2 SLAVE_QUP_1 0>;
+                               interconnect-names = "qup-core", "qup-config";
+                               status = "disabled";
+                       };
 
-                       out-ports {
-                               port {
-                                       swao_funnel_out: endpoint {
-                                               remote-endpoint = <&etf_in>;
-                                       };
-                               };
+                       uart13: serial@a94000 {
+                               compatible = "qcom,geni-uart";
+                               reg = <0 0x00a94000 0 0x4000>;
+                               clocks = <&gcc GCC_QUPV3_WRAP1_S5_CLK>;
+                               clock-names = "se";
+                               pinctrl-names = "default";
+                               pinctrl-0 = <&qup_uart13_cts>, <&qup_uart13_rts>, <&qup_uart13_tx>, <&qup_uart13_rx>;
+                               interrupts = <GIC_SPI 358 IRQ_TYPE_LEVEL_HIGH>;
+                               power-domains = <&rpmhpd SC7280_CX>;
+                               operating-points-v2 = <&qup_opp_table>;
+                               interconnects = <&clk_virt MASTER_QUP_CORE_1 0 &clk_virt SLAVE_QUP_CORE_1 0>,
+                                               <&gem_noc MASTER_APPSS_PROC 0 &cnoc2 SLAVE_QUP_1 0>;
+                               interconnect-names = "qup-core", "qup-config";
+                               status = "disabled";
                        };
 
-                       in-ports {
+                       i2c14: i2c@a98000 {
+                               compatible = "qcom,geni-i2c";
+                               reg = <0 0x00a98000 0 0x4000>;
+                               clocks = <&gcc GCC_QUPV3_WRAP1_S6_CLK>;
+                               clock-names = "se";
+                               pinctrl-names = "default";
+                               pinctrl-0 = <&qup_i2c14_data_clk>;
+                               interrupts = <GIC_SPI 368 IRQ_TYPE_LEVEL_HIGH>;
                                #address-cells = <1>;
                                #size-cells = <0>;
+                               interconnects = <&clk_virt MASTER_QUP_CORE_1 0 &clk_virt SLAVE_QUP_CORE_1 0>,
+                                               <&gem_noc MASTER_APPSS_PROC 0 &cnoc2 SLAVE_QUP_1 0>,
+                                               <&aggre2_noc MASTER_QUP_1 0 &mc_virt SLAVE_EBI1 0>;
+                               interconnect-names = "qup-core", "qup-config",
+                                                       "qup-memory";
+                               status = "disabled";
+                       };
 
-                               port@7 {
-                                       reg = <7>;
-                                       swao_funnel_in: endpoint {
-                                               remote-endpoint = <&merge_funnel_out>;
-                                       };
+                       spi14: spi@a98000 {
+                               compatible = "qcom,geni-spi";
+                               reg = <0 0x00a98000 0 0x4000>;
+                               clocks = <&gcc GCC_QUPV3_WRAP1_S6_CLK>;
+                               clock-names = "se";
+                               pinctrl-names = "default";
+                               pinctrl-0 = <&qup_spi14_data_clk>, <&qup_spi14_cs>;
+                               interrupts = <GIC_SPI 368 IRQ_TYPE_LEVEL_HIGH>;
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+                               power-domains = <&rpmhpd SC7280_CX>;
+                               operating-points-v2 = <&qup_opp_table>;
+                               interconnects = <&clk_virt MASTER_QUP_CORE_1 0 &clk_virt SLAVE_QUP_CORE_1 0>,
+                                               <&gem_noc MASTER_APPSS_PROC 0 &cnoc2 SLAVE_QUP_1 0>;
+                               interconnect-names = "qup-core", "qup-config";
+                               status = "disabled";
+                       };
+
+                       uart14: serial@a98000 {
+                               compatible = "qcom,geni-uart";
+                               reg = <0 0x00a98000 0 0x4000>;
+                               clocks = <&gcc GCC_QUPV3_WRAP1_S6_CLK>;
+                               clock-names = "se";
+                               pinctrl-names = "default";
+                               pinctrl-0 = <&qup_uart14_cts>, <&qup_uart14_rts>, <&qup_uart14_tx>, <&qup_uart14_rx>;
+                               interrupts = <GIC_SPI 368 IRQ_TYPE_LEVEL_HIGH>;
+                               power-domains = <&rpmhpd SC7280_CX>;
+                               operating-points-v2 = <&qup_opp_table>;
+                               interconnects = <&clk_virt MASTER_QUP_CORE_1 0 &clk_virt SLAVE_QUP_CORE_1 0>,
+                                               <&gem_noc MASTER_APPSS_PROC 0 &cnoc2 SLAVE_QUP_1 0>;
+                               interconnect-names = "qup-core", "qup-config";
+                               status = "disabled";
+                       };
+
+                       i2c15: i2c@a9c000 {
+                               compatible = "qcom,geni-i2c";
+                               reg = <0 0x00a9c000 0 0x4000>;
+                               clocks = <&gcc GCC_QUPV3_WRAP1_S7_CLK>;
+                               clock-names = "se";
+                               pinctrl-names = "default";
+                               pinctrl-0 = <&qup_i2c15_data_clk>;
+                               interrupts = <GIC_SPI 369 IRQ_TYPE_LEVEL_HIGH>;
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+                               interconnects = <&clk_virt MASTER_QUP_CORE_1 0 &clk_virt SLAVE_QUP_CORE_1 0>,
+                                               <&gem_noc MASTER_APPSS_PROC 0 &cnoc2 SLAVE_QUP_1 0>,
+                                               <&aggre2_noc MASTER_QUP_1 0 &mc_virt SLAVE_EBI1 0>;
+                               interconnect-names = "qup-core", "qup-config",
+                                                       "qup-memory";
+                               status = "disabled";
+                       };
+
+                       spi15: spi@a9c000 {
+                               compatible = "qcom,geni-spi";
+                               reg = <0 0x00a9c000 0 0x4000>;
+                               clocks = <&gcc GCC_QUPV3_WRAP1_S7_CLK>;
+                               clock-names = "se";
+                               pinctrl-names = "default";
+                               pinctrl-0 = <&qup_spi15_data_clk>, <&qup_spi15_cs>;
+                               interrupts = <GIC_SPI 369 IRQ_TYPE_LEVEL_HIGH>;
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+                               power-domains = <&rpmhpd SC7280_CX>;
+                               operating-points-v2 = <&qup_opp_table>;
+                               interconnects = <&clk_virt MASTER_QUP_CORE_1 0 &clk_virt SLAVE_QUP_CORE_1 0>,
+                                               <&gem_noc MASTER_APPSS_PROC 0 &cnoc2 SLAVE_QUP_1 0>;
+                               interconnect-names = "qup-core", "qup-config";
+                               status = "disabled";
+                       };
+
+                       uart15: serial@a9c000 {
+                               compatible = "qcom,geni-uart";
+                               reg = <0 0x00a9c000 0 0x4000>;
+                               clocks = <&gcc GCC_QUPV3_WRAP1_S7_CLK>;
+                               clock-names = "se";
+                               pinctrl-names = "default";
+                               pinctrl-0 = <&qup_uart15_cts>, <&qup_uart15_rts>, <&qup_uart15_tx>, <&qup_uart15_rx>;
+                               interrupts = <GIC_SPI 369 IRQ_TYPE_LEVEL_HIGH>;
+                               power-domains = <&rpmhpd SC7280_CX>;
+                               operating-points-v2 = <&qup_opp_table>;
+                               interconnects = <&clk_virt MASTER_QUP_CORE_1 0 &clk_virt SLAVE_QUP_CORE_1 0>,
+                                               <&gem_noc MASTER_APPSS_PROC 0 &cnoc2 SLAVE_QUP_1 0>;
+                               interconnect-names = "qup-core", "qup-config";
+                               status = "disabled";
+                       };
+               };
+
+               cnoc2: interconnect@1500000 {
+                       reg = <0 0x01500000 0 0x1000>;
+                       compatible = "qcom,sc7280-cnoc2";
+                       #interconnect-cells = <2>;
+                       qcom,bcm-voters = <&apps_bcm_voter>;
+               };
+
+               cnoc3: interconnect@1502000 {
+                       reg = <0 0x01502000 0 0x1000>;
+                       compatible = "qcom,sc7280-cnoc3";
+                       #interconnect-cells = <2>;
+                       qcom,bcm-voters = <&apps_bcm_voter>;
+               };
+
+               mc_virt: interconnect@1580000 {
+                       reg = <0 0x01580000 0 0x4>;
+                       compatible = "qcom,sc7280-mc-virt";
+                       #interconnect-cells = <2>;
+                       qcom,bcm-voters = <&apps_bcm_voter>;
+               };
+
+               system_noc: interconnect@1680000 {
+                       reg = <0 0x01680000 0 0x15480>;
+                       compatible = "qcom,sc7280-system-noc";
+                       #interconnect-cells = <2>;
+                       qcom,bcm-voters = <&apps_bcm_voter>;
+               };
+
+               aggre1_noc: interconnect@16e0000 {
+                       compatible = "qcom,sc7280-aggre1-noc";
+                       reg = <0 0x016e0000 0 0x1c080>;
+                       #interconnect-cells = <2>;
+                       qcom,bcm-voters = <&apps_bcm_voter>;
+               };
+
+               aggre2_noc: interconnect@1700000 {
+                       reg = <0 0x01700000 0 0x2b080>;
+                       compatible = "qcom,sc7280-aggre2-noc";
+                       #interconnect-cells = <2>;
+                       qcom,bcm-voters = <&apps_bcm_voter>;
+               };
+
+               mmss_noc: interconnect@1740000 {
+                       reg = <0 0x01740000 0 0x1e080>;
+                       compatible = "qcom,sc7280-mmss-noc";
+                       #interconnect-cells = <2>;
+                       qcom,bcm-voters = <&apps_bcm_voter>;
+               };
+
+               pcie1: pci@1c08000 {
+                       compatible = "qcom,pcie-sc7280";
+                       reg = <0 0x01c08000 0 0x3000>,
+                             <0 0x40000000 0 0xf1d>,
+                             <0 0x40000f20 0 0xa8>,
+                             <0 0x40001000 0 0x1000>,
+                             <0 0x40100000 0 0x100000>;
+
+                       reg-names = "parf", "dbi", "elbi", "atu", "config";
+                       device_type = "pci";
+                       linux,pci-domain = <1>;
+                       bus-range = <0x00 0xff>;
+                       num-lanes = <2>;
+
+                       #address-cells = <3>;
+                       #size-cells = <2>;
+
+                       ranges = <0x01000000 0x0 0x40200000 0x0 0x40200000 0x0 0x100000>,
+                                <0x02000000 0x0 0x40300000 0x0 0x40300000 0x0 0x1fd00000>;
+
+                       interrupts = <GIC_SPI 307 IRQ_TYPE_LEVEL_HIGH>;
+                       interrupt-names = "msi";
+                       #interrupt-cells = <1>;
+                       interrupt-map-mask = <0 0 0 0x7>;
+                       interrupt-map = <0 0 0 1 &intc 0 434 IRQ_TYPE_LEVEL_HIGH>,
+                                       <0 0 0 2 &intc 0 435 IRQ_TYPE_LEVEL_HIGH>,
+                                       <0 0 0 3 &intc 0 438 IRQ_TYPE_LEVEL_HIGH>,
+                                       <0 0 0 4 &intc 0 439 IRQ_TYPE_LEVEL_HIGH>;
+
+                       clocks = <&gcc GCC_PCIE_1_PIPE_CLK>,
+                                <&gcc GCC_PCIE_1_PIPE_CLK_SRC>,
+                                <&pcie1_lane 0>,
+                                <&rpmhcc RPMH_CXO_CLK>,
+                                <&gcc GCC_PCIE_1_AUX_CLK>,
+                                <&gcc GCC_PCIE_1_CFG_AHB_CLK>,
+                                <&gcc GCC_PCIE_1_MSTR_AXI_CLK>,
+                                <&gcc GCC_PCIE_1_SLV_AXI_CLK>,
+                                <&gcc GCC_PCIE_1_SLV_Q2A_AXI_CLK>,
+                                <&gcc GCC_AGGRE_NOC_PCIE_TBU_CLK>,
+                                <&gcc GCC_DDRSS_PCIE_SF_CLK>;
+
+                       clock-names = "pipe",
+                                     "pipe_mux",
+                                     "phy_pipe",
+                                     "ref",
+                                     "aux",
+                                     "cfg",
+                                     "bus_master",
+                                     "bus_slave",
+                                     "slave_q2a",
+                                     "tbu",
+                                     "ddrss_sf_tbu";
+
+                       assigned-clocks = <&gcc GCC_PCIE_1_AUX_CLK>;
+                       assigned-clock-rates = <19200000>;
+
+                       resets = <&gcc GCC_PCIE_1_BCR>;
+                       reset-names = "pci";
+
+                       power-domains = <&gcc GCC_PCIE_1_GDSC>;
+
+                       phys = <&pcie1_lane>;
+                       phy-names = "pciephy";
+
+                       pinctrl-names = "default";
+                       pinctrl-0 = <&pcie1_clkreq_n>;
+
+                       iommus = <&apps_smmu 0x1c80 0x1>;
+
+                       iommu-map = <0x0 &apps_smmu 0x1c80 0x1>,
+                                   <0x100 &apps_smmu 0x1c81 0x1>;
+
+                       status = "disabled";
+               };
+
+               pcie1_phy: phy@1c0e000 {
+                       compatible = "qcom,sm8250-qmp-gen3x2-pcie-phy";
+                       reg = <0 0x01c0e000 0 0x1c0>;
+                       #address-cells = <2>;
+                       #size-cells = <2>;
+                       ranges;
+                       clocks = <&gcc GCC_PCIE_1_AUX_CLK>,
+                                <&gcc GCC_PCIE_1_CFG_AHB_CLK>,
+                                <&gcc GCC_PCIE_CLKREF_EN>,
+                                <&gcc GCC_PCIE1_PHY_RCHNG_CLK>;
+                       clock-names = "aux", "cfg_ahb", "ref", "refgen";
+
+                       resets = <&gcc GCC_PCIE_1_PHY_BCR>;
+                       reset-names = "phy";
+
+                       assigned-clocks = <&gcc GCC_PCIE1_PHY_RCHNG_CLK>;
+                       assigned-clock-rates = <100000000>;
+
+                       status = "disabled";
+
+                       pcie1_lane: lanes@1c0e200 {
+                               reg = <0 0x01c0e200 0 0x170>,
+                                     <0 0x01c0e400 0 0x200>,
+                                     <0 0x01c0ea00 0 0x1f0>,
+                                     <0 0x01c0e600 0 0x170>,
+                                     <0 0x01c0e800 0 0x200>,
+                                     <0 0x01c0ee00 0 0xf4>;
+                               clocks = <&gcc GCC_PCIE_1_PIPE_CLK>;
+                               clock-names = "pipe0";
+
+                               #phy-cells = <0>;
+                               #clock-cells = <1>;
+                               clock-output-names = "pcie_1_pipe_clk";
+                       };
+               };
+
+               ipa: ipa@1e40000 {
+                       compatible = "qcom,sc7280-ipa";
+
+                       iommus = <&apps_smmu 0x480 0x0>,
+                                <&apps_smmu 0x482 0x0>;
+                       reg = <0 0x1e40000 0 0x8000>,
+                             <0 0x1e50000 0 0x4ad0>,
+                             <0 0x1e04000 0 0x23000>;
+                       reg-names = "ipa-reg",
+                                   "ipa-shared",
+                                   "gsi";
+
+                       interrupts-extended = <&intc GIC_SPI 654 IRQ_TYPE_EDGE_RISING>,
+                                             <&intc GIC_SPI 432 IRQ_TYPE_LEVEL_HIGH>,
+                                             <&ipa_smp2p_in 0 IRQ_TYPE_EDGE_RISING>,
+                                             <&ipa_smp2p_in 1 IRQ_TYPE_EDGE_RISING>;
+                       interrupt-names = "ipa",
+                                         "gsi",
+                                         "ipa-clock-query",
+                                         "ipa-setup-ready";
+
+                       clocks = <&rpmhcc RPMH_IPA_CLK>;
+                       clock-names = "core";
+
+                       interconnects = <&aggre2_noc MASTER_IPA 0 &mc_virt SLAVE_EBI1 0>,
+                                       <&gem_noc MASTER_APPSS_PROC 0 &cnoc2 SLAVE_IPA_CFG 0>;
+                       interconnect-names = "memory",
+                                            "config";
+
+                       qcom,smem-states = <&ipa_smp2p_out 0>,
+                                          <&ipa_smp2p_out 1>;
+                       qcom,smem-state-names = "ipa-clock-enabled-valid",
+                                               "ipa-clock-enabled";
+
+                       status = "disabled";
+               };
+
+               tcsr_mutex: hwlock@1f40000 {
+                       compatible = "qcom,tcsr-mutex", "syscon";
+                       reg = <0 0x01f40000 0 0x40000>;
+                       #hwlock-cells = <1>;
+               };
+
+               tcsr: syscon@1fc0000 {
+                       compatible = "qcom,sc7280-tcsr", "syscon";
+                       reg = <0 0x01fc0000 0 0x30000>;
+               };
+
+               lpasscc: lpasscc@3000000 {
+                       compatible = "qcom,sc7280-lpasscc";
+                       reg = <0 0x03000000 0 0x40>,
+                             <0 0x03c04000 0 0x4>,
+                             <0 0x03389000 0 0x24>;
+                       reg-names = "qdsp6ss", "top_cc", "cc";
+                       clocks = <&gcc GCC_CFG_NOC_LPASS_CLK>;
+                       clock-names = "iface";
+                       #clock-cells = <1>;
+               };
+
+               lpass_ag_noc: interconnect@3c40000 {
+                       reg = <0 0x03c40000 0 0xf080>;
+                       compatible = "qcom,sc7280-lpass-ag-noc";
+                       #interconnect-cells = <2>;
+                       qcom,bcm-voters = <&apps_bcm_voter>;
+               };
+
+               gpu: gpu@3d00000 {
+                       compatible = "qcom,adreno-635.0", "qcom,adreno";
+                       #stream-id-cells = <16>;
+                       reg = <0 0x03d00000 0 0x40000>,
+                             <0 0x03d9e000 0 0x1000>,
+                             <0 0x03d61000 0 0x800>;
+                       reg-names = "kgsl_3d0_reg_memory",
+                                   "cx_mem",
+                                   "cx_dbgc";
+                       interrupts = <GIC_SPI 300 IRQ_TYPE_LEVEL_HIGH>;
+                       iommus = <&adreno_smmu 0 0x401>;
+                       operating-points-v2 = <&gpu_opp_table>;
+                       qcom,gmu = <&gmu>;
+                       interconnects = <&gem_noc MASTER_GFX3D 0 &mc_virt SLAVE_EBI1 0>;
+                       interconnect-names = "gfx-mem";
+                       #cooling-cells = <2>;
+
+                       gpu_opp_table: opp-table {
+                               compatible = "operating-points-v2";
+
+                               opp-315000000 {
+                                       opp-hz = /bits/ 64 <315000000>;
+                                       opp-level = <RPMH_REGULATOR_LEVEL_LOW_SVS>;
+                                       opp-peak-kBps = <1804000>;
+                               };
+
+                               opp-450000000 {
+                                       opp-hz = /bits/ 64 <450000000>;
+                                       opp-level = <RPMH_REGULATOR_LEVEL_SVS>;
+                                       opp-peak-kBps = <4068000>;
+                               };
+
+                               opp-550000000 {
+                                       opp-hz = /bits/ 64 <550000000>;
+                                       opp-level = <RPMH_REGULATOR_LEVEL_SVS_L1>;
+                                       opp-peak-kBps = <6832000>;
                                };
                        };
                };
 
-               etf@6b05000 {
-                       compatible = "arm,coresight-tmc", "arm,primecell";
-                       reg = <0 0x06b05000 0 0x1000>;
+               gmu: gmu@3d69000 {
+                       compatible="qcom,adreno-gmu-635.0", "qcom,adreno-gmu";
+                       reg = <0 0x03d6a000 0 0x34000>,
+                               <0 0x3de0000 0 0x10000>,
+                               <0 0x0b290000 0 0x10000>;
+                       reg-names = "gmu", "rscc", "gmu_pdc";
+                       interrupts = <GIC_SPI 304 IRQ_TYPE_LEVEL_HIGH>,
+                                       <GIC_SPI 305 IRQ_TYPE_LEVEL_HIGH>;
+                       interrupt-names = "hfi", "gmu";
+                       clocks = <&gpucc 5>,
+                                       <&gpucc 8>,
+                                       <&gcc GCC_DDRSS_GPU_AXI_CLK>,
+                                       <&gcc GCC_GPU_MEMNOC_GFX_CLK>,
+                                       <&gpucc 2>,
+                                       <&gpucc 15>,
+                                       <&gpucc 11>;
+                       clock-names = "gmu",
+                                     "cxo",
+                                     "axi",
+                                     "memnoc",
+                                     "ahb",
+                                     "hub",
+                                     "smmu_vote";
+                       power-domains = <&gpucc 0>,
+                                       <&gpucc 1>;
+                       power-domain-names = "cx",
+                                            "gx";
+                       iommus = <&adreno_smmu 5 0x400>;
+                       operating-points-v2 = <&gmu_opp_table>;
+
+                       gmu_opp_table: opp-table {
+                               compatible = "operating-points-v2";
+
+                               opp-200000000 {
+                                       opp-hz = /bits/ 64 <200000000>;
+                                       opp-level = <RPMH_REGULATOR_LEVEL_MIN_SVS>;
+                               };
+                       };
+               };
+
+               gpucc: clock-controller@3d90000 {
+                       compatible = "qcom,sc7280-gpucc";
+                       reg = <0 0x03d90000 0 0x9000>;
+                       clocks = <&rpmhcc RPMH_CXO_CLK>,
+                                <&gcc GCC_GPU_GPLL0_CLK_SRC>,
+                                <&gcc GCC_GPU_GPLL0_DIV_CLK_SRC>;
+                       clock-names = "bi_tcxo",
+                                     "gcc_gpu_gpll0_clk_src",
+                                     "gcc_gpu_gpll0_div_clk_src";
+                       #clock-cells = <1>;
+                       #reset-cells = <1>;
+                       #power-domain-cells = <1>;
+               };
+
+               adreno_smmu: iommu@3da0000 {
+                       compatible = "qcom,sc7280-smmu-500", "qcom,adreno-smmu", "arm,mmu-500";
+                       reg = <0 0x03da0000 0 0x20000>;
+                       #iommu-cells = <2>;
+                       #global-interrupts = <2>;
+                       interrupts = <GIC_SPI 673 IRQ_TYPE_LEVEL_HIGH>,
+                                       <GIC_SPI 675 IRQ_TYPE_LEVEL_HIGH>,
+                                       <GIC_SPI 678 IRQ_TYPE_LEVEL_HIGH>,
+                                       <GIC_SPI 679 IRQ_TYPE_LEVEL_HIGH>,
+                                       <GIC_SPI 680 IRQ_TYPE_LEVEL_HIGH>,
+                                       <GIC_SPI 681 IRQ_TYPE_LEVEL_HIGH>,
+                                       <GIC_SPI 682 IRQ_TYPE_LEVEL_HIGH>,
+                                       <GIC_SPI 683 IRQ_TYPE_LEVEL_HIGH>,
+                                       <GIC_SPI 684 IRQ_TYPE_LEVEL_HIGH>,
+                                       <GIC_SPI 685 IRQ_TYPE_LEVEL_HIGH>,
+                                       <GIC_SPI 686 IRQ_TYPE_LEVEL_HIGH>,
+                                       <GIC_SPI 687 IRQ_TYPE_LEVEL_HIGH>;
+
+                       clocks = <&gcc GCC_GPU_MEMNOC_GFX_CLK>,
+                                       <&gcc GCC_GPU_SNOC_DVM_GFX_CLK>,
+                                       <&gpucc 2>,
+                                       <&gpucc 11>,
+                                       <&gpucc 5>,
+                                       <&gpucc 15>,
+                                       <&gpucc 13>;
+                       clock-names = "gcc_gpu_memnoc_gfx_clk",
+                                       "gcc_gpu_snoc_dvm_gfx_clk",
+                                       "gpu_cc_ahb_clk",
+                                       "gpu_cc_hlos1_vote_gpu_smmu_clk",
+                                       "gpu_cc_cx_gmu_clk",
+                                       "gpu_cc_hub_cx_int_clk",
+                                       "gpu_cc_hub_aon_clk";
+
+                       power-domains = <&gpucc 0>;
+               };
+
+               remoteproc_mpss: remoteproc@4080000 {
+                       compatible = "qcom,sc7280-mpss-pas";
+                       reg = <0 0x04080000 0 0x10000>, <0 0x04180000 0 0x48>;
+                       reg-names = "qdsp6", "rmb";
+
+                       interrupts-extended = <&intc GIC_SPI 264 IRQ_TYPE_EDGE_RISING>,
+                                             <&modem_smp2p_in 0 IRQ_TYPE_EDGE_RISING>,
+                                             <&modem_smp2p_in 1 IRQ_TYPE_EDGE_RISING>,
+                                             <&modem_smp2p_in 2 IRQ_TYPE_EDGE_RISING>,
+                                             <&modem_smp2p_in 3 IRQ_TYPE_EDGE_RISING>,
+                                             <&modem_smp2p_in 7 IRQ_TYPE_EDGE_RISING>;
+                       interrupt-names = "wdog", "fatal", "ready", "handover",
+                                         "stop-ack", "shutdown-ack";
+
+                       clocks = <&gcc GCC_MSS_CFG_AHB_CLK>,
+                                <&gcc GCC_MSS_OFFLINE_AXI_CLK>,
+                                <&gcc GCC_MSS_SNOC_AXI_CLK>,
+                                <&rpmhcc RPMH_PKA_CLK>,
+                                <&rpmhcc RPMH_CXO_CLK>;
+                       clock-names = "iface", "offline", "snoc_axi", "pka", "xo";
+
+                       power-domains = <&rpmhpd SC7280_CX>,
+                                       <&rpmhpd SC7280_MSS>;
+                       power-domain-names = "cx", "mss";
+
+                       memory-region = <&mpss_mem>;
+
+                       qcom,qmp = <&aoss_qmp>;
+
+                       qcom,smem-states = <&modem_smp2p_out 0>;
+                       qcom,smem-state-names = "stop";
+
+                       resets = <&aoss_reset AOSS_CC_MSS_RESTART>,
+                                <&pdc_reset PDC_MODEM_SYNC_RESET>;
+                       reset-names = "mss_restart", "pdc_reset";
+
+                       qcom,halt-regs = <&tcsr_mutex 0x23000 0x25000 0x28000 0x33000>;
+                       qcom,ext-regs = <&tcsr 0x10000 0x10004 &tcsr_mutex 0x26004 0x26008>;
+                       qcom,qaccept-regs = <&tcsr_mutex 0x23030 0x23040 0x23020>;
+
+                       status = "disabled";
+
+                       glink-edge {
+                               interrupts-extended = <&ipcc IPCC_CLIENT_MPSS
+                                                            IPCC_MPROC_SIGNAL_GLINK_QMP
+                                                            IRQ_TYPE_EDGE_RISING>;
+                               mboxes = <&ipcc IPCC_CLIENT_MPSS
+                                               IPCC_MPROC_SIGNAL_GLINK_QMP>;
+                               label = "modem";
+                               qcom,remote-pid = <1>;
+                       };
+               };
+
+               stm@6002000 {
+                       compatible = "arm,coresight-stm", "arm,primecell";
+                       reg = <0 0x06002000 0 0x1000>,
+                             <0 0x16280000 0 0x180000>;
+                       reg-names = "stm-base", "stm-stimulus-base";
 
                        clocks = <&aoss_qmp>;
                        clock-names = "apb_pclk";
 
                        out-ports {
                                port {
-                                       etf_out: endpoint {
-                                               remote-endpoint = <&swao_replicator_in>;
+                                       stm_out: endpoint {
+                                               remote-endpoint = <&funnel0_in7>;
                                        };
                                };
                        };
+               };
 
-                       in-ports {
+               funnel@6041000 {
+                       compatible = "arm,coresight-dynamic-funnel", "arm,primecell";
+                       reg = <0 0x06041000 0 0x1000>;
+
+                       clocks = <&aoss_qmp>;
+                       clock-names = "apb_pclk";
+
+                       out-ports {
                                port {
-                                       etf_in: endpoint {
-                                               remote-endpoint = <&swao_funnel_out>;
+                                       funnel0_out: endpoint {
+                                               remote-endpoint = <&merge_funnel_in0>;
                                        };
                                };
                        };
+
+                       in-ports {
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+
+                               port@7 {
+                                       reg = <7>;
+                                       funnel0_in7: endpoint {
+                                               remote-endpoint = <&stm_out>;
+                                       };
+                               };
+                       };
+               };
+
+               funnel@6042000 {
+                       compatible = "arm,coresight-dynamic-funnel", "arm,primecell";
+                       reg = <0 0x06042000 0 0x1000>;
+
+                       clocks = <&aoss_qmp>;
+                       clock-names = "apb_pclk";
+
+                       out-ports {
+                               port {
+                                       funnel1_out: endpoint {
+                                               remote-endpoint = <&merge_funnel_in1>;
+                                       };
+                               };
+                       };
+
+                       in-ports {
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+
+                               port@4 {
+                                       reg = <4>;
+                                       funnel1_in4: endpoint {
+                                               remote-endpoint = <&apss_merge_funnel_out>;
+                                       };
+                               };
+                       };
+               };
+
+               funnel@6045000 {
+                       compatible = "arm,coresight-dynamic-funnel", "arm,primecell";
+                       reg = <0 0x06045000 0 0x1000>;
+
+                       clocks = <&aoss_qmp>;
+                       clock-names = "apb_pclk";
+
+                       out-ports {
+                               port {
+                                       merge_funnel_out: endpoint {
+                                               remote-endpoint = <&swao_funnel_in>;
+                                       };
+                               };
+                       };
+
+                       in-ports {
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+
+                               port@0 {
+                                       reg = <0>;
+                                       merge_funnel_in0: endpoint {
+                                               remote-endpoint = <&funnel0_out>;
+                                       };
+                               };
+
+                               port@1 {
+                                       reg = <1>;
+                                       merge_funnel_in1: endpoint {
+                                               remote-endpoint = <&funnel1_out>;
+                                       };
+                               };
+                       };
+               };
+
+               replicator@6046000 {
+                       compatible = "arm,coresight-dynamic-replicator", "arm,primecell";
+                       reg = <0 0x06046000 0 0x1000>;
+
+                       clocks = <&aoss_qmp>;
+                       clock-names = "apb_pclk";
+
+                       out-ports {
+                               port {
+                                       replicator_out: endpoint {
+                                               remote-endpoint = <&etr_in>;
+                                       };
+                               };
+                       };
+
+                       in-ports {
+                               port {
+                                       replicator_in: endpoint {
+                                               remote-endpoint = <&swao_replicator_out>;
+                                       };
+                               };
+                       };
+               };
+
+               etr@6048000 {
+                       compatible = "arm,coresight-tmc", "arm,primecell";
+                       reg = <0 0x06048000 0 0x1000>;
+                       iommus = <&apps_smmu 0x04c0 0>;
+
+                       clocks = <&aoss_qmp>;
+                       clock-names = "apb_pclk";
+                       arm,scatter-gather;
+
+                       in-ports {
+                               port {
+                                       etr_in: endpoint {
+                                               remote-endpoint = <&replicator_out>;
+                                       };
+                               };
+                       };
+               };
+
+               funnel@6b04000 {
+                       compatible = "arm,coresight-dynamic-funnel", "arm,primecell";
+                       reg = <0 0x06b04000 0 0x1000>;
+
+                       clocks = <&aoss_qmp>;
+                       clock-names = "apb_pclk";
+
+                       out-ports {
+                               port {
+                                       swao_funnel_out: endpoint {
+                                               remote-endpoint = <&etf_in>;
+                                       };
+                               };
+                       };
+
+                       in-ports {
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+
+                               port@7 {
+                                       reg = <7>;
+                                       swao_funnel_in: endpoint {
+                                               remote-endpoint = <&merge_funnel_out>;
+                                       };
+                               };
+                       };
+               };
+
+               etf@6b05000 {
+                       compatible = "arm,coresight-tmc", "arm,primecell";
+                       reg = <0 0x06b05000 0 0x1000>;
+
+                       clocks = <&aoss_qmp>;
+                       clock-names = "apb_pclk";
+
+                       out-ports {
+                               port {
+                                       etf_out: endpoint {
+                                               remote-endpoint = <&swao_replicator_in>;
+                                       };
+                               };
+                       };
+
+                       in-ports {
+                               port {
+                                       etf_in: endpoint {
+                                               remote-endpoint = <&swao_funnel_out>;
+                                       };
+                               };
+                       };
+               };
+
+               replicator@6b06000 {
+                       compatible = "arm,coresight-dynamic-replicator", "arm,primecell";
+                       reg = <0 0x06b06000 0 0x1000>;
+
+                       clocks = <&aoss_qmp>;
+                       clock-names = "apb_pclk";
+                       qcom,replicator-loses-context;
+
+                       out-ports {
+                               port {
+                                       swao_replicator_out: endpoint {
+                                               remote-endpoint = <&replicator_in>;
+                                       };
+                               };
+                       };
+
+                       in-ports {
+                               port {
+                                       swao_replicator_in: endpoint {
+                                               remote-endpoint = <&etf_out>;
+                                       };
+                               };
+                       };
+               };
+
+               etm@7040000 {
+                       compatible = "arm,coresight-etm4x", "arm,primecell";
+                       reg = <0 0x07040000 0 0x1000>;
+
+                       cpu = <&CPU0>;
+
+                       clocks = <&aoss_qmp>;
+                       clock-names = "apb_pclk";
+                       arm,coresight-loses-context-with-cpu;
+                       qcom,skip-power-up;
+
+                       out-ports {
+                               port {
+                                       etm0_out: endpoint {
+                                               remote-endpoint = <&apss_funnel_in0>;
+                                       };
+                               };
+                       };
+               };
+
+               etm@7140000 {
+                       compatible = "arm,coresight-etm4x", "arm,primecell";
+                       reg = <0 0x07140000 0 0x1000>;
+
+                       cpu = <&CPU1>;
+
+                       clocks = <&aoss_qmp>;
+                       clock-names = "apb_pclk";
+                       arm,coresight-loses-context-with-cpu;
+                       qcom,skip-power-up;
+
+                       out-ports {
+                               port {
+                                       etm1_out: endpoint {
+                                               remote-endpoint = <&apss_funnel_in1>;
+                                       };
+                               };
+                       };
+               };
+
+               etm@7240000 {
+                       compatible = "arm,coresight-etm4x", "arm,primecell";
+                       reg = <0 0x07240000 0 0x1000>;
+
+                       cpu = <&CPU2>;
+
+                       clocks = <&aoss_qmp>;
+                       clock-names = "apb_pclk";
+                       arm,coresight-loses-context-with-cpu;
+                       qcom,skip-power-up;
+
+                       out-ports {
+                               port {
+                                       etm2_out: endpoint {
+                                               remote-endpoint = <&apss_funnel_in2>;
+                                       };
+                               };
+                       };
+               };
+
+               etm@7340000 {
+                       compatible = "arm,coresight-etm4x", "arm,primecell";
+                       reg = <0 0x07340000 0 0x1000>;
+
+                       cpu = <&CPU3>;
+
+                       clocks = <&aoss_qmp>;
+                       clock-names = "apb_pclk";
+                       arm,coresight-loses-context-with-cpu;
+                       qcom,skip-power-up;
+
+                       out-ports {
+                               port {
+                                       etm3_out: endpoint {
+                                               remote-endpoint = <&apss_funnel_in3>;
+                                       };
+                               };
+                       };
+               };
+
+               etm@7440000 {
+                       compatible = "arm,coresight-etm4x", "arm,primecell";
+                       reg = <0 0x07440000 0 0x1000>;
+
+                       cpu = <&CPU4>;
+
+                       clocks = <&aoss_qmp>;
+                       clock-names = "apb_pclk";
+                       arm,coresight-loses-context-with-cpu;
+                       qcom,skip-power-up;
+
+                       out-ports {
+                               port {
+                                       etm4_out: endpoint {
+                                               remote-endpoint = <&apss_funnel_in4>;
+                                       };
+                               };
+                       };
+               };
+
+               etm@7540000 {
+                       compatible = "arm,coresight-etm4x", "arm,primecell";
+                       reg = <0 0x07540000 0 0x1000>;
+
+                       cpu = <&CPU5>;
+
+                       clocks = <&aoss_qmp>;
+                       clock-names = "apb_pclk";
+                       arm,coresight-loses-context-with-cpu;
+                       qcom,skip-power-up;
+
+                       out-ports {
+                               port {
+                                       etm5_out: endpoint {
+                                               remote-endpoint = <&apss_funnel_in5>;
+                                       };
+                               };
+                       };
+               };
+
+               etm@7640000 {
+                       compatible = "arm,coresight-etm4x", "arm,primecell";
+                       reg = <0 0x07640000 0 0x1000>;
+
+                       cpu = <&CPU6>;
+
+                       clocks = <&aoss_qmp>;
+                       clock-names = "apb_pclk";
+                       arm,coresight-loses-context-with-cpu;
+                       qcom,skip-power-up;
+
+                       out-ports {
+                               port {
+                                       etm6_out: endpoint {
+                                               remote-endpoint = <&apss_funnel_in6>;
+                                       };
+                               };
+                       };
+               };
+
+               etm@7740000 {
+                       compatible = "arm,coresight-etm4x", "arm,primecell";
+                       reg = <0 0x07740000 0 0x1000>;
+
+                       cpu = <&CPU7>;
+
+                       clocks = <&aoss_qmp>;
+                       clock-names = "apb_pclk";
+                       arm,coresight-loses-context-with-cpu;
+                       qcom,skip-power-up;
+
+                       out-ports {
+                               port {
+                                       etm7_out: endpoint {
+                                               remote-endpoint = <&apss_funnel_in7>;
+                                       };
+                               };
+                       };
+               };
+
+               funnel@7800000 { /* APSS Funnel */
+                       compatible = "arm,coresight-dynamic-funnel", "arm,primecell";
+                       reg = <0 0x07800000 0 0x1000>;
+
+                       clocks = <&aoss_qmp>;
+                       clock-names = "apb_pclk";
+
+                       out-ports {
+                               port {
+                                       apss_funnel_out: endpoint {
+                                               remote-endpoint = <&apss_merge_funnel_in>;
+                                       };
+                               };
+                       };
+
+                       in-ports {
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+
+                               port@0 {
+                                       reg = <0>;
+                                       apss_funnel_in0: endpoint {
+                                               remote-endpoint = <&etm0_out>;
+                                       };
+                               };
+
+                               port@1 {
+                                       reg = <1>;
+                                       apss_funnel_in1: endpoint {
+                                               remote-endpoint = <&etm1_out>;
+                                       };
+                               };
+
+                               port@2 {
+                                       reg = <2>;
+                                       apss_funnel_in2: endpoint {
+                                               remote-endpoint = <&etm2_out>;
+                                       };
+                               };
+
+                               port@3 {
+                                       reg = <3>;
+                                       apss_funnel_in3: endpoint {
+                                               remote-endpoint = <&etm3_out>;
+                                       };
+                               };
+
+                               port@4 {
+                                       reg = <4>;
+                                       apss_funnel_in4: endpoint {
+                                               remote-endpoint = <&etm4_out>;
+                                       };
+                               };
+
+                               port@5 {
+                                       reg = <5>;
+                                       apss_funnel_in5: endpoint {
+                                               remote-endpoint = <&etm5_out>;
+                                       };
+                               };
+
+                               port@6 {
+                                       reg = <6>;
+                                       apss_funnel_in6: endpoint {
+                                               remote-endpoint = <&etm6_out>;
+                                       };
+                               };
+
+                               port@7 {
+                                       reg = <7>;
+                                       apss_funnel_in7: endpoint {
+                                               remote-endpoint = <&etm7_out>;
+                                       };
+                               };
+                       };
+               };
+
+               funnel@7810000 {
+                       compatible = "arm,coresight-dynamic-funnel", "arm,primecell";
+                       reg = <0 0x07810000 0 0x1000>;
+
+                       clocks = <&aoss_qmp>;
+                       clock-names = "apb_pclk";
+
+                       out-ports {
+                               port {
+                                       apss_merge_funnel_out: endpoint {
+                                               remote-endpoint = <&funnel1_in4>;
+                                       };
+                               };
+                       };
+
+                       in-ports {
+                               port {
+                                       apss_merge_funnel_in: endpoint {
+                                               remote-endpoint = <&apss_funnel_out>;
+                                       };
+                               };
+                       };
+               };
+
+               sdhc_2: sdhci@8804000 {
+                       compatible = "qcom,sc7280-sdhci", "qcom,sdhci-msm-v5";
+                       status = "disabled";
+
+                       reg = <0 0x08804000 0 0x1000>;
+
+                       iommus = <&apps_smmu 0x100 0x0>;
+                       interrupts = <GIC_SPI 207 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 223 IRQ_TYPE_LEVEL_HIGH>;
+                       interrupt-names = "hc_irq", "pwr_irq";
+
+                       clocks = <&gcc GCC_SDCC2_APPS_CLK>,
+                                <&gcc GCC_SDCC2_AHB_CLK>,
+                                <&rpmhcc RPMH_CXO_CLK>;
+                       clock-names = "core", "iface", "xo";
+                       interconnects = <&aggre1_noc MASTER_SDCC_2 0 &mc_virt SLAVE_EBI1 0>,
+                                       <&gem_noc MASTER_APPSS_PROC 0 &cnoc2 SLAVE_SDCC_2 0>;
+                       interconnect-names = "sdhc-ddr","cpu-sdhc";
+                       power-domains = <&rpmhpd SC7280_CX>;
+                       operating-points-v2 = <&sdhc2_opp_table>;
+
+                       bus-width = <4>;
+
+                       qcom,dll-config = <0x0007642c>;
+
+                       sdhc2_opp_table: opp-table {
+                               compatible = "operating-points-v2";
+
+                               opp-100000000 {
+                                       opp-hz = /bits/ 64 <100000000>;
+                                       required-opps = <&rpmhpd_opp_low_svs>;
+                                       opp-peak-kBps = <1800000 400000>;
+                                       opp-avg-kBps = <100000 0>;
+                               };
+
+                               opp-202000000 {
+                                       opp-hz = /bits/ 64 <202000000>;
+                                       required-opps = <&rpmhpd_opp_nom>;
+                                       opp-peak-kBps = <5400000 1600000>;
+                                       opp-avg-kBps = <200000 0>;
+                               };
+                       };
+
+               };
+
+               usb_1_hsphy: phy@88e3000 {
+                       compatible = "qcom,sc7280-usb-hs-phy",
+                                    "qcom,usb-snps-hs-7nm-phy";
+                       reg = <0 0x088e3000 0 0x400>;
+                       status = "disabled";
+                       #phy-cells = <0>;
+
+                       clocks = <&rpmhcc RPMH_CXO_CLK>;
+                       clock-names = "ref";
+
+                       resets = <&gcc GCC_QUSB2PHY_PRIM_BCR>;
+               };
+
+               usb_2_hsphy: phy@88e4000 {
+                       compatible = "qcom,sc7280-usb-hs-phy",
+                                    "qcom,usb-snps-hs-7nm-phy";
+                       reg = <0 0x088e4000 0 0x400>;
+                       status = "disabled";
+                       #phy-cells = <0>;
+
+                       clocks = <&rpmhcc RPMH_CXO_CLK>;
+                       clock-names = "ref";
+
+                       resets = <&gcc GCC_QUSB2PHY_SEC_BCR>;
+               };
+
+               usb_1_qmpphy: phy-wrapper@88e9000 {
+                       compatible = "qcom,sc7280-qmp-usb3-dp-phy",
+                                    "qcom,sm8250-qmp-usb3-dp-phy";
+                       reg = <0 0x088e9000 0 0x200>,
+                             <0 0x088e8000 0 0x40>,
+                             <0 0x088ea000 0 0x200>;
+                       status = "disabled";
+                       #address-cells = <2>;
+                       #size-cells = <2>;
+                       ranges;
+
+                       clocks = <&gcc GCC_USB3_PRIM_PHY_AUX_CLK>,
+                                <&rpmhcc RPMH_CXO_CLK>,
+                                <&gcc GCC_USB3_PRIM_PHY_COM_AUX_CLK>;
+                       clock-names = "aux", "ref_clk_src", "com_aux";
+
+                       resets = <&gcc GCC_USB3_DP_PHY_PRIM_BCR>,
+                                <&gcc GCC_USB3_PHY_PRIM_BCR>;
+                       reset-names = "phy", "common";
+
+                       usb_1_ssphy: usb3-phy@88e9200 {
+                               reg = <0 0x088e9200 0 0x200>,
+                                     <0 0x088e9400 0 0x200>,
+                                     <0 0x088e9c00 0 0x400>,
+                                     <0 0x088e9600 0 0x200>,
+                                     <0 0x088e9800 0 0x200>,
+                                     <0 0x088e9a00 0 0x100>;
+                               #clock-cells = <0>;
+                               #phy-cells = <0>;
+                               clocks = <&gcc GCC_USB3_PRIM_PHY_PIPE_CLK>;
+                               clock-names = "pipe0";
+                               clock-output-names = "usb3_phy_pipe_clk_src";
+                       };
+
+                       dp_phy: dp-phy@88ea200 {
+                               reg = <0 0x088ea200 0 0x200>,
+                                     <0 0x088ea400 0 0x200>,
+                                     <0 0x088eaa00 0 0x200>,
+                                     <0 0x088ea600 0 0x200>,
+                                     <0 0x088ea800 0 0x200>;
+                               #phy-cells = <0>;
+                               #clock-cells = <1>;
+                       };
+               };
+
+               usb_2: usb@8cf8800 {
+                       compatible = "qcom,sc7280-dwc3", "qcom,dwc3";
+                       reg = <0 0x08cf8800 0 0x400>;
+                       status = "disabled";
+                       #address-cells = <2>;
+                       #size-cells = <2>;
+                       ranges;
+                       dma-ranges;
+
+                       clocks = <&gcc GCC_CFG_NOC_USB3_SEC_AXI_CLK>,
+                                <&gcc GCC_USB30_SEC_MASTER_CLK>,
+                                <&gcc GCC_AGGRE_USB3_SEC_AXI_CLK>,
+                                <&gcc GCC_USB30_SEC_MOCK_UTMI_CLK>,
+                                <&gcc GCC_USB30_SEC_SLEEP_CLK>;
+                       clock-names = "cfg_noc", "core", "iface","mock_utmi",
+                                     "sleep";
+
+                       assigned-clocks = <&gcc GCC_USB30_SEC_MOCK_UTMI_CLK>,
+                                         <&gcc GCC_USB30_SEC_MASTER_CLK>;
+                       assigned-clock-rates = <19200000>, <200000000>;
+
+                       interrupts-extended = <&intc GIC_SPI 240 IRQ_TYPE_LEVEL_HIGH>,
+                                    <&pdc 13 IRQ_TYPE_EDGE_RISING>,
+                                    <&pdc 12 IRQ_TYPE_EDGE_RISING>;
+                       interrupt-names = "hs_phy_irq",
+                                         "dm_hs_phy_irq", "dp_hs_phy_irq";
+
+                       power-domains = <&gcc GCC_USB30_SEC_GDSC>;
+
+                       resets = <&gcc GCC_USB30_SEC_BCR>;
+
+                       interconnects = <&aggre1_noc MASTER_USB2 0 &mc_virt SLAVE_EBI1 0>,
+                                       <&gem_noc MASTER_APPSS_PROC 0 &cnoc2 SLAVE_USB2 0>;
+                       interconnect-names = "usb-ddr", "apps-usb";
+
+                       usb_2_dwc3: usb@8c00000 {
+                               compatible = "snps,dwc3";
+                               reg = <0 0x08c00000 0 0xe000>;
+                               interrupts = <GIC_SPI 242 IRQ_TYPE_LEVEL_HIGH>;
+                               iommus = <&apps_smmu 0xa0 0x0>;
+                               snps,dis_u2_susphy_quirk;
+                               snps,dis_enblslpm_quirk;
+                               phys = <&usb_2_hsphy>;
+                               phy-names = "usb2-phy";
+                               maximum-speed = "high-speed";
+                       };
+               };
+
+               qspi: spi@88dc000 {
+                       compatible = "qcom,sc7280-qspi", "qcom,qspi-v1";
+                       reg = <0 0x088dc000 0 0x1000>;
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       interrupts = <GIC_SPI 82 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&gcc GCC_QSPI_CNOC_PERIPH_AHB_CLK>,
+                                <&gcc GCC_QSPI_CORE_CLK>;
+                       clock-names = "iface", "core";
+                       interconnects = <&gem_noc MASTER_APPSS_PROC 0
+                                       &cnoc2 SLAVE_QSPI_0 0>;
+                       interconnect-names = "qspi-config";
+                       power-domains = <&rpmhpd SC7280_CX>;
+                       operating-points-v2 = <&qspi_opp_table>;
+                       status = "disabled";
+               };
+
+               dc_noc: interconnect@90e0000 {
+                       reg = <0 0x090e0000 0 0x5080>;
+                       compatible = "qcom,sc7280-dc-noc";
+                       #interconnect-cells = <2>;
+                       qcom,bcm-voters = <&apps_bcm_voter>;
+               };
+
+               gem_noc: interconnect@9100000 {
+                       reg = <0 0x9100000 0 0xe2200>;
+                       compatible = "qcom,sc7280-gem-noc";
+                       #interconnect-cells = <2>;
+                       qcom,bcm-voters = <&apps_bcm_voter>;
+               };
+
+               system-cache-controller@9200000 {
+                       compatible = "qcom,sc7280-llcc";
+                       reg = <0 0x09200000 0 0xd0000>, <0 0x09600000 0 0x50000>;
+                       reg-names = "llcc_base", "llcc_broadcast_base";
+                       interrupts = <GIC_SPI 582 IRQ_TYPE_LEVEL_HIGH>;
+               };
+
+               nsp_noc: interconnect@a0c0000 {
+                       reg = <0 0x0a0c0000 0 0x10000>;
+                       compatible = "qcom,sc7280-nsp-noc";
+                       #interconnect-cells = <2>;
+                       qcom,bcm-voters = <&apps_bcm_voter>;
+               };
+
+               usb_1: usb@a6f8800 {
+                       compatible = "qcom,sc7280-dwc3", "qcom,dwc3";
+                       reg = <0 0x0a6f8800 0 0x400>;
+                       status = "disabled";
+                       #address-cells = <2>;
+                       #size-cells = <2>;
+                       ranges;
+                       dma-ranges;
+
+                       clocks = <&gcc GCC_CFG_NOC_USB3_PRIM_AXI_CLK>,
+                                <&gcc GCC_USB30_PRIM_MASTER_CLK>,
+                                <&gcc GCC_AGGRE_USB3_PRIM_AXI_CLK>,
+                                <&gcc GCC_USB30_PRIM_MOCK_UTMI_CLK>,
+                                <&gcc GCC_USB30_PRIM_SLEEP_CLK>;
+                       clock-names = "cfg_noc", "core", "iface", "mock_utmi",
+                                     "sleep";
+
+                       assigned-clocks = <&gcc GCC_USB30_PRIM_MOCK_UTMI_CLK>,
+                                         <&gcc GCC_USB30_PRIM_MASTER_CLK>;
+                       assigned-clock-rates = <19200000>, <200000000>;
+
+                       interrupts-extended = <&intc GIC_SPI 131 IRQ_TYPE_LEVEL_HIGH>,
+                                             <&pdc 14 IRQ_TYPE_EDGE_BOTH>,
+                                             <&pdc 15 IRQ_TYPE_EDGE_BOTH>,
+                                             <&pdc 17 IRQ_TYPE_LEVEL_HIGH>;
+                       interrupt-names = "hs_phy_irq", "dp_hs_phy_irq",
+                                         "dm_hs_phy_irq", "ss_phy_irq";
+
+                       power-domains = <&gcc GCC_USB30_PRIM_GDSC>;
+
+                       resets = <&gcc GCC_USB30_PRIM_BCR>;
+
+                       interconnects = <&aggre1_noc MASTER_USB3_0 0 &mc_virt SLAVE_EBI1 0>,
+                                       <&gem_noc MASTER_APPSS_PROC 0 &cnoc2 SLAVE_USB3_0 0>;
+                       interconnect-names = "usb-ddr", "apps-usb";
+
+                       usb_1_dwc3: usb@a600000 {
+                               compatible = "snps,dwc3";
+                               reg = <0 0x0a600000 0 0xe000>;
+                               interrupts = <GIC_SPI 133 IRQ_TYPE_LEVEL_HIGH>;
+                               iommus = <&apps_smmu 0xe0 0x0>;
+                               snps,dis_u2_susphy_quirk;
+                               snps,dis_enblslpm_quirk;
+                               phys = <&usb_1_hsphy>, <&usb_1_ssphy>;
+                               phy-names = "usb2-phy", "usb3-phy";
+                               maximum-speed = "super-speed";
+                       };
+               };
+
+               videocc: clock-controller@aaf0000 {
+                       compatible = "qcom,sc7280-videocc";
+                       reg = <0 0xaaf0000 0 0x10000>;
+                       clocks = <&rpmhcc RPMH_CXO_CLK>,
+                               <&rpmhcc RPMH_CXO_CLK_A>;
+                       clock-names = "bi_tcxo", "bi_tcxo_ao";
+                       #clock-cells = <1>;
+                       #reset-cells = <1>;
+                       #power-domain-cells = <1>;
+               };
+
+               dispcc: clock-controller@af00000 {
+                       compatible = "qcom,sc7280-dispcc";
+                       reg = <0 0xaf00000 0 0x20000>;
+                       clocks = <&rpmhcc RPMH_CXO_CLK>,
+                                <&gcc GCC_DISP_GPLL0_CLK_SRC>,
+                                <0>, <0>, <0>, <0>, <0>, <0>;
+                       clock-names = "bi_tcxo", "gcc_disp_gpll0_clk",
+                                     "dsi0_phy_pll_out_byteclk",
+                                     "dsi0_phy_pll_out_dsiclk",
+                                     "dp_phy_pll_link_clk",
+                                     "dp_phy_pll_vco_div_clk",
+                                     "edp_phy_pll_link_clk",
+                                     "edp_phy_pll_vco_div_clk";
+                       #clock-cells = <1>;
+                       #reset-cells = <1>;
+                       #power-domain-cells = <1>;
+               };
+
+               pdc: interrupt-controller@b220000 {
+                       compatible = "qcom,sc7280-pdc", "qcom,pdc";
+                       reg = <0 0x0b220000 0 0x30000>;
+                       qcom,pdc-ranges = <0 480 40>, <40 140 14>, <54 263 1>,
+                                         <55 306 4>, <59 312 3>, <62 374 2>,
+                                         <64 434 2>, <66 438 3>, <69 86 1>,
+                                         <70 520 54>, <124 609 31>, <155 63 1>,
+                                         <156 716 12>;
+                       #interrupt-cells = <2>;
+                       interrupt-parent = <&intc>;
+                       interrupt-controller;
+               };
+
+               pdc_reset: reset-controller@b5e0000 {
+                       compatible = "qcom,sc7280-pdc-global";
+                       reg = <0 0x0b5e0000 0 0x20000>;
+                       #reset-cells = <1>;
+               };
+
+               tsens0: thermal-sensor@c263000 {
+                       compatible = "qcom,sc7280-tsens","qcom,tsens-v2";
+                       reg = <0 0x0c263000 0 0x1ff>, /* TM */
+                               <0 0x0c222000 0 0x1ff>; /* SROT */
+                       #qcom,sensors = <15>;
+                       interrupts = <GIC_SPI 506 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 508 IRQ_TYPE_LEVEL_HIGH>;
+                       interrupt-names = "uplow","critical";
+                       #thermal-sensor-cells = <1>;
                };
 
-               replicator@6b06000 {
-                       compatible = "arm,coresight-dynamic-replicator", "arm,primecell";
-                       reg = <0 0x06b06000 0 0x1000>;
+               tsens1: thermal-sensor@c265000 {
+                       compatible = "qcom,sc7280-tsens","qcom,tsens-v2";
+                       reg = <0 0x0c265000 0 0x1ff>, /* TM */
+                               <0 0x0c223000 0 0x1ff>; /* SROT */
+                       #qcom,sensors = <12>;
+                       interrupts = <GIC_SPI 507 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 509 IRQ_TYPE_LEVEL_HIGH>;
+                       interrupt-names = "uplow","critical";
+                       #thermal-sensor-cells = <1>;
+               };
 
-                       clocks = <&aoss_qmp>;
-                       clock-names = "apb_pclk";
-                       qcom,replicator-loses-context;
+               aoss_reset: reset-controller@c2a0000 {
+                       compatible = "qcom,sc7280-aoss-cc", "qcom,sdm845-aoss-cc";
+                       reg = <0 0x0c2a0000 0 0x31000>;
+                       #reset-cells = <1>;
+               };
 
-                       out-ports {
-                               port {
-                                       swao_replicator_out: endpoint {
-                                               remote-endpoint = <&replicator_in>;
-                                       };
-                               };
-                       };
+               aoss_qmp: power-controller@c300000 {
+                       compatible = "qcom,sc7280-aoss-qmp";
+                       reg = <0 0x0c300000 0 0x400>;
+                       interrupts-extended = <&ipcc IPCC_CLIENT_AOP
+                                                    IPCC_MPROC_SIGNAL_GLINK_QMP
+                                                    IRQ_TYPE_EDGE_RISING>;
+                       mboxes = <&ipcc IPCC_CLIENT_AOP
+                                       IPCC_MPROC_SIGNAL_GLINK_QMP>;
 
-                       in-ports {
-                               port {
-                                       swao_replicator_in: endpoint {
-                                               remote-endpoint = <&etf_out>;
-                                       };
-                               };
-                       };
+                       #clock-cells = <0>;
                };
 
-               etm@7040000 {
-                       compatible = "arm,coresight-etm4x", "arm,primecell";
-                       reg = <0 0x07040000 0 0x1000>;
+               sram@c3f0000 {
+                       compatible = "qcom,rpmh-stats";
+                       reg = <0 0x0c3f0000 0 0x400>;
+               };
 
-                       cpu = <&CPU0>;
+               spmi_bus: spmi@c440000 {
+                       compatible = "qcom,spmi-pmic-arb";
+                       reg = <0 0x0c440000 0 0x1100>,
+                             <0 0x0c600000 0 0x2000000>,
+                             <0 0x0e600000 0 0x100000>,
+                             <0 0x0e700000 0 0xa0000>,
+                             <0 0x0c40a000 0 0x26000>;
+                       reg-names = "core", "chnls", "obsrvr", "intr", "cnfg";
+                       interrupt-names = "periph_irq";
+                       interrupts-extended = <&pdc 1 IRQ_TYPE_LEVEL_HIGH>;
+                       qcom,ee = <0>;
+                       qcom,channel = <0>;
+                       #address-cells = <1>;
+                       #size-cells = <1>;
+                       interrupt-controller;
+                       #interrupt-cells = <4>;
+               };
 
-                       clocks = <&aoss_qmp>;
-                       clock-names = "apb_pclk";
-                       arm,coresight-loses-context-with-cpu;
-                       qcom,skip-power-up;
+               tlmm: pinctrl@f100000 {
+                       compatible = "qcom,sc7280-pinctrl";
+                       reg = <0 0x0f100000 0 0x300000>;
+                       interrupts = <GIC_SPI 208 IRQ_TYPE_LEVEL_HIGH>;
+                       gpio-controller;
+                       #gpio-cells = <2>;
+                       interrupt-controller;
+                       #interrupt-cells = <2>;
+                       gpio-ranges = <&tlmm 0 0 175>;
+                       wakeup-parent = <&pdc>;
 
-                       out-ports {
-                               port {
-                                       etm0_out: endpoint {
-                                               remote-endpoint = <&apss_funnel_in0>;
-                                       };
-                               };
+                       pcie1_clkreq_n: pcie1-clkreq-n {
+                               pins = "gpio79";
+                               function = "pcie1_clkreqn";
+                               drive-strength = <2>;
+                               bias-pull-up;
                        };
-               };
 
-               etm@7140000 {
-                       compatible = "arm,coresight-etm4x", "arm,primecell";
-                       reg = <0 0x07140000 0 0x1000>;
+                       qspi_clk: qspi-clk {
+                               pins = "gpio14";
+                               function = "qspi_clk";
+                       };
 
-                       cpu = <&CPU1>;
+                       qspi_cs0: qspi-cs0 {
+                               pins = "gpio15";
+                               function = "qspi_cs";
+                       };
 
-                       clocks = <&aoss_qmp>;
-                       clock-names = "apb_pclk";
-                       arm,coresight-loses-context-with-cpu;
-                       qcom,skip-power-up;
+                       qspi_cs1: qspi-cs1 {
+                               pins = "gpio19";
+                               function = "qspi_cs";
+                       };
 
-                       out-ports {
-                               port {
-                                       etm1_out: endpoint {
-                                               remote-endpoint = <&apss_funnel_in1>;
-                                       };
-                               };
+                       qspi_data01: qspi-data01 {
+                               pins = "gpio12", "gpio13";
+                               function = "qspi_data";
                        };
-               };
 
-               etm@7240000 {
-                       compatible = "arm,coresight-etm4x", "arm,primecell";
-                       reg = <0 0x07240000 0 0x1000>;
+                       qspi_data12: qspi-data12 {
+                               pins = "gpio16", "gpio17";
+                               function = "qspi_data";
+                       };
 
-                       cpu = <&CPU2>;
+                       qup_i2c0_data_clk: qup-i2c0-data-clk {
+                               pins = "gpio0", "gpio1";
+                               function = "qup00";
+                       };
 
-                       clocks = <&aoss_qmp>;
-                       clock-names = "apb_pclk";
-                       arm,coresight-loses-context-with-cpu;
-                       qcom,skip-power-up;
+                       qup_i2c1_data_clk: qup-i2c1-data-clk {
+                               pins = "gpio4", "gpio5";
+                               function = "qup01";
+                       };
 
-                       out-ports {
-                               port {
-                                       etm2_out: endpoint {
-                                               remote-endpoint = <&apss_funnel_in2>;
-                                       };
-                               };
+                       qup_i2c2_data_clk: qup-i2c2-data-clk {
+                               pins = "gpio8", "gpio9";
+                               function = "qup02";
                        };
-               };
 
-               etm@7340000 {
-                       compatible = "arm,coresight-etm4x", "arm,primecell";
-                       reg = <0 0x07340000 0 0x1000>;
+                       qup_i2c3_data_clk: qup-i2c3-data-clk {
+                               pins = "gpio12", "gpio13";
+                               function = "qup03";
+                       };
 
-                       cpu = <&CPU3>;
+                       qup_i2c4_data_clk: qup-i2c4-data-clk {
+                               pins = "gpio16", "gpio17";
+                               function = "qup04";
+                       };
 
-                       clocks = <&aoss_qmp>;
-                       clock-names = "apb_pclk";
-                       arm,coresight-loses-context-with-cpu;
-                       qcom,skip-power-up;
+                       qup_i2c5_data_clk: qup-i2c5-data-clk {
+                               pins = "gpio20", "gpio21";
+                               function = "qup05";
+                       };
 
-                       out-ports {
-                               port {
-                                       etm3_out: endpoint {
-                                               remote-endpoint = <&apss_funnel_in3>;
-                                       };
-                               };
+                       qup_i2c6_data_clk: qup-i2c6-data-clk {
+                               pins = "gpio24", "gpio25";
+                               function = "qup06";
                        };
-               };
 
-               etm@7440000 {
-                       compatible = "arm,coresight-etm4x", "arm,primecell";
-                       reg = <0 0x07440000 0 0x1000>;
+                       qup_i2c7_data_clk: qup-i2c7-data-clk {
+                               pins = "gpio28", "gpio29";
+                               function = "qup07";
+                       };
 
-                       cpu = <&CPU4>;
+                       qup_i2c8_data_clk: qup-i2c8-data-clk {
+                               pins = "gpio32", "gpio33";
+                               function = "qup10";
+                       };
 
-                       clocks = <&aoss_qmp>;
-                       clock-names = "apb_pclk";
-                       arm,coresight-loses-context-with-cpu;
-                       qcom,skip-power-up;
+                       qup_i2c9_data_clk: qup-i2c9-data-clk {
+                               pins = "gpio36", "gpio37";
+                               function = "qup11";
+                       };
 
-                       out-ports {
-                               port {
-                                       etm4_out: endpoint {
-                                               remote-endpoint = <&apss_funnel_in4>;
-                                       };
-                               };
+                       qup_i2c10_data_clk: qup-i2c10-data-clk {
+                               pins = "gpio40", "gpio41";
+                               function = "qup12";
                        };
-               };
 
-               etm@7540000 {
-                       compatible = "arm,coresight-etm4x", "arm,primecell";
-                       reg = <0 0x07540000 0 0x1000>;
+                       qup_i2c11_data_clk: qup-i2c11-data-clk {
+                               pins = "gpio44", "gpio45";
+                               function = "qup13";
+                       };
 
-                       cpu = <&CPU5>;
+                       qup_i2c12_data_clk: qup-i2c12-data-clk {
+                               pins = "gpio48", "gpio49";
+                               function = "qup14";
+                       };
 
-                       clocks = <&aoss_qmp>;
-                       clock-names = "apb_pclk";
-                       arm,coresight-loses-context-with-cpu;
-                       qcom,skip-power-up;
+                       qup_i2c13_data_clk: qup-i2c13-data-clk {
+                               pins = "gpio52", "gpio53";
+                               function = "qup15";
+                       };
 
-                       out-ports {
-                               port {
-                                       etm5_out: endpoint {
-                                               remote-endpoint = <&apss_funnel_in5>;
-                                       };
-                               };
+                       qup_i2c14_data_clk: qup-i2c14-data-clk {
+                               pins = "gpio56", "gpio57";
+                               function = "qup16";
                        };
-               };
 
-               etm@7640000 {
-                       compatible = "arm,coresight-etm4x", "arm,primecell";
-                       reg = <0 0x07640000 0 0x1000>;
+                       qup_i2c15_data_clk: qup-i2c15-data-clk {
+                               pins = "gpio60", "gpio61";
+                               function = "qup17";
+                       };
 
-                       cpu = <&CPU6>;
+                       qup_spi0_data_clk: qup-spi0-data-clk {
+                               pins = "gpio0", "gpio1", "gpio2";
+                               function = "qup00";
+                       };
 
-                       clocks = <&aoss_qmp>;
-                       clock-names = "apb_pclk";
-                       arm,coresight-loses-context-with-cpu;
-                       qcom,skip-power-up;
+                       qup_spi0_cs: qup-spi0-cs {
+                               pins = "gpio3";
+                               function = "qup00";
+                       };
 
-                       out-ports {
-                               port {
-                                       etm6_out: endpoint {
-                                               remote-endpoint = <&apss_funnel_in6>;
-                                       };
-                               };
+                       qup_spi0_cs_gpio: qup-spi0-cs-gpio {
+                               pins = "gpio3";
+                               function = "gpio";
                        };
-               };
 
-               etm@7740000 {
-                       compatible = "arm,coresight-etm4x", "arm,primecell";
-                       reg = <0 0x07740000 0 0x1000>;
+                       qup_spi1_data_clk: qup-spi1-data-clk {
+                               pins = "gpio4", "gpio5", "gpio6";
+                               function = "qup01";
+                       };
 
-                       cpu = <&CPU7>;
+                       qup_spi1_cs: qup-spi1-cs {
+                               pins = "gpio7";
+                               function = "qup01";
+                       };
 
-                       clocks = <&aoss_qmp>;
-                       clock-names = "apb_pclk";
-                       arm,coresight-loses-context-with-cpu;
-                       qcom,skip-power-up;
+                       qup_spi1_cs_gpio: qup-spi1-cs-gpio {
+                               pins = "gpio7";
+                               function = "gpio";
+                       };
 
-                       out-ports {
-                               port {
-                                       etm7_out: endpoint {
-                                               remote-endpoint = <&apss_funnel_in7>;
-                                       };
-                               };
+                       qup_spi2_data_clk: qup-spi2-data-clk {
+                               pins = "gpio8", "gpio9", "gpio10";
+                               function = "qup02";
                        };
-               };
 
-               funnel@7800000 { /* APSS Funnel */
-                       compatible = "arm,coresight-dynamic-funnel", "arm,primecell";
-                       reg = <0 0x07800000 0 0x1000>;
+                       qup_spi2_cs: qup-spi2-cs {
+                               pins = "gpio11";
+                               function = "qup02";
+                       };
 
-                       clocks = <&aoss_qmp>;
-                       clock-names = "apb_pclk";
+                       qup_spi2_cs_gpio: qup-spi2-cs-gpio {
+                               pins = "gpio11";
+                               function = "gpio";
+                       };
 
-                       out-ports {
-                               port {
-                                       apss_funnel_out: endpoint {
-                                               remote-endpoint = <&apss_merge_funnel_in>;
-                                       };
-                               };
+                       qup_spi3_data_clk: qup-spi3-data-clk {
+                               pins = "gpio12", "gpio13", "gpio14";
+                               function = "qup03";
                        };
 
-                       in-ports {
-                               #address-cells = <1>;
-                               #size-cells = <0>;
+                       qup_spi3_cs: qup-spi3-cs {
+                               pins = "gpio15";
+                               function = "qup03";
+                       };
 
-                               port@0 {
-                                       reg = <0>;
-                                       apss_funnel_in0: endpoint {
-                                               remote-endpoint = <&etm0_out>;
-                                       };
-                               };
+                       qup_spi3_cs_gpio: qup-spi3-cs-gpio {
+                               pins = "gpio15";
+                               function = "gpio";
+                       };
 
-                               port@1 {
-                                       reg = <1>;
-                                       apss_funnel_in1: endpoint {
-                                               remote-endpoint = <&etm1_out>;
-                                       };
-                               };
+                       qup_spi4_data_clk: qup-spi4-data-clk {
+                               pins = "gpio16", "gpio17", "gpio18";
+                               function = "qup04";
+                       };
 
-                               port@2 {
-                                       reg = <2>;
-                                       apss_funnel_in2: endpoint {
-                                               remote-endpoint = <&etm2_out>;
-                                       };
-                               };
+                       qup_spi4_cs: qup-spi4-cs {
+                               pins = "gpio19";
+                               function = "qup04";
+                       };
+
+                       qup_spi4_cs_gpio: qup-spi4-cs-gpio {
+                               pins = "gpio19";
+                               function = "gpio";
+                       };
 
-                               port@3 {
-                                       reg = <3>;
-                                       apss_funnel_in3: endpoint {
-                                               remote-endpoint = <&etm3_out>;
-                                       };
-                               };
+                       qup_spi5_data_clk: qup-spi5-data-clk {
+                               pins = "gpio20", "gpio21", "gpio22";
+                               function = "qup05";
+                       };
 
-                               port@4 {
-                                       reg = <4>;
-                                       apss_funnel_in4: endpoint {
-                                               remote-endpoint = <&etm4_out>;
-                                       };
-                               };
+                       qup_spi5_cs: qup-spi5-cs {
+                               pins = "gpio23";
+                               function = "qup05";
+                       };
 
-                               port@5 {
-                                       reg = <5>;
-                                       apss_funnel_in5: endpoint {
-                                               remote-endpoint = <&etm5_out>;
-                                       };
-                               };
+                       qup_spi5_cs_gpio: qup-spi5-cs-gpio {
+                               pins = "gpio23";
+                               function = "gpio";
+                       };
 
-                               port@6 {
-                                       reg = <6>;
-                                       apss_funnel_in6: endpoint {
-                                               remote-endpoint = <&etm6_out>;
-                                       };
-                               };
+                       qup_spi6_data_clk: qup-spi6-data-clk {
+                               pins = "gpio24", "gpio25", "gpio26";
+                               function = "qup06";
+                       };
 
-                               port@7 {
-                                       reg = <7>;
-                                       apss_funnel_in7: endpoint {
-                                               remote-endpoint = <&etm7_out>;
-                                       };
-                               };
+                       qup_spi6_cs: qup-spi6-cs {
+                               pins = "gpio27";
+                               function = "qup06";
                        };
-               };
 
-               funnel@7810000 {
-                       compatible = "arm,coresight-dynamic-funnel", "arm,primecell";
-                       reg = <0 0x07810000 0 0x1000>;
+                       qup_spi6_cs_gpio: qup-spi6-cs-gpio {
+                               pins = "gpio27";
+                               function = "gpio";
+                       };
 
-                       clocks = <&aoss_qmp>;
-                       clock-names = "apb_pclk";
+                       qup_spi7_data_clk: qup-spi7-data-clk {
+                               pins = "gpio28", "gpio29", "gpio30";
+                               function = "qup07";
+                       };
 
-                       out-ports {
-                               port {
-                                       apss_merge_funnel_out: endpoint {
-                                               remote-endpoint = <&funnel1_in4>;
-                                       };
-                               };
+                       qup_spi7_cs: qup-spi7-cs {
+                               pins = "gpio31";
+                               function = "qup07";
                        };
 
-                       in-ports {
-                               port {
-                                       apss_merge_funnel_in: endpoint {
-                                               remote-endpoint = <&apss_funnel_out>;
-                                       };
-                               };
+                       qup_spi7_cs_gpio: qup-spi7-cs-gpio {
+                               pins = "gpio31";
+                               function = "gpio";
                        };
-               };
 
-               sdhc_2: sdhci@8804000 {
-                       compatible = "qcom,sc7280-sdhci", "qcom,sdhci-msm-v5";
-                       status = "disabled";
+                       qup_spi8_data_clk: qup-spi8-data-clk {
+                               pins = "gpio32", "gpio33", "gpio34";
+                               function = "qup10";
+                       };
 
-                       reg = <0 0x08804000 0 0x1000>;
+                       qup_spi8_cs: qup-spi8-cs {
+                               pins = "gpio35";
+                               function = "qup10";
+                       };
 
-                       iommus = <&apps_smmu 0x100 0x0>;
-                       interrupts = <GIC_SPI 207 IRQ_TYPE_LEVEL_HIGH>,
-                                    <GIC_SPI 223 IRQ_TYPE_LEVEL_HIGH>;
-                       interrupt-names = "hc_irq", "pwr_irq";
+                       qup_spi8_cs_gpio: qup-spi8-cs-gpio {
+                               pins = "gpio35";
+                               function = "gpio";
+                       };
 
-                       clocks = <&gcc GCC_SDCC2_APPS_CLK>,
-                                <&gcc GCC_SDCC2_AHB_CLK>,
-                                <&rpmhcc RPMH_CXO_CLK>;
-                       clock-names = "core", "iface", "xo";
-                       interconnects = <&aggre1_noc MASTER_SDCC_2 0 &mc_virt SLAVE_EBI1 0>,
-                                       <&gem_noc MASTER_APPSS_PROC 0 &cnoc2 SLAVE_SDCC_2 0>;
-                       interconnect-names = "sdhc-ddr","cpu-sdhc";
-                       power-domains = <&rpmhpd SC7280_CX>;
-                       operating-points-v2 = <&sdhc2_opp_table>;
+                       qup_spi9_data_clk: qup-spi9-data-clk {
+                               pins = "gpio36", "gpio37", "gpio38";
+                               function = "qup11";
+                       };
 
-                       bus-width = <4>;
+                       qup_spi9_cs: qup-spi9-cs {
+                               pins = "gpio39";
+                               function = "qup11";
+                       };
 
-                       qcom,dll-config = <0x0007642c>;
+                       qup_spi9_cs_gpio: qup-spi9-cs-gpio {
+                               pins = "gpio39";
+                               function = "gpio";
+                       };
 
-                       sdhc2_opp_table: opp-table {
-                               compatible = "operating-points-v2";
+                       qup_spi10_data_clk: qup-spi10-data-clk {
+                               pins = "gpio40", "gpio41", "gpio42";
+                               function = "qup12";
+                       };
 
-                               opp-100000000 {
-                                       opp-hz = /bits/ 64 <100000000>;
-                                       required-opps = <&rpmhpd_opp_low_svs>;
-                                       opp-peak-kBps = <1800000 400000>;
-                                       opp-avg-kBps = <100000 0>;
-                               };
+                       qup_spi10_cs: qup-spi10-cs {
+                               pins = "gpio43";
+                               function = "qup12";
+                       };
 
-                               opp-202000000 {
-                                       opp-hz = /bits/ 64 <202000000>;
-                                       required-opps = <&rpmhpd_opp_nom>;
-                                       opp-peak-kBps = <5400000 1600000>;
-                                       opp-avg-kBps = <200000 0>;
-                               };
+                       qup_spi10_cs_gpio: qup-spi10-cs-gpio {
+                               pins = "gpio43";
+                               function = "gpio";
                        };
 
-               };
+                       qup_spi11_data_clk: qup-spi11-data-clk {
+                               pins = "gpio44", "gpio45", "gpio46";
+                               function = "qup13";
+                       };
 
-               usb_1_hsphy: phy@88e3000 {
-                       compatible = "qcom,sc7280-usb-hs-phy",
-                                    "qcom,usb-snps-hs-7nm-phy";
-                       reg = <0 0x088e3000 0 0x400>;
-                       status = "disabled";
-                       #phy-cells = <0>;
+                       qup_spi11_cs: qup-spi11-cs {
+                               pins = "gpio47";
+                               function = "qup13";
+                       };
 
-                       clocks = <&rpmhcc RPMH_CXO_CLK>;
-                       clock-names = "ref";
+                       qup_spi11_cs_gpio: qup-spi11-cs-gpio {
+                               pins = "gpio47";
+                               function = "gpio";
+                       };
 
-                       resets = <&gcc GCC_QUSB2PHY_PRIM_BCR>;
-               };
+                       qup_spi12_data_clk: qup-spi12-data-clk {
+                               pins = "gpio48", "gpio49", "gpio50";
+                               function = "qup14";
+                       };
 
-               usb_2_hsphy: phy@88e4000 {
-                       compatible = "qcom,sc7280-usb-hs-phy",
-                                    "qcom,usb-snps-hs-7nm-phy";
-                       reg = <0 0x088e4000 0 0x400>;
-                       status = "disabled";
-                       #phy-cells = <0>;
+                       qup_spi12_cs: qup-spi12-cs {
+                               pins = "gpio51";
+                               function = "qup14";
+                       };
 
-                       clocks = <&rpmhcc RPMH_CXO_CLK>;
-                       clock-names = "ref";
+                       qup_spi12_cs_gpio: qup-spi12-cs-gpio {
+                               pins = "gpio51";
+                               function = "gpio";
+                       };
 
-                       resets = <&gcc GCC_QUSB2PHY_SEC_BCR>;
-               };
+                       qup_spi13_data_clk: qup-spi13-data-clk {
+                               pins = "gpio52", "gpio53", "gpio54";
+                               function = "qup15";
+                       };
 
-               usb_1_qmpphy: phy-wrapper@88e9000 {
-                       compatible = "qcom,sc7280-qmp-usb3-dp-phy",
-                                    "qcom,sm8250-qmp-usb3-dp-phy";
-                       reg = <0 0x088e9000 0 0x200>,
-                             <0 0x088e8000 0 0x40>,
-                             <0 0x088ea000 0 0x200>;
-                       status = "disabled";
-                       #address-cells = <2>;
-                       #size-cells = <2>;
-                       ranges;
+                       qup_spi13_cs: qup-spi13-cs {
+                               pins = "gpio55";
+                               function = "qup15";
+                       };
 
-                       clocks = <&gcc GCC_USB3_PRIM_PHY_AUX_CLK>,
-                                <&rpmhcc RPMH_CXO_CLK>,
-                                <&gcc GCC_USB3_PRIM_PHY_COM_AUX_CLK>;
-                       clock-names = "aux", "ref_clk_src", "com_aux";
+                       qup_spi13_cs_gpio: qup-spi13-cs-gpio {
+                               pins = "gpio55";
+                               function = "gpio";
+                       };
 
-                       resets = <&gcc GCC_USB3_DP_PHY_PRIM_BCR>,
-                                <&gcc GCC_USB3_PHY_PRIM_BCR>;
-                       reset-names = "phy", "common";
+                       qup_spi14_data_clk: qup-spi14-data-clk {
+                               pins = "gpio56", "gpio57", "gpio58";
+                               function = "qup16";
+                       };
 
-                       usb_1_ssphy: usb3-phy@88e9200 {
-                               reg = <0 0x088e9200 0 0x200>,
-                                     <0 0x088e9400 0 0x200>,
-                                     <0 0x088e9c00 0 0x400>,
-                                     <0 0x088e9600 0 0x200>,
-                                     <0 0x088e9800 0 0x200>,
-                                     <0 0x088e9a00 0 0x100>;
-                               #clock-cells = <0>;
-                               #phy-cells = <0>;
-                               clocks = <&gcc GCC_USB3_PRIM_PHY_PIPE_CLK>;
-                               clock-names = "pipe0";
-                               clock-output-names = "usb3_phy_pipe_clk_src";
+                       qup_spi14_cs: qup-spi14-cs {
+                               pins = "gpio59";
+                               function = "qup16";
                        };
 
-                       dp_phy: dp-phy@88ea200 {
-                               reg = <0 0x088ea200 0 0x200>,
-                                     <0 0x088ea400 0 0x200>,
-                                     <0 0x088eac00 0 0x400>,
-                                     <0 0x088ea600 0 0x200>,
-                                     <0 0x088ea800 0 0x200>,
-                                     <0 0x088eaa00 0 0x100>;
-                               #phy-cells = <0>;
-                               #clock-cells = <1>;
-                               clocks = <&gcc GCC_USB3_PRIM_PHY_PIPE_CLK>;
-                               clock-names = "pipe0";
-                               clock-output-names = "usb3_phy_pipe_clk_src";
+                       qup_spi14_cs_gpio: qup-spi14-cs-gpio {
+                               pins = "gpio59";
+                               function = "gpio";
                        };
-               };
 
-               usb_2: usb@8cf8800 {
-                       compatible = "qcom,sc7280-dwc3", "qcom,dwc3";
-                       reg = <0 0x08cf8800 0 0x400>;
-                       status = "disabled";
-                       #address-cells = <2>;
-                       #size-cells = <2>;
-                       ranges;
-                       dma-ranges;
+                       qup_spi15_data_clk: qup-spi15-data-clk {
+                               pins = "gpio60", "gpio61", "gpio62";
+                               function = "qup17";
+                       };
 
-                       clocks = <&gcc GCC_CFG_NOC_USB3_SEC_AXI_CLK>,
-                                <&gcc GCC_USB30_SEC_MASTER_CLK>,
-                                <&gcc GCC_AGGRE_USB3_SEC_AXI_CLK>,
-                                <&gcc GCC_USB30_SEC_MOCK_UTMI_CLK>,
-                                <&gcc GCC_USB30_SEC_SLEEP_CLK>;
-                       clock-names = "cfg_noc", "core", "iface","mock_utmi",
-                                     "sleep";
+                       qup_spi15_cs: qup-spi15-cs {
+                               pins = "gpio63";
+                               function = "qup17";
+                       };
 
-                       assigned-clocks = <&gcc GCC_USB30_SEC_MOCK_UTMI_CLK>,
-                                         <&gcc GCC_USB30_SEC_MASTER_CLK>;
-                       assigned-clock-rates = <19200000>, <200000000>;
+                       qup_spi15_cs_gpio: qup-spi15-cs-gpio {
+                               pins = "gpio63";
+                               function = "gpio";
+                       };
 
-                       interrupts-extended = <&intc GIC_SPI 240 IRQ_TYPE_LEVEL_HIGH>,
-                                    <&pdc 13 IRQ_TYPE_EDGE_RISING>,
-                                    <&pdc 12 IRQ_TYPE_EDGE_RISING>;
-                       interrupt-names = "hs_phy_irq",
-                                         "dm_hs_phy_irq", "dp_hs_phy_irq";
+                       qup_uart0_cts: qup-uart0-cts {
+                               pins = "gpio0";
+                               function = "qup00";
+                       };
 
-                       power-domains = <&gcc GCC_USB30_SEC_GDSC>;
+                       qup_uart0_rts: qup-uart0-rts {
+                               pins = "gpio1";
+                               function = "qup00";
+                       };
 
-                       resets = <&gcc GCC_USB30_SEC_BCR>;
+                       qup_uart0_tx: qup-uart0-tx {
+                               pins = "gpio2";
+                               function = "qup00";
+                       };
 
-                       interconnects = <&aggre1_noc MASTER_USB2 0 &mc_virt SLAVE_EBI1 0>,
-                                       <&gem_noc MASTER_APPSS_PROC 0 &cnoc2 SLAVE_USB2 0>;
-                       interconnect-names = "usb-ddr", "apps-usb";
+                       qup_uart0_rx: qup-uart0-rx {
+                               pins = "gpio3";
+                               function = "qup00";
+                       };
 
-                       usb_2_dwc3: usb@8c00000 {
-                               compatible = "snps,dwc3";
-                               reg = <0 0x08c00000 0 0xe000>;
-                               interrupts = <GIC_SPI 242 IRQ_TYPE_LEVEL_HIGH>;
-                               iommus = <&apps_smmu 0xa0 0x0>;
-                               snps,dis_u2_susphy_quirk;
-                               snps,dis_enblslpm_quirk;
-                               phys = <&usb_2_hsphy>;
-                               phy-names = "usb2-phy";
-                               maximum-speed = "high-speed";
+                       qup_uart1_cts: qup-uart1-cts {
+                               pins = "gpio4";
+                               function = "qup01";
                        };
-               };
 
-               dc_noc: interconnect@90e0000 {
-                       reg = <0 0x090e0000 0 0x5080>;
-                       compatible = "qcom,sc7280-dc-noc";
-                       #interconnect-cells = <2>;
-                       qcom,bcm-voters = <&apps_bcm_voter>;
-               };
+                       qup_uart1_rts: qup-uart1-rts {
+                               pins = "gpio5";
+                               function = "qup01";
+                       };
 
-               gem_noc: interconnect@9100000 {
-                       reg = <0 0x9100000 0 0xe2200>;
-                       compatible = "qcom,sc7280-gem-noc";
-                       #interconnect-cells = <2>;
-                       qcom,bcm-voters = <&apps_bcm_voter>;
-               };
+                       qup_uart1_tx: qup-uart1-tx {
+                               pins = "gpio6";
+                               function = "qup01";
+                       };
 
-               system-cache-controller@9200000 {
-                       compatible = "qcom,sc7280-llcc";
-                       reg = <0 0x09200000 0 0xd0000>, <0 0x09600000 0 0x50000>;
-                       reg-names = "llcc_base", "llcc_broadcast_base";
-                       interrupts = <GIC_SPI 582 IRQ_TYPE_LEVEL_HIGH>;
-               };
+                       qup_uart1_rx: qup-uart1-rx {
+                               pins = "gpio7";
+                               function = "qup01";
+                       };
 
-               nsp_noc: interconnect@a0c0000 {
-                       reg = <0 0x0a0c0000 0 0x10000>;
-                       compatible = "qcom,sc7280-nsp-noc";
-                       #interconnect-cells = <2>;
-                       qcom,bcm-voters = <&apps_bcm_voter>;
-               };
+                       qup_uart2_cts: qup-uart2-cts {
+                               pins = "gpio8";
+                               function = "qup02";
+                       };
 
-               usb_1: usb@a6f8800 {
-                       compatible = "qcom,sc7280-dwc3", "qcom,dwc3";
-                       reg = <0 0x0a6f8800 0 0x400>;
-                       status = "disabled";
-                       #address-cells = <2>;
-                       #size-cells = <2>;
-                       ranges;
-                       dma-ranges;
+                       qup_uart2_rts: qup-uart2-rts {
+                               pins = "gpio9";
+                               function = "qup02";
+                       };
+
+                       qup_uart2_tx: qup-uart2-tx {
+                               pins = "gpio10";
+                               function = "qup02";
+                       };
+
+                       qup_uart2_rx: qup-uart2-rx {
+                               pins = "gpio11";
+                               function = "qup02";
+                       };
 
-                       clocks = <&gcc GCC_CFG_NOC_USB3_PRIM_AXI_CLK>,
-                                <&gcc GCC_USB30_PRIM_MASTER_CLK>,
-                                <&gcc GCC_AGGRE_USB3_PRIM_AXI_CLK>,
-                                <&gcc GCC_USB30_PRIM_MOCK_UTMI_CLK>,
-                                <&gcc GCC_USB30_PRIM_SLEEP_CLK>;
-                       clock-names = "cfg_noc", "core", "iface", "mock_utmi",
-                                     "sleep";
+                       qup_uart3_cts: qup-uart3-cts {
+                               pins = "gpio12";
+                               function = "qup03";
+                       };
 
-                       assigned-clocks = <&gcc GCC_USB30_PRIM_MOCK_UTMI_CLK>,
-                                         <&gcc GCC_USB30_PRIM_MASTER_CLK>;
-                       assigned-clock-rates = <19200000>, <200000000>;
+                       qup_uart3_rts: qup-uart3-rts {
+                               pins = "gpio13";
+                               function = "qup03";
+                       };
 
-                       interrupts-extended = <&intc GIC_SPI 131 IRQ_TYPE_LEVEL_HIGH>,
-                                             <&pdc 14 IRQ_TYPE_EDGE_BOTH>,
-                                             <&pdc 15 IRQ_TYPE_EDGE_BOTH>,
-                                             <&pdc 17 IRQ_TYPE_LEVEL_HIGH>;
-                       interrupt-names = "hs_phy_irq", "dp_hs_phy_irq",
-                                         "dm_hs_phy_irq", "ss_phy_irq";
+                       qup_uart3_tx: qup-uart3-tx {
+                               pins = "gpio14";
+                               function = "qup03";
+                       };
 
-                       power-domains = <&gcc GCC_USB30_PRIM_GDSC>;
+                       qup_uart3_rx: qup-uart3-rx {
+                               pins = "gpio15";
+                               function = "qup03";
+                       };
 
-                       resets = <&gcc GCC_USB30_PRIM_BCR>;
+                       qup_uart4_cts: qup-uart4-cts {
+                               pins = "gpio16";
+                               function = "qup04";
+                       };
 
-                       interconnects = <&aggre1_noc MASTER_USB3_0 0 &mc_virt SLAVE_EBI1 0>,
-                                       <&gem_noc MASTER_APPSS_PROC 0 &cnoc2 SLAVE_USB3_0 0>;
-                       interconnect-names = "usb-ddr", "apps-usb";
+                       qup_uart4_rts: qup-uart4-rts {
+                               pins = "gpio17";
+                               function = "qup04";
+                       };
 
-                       usb_1_dwc3: usb@a600000 {
-                               compatible = "snps,dwc3";
-                               reg = <0 0x0a600000 0 0xe000>;
-                               interrupts = <GIC_SPI 133 IRQ_TYPE_LEVEL_HIGH>;
-                               iommus = <&apps_smmu 0xe0 0x0>;
-                               snps,dis_u2_susphy_quirk;
-                               snps,dis_enblslpm_quirk;
-                               phys = <&usb_1_hsphy>, <&usb_1_ssphy>;
-                               phy-names = "usb2-phy", "usb3-phy";
-                               maximum-speed = "super-speed";
+                       qup_uart4_tx: qup-uart4-tx {
+                               pins = "gpio18";
+                               function = "qup04";
                        };
-               };
 
-               videocc: clock-controller@aaf0000 {
-                       compatible = "qcom,sc7280-videocc";
-                       reg = <0 0xaaf0000 0 0x10000>;
-                       clocks = <&rpmhcc RPMH_CXO_CLK>,
-                               <&rpmhcc RPMH_CXO_CLK_A>;
-                       clock-names = "bi_tcxo", "bi_tcxo_ao";
-                       #clock-cells = <1>;
-                       #reset-cells = <1>;
-                       #power-domain-cells = <1>;
-               };
+                       qup_uart4_rx: qup-uart4-rx {
+                               pins = "gpio19";
+                               function = "qup04";
+                       };
 
-               dispcc: clock-controller@af00000 {
-                       compatible = "qcom,sc7280-dispcc";
-                       reg = <0 0xaf00000 0 0x20000>;
-                       clocks = <&rpmhcc RPMH_CXO_CLK>,
-                                <&gcc GCC_DISP_GPLL0_CLK_SRC>,
-                                <0>, <0>, <0>, <0>, <0>, <0>;
-                       clock-names = "bi_tcxo", "gcc_disp_gpll0_clk",
-                                     "dsi0_phy_pll_out_byteclk",
-                                     "dsi0_phy_pll_out_dsiclk",
-                                     "dp_phy_pll_link_clk",
-                                     "dp_phy_pll_vco_div_clk",
-                                     "edp_phy_pll_link_clk",
-                                     "edp_phy_pll_vco_div_clk";
-                       #clock-cells = <1>;
-                       #reset-cells = <1>;
-                       #power-domain-cells = <1>;
-               };
+                       qup_uart5_cts: qup-uart5-cts {
+                               pins = "gpio20";
+                               function = "qup05";
+                       };
 
-               pdc: interrupt-controller@b220000 {
-                       compatible = "qcom,sc7280-pdc", "qcom,pdc";
-                       reg = <0 0x0b220000 0 0x30000>;
-                       qcom,pdc-ranges = <0 480 40>, <40 140 14>, <54 263 1>,
-                                         <55 306 4>, <59 312 3>, <62 374 2>,
-                                         <64 434 2>, <66 438 3>, <69 86 1>,
-                                         <70 520 54>, <124 609 31>, <155 63 1>,
-                                         <156 716 12>;
-                       #interrupt-cells = <2>;
-                       interrupt-parent = <&intc>;
-                       interrupt-controller;
-               };
+                       qup_uart5_rts: qup-uart5-rts {
+                               pins = "gpio21";
+                               function = "qup05";
+                       };
 
-               pdc_reset: reset-controller@b5e0000 {
-                       compatible = "qcom,sc7280-pdc-global";
-                       reg = <0 0x0b5e0000 0 0x20000>;
-                       #reset-cells = <1>;
-               };
+                       qup_uart5_tx: qup-uart5-tx {
+                               pins = "gpio22";
+                               function = "qup05";
+                       };
 
-               tsens0: thermal-sensor@c263000 {
-                       compatible = "qcom,sc7280-tsens","qcom,tsens-v2";
-                       reg = <0 0x0c263000 0 0x1ff>, /* TM */
-                               <0 0x0c222000 0 0x1ff>; /* SROT */
-                       #qcom,sensors = <15>;
-                       interrupts = <GIC_SPI 506 IRQ_TYPE_LEVEL_HIGH>,
-                                    <GIC_SPI 508 IRQ_TYPE_LEVEL_HIGH>;
-                       interrupt-names = "uplow","critical";
-                       #thermal-sensor-cells = <1>;
-               };
+                       qup_uart5_rx: qup-uart5-rx {
+                               pins = "gpio23";
+                               function = "qup05";
+                       };
 
-               tsens1: thermal-sensor@c265000 {
-                       compatible = "qcom,sc7280-tsens","qcom,tsens-v2";
-                       reg = <0 0x0c265000 0 0x1ff>, /* TM */
-                               <0 0x0c223000 0 0x1ff>; /* SROT */
-                       #qcom,sensors = <12>;
-                       interrupts = <GIC_SPI 507 IRQ_TYPE_LEVEL_HIGH>,
-                                    <GIC_SPI 509 IRQ_TYPE_LEVEL_HIGH>;
-                       interrupt-names = "uplow","critical";
-                       #thermal-sensor-cells = <1>;
-               };
+                       qup_uart6_cts: qup-uart6-cts {
+                               pins = "gpio24";
+                               function = "qup06";
+                       };
 
-               aoss_reset: reset-controller@c2a0000 {
-                       compatible = "qcom,sc7280-aoss-cc", "qcom,sdm845-aoss-cc";
-                       reg = <0 0x0c2a0000 0 0x31000>;
-                       #reset-cells = <1>;
-               };
+                       qup_uart6_rts: qup-uart6-rts {
+                               pins = "gpio25";
+                               function = "qup06";
+                       };
 
-               aoss_qmp: power-controller@c300000 {
-                       compatible = "qcom,sc7280-aoss-qmp";
-                       reg = <0 0x0c300000 0 0x100000>;
-                       interrupts-extended = <&ipcc IPCC_CLIENT_AOP
-                                                    IPCC_MPROC_SIGNAL_GLINK_QMP
-                                                    IRQ_TYPE_EDGE_RISING>;
-                       mboxes = <&ipcc IPCC_CLIENT_AOP
-                                       IPCC_MPROC_SIGNAL_GLINK_QMP>;
+                       qup_uart6_tx: qup-uart6-tx {
+                               pins = "gpio26";
+                               function = "qup06";
+                       };
 
-                       #clock-cells = <0>;
-                       #power-domain-cells = <1>;
-               };
+                       qup_uart6_rx: qup-uart6-rx {
+                               pins = "gpio27";
+                               function = "qup06";
+                       };
 
-               spmi_bus: spmi@c440000 {
-                       compatible = "qcom,spmi-pmic-arb";
-                       reg = <0 0x0c440000 0 0x1100>,
-                             <0 0x0c600000 0 0x2000000>,
-                             <0 0x0e600000 0 0x100000>,
-                             <0 0x0e700000 0 0xa0000>,
-                             <0 0x0c40a000 0 0x26000>;
-                       reg-names = "core", "chnls", "obsrvr", "intr", "cnfg";
-                       interrupt-names = "periph_irq";
-                       interrupts-extended = <&pdc 1 IRQ_TYPE_LEVEL_HIGH>;
-                       qcom,ee = <0>;
-                       qcom,channel = <0>;
-                       #address-cells = <1>;
-                       #size-cells = <1>;
-                       interrupt-controller;
-                       #interrupt-cells = <4>;
-               };
+                       qup_uart7_cts: qup-uart7-cts {
+                               pins = "gpio28";
+                               function = "qup07";
+                       };
 
-               tlmm: pinctrl@f100000 {
-                       compatible = "qcom,sc7280-pinctrl";
-                       reg = <0 0x0f100000 0 0x300000>;
-                       interrupts = <GIC_SPI 208 IRQ_TYPE_LEVEL_HIGH>;
-                       gpio-controller;
-                       #gpio-cells = <2>;
-                       interrupt-controller;
-                       #interrupt-cells = <2>;
-                       gpio-ranges = <&tlmm 0 0 175>;
-                       wakeup-parent = <&pdc>;
+                       qup_uart7_rts: qup-uart7-rts {
+                               pins = "gpio29";
+                               function = "qup07";
+                       };
 
-                       qup_uart5_default: qup-uart5-default {
-                               pins = "gpio46", "gpio47";
-                               function = "qup13";
+                       qup_uart7_tx: qup-uart7-tx {
+                               pins = "gpio30";
+                               function = "qup07";
+                       };
+
+                       qup_uart7_rx: qup-uart7-rx {
+                               pins = "gpio31";
+                               function = "qup07";
                        };
 
                        sdc1_on: sdc1-on {
                                data {
                                        pins = "sdc2_data";
                                };
-
-                               sd-cd {
-                                       pins = "gpio91";
-                               };
                        };
 
                        sdc2_off: sdc2-off {
                                        bias-bus-hold;
                                };
                        };
+
+                       qup_uart8_cts: qup-uart8-cts {
+                               pins = "gpio32";
+                               function = "qup10";
+                       };
+
+                       qup_uart8_rts: qup-uart8-rts {
+                               pins = "gpio33";
+                               function = "qup10";
+                       };
+
+                       qup_uart8_tx: qup-uart8-tx {
+                               pins = "gpio34";
+                               function = "qup10";
+                       };
+
+                       qup_uart8_rx: qup-uart8-rx {
+                               pins = "gpio35";
+                               function = "qup10";
+                       };
+
+                       qup_uart9_cts: qup-uart9-cts {
+                               pins = "gpio36";
+                               function = "qup11";
+                       };
+
+                       qup_uart9_rts: qup-uart9-rts {
+                               pins = "gpio37";
+                               function = "qup11";
+                       };
+
+                       qup_uart9_tx: qup-uart9-tx {
+                               pins = "gpio38";
+                               function = "qup11";
+                       };
+
+                       qup_uart9_rx: qup-uart9-rx {
+                               pins = "gpio39";
+                               function = "qup11";
+                       };
+
+                       qup_uart10_cts: qup-uart10-cts {
+                               pins = "gpio40";
+                               function = "qup12";
+                       };
+
+                       qup_uart10_rts: qup-uart10-rts {
+                               pins = "gpio41";
+                               function = "qup12";
+                       };
+
+                       qup_uart10_tx: qup-uart10-tx {
+                               pins = "gpio42";
+                               function = "qup12";
+                       };
+
+                       qup_uart10_rx: qup-uart10-rx {
+                               pins = "gpio43";
+                               function = "qup12";
+                       };
+
+                       qup_uart11_cts: qup-uart11-cts {
+                               pins = "gpio44";
+                               function = "qup13";
+                       };
+
+                       qup_uart11_rts: qup-uart11-rts {
+                               pins = "gpio45";
+                               function = "qup13";
+                       };
+
+                       qup_uart11_tx: qup-uart11-tx {
+                               pins = "gpio46";
+                               function = "qup13";
+                       };
+
+                       qup_uart11_rx: qup-uart11-rx {
+                               pins = "gpio47";
+                               function = "qup13";
+                       };
+
+                       qup_uart12_cts: qup-uart12-cts {
+                               pins = "gpio48";
+                               function = "qup14";
+                       };
+
+                       qup_uart12_rts: qup-uart12-rts {
+                               pins = "gpio49";
+                               function = "qup14";
+                       };
+
+                       qup_uart12_tx: qup-uart12-tx {
+                               pins = "gpio50";
+                               function = "qup14";
+                       };
+
+                       qup_uart12_rx: qup-uart12-rx {
+                               pins = "gpio51";
+                               function = "qup14";
+                       };
+
+                       qup_uart13_cts: qup-uart13-cts {
+                               pins = "gpio52";
+                               function = "qup15";
+                       };
+
+                       qup_uart13_rts: qup-uart13-rts {
+                               pins = "gpio53";
+                               function = "qup15";
+                       };
+
+                       qup_uart13_tx: qup-uart13-tx {
+                               pins = "gpio54";
+                               function = "qup15";
+                       };
+
+                       qup_uart13_rx: qup-uart13-rx {
+                               pins = "gpio55";
+                               function = "qup15";
+                       };
+
+                       qup_uart14_cts: qup-uart14-cts {
+                               pins = "gpio56";
+                               function = "qup16";
+                       };
+
+                       qup_uart14_rts: qup-uart14-rts {
+                               pins = "gpio57";
+                               function = "qup16";
+                       };
+
+                       qup_uart14_tx: qup-uart14-tx {
+                               pins = "gpio58";
+                               function = "qup16";
+                       };
+
+                       qup_uart14_rx: qup-uart14-rx {
+                               pins = "gpio59";
+                               function = "qup16";
+                       };
+
+                       qup_uart15_cts: qup-uart15-cts {
+                               pins = "gpio60";
+                               function = "qup17";
+                       };
+
+                       qup_uart15_rts: qup-uart15-rts {
+                               pins = "gpio61";
+                               function = "qup17";
+                       };
+
+                       qup_uart15_tx: qup-uart15-tx {
+                               pins = "gpio62";
+                               function = "qup17";
+                       };
+
+                       qup_uart15_rx: qup-uart15-rx {
+                               pins = "gpio63";
+                               function = "qup17";
+                       };
+               };
+
+               imem@146a5000 {
+                       compatible = "qcom,sc7280-imem", "syscon";
+                       reg = <0 0x146a5000 0 0x6000>;
+
+                       #address-cells = <1>;
+                       #size-cells = <1>;
+
+                       ranges = <0 0 0x146a5000 0x6000>;
+
+                       pil-reloc@594c {
+                               compatible = "qcom,pil-reloc-info";
+                               reg = <0x594c 0xc8>;
+                       };
                };
 
                apps_smmu: iommu@15000000 {
                };
 
                gpuss0-thermal {
-                       polling-delay-passive = <0>;
+                       polling-delay-passive = <100>;
                        polling-delay = <0>;
 
                        thermal-sensors = <&tsens1 1>;
 
                        trips {
                                gpuss0_alert0: trip-point0 {
-                                       temperature = <90000>;
+                                       temperature = <95000>;
                                        hysteresis = <2000>;
-                                       type = "hot";
+                                       type = "passive";
                                };
 
                                gpuss0_crit: gpuss0-crit {
                                        type = "critical";
                                };
                        };
+
+                       cooling-maps {
+                               map0 {
+                                       trip = <&gpuss0_alert0>;
+                                       cooling-device = <&gpu THERMAL_NO_LIMIT THERMAL_NO_LIMIT>;
+                               };
+                       };
                };
 
                gpuss1-thermal {
-                       polling-delay-passive = <0>;
+                       polling-delay-passive = <100>;
                        polling-delay = <0>;
 
                        thermal-sensors = <&tsens1 2>;
 
                        trips {
                                gpuss1_alert0: trip-point0 {
-                                       temperature = <90000>;
+                                       temperature = <95000>;
                                        hysteresis = <2000>;
-                                       type = "hot";
+                                       type = "passive";
                                };
 
                                gpuss1_crit: gpuss1-crit {
                                        type = "critical";
                                };
                        };
+
+                       cooling-maps {
+                               map0 {
+                                       trip = <&gpuss1_alert0>;
+                                       cooling-device = <&gpu THERMAL_NO_LIMIT THERMAL_NO_LIMIT>;
+                               };
+                       };
                };
 
                nspss0-thermal {
index a4e1fb8..71b4489 100644 (file)
@@ -11,6 +11,7 @@
 / {
        model = "Sony Xperia 10";
        compatible = "sony,kirin-row", "qcom,sdm630";
+       chassis-type = "handset";
 
        chosen {
                framebuffer@9d400000 {
index c574e43..dd484a9 100644 (file)
@@ -11,4 +11,5 @@
 / {
        model = "Sony Xperia XA2 Ultra";
        compatible = "sony,discovery-row", "qcom,sdm630";
+       chassis-type = "handset";
 };
index a93ff3a..2da83cd 100644 (file)
@@ -11,4 +11,5 @@
 / {
        model = "Sony Xperia XA2";
        compatible = "sony,pioneer-row", "qcom,sdm630";
+       chassis-type = "handset";
 };
index 59a679c..a679d4a 100644 (file)
@@ -11,6 +11,7 @@
 / {
        model = "Sony Xperia XA2 Plus";
        compatible = "sony,voyager-row", "qcom,sdm630";
+       chassis-type = "handset";
 
        chosen {
                framebuffer@9d400000 {
index 849900e..11d0a8c 100644 (file)
                        regulator-allow-set-load;
                };
 
-               vreg_l4b_29p5: l4 {
+               vreg_l4b_2p95: l4 {
                        regulator-min-microvolt = <2944000>;
                        regulator-max-microvolt = <2952000>;
                        regulator-enable-ramp-delay = <250>;
                 * Tighten the range to 1.8-3.328 (closest to 3.3) to
                 * make the mmc driver happy.
                 */
-               vreg_l5b_29p5: l5 {
+               vreg_l5b_2p95: l5 {
                        regulator-min-microvolt = <1800000>;
                        regulator-max-microvolt = <3328000>;
                        regulator-enable-ramp-delay = <250>;
        mmc-hs400-1_8v;
        mmc-hs400-enhanced-strobe;
 
-       vmmc-supply = <&vreg_l4b_29p5>;
+       vmmc-supply = <&vreg_l4b_2p95>;
        vqmmc-supply = <&vreg_l8a_1p8>;
 };
 
 &sdhc_2 {
        status = "okay";
 
-       vmmc-supply = <&vreg_l5b_29p5>;
+       vmmc-supply = <&vreg_l5b_2p95>;
        vqmmc-supply = <&vreg_l2b_2p95>;
 };
 
index 9c7f87e..3e0165b 100644 (file)
                                        <&sleep_clk>;
                };
 
-               rpm_msg_ram: memory@778000 {
+               rpm_msg_ram: sram@778000 {
                        compatible = "qcom,rpm-msg-ram";
                        reg = <0x00778000 0x7000>;
                };
                        status = "disabled";
                };
 
+               sram@290000 {
+                       compatible = "qcom,rpm-stats";
+                       reg = <0x00290000 0x10000>;
+               };
+
                spmi_bus: spmi@800f000 {
                        compatible = "qcom,spmi-pmic-arb";
                        reg =   <0x0800f000 0x1000>,
                        };
                };
 
+               venus: video-codec@cc00000 {
+                       compatible = "qcom,sdm660-venus";
+                       reg = <0x0cc00000 0xff000>;
+                       clocks = <&mmcc VIDEO_CORE_CLK>,
+                                <&mmcc VIDEO_AHB_CLK>,
+                                <&mmcc VIDEO_AXI_CLK>,
+                                <&mmcc THROTTLE_VIDEO_AXI_CLK>;
+                       clock-names = "core", "iface", "bus", "bus_throttle";
+                       interconnects = <&gnoc 0 &mnoc 13>,
+                                       <&mnoc 4 &bimc 5>;
+                       interconnect-names = "cpu-cfg", "video-mem";
+                       interrupts = <GIC_SPI 287 IRQ_TYPE_LEVEL_HIGH>;
+                       iommus = <&mmss_smmu 0x400>,
+                                <&mmss_smmu 0x401>,
+                                <&mmss_smmu 0x40a>,
+                                <&mmss_smmu 0x407>,
+                                <&mmss_smmu 0x40e>,
+                                <&mmss_smmu 0x40f>,
+                                <&mmss_smmu 0x408>,
+                                <&mmss_smmu 0x409>,
+                                <&mmss_smmu 0x40b>,
+                                <&mmss_smmu 0x40c>,
+                                <&mmss_smmu 0x40d>,
+                                <&mmss_smmu 0x410>,
+                                <&mmss_smmu 0x421>,
+                                <&mmss_smmu 0x428>,
+                                <&mmss_smmu 0x429>,
+                                <&mmss_smmu 0x42b>,
+                                <&mmss_smmu 0x42c>,
+                                <&mmss_smmu 0x42d>,
+                                <&mmss_smmu 0x411>,
+                                <&mmss_smmu 0x431>;
+                       memory-region = <&venus_region>;
+                       power-domains = <&mmcc VENUS_GDSC>;
+                       status = "disabled";
+
+                       video-decoder {
+                               compatible = "venus-decoder";
+                               clocks = <&mmcc VIDEO_SUBCORE0_CLK>;
+                               clock-names = "vcodec0_core";
+                               power-domains = <&mmcc VENUS_CORE0_GDSC>;
+                       };
+
+                       video-encoder {
+                               compatible = "venus-encoder";
+                               clocks = <&mmcc VIDEO_SUBCORE0_CLK>;
+                               clock-names = "vcodec0_core";
+                               power-domains = <&mmcc VENUS_CORE0_GDSC>;
+                       };
+               };
+
                mmss_smmu: iommu@cd00000 {
                        compatible = "qcom,sdm630-smmu-v2", "qcom,smmu-v2";
                        reg = <0x0cd00000 0x40000>;
index 3e677fb..1edc53f 100644 (file)
@@ -10,6 +10,7 @@
 / {
        model = "Xiaomi Redmi Note 7";
        compatible = "xiaomi,lavender", "qcom,sdm660";
+       chassis-type = "handset";
 
        aliases {
                serial0 = &blsp1_uart2;
index dfd1b42..4a6285a 100644 (file)
@@ -5,7 +5,6 @@
  * Copyright 2018 Google LLC.
  */
 
-#include <dt-bindings/gpio/gpio.h>
 #include <dt-bindings/input/input.h>
 #include <dt-bindings/regulator/qcom,rpmh-regulator.h>
 #include "sdm845.dtsi"
@@ -616,6 +615,14 @@ ap_ts_i2c: &i2c14 {
        };
 };
 
+&gmu {
+       status = "okay";
+};
+
+&gpu {
+       status = "okay";
+};
+
 &ipa {
        status = "okay";
        modem-init;
@@ -629,10 +636,6 @@ ap_ts_i2c: &i2c14 {
        status = "okay";
 };
 
-&mdss_mdp {
-       status = "okay";
-};
-
 /*
  * Cheza fw does not properly program the GPU aperture to allow the
  * GPU to update the SMMU pagetables for context switches.  Work
@@ -643,6 +646,8 @@ ap_ts_i2c: &i2c14 {
 };
 
 &mss_pil {
+       status = "okay";
+
        iommus = <&apps_smmu 0x781 0x0>,
                 <&apps_smmu 0x724 0x3>;
 };
@@ -1317,6 +1322,8 @@ ap_ts_i2c: &i2c14 {
 };
 
 &venus {
+       status = "okay";
+
        video-firmware {
                iommus = <&apps_smmu 0x10b2 0x0>;
        };
index 2d5533d..13f80a0 100644 (file)
@@ -5,7 +5,6 @@
 
 /dts-v1/;
 
-#include <dt-bindings/gpio/gpio.h>
 #include <dt-bindings/pinctrl/qcom,pmic-gpio.h>
 #include <dt-bindings/regulator/qcom,rpmh-regulator.h>
 #include <dt-bindings/sound/qcom,q6afe.h>
@@ -17,6 +16,8 @@
 / {
        model = "Thundercomm Dragonboard 845c";
        compatible = "thundercomm,db845c", "qcom,sdm845";
+       qcom,msm-id = <341 0x20001>;
+       qcom,board-id = <8 0>;
 
        aliases {
                serial0 = &uart9;
                           <GCC_LPASS_SWAY_CLK>;
 };
 
+&gmu {
+       status = "okay";
+};
+
 &gpu {
+       status = "okay";
        zap-shader {
                memory-region = <&gpu_mem>;
                firmware-name = "qcom/sdm845/a630_zap.mbn";
        status = "okay";
 };
 
-&mdss_mdp {
-       status = "okay";
-};
-
 &mss_pil {
        status = "okay";
        firmware-name = "qcom/sdm845/mba.mbn", "qcom/sdm845/modem.mbn";
        vdda-pll-supply = <&vreg_l26a_1p2>;
 };
 
+&venus {
+       status = "okay";
+};
+
 &wcd9340{
        pinctrl-0 = <&wcd_intr_default>;
        pinctrl-names = "default";
index 52dd7a8..5e6e8f4 100644 (file)
@@ -7,7 +7,6 @@
 
 /dts-v1/;
 
-#include <dt-bindings/gpio/gpio.h>
 #include <dt-bindings/regulator/qcom,rpmh-regulator.h>
 #include "sdm845.dtsi"
 
        qcom,dual-dsi-mode;
        qcom,master-dsi;
 
-       #address-cells = <1>;
-       #size-cells = <0>;
-
        ports {
                port@1 {
                        endpoint {
                           <GCC_LPASS_SWAY_CLK>;
 };
 
+&gmu {
+       status = "okay";
+};
+
 &gpu {
+       status = "okay";
+
        zap-shader {
                memory-region = <&gpu_mem>;
                firmware-name = "qcom/sdm845/a630_zap.mbn";
        status = "okay";
 };
 
-&mdss_mdp {
-       status = "okay";
-};
-
 &mss_pil {
        status = "okay";
        firmware-name = "qcom/sdm845/mba.mbn", "qcom/sdm845/modem.mbn";
        vdda-pll-supply = <&vdda_usb2_ss_core>;
 };
 
+&venus {
+       status = "okay";
+};
+
 &wifi {
        status = "okay";
        vdd-0.8-cx-mx-supply = <&vreg_l5a_0p8>;
index d435552..3e04aeb 100644 (file)
@@ -7,7 +7,6 @@
 
 /dts-v1/;
 
-#include <dt-bindings/gpio/gpio.h>
 #include <dt-bindings/input/linux-event-codes.h>
 #include <dt-bindings/regulator/qcom,rpmh-regulator.h>
 
@@ -93,7 +92,6 @@
                        console-size = <0x40000>;
                        ftrace-size = <0x40000>;
                        pmsg-size = <0x200000>;
-                       devinfo-size = <0x1000>;
                        ecc-size = <16>;
                };
        };
                        regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
                };
 
+               vreg_l23a_3p3: ldo23 {
+                       regulator-min-microvolt = <3300000>;
+                       regulator-max-microvolt = <3312000>;
+                       regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+               };
+
                vdda_qusb_hs0_3p1:
                vreg_l24a_3p075: ldo24 {
                        regulator-min-microvolt = <3088000>;
        status = "okay";
        vdda-supply = <&vdda_mipi_dsi0_1p2>;
 
-       #address-cells = <1>;
-       #size-cells = <0>;
-
        /*
         * Both devices use different panels but all other properties
         * are common. Compatible line is declared in device dts.
                                <GCC_LPASS_SWAY_CLK>;
 };
 
+&gmu {
+       status = "okay";
+};
+
 &gpu {
+       status = "okay";
+
        zap-shader {
                memory-region = <&gpu_mem>;
                firmware-name = "qcom/sdm845/oneplus6/a630_zap.mbn";
        status = "okay";
 };
 
-&mdss_mdp {
-       status = "okay";
-};
-
 /* Modem/wifi*/
 &mss_pil {
        status = "okay";
        };
 };
 
+&venus {
+       status = "okay";
+};
+
 &wifi {
        status = "okay";
        vdd-0.8-cx-mx-supply = <&vreg_l5a_0p8>;
        vdd-1.8-xo-supply = <&vreg_l7a_1p8>;
        vdd-1.3-rfa-supply = <&vreg_l17a_1p3>;
        vdd-3.3-ch0-supply = <&vreg_l25a_3p3>;
+       vdd-3.3-ch1-supply = <&vreg_l23a_3p3>;
 
        qcom,snoc-host-cap-8bit-quirk;
 };
index 72842c8..7349307 100644 (file)
@@ -10,6 +10,7 @@
 / {
        model = "OnePlus 6";
        compatible = "oneplus,enchilada", "qcom,sdm845";
+       chassis-type = "handset";
 };
 
 &display_panel {
index 969b36d..b63ebc4 100644 (file)
@@ -10,6 +10,7 @@
 / {
        model = "OnePlus 6T";
        compatible = "oneplus,fajita", "qcom,sdm845";
+       chassis-type = "handset";
 };
 
 &display_panel {
index c60c8c6..580d4cc 100644 (file)
@@ -2,7 +2,6 @@
 
 /dts-v1/;
 
-#include <dt-bindings/gpio/gpio.h>
 #include <dt-bindings/pinctrl/qcom,pmic-gpio.h>
 #include <dt-bindings/regulator/qcom,rpmh-regulator.h>
 #include <dt-bindings/sound/qcom,q6afe.h>
@@ -29,6 +28,7 @@
 / {
        model = "Xiaomi Pocophone F1";
        compatible = "xiaomi,beryllium", "qcom,sdm845";
+       chassis-type = "handset";
 
        /* required for bootloader to select correct board */
        qcom,board-id = <69 0>;
        status = "okay";
        vdda-supply = <&vreg_l26a_1p2>;
 
-       #address-cells = <1>;
-       #size-cells = <0>;
-
        panel@0 {
                compatible = "tianma,fhd-video";
                reg = <0>;
                           <GCC_LPASS_SWAY_CLK>;
 };
 
+&gmu {
+       status = "okay";
+};
+
 &gpu {
+       status = "okay";
+
        zap-shader {
                memory-region = <&gpu_mem>;
                firmware-name = "qcom/sdm845/a630_zap.mbn";
        status = "okay";
 };
 
-&mdss_mdp {
-       status = "okay";
-};
-
 &mss_pil {
        status = "okay";
        firmware-name = "qcom/sdm845/mba.mbn", "qcom/sdm845/modem.mdt";
        vdda-pll-supply = <&vreg_l1a_0p875>;
 };
 
+&venus {
+       status = "okay";
+};
+
 &wcd9340{
        pinctrl-0 = <&wcd_intr_default>;
        pinctrl-names = "default";
index b3b9119..5260875 100644 (file)
@@ -12,6 +12,7 @@
 #include <dt-bindings/clock/qcom,lpass-sdm845.h>
 #include <dt-bindings/clock/qcom,rpmh.h>
 #include <dt-bindings/clock/qcom,videocc-sdm845.h>
+#include <dt-bindings/gpio/gpio.h>
 #include <dt-bindings/interconnect/qcom,osm-l3.h>
 #include <dt-bindings/interconnect/qcom,sdm845.h>
 #include <dt-bindings/interrupt-controller/arm-gic.h>
                        no-map;
                };
 
-               smem_mem: memory@86000000 {
+               smem@86000000 {
+                       compatible = "qcom,smem";
                        reg = <0x0 0x86000000 0 0x200000>;
                        no-map;
+                       hwlocks = <&tcsr_mutex 3>;
                };
 
                tz_mem: memory@86200000 {
 
                memory-region = <&adsp_mem>;
 
+               qcom,qmp = <&aoss_qmp>;
+
                qcom,smem-states = <&adsp_smp2p_out 0>;
                qcom,smem-state-names = "stop";
 
 
                memory-region = <&cdsp_mem>;
 
+               qcom,qmp = <&aoss_qmp>;
+
                qcom,smem-states = <&cdsp_smp2p_out 0>;
                qcom,smem-state-names = "stop";
 
                #hwlock-cells = <1>;
        };
 
-       smem {
-               compatible = "qcom,smem";
-               memory-region = <&smem_mem>;
-               hwlocks = <&tcsr_mutex 3>;
-       };
-
        smp2p-cdsp {
                compatible = "qcom,smp2p";
                qcom,smem = <94>, <432>;
                        interrupt-names = "msi";
                        #interrupt-cells = <1>;
                        interrupt-map-mask = <0 0 0 0x7>;
-                       interrupt-map = <0 0 0 1 &intc 0 149 IRQ_TYPE_LEVEL_HIGH>, /* int_a */
-                                       <0 0 0 2 &intc 0 150 IRQ_TYPE_LEVEL_HIGH>, /* int_b */
-                                       <0 0 0 3 &intc 0 151 IRQ_TYPE_LEVEL_HIGH>, /* int_c */
-                                       <0 0 0 4 &intc 0 152 IRQ_TYPE_LEVEL_HIGH>; /* int_d */
+                       interrupt-map = <0 0 0 1 &intc 0 0 0 149 IRQ_TYPE_LEVEL_HIGH>, /* int_a */
+                                       <0 0 0 2 &intc 0 0 0 150 IRQ_TYPE_LEVEL_HIGH>, /* int_b */
+                                       <0 0 0 3 &intc 0 0 0 151 IRQ_TYPE_LEVEL_HIGH>, /* int_c */
+                                       <0 0 0 4 &intc 0 0 0 152 IRQ_TYPE_LEVEL_HIGH>; /* int_d */
 
                        clocks = <&gcc GCC_PCIE_0_PIPE_CLK>,
                                 <&gcc GCC_PCIE_0_AUX_CLK>,
 
                        status = "disabled";
 
-                       pcie0_lane: lanes@1c06200 {
+                       pcie0_lane: phy@1c06200 {
                                reg = <0 0x01c06200 0 0x128>,
                                      <0 0x01c06400 0 0x1fc>,
                                      <0 0x01c06800 0 0x218>,
                        interrupt-names = "msi";
                        #interrupt-cells = <1>;
                        interrupt-map-mask = <0 0 0 0x7>;
-                       interrupt-map = <0 0 0 1 &intc 0 434 IRQ_TYPE_LEVEL_HIGH>, /* int_a */
-                                       <0 0 0 2 &intc 0 435 IRQ_TYPE_LEVEL_HIGH>, /* int_b */
-                                       <0 0 0 3 &intc 0 438 IRQ_TYPE_LEVEL_HIGH>, /* int_c */
-                                       <0 0 0 4 &intc 0 439 IRQ_TYPE_LEVEL_HIGH>; /* int_d */
+                       interrupt-map = <0 0 0 1 &intc 0 0 0 434 IRQ_TYPE_LEVEL_HIGH>, /* int_a */
+                                       <0 0 0 2 &intc 0 0 0 435 IRQ_TYPE_LEVEL_HIGH>, /* int_b */
+                                       <0 0 0 3 &intc 0 0 0 438 IRQ_TYPE_LEVEL_HIGH>, /* int_c */
+                                       <0 0 0 4 &intc 0 0 0 439 IRQ_TYPE_LEVEL_HIGH>; /* int_d */
 
                        clocks = <&gcc GCC_PCIE_1_PIPE_CLK>,
                                 <&gcc GCC_PCIE_1_AUX_CLK>,
 
                        status = "disabled";
 
-                       pcie1_lane: lanes@1c06200 {
+                       pcie1_lane: phy@1c06200 {
                                reg = <0 0x01c0a800 0 0x800>,
                                      <0 0x01c0a800 0 0x800>,
                                      <0 0x01c0b800 0 0x400>;
                        reset-names = "ufsphy";
                        status = "disabled";
 
-                       ufs_mem_phy_lanes: lanes@1d87400 {
+                       ufs_mem_phy_lanes: phy@1d87400 {
                                reg = <0 0x01d87400 0 0x108>,
                                      <0 0x01d87600 0 0x1e0>,
                                      <0 0x01d87c00 0 0x1dc>,
                        };
                };
 
-               cryptobam: dma@1dc4000 {
+               cryptobam: dma-controller@1dc4000 {
                        compatible = "qcom,bam-v1.7.0";
                        reg = <0 0x01dc4000 0 0x24000>;
                        interrupts = <GIC_SPI 272 IRQ_TYPE_LEVEL_HIGH>;
-                       clocks = <&rpmhcc 15>;
+                       clocks = <&rpmhcc RPMH_CE_CLK>;
                        clock-names = "bam_clk";
                        #dma-cells = <1>;
                        qcom,ee = <0>;
-                       qcom,controlled-remotely = <1>;
+                       qcom,controlled-remotely;
                        iommus = <&apps_smmu 0x704 0x1>,
                                 <&apps_smmu 0x706 0x1>,
                                 <&apps_smmu 0x714 0x1>,
                        compatible = "qcom,crypto-v5.4";
                        reg = <0 0x01dfa000 0 0x6000>;
                        clocks = <&gcc GCC_CE1_AHB_CLK>,
-                                <&gcc GCC_CE1_AHB_CLK>,
-                                <&rpmhcc 15>;
+                                <&gcc GCC_CE1_AXI_CLK>,
+                                <&rpmhcc RPMH_CE_CLK>;
                        clock-names = "iface", "bus", "core";
                        dmas = <&cryptobam 6>, <&cryptobam 7>;
                        dma-names = "rx", "tx";
                        clock-names = "iface", "bus", "mem", "gpll0_mss",
                                      "snoc_axi", "mnoc_axi", "prng", "xo";
 
+                       qcom,qmp = <&aoss_qmp>;
+
                        qcom,smem-states = <&modem_smp2p_out 0>;
                        qcom,smem-state-names = "stop";
 
 
                        qcom,halt-regs = <&tcsr_mutex_regs 0x23000 0x25000 0x24000>;
 
-                       power-domains = <&aoss_qmp 2>,
-                                       <&rpmhpd SDM845_CX>,
+                       power-domains = <&rpmhpd SDM845_CX>,
                                        <&rpmhpd SDM845_MX>,
                                        <&rpmhpd SDM845_MSS>;
-                       power-domain-names = "load_state", "cx", "mx", "mss";
+                       power-domain-names = "cx", "mx", "mss";
+
+                       status = "disabled";
 
                        mba {
                                memory-region = <&mba_region>;
                        interrupt-names = "hc_irq", "pwr_irq";
 
                        clocks = <&gcc GCC_SDCC2_AHB_CLK>,
-                                <&gcc GCC_SDCC2_APPS_CLK>;
-                       clock-names = "iface", "core";
+                                <&gcc GCC_SDCC2_APPS_CLK>,
+                                <&rpmhcc RPMH_CXO_CLK>;
+                       clock-names = "iface", "core", "xo";
                        iommus = <&apps_smmu 0xa0 0xf>;
                        power-domains = <&rpmhpd SDM845_CX>;
                        operating-points-v2 = <&sdhc2_opp_table>;
                        };
                };
 
+               lmh_cluster1: lmh@17d70800 {
+                       compatible = "qcom,sdm845-lmh";
+                       reg = <0 0x17d70800 0 0x400>;
+                       interrupts = <GIC_SPI 33 IRQ_TYPE_LEVEL_HIGH>;
+                       cpus = <&CPU4>;
+                       qcom,lmh-temp-arm-millicelsius = <65000>;
+                       qcom,lmh-temp-low-millicelsius = <94500>;
+                       qcom,lmh-temp-high-millicelsius = <95000>;
+                       interrupt-controller;
+                       #interrupt-cells = <1>;
+               };
+
+               lmh_cluster0: lmh@17d78800 {
+                       compatible = "qcom,sdm845-lmh";
+                       reg = <0 0x17d78800 0 0x400>;
+                       interrupts = <GIC_SPI 32 IRQ_TYPE_LEVEL_HIGH>;
+                       cpus = <&CPU0>;
+                       qcom,lmh-temp-arm-millicelsius = <65000>;
+                       qcom,lmh-temp-low-millicelsius = <94500>;
+                       qcom,lmh-temp-high-millicelsius = <95000>;
+                       interrupt-controller;
+                       #interrupt-cells = <1>;
+               };
+
                sound: sound {
                };
 
                        compatible = "qcom,sdm845-qmp-usb3-phy";
                        reg = <0 0x088e9000 0 0x18c>,
                              <0 0x088e8000 0 0x10>;
-                       reg-names = "reg-base", "dp_com";
                        status = "disabled";
                        #address-cells = <2>;
                        #size-cells = <2>;
                                 <&gcc GCC_USB3_PHY_PRIM_BCR>;
                        reset-names = "phy", "common";
 
-                       usb_1_ssphy: lanes@88e9200 {
+                       usb_1_ssphy: phy@88e9200 {
                                reg = <0 0x088e9200 0 0x128>,
                                      <0 0x088e9400 0 0x200>,
                                      <0 0x088e9c00 0 0x218>,
                                 <&gcc GCC_USB3_PHY_SEC_BCR>;
                        reset-names = "phy", "common";
 
-                       usb_2_ssphy: lane@88eb200 {
+                       usb_2_ssphy: phy@88eb200 {
                                reg = <0 0x088eb200 0 0x128>,
                                      <0 0x088eb400 0 0x1fc>,
                                      <0 0x088eb800 0 0x218>,
                                        <&gladiator_noc MASTER_APPSS_PROC 0 &config_noc SLAVE_VENUS_CFG 0>;
                        interconnect-names = "video-mem", "cpu-cfg";
 
+                       status = "disabled";
+
                        video-core0 {
                                compatible = "venus-decoder";
                        };
                                interrupt-parent = <&mdss>;
                                interrupts = <0 IRQ_TYPE_LEVEL_HIGH>;
 
-                               status = "disabled";
-
                                ports {
                                        #address-cells = <1>;
                                        #size-cells = <0>;
 
                                status = "disabled";
 
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+
                                ports {
                                        #address-cells = <1>;
                                        #size-cells = <0>;
 
                                status = "disabled";
 
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+
                                ports {
                                        #address-cells = <1>;
                                        #size-cells = <0>;
                        interconnects = <&mem_noc MASTER_GFX3D 0 &mem_noc SLAVE_EBI1 0>;
                        interconnect-names = "gfx-mem";
 
+                       status = "disabled";
+
                        gpu_opp_table: opp-table {
                                compatible = "operating-points-v2";
 
 
                        operating-points-v2 = <&gmu_opp_table>;
 
+                       status = "disabled";
+
                        gmu_opp_table: opp-table {
                                compatible = "operating-points-v2";
 
                        mboxes = <&apss_shared 0>;
 
                        #clock-cells = <0>;
-                       #power-domain-cells = <1>;
 
                        cx_cdev: cx {
                                #cooling-cells = <2>;
                        reg = <0 0x17d43000 0 0x1400>, <0 0x17d45800 0 0x1400>;
                        reg-names = "freq-domain0", "freq-domain1";
 
+                       interrupts-extended = <&lmh_cluster0 0>, <&lmh_cluster1 0>;
+
                        clocks = <&rpmhcc RPMH_CXO_CLK>, <&gcc GPLL0>;
                        clock-names = "xo", "alternate";
 
                                        type = "critical";
                                };
                        };
-
-                       cooling-maps {
-                               map0 {
-                                       trip = <&cpu0_alert0>;
-                                       cooling-device = <&CPU0 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
-                                                        <&CPU1 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
-                                                        <&CPU2 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
-                                                        <&CPU3 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>;
-                               };
-                               map1 {
-                                       trip = <&cpu0_alert1>;
-                                       cooling-device = <&CPU0 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
-                                                        <&CPU1 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
-                                                        <&CPU2 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
-                                                        <&CPU3 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>;
-                               };
-                       };
                };
 
                cpu1-thermal {
                                        type = "critical";
                                };
                        };
-
-                       cooling-maps {
-                               map0 {
-                                       trip = <&cpu1_alert0>;
-                                       cooling-device = <&CPU0 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
-                                                        <&CPU1 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
-                                                        <&CPU2 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
-                                                        <&CPU3 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>;
-                               };
-                               map1 {
-                                       trip = <&cpu1_alert1>;
-                                       cooling-device = <&CPU0 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
-                                                        <&CPU1 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
-                                                        <&CPU2 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
-                                                        <&CPU3 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>;
-                               };
-                       };
                };
 
                cpu2-thermal {
                                        type = "critical";
                                };
                        };
-
-                       cooling-maps {
-                               map0 {
-                                       trip = <&cpu2_alert0>;
-                                       cooling-device = <&CPU0 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
-                                                        <&CPU1 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
-                                                        <&CPU2 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
-                                                        <&CPU3 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>;
-                               };
-                               map1 {
-                                       trip = <&cpu2_alert1>;
-                                       cooling-device = <&CPU0 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
-                                                        <&CPU1 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
-                                                        <&CPU2 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
-                                                        <&CPU3 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>;
-                               };
-                       };
                };
 
                cpu3-thermal {
                                        type = "critical";
                                };
                        };
-
-                       cooling-maps {
-                               map0 {
-                                       trip = <&cpu3_alert0>;
-                                       cooling-device = <&CPU0 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
-                                                        <&CPU1 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
-                                                        <&CPU2 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
-                                                        <&CPU3 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>;
-                               };
-                               map1 {
-                                       trip = <&cpu3_alert1>;
-                                       cooling-device = <&CPU0 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
-                                                        <&CPU1 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
-                                                        <&CPU2 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
-                                                        <&CPU3 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>;
-                               };
-                       };
                };
 
                cpu4-thermal {
                                        type = "critical";
                                };
                        };
-
-                       cooling-maps {
-                               map0 {
-                                       trip = <&cpu4_alert0>;
-                                       cooling-device = <&CPU4 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
-                                                        <&CPU5 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
-                                                        <&CPU6 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
-                                                        <&CPU7 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>;
-                               };
-                               map1 {
-                                       trip = <&cpu4_alert1>;
-                                       cooling-device = <&CPU4 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
-                                                        <&CPU5 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
-                                                        <&CPU6 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
-                                                        <&CPU7 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>;
-                               };
-                       };
                };
 
                cpu5-thermal {
                                        type = "critical";
                                };
                        };
-
-                       cooling-maps {
-                               map0 {
-                                       trip = <&cpu5_alert0>;
-                                       cooling-device = <&CPU4 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
-                                                        <&CPU5 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
-                                                        <&CPU6 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
-                                                        <&CPU7 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>;
-                               };
-                               map1 {
-                                       trip = <&cpu5_alert1>;
-                                       cooling-device = <&CPU4 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
-                                                        <&CPU5 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
-                                                        <&CPU6 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
-                                                        <&CPU7 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>;
-                               };
-                       };
                };
 
                cpu6-thermal {
                                        type = "critical";
                                };
                        };
-
-                       cooling-maps {
-                               map0 {
-                                       trip = <&cpu6_alert0>;
-                                       cooling-device = <&CPU4 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
-                                                        <&CPU5 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
-                                                        <&CPU6 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
-                                                        <&CPU7 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>;
-                               };
-                               map1 {
-                                       trip = <&cpu6_alert1>;
-                                       cooling-device = <&CPU4 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
-                                                        <&CPU5 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
-                                                        <&CPU6 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
-                                                        <&CPU7 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>;
-                               };
-                       };
                };
 
                cpu7-thermal {
                                        type = "critical";
                                };
                        };
-
-                       cooling-maps {
-                               map0 {
-                                       trip = <&cpu7_alert0>;
-                                       cooling-device = <&CPU4 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
-                                                        <&CPU5 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
-                                                        <&CPU6 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
-                                                        <&CPU7 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>;
-                               };
-                               map1 {
-                                       trip = <&cpu7_alert1>;
-                                       cooling-device = <&CPU4 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
-                                                        <&CPU5 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
-                                                        <&CPU6 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
-                                                        <&CPU7 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>;
-                               };
-                       };
                };
 
                aoss0-thermal {
index 2ba23aa..d6b2ba4 100644 (file)
@@ -7,7 +7,6 @@
 
 /dts-v1/;
 
-#include <dt-bindings/gpio/gpio.h>
 #include <dt-bindings/input/gpio-keys.h>
 #include <dt-bindings/input/input.h>
 #include <dt-bindings/regulator/qcom,rpmh-regulator.h>
@@ -30,6 +29,7 @@
 / {
        model = "Lenovo Yoga C630";
        compatible = "lenovo,yoga-c630", "qcom,sdm845";
+       chassis-type = "convertible";
 
        aliases {
                hsuart0 = &uart6;
                };
 
                vreg_l23a_3p3: ldo23 {
+                       regulator-min-microvolt = <3300000>;
+                       regulator-max-microvolt = <3312000>;
+                       regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
                };
 
                vdda_qusb_hs0_3p1:
                           <GCC_LPASS_SWAY_CLK>;
 };
 
+&gmu {
+       status = "okay";
+};
+
 &gpu {
+       status = "okay";
        zap-shader {
                memory-region = <&gpu_mem>;
                firmware-name = "qcom/LENOVO/81JL/qcdxkmsuc850.mbn";
        status = "okay";
 };
 
-&mdss_mdp {
-       status = "okay";
-};
-
 &mss_pil {
+       status = "okay";
        firmware-name = "qcom/LENOVO/81JL/qcdsp1v2850.mbn", "qcom/LENOVO/81JL/qcdsp2850.mbn";
 };
 
                vddxo-supply = <&vreg_l7a_1p8>;
                vddrf-supply = <&vreg_l17a_1p3>;
                vddch0-supply = <&vreg_l25a_3p3>;
+               vddch1-supply = <&vreg_l23a_3p3>;
                max-speed = <3200000>;
        };
 };
        vdda-pll-supply = <&vdda_usb2_ss_core>;
 };
 
+&venus {
+       status = "okay";
+};
+
 &wcd9340{
        pinctrl-0 = <&wcd_intr_default>;
        pinctrl-names = "default";
        vdd-1.8-xo-supply = <&vreg_l7a_1p8>;
        vdd-1.3-rfa-supply = <&vreg_l17a_1p3>;
        vdd-3.3-ch0-supply = <&vreg_l25a_3p3>;
+       vdd-3.3-ch1-supply = <&vreg_l23a_3p3>;
 
        qcom,snoc-host-cap-8bit-quirk;
 };
index 58b6b27..45eab02 100644 (file)
@@ -17,6 +17,7 @@
 
        model = "Sony Xperia 10 II";
        compatible = "sony,pdx201", "qcom,sm6125";
+       chassis-type = "handset";
 
        chosen {
                #address-cells = <2>;
index 2b37ce6..51286dd 100644 (file)
                tlmm: pinctrl@500000 {
                        compatible = "qcom,sm6125-tlmm";
                        reg = <0x00500000 0x400000>,
-                               <0x00900000 0x400000>,
-                               <0x00d00000 0x400000>;
+                             <0x00900000 0x400000>,
+                             <0x00d00000 0x400000>;
                        reg-names = "west", "south", "east";
                        interrupts = <GIC_SPI 227 IRQ_TYPE_LEVEL_HIGH>;
                        gpio-controller;
                        status = "disabled";
                };
 
-               rpm_msg_ram: memory@45f0000 {
+               rpm_msg_ram: sram@45f0000 {
                        compatible = "qcom,rpm-msg-ram";
                        reg = <0x045f0000 0x7000>;
                };
                        reg-names = "hc", "core";
 
                        interrupts = <GIC_SPI 348 IRQ_TYPE_LEVEL_HIGH>,
-                               <GIC_SPI 352 IRQ_TYPE_LEVEL_HIGH>;
+                                    <GIC_SPI 352 IRQ_TYPE_LEVEL_HIGH>;
                        interrupt-names = "hc_irq", "pwr_irq";
 
                        clocks = <&gcc GCC_SDCC1_AHB_CLK>,
-                               <&gcc GCC_SDCC1_APPS_CLK>,
-                               <&xo_board>;
+                                <&gcc GCC_SDCC1_APPS_CLK>,
+                                <&xo_board>;
                        clock-names = "iface", "core", "xo";
                        bus-width = <8>;
                        non-removable;
                        reg-names = "hc";
 
                        interrupts = <GIC_SPI 350 IRQ_TYPE_LEVEL_HIGH>,
-                               <GIC_SPI 353 IRQ_TYPE_LEVEL_HIGH>;
+                                    <GIC_SPI 353 IRQ_TYPE_LEVEL_HIGH>;
                        interrupt-names = "hc_irq", "pwr_irq";
 
                        clocks = <&gcc GCC_SDCC2_AHB_CLK>,
-                               <&gcc GCC_SDCC2_APPS_CLK>,
-                               <&xo_board>;
+                                <&gcc GCC_SDCC2_APPS_CLK>,
+                                <&xo_board>;
                        clock-names = "iface", "core", "xo";
 
                        pinctrl-0 = <&sdc2_state_on>;
                        ranges;
 
                        clocks = <&gcc GCC_USB30_PRIM_MASTER_CLK>,
-                               <&gcc GCC_SYS_NOC_USB3_PRIM_AXI_CLK>,
-                               <&gcc GCC_CFG_NOC_USB3_PRIM_AXI_CLK>,
-                               <&gcc GCC_USB3_PRIM_CLKREF_CLK>,
-                               <&gcc GCC_USB30_PRIM_SLEEP_CLK>,
-                               <&gcc GCC_USB30_PRIM_MOCK_UTMI_CLK>;
+                                <&gcc GCC_SYS_NOC_USB3_PRIM_AXI_CLK>,
+                                <&gcc GCC_CFG_NOC_USB3_PRIM_AXI_CLK>,
+                                <&gcc GCC_USB3_PRIM_CLKREF_CLK>,
+                                <&gcc GCC_USB30_PRIM_SLEEP_CLK>,
+                                <&gcc GCC_USB30_PRIM_MOCK_UTMI_CLK>;
 
                        assigned-clocks = <&gcc GCC_USB30_PRIM_MOCK_UTMI_CLK>,
                                          <&gcc GCC_USB30_PRIM_MASTER_CLK>;
                        };
                };
 
+               sram@4690000 {
+                       compatible = "qcom,rpm-stats";
+                       reg = <0x04690000 0x10000>;
+               };
+
                spmi_bus: spmi@1c40000 {
                        compatible = "qcom,spmi-pmic-arb";
-                       reg =   <0x01c40000 0x1100>,
-                               <0x01e00000 0x2000000>,
-                               <0x03e00000 0x100000>,
-                               <0x03f00000 0xa0000>,
-                               <0x01c0a000 0x26000>;
+                       reg = <0x01c40000 0x1100>,
+                             <0x01e00000 0x2000000>,
+                             <0x03e00000 0x100000>,
+                             <0x03f00000 0xa0000>,
+                             <0x01c0a000 0x26000>;
                        reg-names = "core", "chnls", "obsrvr", "intr", "cnfg";
                        interrupt-names = "periph_irq";
                        interrupts = <GIC_SPI 183 IRQ_TYPE_LEVEL_HIGH>;
                        reg = <0x0f120000 0x1000>;
                        clock-frequency = <19200000>;
 
-                       frame@0f121000 {
+                       frame@f121000 {
                                frame-number = <0>;
                                interrupts = <GIC_SPI 8 IRQ_TYPE_LEVEL_HIGH>,
-                                               <GIC_SPI 7 IRQ_TYPE_LEVEL_HIGH>;
+                                            <GIC_SPI 7 IRQ_TYPE_LEVEL_HIGH>;
                                reg = <0x0f121000 0x1000>,
                                      <0x0f122000 0x1000>;
                        };
 
-                       frame@0f123000 {
+                       frame@f123000 {
                                frame-number = <1>;
                                interrupts = <GIC_SPI 9 IRQ_TYPE_LEVEL_HIGH>;
                                reg = <0x0f123000 0x1000>;
                                status = "disabled";
                        };
 
-                       frame@0f124000 {
+                       frame@f124000 {
                                frame-number = <2>;
                                interrupts = <GIC_SPI 10 IRQ_TYPE_LEVEL_HIGH>;
                                reg = <0x0f124000 0x1000>;
                intc: interrupt-controller@f200000 {
                        compatible = "arm,gic-v3";
                        reg = <0x0f200000 0x20000>,
-                               <0x0f300000 0x100000>;
+                             <0x0f300000 0x100000>;
                        #interrupt-cells = <3>;
                        interrupt-controller;
                        interrupts = <GIC_PPI 9 IRQ_TYPE_LEVEL_HIGH>;
        timer {
                compatible = "arm,armv8-timer";
                interrupts = <GIC_PPI 1 0xf08
-                               GIC_PPI 2 0xf08
-                               GIC_PPI 3 0xf08
-                               GIC_PPI 0 0xf08>;
+                             GIC_PPI 2 0xf08
+                             GIC_PPI 3 0xf08
+                             GIC_PPI 0 0xf08>;
                clock-frequency = <19200000>;
        };
 };
diff --git a/arch/arm64/boot/dts/qcom/sm6350-sony-xperia-lena-pdx213.dts b/arch/arm64/boot/dts/qcom/sm6350-sony-xperia-lena-pdx213.dts
new file mode 100644 (file)
index 0000000..36911b9
--- /dev/null
@@ -0,0 +1,58 @@
+// SPDX-License-Identifier: BSD-3-Clause
+/*
+ * Copyright (c) 2021, Konrad Dybcio <konrad.dybcio@somainline.org>
+ */
+/dts-v1/;
+
+#include "sm6350.dtsi"
+
+/ {
+       model = "Sony Xperia 10 III";
+       compatible = "sony,pdx213", "qcom,sm6350";
+       chassis-type = "handset";
+       qcom,msm-id = <434 0x10000>, <459 0x10000>;
+       qcom,board-id = <0x1000B 0>;
+
+       chosen {
+               #address-cells = <2>;
+               #size-cells = <2>;
+               ranges;
+
+               framebuffer: framebuffer@a0000000 {
+                       compatible = "simple-framebuffer";
+                       reg = <0 0xa0000000 0 0x2300000>;
+                       width = <1080>;
+                       height = <2520>;
+                       stride = <(1080 * 4)>;
+                       format = "a8r8g8b8";
+                       clocks = <&gcc GCC_DISP_AXI_CLK>;
+               };
+       };
+};
+
+&sdhc_2 {
+       status = "okay";
+
+       cd-gpios = <&tlmm 94 GPIO_ACTIVE_HIGH>;
+};
+
+&tlmm {
+       gpio-reserved-ranges = <13 4>, <45 2>, <56 2>;
+};
+
+&usb_1 {
+       status = "okay";
+};
+
+&usb_1_dwc3 {
+       maximum-speed = "super-speed";
+       dr_mode = "peripheral";
+};
+
+&usb_1_hsphy {
+       status = "okay";
+};
+
+&usb_1_qmpphy {
+       status = "okay";
+};
diff --git a/arch/arm64/boot/dts/qcom/sm6350.dtsi b/arch/arm64/boot/dts/qcom/sm6350.dtsi
new file mode 100644 (file)
index 0000000..973e18f
--- /dev/null
@@ -0,0 +1,965 @@
+// SPDX-License-Identifier: BSD-3-Clause
+/*
+ * Copyright (c) 2021, Konrad Dybcio <konrad.dybcio@somainline.org>
+ */
+
+#include <dt-bindings/clock/qcom,gcc-sm6350.h>
+#include <dt-bindings/clock/qcom,rpmh.h>
+#include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/interrupt-controller/arm-gic.h>
+#include <dt-bindings/mailbox/qcom-ipcc.h>
+#include <dt-bindings/power/qcom-rpmpd.h>
+#include <dt-bindings/soc/qcom,rpmh-rsc.h>
+
+/ {
+       interrupt-parent = <&intc>;
+       #address-cells = <2>;
+       #size-cells = <2>;
+
+       clocks {
+               xo_board: xo-board {
+                       compatible = "fixed-clock";
+                       #clock-cells = <0>;
+                       clock-frequency = <76800000>;
+                       clock-output-names = "xo_board";
+               };
+
+               sleep_clk: sleep-clk {
+                       compatible = "fixed-clock";
+                       clock-frequency = <32764>;
+                       #clock-cells = <0>;
+               };
+       };
+
+       cpus {
+               #address-cells = <2>;
+               #size-cells = <0>;
+
+               CPU0: cpu@0 {
+                       device_type = "cpu";
+                       compatible = "qcom,kryo560";
+                       reg = <0x0 0x0>;
+                       enable-method = "psci";
+                       capacity-dmips-mhz = <1024>;
+                       dynamic-power-coefficient = <100>;
+                       next-level-cache = <&L2_0>;
+                       qcom,freq-domain = <&cpufreq_hw 0>;
+                       #cooling-cells = <2>;
+                       L2_0: l2-cache {
+                               compatible = "cache";
+                               next-level-cache = <&L3_0>;
+                               L3_0: l3-cache {
+                                       compatible = "cache";
+                               };
+                       };
+               };
+
+               CPU1: cpu@100 {
+                       device_type = "cpu";
+                       compatible = "qcom,kryo560";
+                       reg = <0x0 0x100>;
+                       enable-method = "psci";
+                       capacity-dmips-mhz = <1024>;
+                       dynamic-power-coefficient = <100>;
+                       next-level-cache = <&L2_100>;
+                       qcom,freq-domain = <&cpufreq_hw 0>;
+                       #cooling-cells = <2>;
+                       L2_100: l2-cache {
+                               compatible = "cache";
+                               next-level-cache = <&L3_0>;
+                       };
+               };
+
+               CPU2: cpu@200 {
+                       device_type = "cpu";
+                       compatible = "qcom,kryo560";
+                       reg = <0x0 0x200>;
+                       enable-method = "psci";
+                       capacity-dmips-mhz = <1024>;
+                       dynamic-power-coefficient = <100>;
+                       next-level-cache = <&L2_200>;
+                       qcom,freq-domain = <&cpufreq_hw 0>;
+                       #cooling-cells = <2>;
+                       L2_200: l2-cache {
+                               compatible = "cache";
+                               next-level-cache = <&L3_0>;
+                       };
+               };
+
+               CPU3: cpu@300 {
+                       device_type = "cpu";
+                       compatible = "qcom,kryo560";
+                       reg = <0x0 0x300>;
+                       enable-method = "psci";
+                       capacity-dmips-mhz = <1024>;
+                       dynamic-power-coefficient = <100>;
+                       next-level-cache = <&L2_300>;
+                       qcom,freq-domain = <&cpufreq_hw 0>;
+                       #cooling-cells = <2>;
+                       L2_300: l2-cache {
+                               compatible = "cache";
+                               next-level-cache = <&L3_0>;
+                       };
+               };
+
+               CPU4: cpu@400 {
+                       device_type = "cpu";
+                       compatible = "qcom,kryo560";
+                       reg = <0x0 0x400>;
+                       enable-method = "psci";
+                       capacity-dmips-mhz = <1024>;
+                       dynamic-power-coefficient = <100>;
+                       next-level-cache = <&L2_400>;
+                       qcom,freq-domain = <&cpufreq_hw 0>;
+                       #cooling-cells = <2>;
+                       L2_400: l2-cache {
+                               compatible = "cache";
+                               next-level-cache = <&L3_0>;
+                       };
+               };
+
+               CPU5: cpu@500 {
+                       device_type = "cpu";
+                       compatible = "qcom,kryo560";
+                       reg = <0x0 0x500>;
+                       enable-method = "psci";
+                       capacity-dmips-mhz = <1024>;
+                       dynamic-power-coefficient = <100>;
+                       next-level-cache = <&L2_500>;
+                       qcom,freq-domain = <&cpufreq_hw 0>;
+                       #cooling-cells = <2>;
+                       L2_500: l2-cache {
+                               compatible = "cache";
+                               next-level-cache = <&L3_0>;
+                       };
+
+               };
+
+               CPU6: cpu@600 {
+                       device_type = "cpu";
+                       compatible = "qcom,kryo560";
+                       reg = <0x0 0x600>;
+                       enable-method = "psci";
+                       capacity-dmips-mhz = <1894>;
+                       dynamic-power-coefficient = <703>;
+                       next-level-cache = <&L2_600>;
+                       qcom,freq-domain = <&cpufreq_hw 1>;
+                       #cooling-cells = <2>;
+                       L2_600: l2-cache {
+                               compatible = "cache";
+                               next-level-cache = <&L3_0>;
+                       };
+               };
+
+               CPU7: cpu@700 {
+                       device_type = "cpu";
+                       compatible = "qcom,kryo560";
+                       reg = <0x0 0x700>;
+                       enable-method = "psci";
+                       capacity-dmips-mhz = <1894>;
+                       dynamic-power-coefficient = <703>;
+                       next-level-cache = <&L2_700>;
+                       qcom,freq-domain = <&cpufreq_hw 1>;
+                       #cooling-cells = <2>;
+                       L2_700: l2-cache {
+                               compatible = "cache";
+                               next-level-cache = <&L3_0>;
+                       };
+               };
+
+               cpu-map {
+                       cluster0 {
+                               core0 {
+                                       cpu = <&CPU0>;
+                               };
+
+                               core1 {
+                                       cpu = <&CPU1>;
+                               };
+
+                               core2 {
+                                       cpu = <&CPU2>;
+                               };
+
+                               core3 {
+                                       cpu = <&CPU3>;
+                               };
+
+                               core4 {
+                                       cpu = <&CPU4>;
+                               };
+
+                               core5 {
+                                       cpu = <&CPU5>;
+                               };
+
+                               core6 {
+                                       cpu = <&CPU6>;
+                               };
+
+                               core7 {
+                                       cpu = <&CPU7>;
+                               };
+                       };
+               };
+       };
+
+       firmware {
+               scm: scm {
+                       compatible = "qcom,scm-sm6350", "qcom,scm";
+                       #reset-cells = <1>;
+               };
+       };
+
+       memory@80000000 {
+               device_type = "memory";
+               /* We expect the bootloader to fill in the size */
+               reg = <0x0 0x80000000 0x0 0x0>;
+       };
+
+       pmu {
+               compatible = "arm,armv8-pmuv3";
+               interrupts = <GIC_PPI 5 IRQ_TYPE_LEVEL_LOW>;
+       };
+
+       psci {
+               compatible = "arm,psci-1.0";
+               method = "smc";
+       };
+
+       reserved_memory: reserved-memory {
+               #address-cells = <2>;
+               #size-cells = <2>;
+               ranges;
+
+               hyp_mem: memory@80000000 {
+                       reg = <0 0x80000000 0 0x600000>;
+                       no-map;
+               };
+
+               xbl_aop_mem: memory@80700000 {
+                       reg = <0 0x80700000 0 0x160000>;
+                       no-map;
+               };
+
+               cmd_db: memory@80860000 {
+                       compatible = "qcom,cmd-db";
+                       reg = <0 0x80860000 0 0x20000>;
+                       no-map;
+               };
+
+               sec_apps_mem: memory@808ff000 {
+                       reg = <0 0x808ff000 0 0x1000>;
+                       no-map;
+               };
+
+               smem_mem: memory@80900000 {
+                       reg = <0 0x80900000 0 0x200000>;
+                       no-map;
+               };
+
+               cdsp_sec_mem: memory@80b00000 {
+                       reg = <0 0x80b00000 0 0x1e00000>;
+                       no-map;
+               };
+
+               pil_camera_mem: memory@86000000 {
+                       reg = <0 0x86000000 0 0x500000>;
+                       no-map;
+               };
+
+               pil_npu_mem: memory@86500000 {
+                       reg = <0 0x86500000 0 0x500000>;
+                       no-map;
+               };
+
+               pil_video_mem: memory@86a00000 {
+                       reg = <0 0x86a00000 0 0x500000>;
+                       no-map;
+               };
+
+               pil_cdsp_mem: memory@86f00000 {
+                       reg = <0 0x86f00000 0 0x1e00000>;
+                       no-map;
+               };
+
+               pil_adsp_mem: memory@88d00000 {
+                       reg = <0 0x88d00000 0 0x2800000>;
+                       no-map;
+               };
+
+               wlan_fw_mem: memory@8b500000 {
+                       reg = <0 0x8b500000 0 0x200000>;
+                       no-map;
+               };
+
+               pil_ipa_fw_mem: memory@8b700000 {
+                       reg = <0 0x8b700000 0 0x10000>;
+                       no-map;
+               };
+
+               pil_ipa_gsi_mem: memory@8b710000 {
+                       reg = <0 0x8b710000 0 0x5400>;
+                       no-map;
+               };
+
+               pil_gpu_mem: memory@8b715400 {
+                       reg = <0 0x8b715400 0 0x2000>;
+                       no-map;
+               };
+
+               pil_modem_mem: memory@8b800000 {
+                       reg = <0 0x8b800000 0 0xf800000>;
+                       no-map;
+               };
+
+               cont_splash_memory: memory@a0000000 {
+                       reg = <0 0xa0000000 0 0x2300000>;
+                       no-map;
+               };
+
+               dfps_data_memory: memory@a2300000 {
+                       reg = <0 0xa2300000 0 0x100000>;
+                       no-map;
+               };
+
+               removed_region: memory@c0000000 {
+                       reg = <0 0xc0000000 0 0x3900000>;
+                       no-map;
+               };
+
+               debug_region: memory@ffb00000 {
+                       reg = <0 0xffb00000 0 0xc0000>;
+                       no-map;
+               };
+
+               last_log_region: memory@ffbc0000 {
+                       reg = <0 0xffbc0000 0 0x40000>;
+                       no-map;
+               };
+
+               ramoops: ramoops@ffc00000 {
+                       compatible = "removed-dma-pool", "ramoops";
+                       reg = <0 0xffc00000 0 0x00100000>;
+                       record-size = <0x1000>;
+                       console-size = <0x40000>;
+                       ftrace-size = <0x0>;
+                       msg-size = <0x20000 0x20000>;
+                       cc-size = <0x0>;
+                       no-map;
+               };
+
+               cmdline_region: memory@ffd00000 {
+                       reg = <0 0xffd00000 0 0x1000>;
+                       no-map;
+               };
+       };
+
+       smem {
+               compatible = "qcom,smem";
+               memory-region = <&smem_mem>;
+               hwlocks = <&tcsr_mutex 3>;
+       };
+
+       soc: soc@0 {
+               #address-cells = <2>;
+               #size-cells = <2>;
+               ranges = <0 0 0 0 0x10 0>;
+               dma-ranges = <0 0 0 0 0x10 0>;
+               compatible = "simple-bus";
+
+               gcc: clock-controller@100000 {
+                       compatible = "qcom,gcc-sm6350";
+                       reg = <0 0x00100000 0 0x1f0000>;
+                       #clock-cells = <1>;
+                       #reset-cells = <1>;
+                       #power-domain-cells = <1>;
+                       clock-names = "bi_tcxo",
+                                     "bi_tcxo_ao",
+                                     "sleep_clk";
+                       clocks = <&rpmhcc RPMH_CXO_CLK>,
+                                <&rpmhcc RPMH_CXO_CLK_A>,
+                                <&sleep_clk>;
+               };
+
+               ipcc: mailbox@408000 {
+                       compatible = "qcom,sm6350-ipcc", "qcom,ipcc";
+                       reg = <0 0x00408000 0 0x1000>;
+                       interrupts = <GIC_SPI 228 IRQ_TYPE_LEVEL_HIGH>;
+                       interrupt-controller;
+                       #interrupt-cells = <3>;
+                       #mbox-cells = <2>;
+               };
+
+               rng: rng@793000 {
+                       compatible = "qcom,prng-ee";
+                       reg = <0 0x00793000 0 0x1000>;
+                       clocks = <&gcc GCC_PRNG_AHB_CLK>;
+                       clock-names = "core";
+               };
+
+               sdhc_1: sdhci@7c4000 {
+                       compatible = "qcom,sm6350-sdhci", "qcom,sdhci-msm-v5";
+                       reg = <0 0x007c4000 0 0x1000>,
+                               <0 0x007c5000 0 0x1000>,
+                               <0 0x007c8000 0 0x8000>;
+                       reg-names = "hc", "cqhci", "ice";
+
+                       interrupts = <GIC_SPI 641 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 644 IRQ_TYPE_LEVEL_HIGH>;
+                       interrupt-names = "hc_irq", "pwr_irq";
+
+                       clocks = <&gcc GCC_SDCC1_AHB_CLK>,
+                                <&gcc GCC_SDCC1_APPS_CLK>,
+                                <&rpmhcc RPMH_CXO_CLK>;
+                       clock-names = "iface", "core", "xo";
+                       qcom,dll-config = <0x000f642c>;
+                       qcom,ddr-config = <0x80040868>;
+                       power-domains = <&rpmhpd 0>;
+                       operating-points-v2 = <&sdhc1_opp_table>;
+                       bus-width = <8>;
+                       non-removable;
+                       supports-cqe;
+
+                       status = "disabled";
+
+                       sdhc1_opp_table: sdhc1-opp-table {
+                               compatible = "operating-points-v2";
+
+                               opp-19200000 {
+                                       opp-hz = /bits/ 64 <19200000>;
+                                       required-opps = <&rpmhpd_opp_min_svs>;
+                               };
+
+                               opp-100000000 {
+                                       opp-hz = /bits/ 64 <100000000>;
+                                       required-opps = <&rpmhpd_opp_low_svs>;
+                               };
+
+                               opp-384000000 {
+                                       opp-hz = /bits/ 64 <384000000>;
+                                       required-opps = <&rpmhpd_opp_svs_l1>;
+                               };
+                       };
+               };
+
+               qupv3_id_1: geniqup@9c0000 {
+                       compatible = "qcom,geni-se-qup";
+                       reg = <0x0 0x9c0000 0x0 0x2000>;
+                       clock-names = "m-ahb", "s-ahb";
+                       clocks = <&gcc GCC_QUPV3_WRAP_1_M_AHB_CLK>,
+                                <&gcc GCC_QUPV3_WRAP_1_S_AHB_CLK>;
+                       #address-cells = <2>;
+                       #size-cells = <2>;
+                       iommus = <&apps_smmu 0x4c3 0x0>;
+                       ranges;
+                       status = "disabled";
+
+                       uart2: serial@98c000 {
+                               compatible = "qcom,geni-debug-uart";
+                               reg = <0 0x98c000 0 0x4000>;
+                               clock-names = "se";
+                               clocks = <&gcc GCC_QUPV3_WRAP1_S3_CLK>;
+                               pinctrl-names = "default";
+                               pinctrl-0 = <&qup_uart2_default>;
+                               interrupts = <GIC_SPI 356 IRQ_TYPE_LEVEL_HIGH>;
+                               status = "disabled";
+                       };
+               };
+
+               tcsr_mutex: hwlock@1f40000 {
+                       compatible = "qcom,tcsr-mutex";
+                       reg = <0x0 0x01f40000 0x0 0x40000>;
+                       #hwlock-cells = <1>;
+               };
+
+               sdhc_2: sdhci@8804000 {
+                       compatible = "qcom,sm6350-sdhci", "qcom,sdhci-msm-v5";
+                       reg = <0 0x08804000 0 0x1000>;
+
+                       interrupts = <GIC_SPI 204 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 222 IRQ_TYPE_LEVEL_HIGH>;
+                       interrupt-names = "hc_irq", "pwr_irq";
+
+                       clocks = <&gcc GCC_SDCC2_AHB_CLK>,
+                                <&gcc GCC_SDCC2_APPS_CLK>,
+                                <&rpmhcc RPMH_CXO_CLK>;
+                       clock-names = "iface", "core", "xo";
+                       qcom,dll-config = <0x0007642c>;
+                       qcom,ddr-config = <0x80040868>;
+                       power-domains = <&rpmhpd 0>;
+                       operating-points-v2 = <&sdhc2_opp_table>;
+                       bus-width = <4>;
+
+                       status = "disabled";
+
+                       sdhc2_opp_table: sdhc2-opp-table {
+                               compatible = "operating-points-v2";
+
+                               opp-100000000 {
+                                       opp-hz = /bits/ 64 <100000000>;
+                                       required-opps = <&rpmhpd_opp_svs_l1>;
+                               };
+
+                               opp-202000000 {
+                                       opp-hz = /bits/ 64 <202000000>;
+                                       required-opps = <&rpmhpd_opp_nom>;
+                               };
+                       };
+               };
+
+               usb_1_hsphy: phy@88e3000 {
+                       compatible = "qcom,sm6350-qusb2-phy", "qcom,qusb2-v2-phy";
+                       reg = <0 0x088e3000 0 0x400>;
+                       status = "disabled";
+                       #phy-cells = <0>;
+
+                       clocks = <&xo_board>, <&rpmhcc RPMH_CXO_CLK>;
+                       clock-names = "cfg_ahb", "ref";
+
+                       resets = <&gcc GCC_QUSB2PHY_PRIM_BCR>;
+               };
+
+               usb_1_qmpphy: phy@88e9000 {
+                       compatible = "qcom,sc7180-qmp-usb3-dp-phy";
+                       reg = <0 0x088e9000 0 0x200>,
+                             <0 0x088e8000 0 0x40>,
+                             <0 0x088ea000 0 0x200>;
+                       status = "disabled";
+                       #address-cells = <2>;
+                       #size-cells = <2>;
+                       ranges;
+
+                       clocks = <&gcc GCC_USB3_PRIM_PHY_AUX_CLK>,
+                                <&rpmhcc RPMH_QLINK_CLK>,
+                                <&gcc GCC_USB3_PRIM_PHY_COM_AUX_CLK>,
+                                <&xo_board>;
+                       clock-names = "aux", "ref", "com_aux", "cfg_ahb";
+
+                       resets = <&gcc GCC_USB3_DP_PHY_PRIM_BCR>,
+                                <&gcc GCC_USB3_PHY_PRIM_BCR>;
+                       reset-names = "phy", "common";
+
+                       usb_1_ssphy: usb3-phy@88e9200 {
+                               reg = <0 0x088e9200 0 0x200>,
+                                     <0 0x088e9400 0 0x200>,
+                                     <0 0x088e9c00 0 0x400>,
+                                     <0 0x088e9600 0 0x200>,
+                                     <0 0x088e9800 0 0x200>,
+                                     <0 0x088e9a00 0 0x100>;
+                               #clock-cells = <0>;
+                               #phy-cells = <0>;
+                               clocks = <&gcc GCC_USB3_PRIM_PHY_PIPE_CLK>;
+                               clock-names = "pipe0";
+                               clock-output-names = "usb3_phy_pipe_clk_src";
+                       };
+
+                       dp_phy: dp-phy@88ea200 {
+                               reg = <0 0x088ea200 0 0x200>,
+                                     <0 0x088ea400 0 0x200>,
+                                     <0 0x088eac00 0 0x400>,
+                                     <0 0x088ea600 0 0x200>,
+                                     <0 0x088ea800 0 0x200>,
+                                     <0 0x088eaa00 0 0x100>;
+                               #phy-cells = <0>;
+                               #clock-cells = <1>;
+                               clocks = <&gcc GCC_USB3_PRIM_PHY_PIPE_CLK>;
+                               clock-names = "pipe0";
+                               clock-output-names = "usb3_phy_pipe_clk_src";
+                       };
+               };
+
+               system-cache-controller@9200000 {
+                       compatible = "qcom,sm6350-llcc";
+                       reg = <0 0x09200000 0 0x50000>, <0 0x09600000 0 0x50000>;
+                       reg-names = "llcc_base", "llcc_broadcast_base";
+               };
+
+               usb_1: usb@a6f8800 {
+                       compatible = "qcom,sm6350-dwc3", "qcom,dwc3";
+                       reg = <0 0x0a6f8800 0 0x400>;
+                       status = "disabled";
+                       #address-cells = <2>;
+                       #size-cells = <2>;
+                       ranges;
+
+                       clocks = <&gcc GCC_CFG_NOC_USB3_PRIM_AXI_CLK>,
+                                <&gcc GCC_USB30_PRIM_MASTER_CLK>,
+                                <&gcc GCC_AGGRE_USB3_PRIM_AXI_CLK>,
+                                <&gcc GCC_USB30_PRIM_MOCK_UTMI_CLK>,
+                                <&gcc GCC_USB30_PRIM_SLEEP_CLK>;
+                       clock-names = "cfg_noc", "core", "iface", "mock_utmi",
+                                     "sleep";
+
+                       interrupts-extended = <&intc GIC_SPI 130 IRQ_TYPE_LEVEL_HIGH>,
+                                             <&pdc 14 IRQ_TYPE_EDGE_BOTH>,
+                                             <&pdc 15 IRQ_TYPE_EDGE_BOTH>,
+                                             <&pdc 17 IRQ_TYPE_LEVEL_HIGH>;
+                       interrupt-names = "hs_phy_irq", "dp_hs_phy_irq",
+                                         "dm_hs_phy_irq", "ss_phy_irq";
+
+                       power-domains = <&gcc USB30_PRIM_GDSC>;
+
+                       resets = <&gcc GCC_USB30_PRIM_BCR>;
+
+                       usb_1_dwc3: usb@a600000 {
+                               compatible = "snps,dwc3";
+                               reg = <0 0x0a600000 0 0xcd00>;
+                               interrupts = <GIC_SPI 133 IRQ_TYPE_LEVEL_HIGH>;
+                               iommus = <&apps_smmu 0x540 0x0>;
+                               snps,dis_u2_susphy_quirk;
+                               snps,dis_enblslpm_quirk;
+                               snps,has-lpm-erratum;
+                               snps,hird-threshold = /bits/ 8 <0x10>;
+                               phys = <&usb_1_hsphy>, <&usb_1_ssphy>;
+                               phy-names = "usb2-phy", "usb3-phy";
+                       };
+               };
+
+               pdc: interrupt-controller@b220000 {
+                       compatible = "qcom,sm6350-pdc", "qcom,pdc";
+                       reg = <0 0x0b220000 0 0x30000>, <0 0x17c000f0 0 0x64>;
+                       qcom,pdc-ranges = <0 480 94>, <94 609 31>,
+                                         <125 63 1>, <126 655 12>, <138 139 15>;
+                       #interrupt-cells = <2>;
+                       interrupt-parent = <&intc>;
+                       interrupt-controller;
+               };
+
+               tsens0: thermal-sensor@c263000 {
+                       compatible = "qcom,sm6350-tsens", "qcom,tsens-v2";
+                       reg = <0 0x0c263000 0 0x1ff>, /* TM */
+                             <0 0x0c222000 0 0x8>; /* SROT */
+                       #qcom,sensors = <16>;
+                       interrupts = <&pdc 26 IRQ_TYPE_LEVEL_HIGH>,
+                                    <&pdc 28 IRQ_TYPE_LEVEL_HIGH>;
+                       interrupt-names = "uplow", "critical";
+                       #thermal-sensor-cells = <1>;
+               };
+
+               tsens1: thermal-sensor@c265000 {
+                       compatible = "qcom,sm6350-tsens", "qcom,tsens-v2";
+                       reg = <0 0x0c265000 0 0x1ff>, /* TM */
+                             <0 0x0c223000 0 0x8>; /* SROT */
+                       #qcom,sensors = <16>;
+                       interrupts = <&pdc 27 IRQ_TYPE_LEVEL_HIGH>,
+                                    <&pdc 29 IRQ_TYPE_LEVEL_HIGH>;
+                       interrupt-names = "uplow", "critical";
+                       #thermal-sensor-cells = <1>;
+               };
+
+               aoss_qmp: power-controller@c300000 {
+                       compatible = "qcom,sm6350-aoss-qmp", "qcom,aoss-qmp";
+                       reg = <0 0x0c300000 0 0x1000>;
+                       interrupts-extended = <&ipcc IPCC_CLIENT_AOP IPCC_MPROC_SIGNAL_GLINK_QMP
+                                                    IRQ_TYPE_EDGE_RISING>;
+                       mboxes = <&ipcc IPCC_CLIENT_AOP IPCC_MPROC_SIGNAL_GLINK_QMP>;
+
+                       #clock-cells = <0>;
+                       #power-domain-cells = <1>;
+               };
+
+               spmi_bus: spmi@c440000 {
+                       compatible = "qcom,spmi-pmic-arb";
+                       reg = <0 0xc440000 0 0x1100>,
+                             <0 0xc600000 0 0x2000000>,
+                             <0 0xe600000 0 0x100000>,
+                             <0 0xe700000 0 0xa0000>,
+                             <0 0xc40a000 0 0x26000>;
+                       reg-names = "core", "chnls", "obsrvr", "intr", "cnfg";
+                       interrupt-names = "periph_irq";
+                       interrupts-extended = <&pdc 1 IRQ_TYPE_LEVEL_HIGH>;
+                       qcom,ee = <0>;
+                       qcom,channel = <0>;
+                       #address-cells = <2>;
+                       #size-cells = <0>;
+                       interrupt-controller;
+                       #interrupt-cells = <4>;
+               };
+
+               tlmm: pinctrl@f100000 {
+                       compatible = "qcom,sm6350-tlmm";
+                       reg = <0 0x0f100000 0 0x300000>;
+                       interrupts = <GIC_SPI 208 IRQ_TYPE_LEVEL_HIGH>,
+                                       <GIC_SPI 209 IRQ_TYPE_LEVEL_HIGH>,
+                                       <GIC_SPI 210 IRQ_TYPE_LEVEL_HIGH>,
+                                       <GIC_SPI 211 IRQ_TYPE_LEVEL_HIGH>,
+                                       <GIC_SPI 212 IRQ_TYPE_LEVEL_HIGH>,
+                                       <GIC_SPI 213 IRQ_TYPE_LEVEL_HIGH>,
+                                       <GIC_SPI 214 IRQ_TYPE_LEVEL_HIGH>,
+                                       <GIC_SPI 215 IRQ_TYPE_LEVEL_HIGH>,
+                                       <GIC_SPI 216 IRQ_TYPE_LEVEL_HIGH>;
+                       gpio-controller;
+                       #gpio-cells = <2>;
+                       interrupt-controller;
+                       #interrupt-cells = <2>;
+                       gpio-ranges = <&tlmm 0 0 157>;
+
+                       qup_uart2_default: qup-uart2-default {
+                               pins = "gpio25", "gpio26";
+                               function = "qup13_f2";
+                               drive-strength = <2>;
+                               bias-disable;
+                       };
+               };
+
+               apps_smmu: iommu@15000000 {
+                       compatible = "qcom,sm6350-smmu-500", "arm,mmu-500";
+                       reg = <0 0x15000000 0 0x100000>;
+                       #iommu-cells = <2>;
+                       #global-interrupts = <1>;
+                       interrupts = <GIC_SPI 65 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 95 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 96 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 97 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 98 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 99 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 100 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 101 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 102 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 103 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 104 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 105 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 106 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 107 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 108 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 109 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 110 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 111 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 112 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 113 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 114 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 115 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 116 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 117 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 118 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 181 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 182 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 183 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 184 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 185 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 186 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 187 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 188 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 189 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 190 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 191 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 192 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 315 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 316 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 317 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 318 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 319 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 320 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 321 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 322 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 323 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 324 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 325 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 326 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 327 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 328 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 329 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 330 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 331 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 332 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 333 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 334 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 335 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 336 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 337 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 338 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 339 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 340 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 341 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 342 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 343 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 344 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 345 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 401 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 402 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 403 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 404 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 405 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 406 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 407 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 408 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 409 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 410 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 411 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 412 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 413 IRQ_TYPE_LEVEL_HIGH>;
+               };
+
+               intc: interrupt-controller@17a00000 {
+                       compatible = "arm,gic-v3";
+                       #interrupt-cells = <3>;
+                       interrupt-controller;
+                       reg = <0x0 0x17a00000 0x0 0x10000>,     /* GICD */
+                             <0x0 0x17a60000 0x0 0x100000>;    /* GICR * 8 */
+                       interrupts = <GIC_PPI 8 IRQ_TYPE_LEVEL_HIGH>;
+               };
+
+               watchdog@17c10000 {
+                       compatible = "qcom,apss-wdt-sm6350", "qcom,kpss-wdt";
+                       reg = <0 0x17c10000 0 0x1000>;
+                       clocks = <&sleep_clk>;
+                       interrupts = <GIC_SPI 0 IRQ_TYPE_LEVEL_HIGH>;
+               };
+
+               timer@17c20000 {
+                       compatible = "arm,armv7-timer-mem";
+                       reg = <0x0 0x17c20000 0x0 0x1000>;
+                       clock-frequency = <19200000>;
+                       #address-cells = <2>;
+                       #size-cells = <2>;
+                       ranges;
+
+                       frame@17c21000 {
+                               frame-number = <0>;
+                               interrupts = <GIC_SPI 8 IRQ_TYPE_LEVEL_HIGH>,
+                                            <GIC_SPI 6 IRQ_TYPE_LEVEL_HIGH>;
+                               reg = <0x0 0x17c21000 0x0 0x1000>,
+                                     <0x0 0x17c22000 0x0 0x1000>;
+                       };
+
+                       frame@17c23000 {
+                               frame-number = <1>;
+                               interrupts = <GIC_SPI 9 IRQ_TYPE_LEVEL_HIGH>;
+                               reg = <0x0 0x17c23000 0x0 0x1000>;
+                               status = "disabled";
+                       };
+
+                       frame@17c25000 {
+                               frame-number = <2>;
+                               interrupts = <GIC_SPI 10 IRQ_TYPE_LEVEL_HIGH>;
+                               reg = <0x0 0x17c25000 0x0 0x1000>;
+                               status = "disabled";
+                       };
+
+                       frame@17c27000 {
+                               frame-number = <3>;
+                               interrupts = <GIC_SPI 11 IRQ_TYPE_LEVEL_HIGH>;
+                               reg = <0x0 0x17c27000 0x0 0x1000>;
+                               status = "disabled";
+                       };
+
+                       frame@17c29000 {
+                               frame-number = <4>;
+                               interrupts = <GIC_SPI 12 IRQ_TYPE_LEVEL_HIGH>;
+                               reg = <0x0 0x17c29000 0x0 0x1000>;
+                               status = "disabled";
+                       };
+
+                       frame@17c2b000 {
+                               frame-number = <5>;
+                               interrupts = <GIC_SPI 13 IRQ_TYPE_LEVEL_HIGH>;
+                               reg = <0x0 0x17c2b000 0x0 0x1000>;
+                               status = "disabled";
+                       };
+
+                       frame@17c2d000 {
+                               frame-number = <6>;
+                               interrupts = <GIC_SPI 14 IRQ_TYPE_LEVEL_HIGH>;
+                               reg = <0x0 0x17c2d000 0x0 0x1000>;
+                               status = "disabled";
+                       };
+               };
+
+               apps_rsc: rsc@18200000 {
+                       compatible = "qcom,rpmh-rsc";
+                       label = "apps_rsc";
+                       reg = <0x0 0x18200000 0x0 0x10000>,
+                               <0x0 0x18210000 0x0 0x10000>,
+                               <0x0 0x18220000 0x0 0x10000>;
+                       reg-names = "drv-0", "drv-1", "drv-2";
+                       interrupts = <GIC_SPI 3 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 4 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 5 IRQ_TYPE_LEVEL_HIGH>;
+                       qcom,tcs-offset = <0xd00>;
+                       qcom,drv-id = <2>;
+                       qcom,tcs-config = <ACTIVE_TCS 2>, <SLEEP_TCS 3>,
+                                         <WAKE_TCS 3>, <CONTROL_TCS 1>;
+
+                       rpmhcc: clock-controller {
+                               compatible = "qcom,sm6350-rpmh-clk";
+                               #clock-cells = <1>;
+                               clock-names = "xo";
+                               clocks = <&xo_board>;
+                       };
+
+                       rpmhpd: power-controller {
+                               compatible = "qcom,sm6350-rpmhpd";
+                               #power-domain-cells = <1>;
+                               operating-points-v2 = <&rpmhpd_opp_table>;
+
+                               rpmhpd_opp_table: opp-table {
+                                       compatible = "operating-points-v2";
+
+                                       rpmhpd_opp_ret: opp1 {
+                                               opp-level = <RPMH_REGULATOR_LEVEL_RETENTION>;
+                                       };
+
+                                       rpmhpd_opp_min_svs: opp2 {
+                                               opp-level = <RPMH_REGULATOR_LEVEL_MIN_SVS>;
+                                       };
+
+                                       rpmhpd_opp_low_svs: opp3 {
+                                               opp-level = <RPMH_REGULATOR_LEVEL_LOW_SVS>;
+                                       };
+
+                                       rpmhpd_opp_svs: opp4 {
+                                               opp-level = <RPMH_REGULATOR_LEVEL_SVS>;
+                                       };
+
+                                       rpmhpd_opp_svs_l1: opp5 {
+                                               opp-level = <RPMH_REGULATOR_LEVEL_SVS_L1>;
+                                       };
+
+                                       rpmhpd_opp_nom: opp6 {
+                                               opp-level = <RPMH_REGULATOR_LEVEL_NOM>;
+                                       };
+
+                                       rpmhpd_opp_nom_l1: opp7 {
+                                               opp-level = <RPMH_REGULATOR_LEVEL_NOM_L1>;
+                                       };
+
+                                       rpmhpd_opp_nom_l2: opp8 {
+                                               opp-level = <RPMH_REGULATOR_LEVEL_NOM_L2>;
+                                       };
+
+                                       rpmhpd_opp_turbo: opp9 {
+                                               opp-level = <RPMH_REGULATOR_LEVEL_TURBO>;
+                                       };
+
+                                       rpmhpd_opp_turbo_l1: opp10 {
+                                               opp-level = <RPMH_REGULATOR_LEVEL_TURBO_L1>;
+                                       };
+                               };
+                       };
+
+                       apps_bcm_voter: bcm_voter {
+                               compatible = "qcom,bcm-voter";
+                       };
+               };
+
+               cpufreq_hw: cpufreq@18323000 {
+                       compatible = "qcom,cpufreq-hw";
+                       reg = <0 0x18323000 0 0x1000>, <0 0x18325800 0 0x1000>;
+                       reg-names = "freq-domain0", "freq-domain1";
+                       clocks = <&rpmhcc RPMH_CXO_CLK>, <&gcc GPLL0>;
+                       clock-names = "xo", "alternate";
+
+                       #freq-domain-cells = <1>;
+               };
+       };
+
+       timer {
+               compatible = "arm,armv8-timer";
+               clock-frequency = <19200000>;
+               interrupts = <GIC_PPI 1 (GIC_CPU_MASK_SIMPLE(8) | IRQ_TYPE_LEVEL_LOW)>,
+                            <GIC_PPI 2 (GIC_CPU_MASK_SIMPLE(8) | IRQ_TYPE_LEVEL_LOW)>,
+                            <GIC_PPI 3 (GIC_CPU_MASK_SIMPLE(8) | IRQ_TYPE_LEVEL_LOW)>,
+                            <GIC_PPI 0 (GIC_CPU_MASK_SIMPLE(8) | IRQ_TYPE_LEVEL_LOW)>;
+       };
+};
diff --git a/arch/arm64/boot/dts/qcom/sm7225-fairphone-fp4.dts b/arch/arm64/boot/dts/qcom/sm7225-fairphone-fp4.dts
new file mode 100644 (file)
index 0000000..8d6fd22
--- /dev/null
@@ -0,0 +1,320 @@
+// SPDX-License-Identifier: BSD-3-Clause
+/*
+ * Copyright (c) 2021, Luca Weiss <luca@z3ntu.xyz>
+ */
+
+/dts-v1/;
+
+#include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/input/input.h>
+#include <dt-bindings/pinctrl/qcom,pmic-gpio.h>
+#include <dt-bindings/regulator/qcom,rpmh-regulator.h>
+#include "sm7225.dtsi"
+#include "pm6350.dtsi"
+
+/ {
+       model = "Fairphone 4";
+       compatible = "fairphone,fp4", "qcom,sm7225";
+
+       /* required for bootloader to select correct board */
+       qcom,msm-id = <434 0x10000>, <459 0x10000>;
+       qcom,board-id = <8 32>;
+
+       aliases {
+               serial0 = &uart2;
+       };
+
+       chosen {
+               #address-cells = <2>;
+               #size-cells = <2>;
+               ranges;
+
+               stdout-path = "serial0:115200n8";
+
+               framebuffer0: framebuffer@a000000 {
+                       compatible = "simple-framebuffer";
+                       reg = <0 0xa0000000 0 (2340 * 1080 * 4)>;
+                       width = <1080>;
+                       height = <2340>;
+                       stride = <(1080 * 4)>;
+                       format = "a8r8g8b8";
+               };
+       };
+
+       gpio-keys {
+               compatible = "gpio-keys";
+               pinctrl-names = "default";
+               pinctrl-0 = <&gpio_keys_pin>;
+
+               volume-up {
+                       label = "volume_up";
+                       linux,code = <KEY_VOLUMEUP>;
+                       gpios = <&pm6350_gpios 2 GPIO_ACTIVE_LOW>;
+               };
+       };
+};
+
+&apps_rsc {
+       pm6350-rpmh-regulators {
+               compatible = "qcom,pm6350-rpmh-regulators";
+               qcom,pmic-id = "a";
+
+               vreg_s1a: smps1 {
+                       regulator-min-microvolt = <1000000>;
+                       regulator-max-microvolt = <1200000>;
+               };
+
+               vreg_s2a: smps2 {
+                       regulator-min-microvolt = <1503000>;
+                       regulator-max-microvolt = <2048000>;
+               };
+
+               vreg_l2a: ldo2 {
+                       regulator-min-microvolt = <1503000>;
+                       regulator-max-microvolt = <1980000>;
+                       regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+               };
+
+               vreg_l3a: ldo3 {
+                       regulator-min-microvolt = <2700000>;
+                       regulator-max-microvolt = <3300000>;
+                       regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+               };
+
+               vreg_l4a: ldo4 {
+                       regulator-min-microvolt = <352000>;
+                       regulator-max-microvolt = <801000>;
+                       regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+               };
+
+               vreg_l5a: ldo5 {
+                       regulator-min-microvolt = <1503000>;
+                       regulator-max-microvolt = <1980000>;
+                       regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+               };
+
+               vreg_l6a: ldo6 {
+                       regulator-min-microvolt = <1710000>;
+                       regulator-max-microvolt = <3544000>;
+                       regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+               };
+
+               vreg_l7a: ldo7 {
+                       regulator-min-microvolt = <1620000>;
+                       regulator-max-microvolt = <1980000>;
+                       regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+               };
+
+               vreg_l8a: ldo8 {
+                       regulator-min-microvolt = <2800000>;
+                       regulator-max-microvolt = <2800000>;
+                       regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+               };
+
+               vreg_l9a: ldo9 {
+                       regulator-min-microvolt = <1650000>;
+                       regulator-max-microvolt = <3401000>;
+                       regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+               };
+
+               vreg_l11a: ldo11 {
+                       regulator-min-microvolt = <1800000>;
+                       regulator-max-microvolt = <2000000>;
+                       regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+               };
+
+               vreg_l12a: ldo12 {
+                       regulator-min-microvolt = <1620000>;
+                       regulator-max-microvolt = <1980000>;
+                       regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+               };
+
+               vreg_l13a: ldo13 {
+                       regulator-min-microvolt = <570000>;
+                       regulator-max-microvolt = <650000>;
+                       regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+               };
+
+               vreg_l14a: ldo14 {
+                       regulator-min-microvolt = <1700000>;
+                       regulator-max-microvolt = <1900000>;
+                       regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+               };
+
+               vreg_l15a: ldo15 {
+                       regulator-min-microvolt = <1100000>;
+                       regulator-max-microvolt = <1305000>;
+                       regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+               };
+
+               vreg_l16a: ldo16 {
+                       regulator-min-microvolt = <830000>;
+                       regulator-max-microvolt = <921000>;
+                       regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+               };
+
+               vreg_l18a: ldo18 {
+                       regulator-min-microvolt = <788000>;
+                       regulator-max-microvolt = <1049000>;
+                       regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+               };
+
+               vreg_l19a: ldo19 {
+                       regulator-min-microvolt = <1080000>;
+                       regulator-max-microvolt = <1305000>;
+                       regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+               };
+
+               vreg_l20a: ldo20 {
+                       regulator-min-microvolt = <530000>;
+                       regulator-max-microvolt = <801000>;
+                       regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+               };
+
+               vreg_l21a: ldo21 {
+                       regulator-min-microvolt = <751000>;
+                       regulator-max-microvolt = <825000>;
+                       regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+               };
+
+               vreg_l22a: ldo22 {
+                       regulator-min-microvolt = <1080000>;
+                       regulator-max-microvolt = <1305000>;
+                       regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+               };
+       };
+
+       pm6150l-rpmh-regulators {
+               compatible = "qcom,pm6150l-rpmh-regulators";
+               qcom,pmic-id = "e";
+
+               vreg_s8e: smps8 {
+                       regulator-min-microvolt = <313000>;
+                       regulator-max-microvolt = <1395000>;
+               };
+
+               vreg_l1e: ldo1 {
+                       regulator-min-microvolt = <1620000>;
+                       regulator-max-microvolt = <1980000>;
+                       regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+               };
+
+               vreg_l2e: ldo2 {
+                       regulator-min-microvolt = <1170000>;
+                       regulator-max-microvolt = <1305000>;
+                       regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+               };
+
+               vreg_l3e: ldo3 {
+                       regulator-min-microvolt = <1100000>;
+                       regulator-max-microvolt = <1299000>;
+                       regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+               };
+
+               vreg_l4e: ldo4 {
+                       regulator-min-microvolt = <1620000>;
+                       regulator-max-microvolt = <3300000>;
+                       regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+               };
+
+               vreg_l5e: ldo5 {
+                       regulator-min-microvolt = <1620000>;
+                       regulator-max-microvolt = <3300000>;
+                       regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+               };
+
+               vreg_l6e: ldo6 {
+                       regulator-min-microvolt = <1700000>;
+                       regulator-max-microvolt = <3544000>;
+                       regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+               };
+
+               vreg_l7e: ldo7 {
+                       regulator-min-microvolt = <2700000>;
+                       regulator-max-microvolt = <3544000>;
+                       regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+               };
+
+               vreg_l8e: ldo8 {
+                       regulator-min-microvolt = <1620000>;
+                       regulator-max-microvolt = <2000000>;
+                       regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+               };
+
+               vreg_l9e: ldo9 {
+                       regulator-min-microvolt = <2700000>;
+                       regulator-max-microvolt = <3544000>;
+                       regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+               };
+
+               vreg_l10e: ldo10 {
+                       regulator-min-microvolt = <3000000>;
+                       regulator-max-microvolt = <3401000>;
+                       regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+               };
+
+               vreg_l11e: ldo11 {
+                       regulator-min-microvolt = <3000000>;
+                       regulator-max-microvolt = <3401000>;
+                       regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+               };
+
+               vreg_bob: bob {
+                       regulator-min-microvolt = <1620000>;
+                       regulator-max-microvolt = <5492000>;
+                       regulator-initial-mode = <RPMH_REGULATOR_MODE_AUTO>;
+                       regulator-allow-bypass;
+               };
+       };
+};
+
+&pm6350_gpios {
+       gpio_keys_pin: gpio-keys-pin {
+               pins = "gpio2";
+               function = PMIC_GPIO_FUNC_NORMAL;
+               bias-pull-up;
+               input-enable;
+               power-source = <0>;
+       };
+};
+
+&pm6350_resin {
+       status = "okay";
+       linux,code = <KEY_VOLUMEDOWN>;
+};
+
+&qupv3_id_1 {
+       status = "okay";
+};
+
+&tlmm {
+       gpio-reserved-ranges = <13 4>, <56 2>;
+};
+
+&uart2 {
+       status = "okay";
+};
+
+&usb_1 {
+       status = "okay";
+};
+
+&usb_1_dwc3 {
+       maximum-speed = "super-speed";
+       dr_mode = "peripheral";
+};
+
+&usb_1_hsphy {
+       status = "okay";
+
+       vdd-supply = <&vreg_l18a>;
+       vdda-pll-supply = <&vreg_l2a>;
+       vdda-phy-dpdm-supply = <&vreg_l3a>;
+};
+
+&usb_1_qmpphy {
+       status = "okay";
+
+       vdda-phy-supply = <&vreg_l22a>;
+       vdda-pll-supply = <&vreg_l16a>;
+};
diff --git a/arch/arm64/boot/dts/qcom/sm7225.dtsi b/arch/arm64/boot/dts/qcom/sm7225.dtsi
new file mode 100644 (file)
index 0000000..7b2a002
--- /dev/null
@@ -0,0 +1,16 @@
+// SPDX-License-Identifier: BSD-3-Clause
+/*
+ * Copyright (c) 2021, Luca Weiss <luca@z3ntu.xyz>
+ */
+
+#include "sm6350.dtsi"
+
+/* SM7225 uses Kryo 570 instead of Kryo 560 */
+&CPU0 { compatible = "qcom,kryo570"; };
+&CPU1 { compatible = "qcom,kryo570"; };
+&CPU2 { compatible = "qcom,kryo570"; };
+&CPU3 { compatible = "qcom,kryo570"; };
+&CPU4 { compatible = "qcom,kryo570"; };
+&CPU5 { compatible = "qcom,kryo570"; };
+&CPU6 { compatible = "qcom,kryo570"; };
+&CPU7 { compatible = "qcom,kryo570"; };
index 335aa07..37ddca0 100644 (file)
        status = "okay";
 
        vdda-phy-supply = <&vdda_ufs_2ln_core_1>;
-       vdda-max-microamp = <90200>;
        vdda-pll-supply = <&vreg_l3c_1p2>;
-       vdda-pll-max-microamp = <19000>;
 };
 
 &usb_1_hsphy {
index 736da9a..5901c28 100644 (file)
@@ -15,6 +15,7 @@
 / {
        model = "Microsoft Surface Duo";
        compatible = "microsoft,surface-duo", "qcom,sm8150";
+       chassis-type = "handset";
 
        aliases {
                serial0 = &uart2;
        status = "okay";
 
        vdda-phy-supply = <&vdda_ufs_2ln_core_1>;
-       vdda-max-microamp = <90200>;
        vdda-pll-supply = <&vreg_l3c_1p2>;
-       vdda-pll-max-microamp = <19000>;
 };
 
 &usb_1_hsphy {
index b484371..46b5cf9 100644 (file)
        status = "okay";
 
        vdda-phy-supply = <&vdda_ufs_2ln_core_1>;
-       vdda-max-microamp = <90200>;
        vdda-pll-supply = <&vreg_l3c_1p2>;
-       vdda-pll-max-microamp = <19000>;
 };
 
 &usb_1_hsphy {
index 3b55fdd..b278040 100644 (file)
@@ -10,6 +10,7 @@
 / {
        model = "Sony Xperia 5";
        compatible = "sony,bahamut-generic", "qcom,sm8150";
+       chassis-type = "handset";
 };
 
 &framebuffer {
index 6f490ec..0d6dece 100644 (file)
@@ -10,4 +10,5 @@
 / {
        model = "Sony Xperia 1";
        compatible = "sony,griffin-generic", "qcom,sm8150";
+       chassis-type = "handset";
 };
index ef0232c..81b4ff2 100644 (file)
@@ -6,7 +6,6 @@
 
 #include <dt-bindings/dma/qcom-gpi.h>
 #include <dt-bindings/interrupt-controller/arm-gic.h>
-#include <dt-bindings/power/qcom-aoss-qmp.h>
 #include <dt-bindings/power/qcom-rpmpd.h>
 #include <dt-bindings/soc/qcom,rpmh-rsc.h>
 #include <dt-bindings/clock/qcom,rpmh.h>
                        reset-names = "ufsphy";
                        status = "disabled";
 
-                       ufs_mem_phy_lanes: lanes@1d87400 {
+                       ufs_mem_phy_lanes: phy@1d87400 {
                                reg = <0 0x01d87400 0 0x108>,
                                      <0 0x01d87600 0 0x1e0>,
                                      <0 0x01d87c00 0 0x1dc>,
                        clocks = <&rpmhcc RPMH_CXO_CLK>;
                        clock-names = "xo";
 
-                       power-domains = <&aoss_qmp AOSS_QMP_LS_SLPI>,
-                                       <&rpmhpd 3>,
+                       power-domains = <&rpmhpd 3>,
                                        <&rpmhpd 2>;
-                       power-domain-names = "load_state", "lcx", "lmx";
+                       power-domain-names = "lcx", "lmx";
 
                        memory-region = <&slpi_mem>;
 
+                       qcom,qmp = <&aoss_qmp>;
+
                        qcom,smem-states = <&slpi_smp2p_out 0>;
                        qcom,smem-state-names = "stop";
 
                                label = "dsps";
                                qcom,remote-pid = <3>;
                                mboxes = <&apss_shared 24>;
+
+                               fastrpc {
+                                       compatible = "qcom,fastrpc";
+                                       qcom,glink-channels = "fastrpcglink-apps-dsp";
+                                       label = "sdsp";
+                                       #address-cells = <1>;
+                                       #size-cells = <0>;
+
+                                       compute-cb@1 {
+                                               compatible = "qcom,fastrpc-compute-cb";
+                                               reg = <1>;
+                                               iommus = <&apps_smmu 0x05a1 0x0>;
+                                       };
+
+                                       compute-cb@2 {
+                                               compatible = "qcom,fastrpc-compute-cb";
+                                               reg = <2>;
+                                               iommus = <&apps_smmu 0x05a2 0x0>;
+                                       };
+
+                                       compute-cb@3 {
+                                               compatible = "qcom,fastrpc-compute-cb";
+                                               reg = <3>;
+                                               iommus = <&apps_smmu 0x05a3 0x0>;
+                                               /* note: shared-cb = <4> in downstream */
+                                       };
+                               };
                        };
                };
 
                        clocks = <&rpmhcc RPMH_CXO_CLK>;
                        clock-names = "xo";
 
-                       power-domains = <&aoss_qmp AOSS_QMP_LS_MODEM>,
-                                       <&rpmhpd 7>,
+                       power-domains = <&rpmhpd 7>,
                                        <&rpmhpd 0>;
-                       power-domain-names = "load_state", "cx", "mss";
+                       power-domain-names = "cx", "mss";
 
                        memory-region = <&mpss_mem>;
 
+                       qcom,qmp = <&aoss_qmp>;
+
                        qcom,smem-states = <&modem_smp2p_out 0>;
                        qcom,smem-state-names = "stop";
 
                        clocks = <&rpmhcc RPMH_CXO_CLK>;
                        clock-names = "xo";
 
-                       power-domains = <&aoss_qmp AOSS_QMP_LS_CDSP>,
-                                       <&rpmhpd 7>;
-                       power-domain-names = "load_state", "cx";
+                       power-domains = <&rpmhpd 7>;
 
                        memory-region = <&cdsp_mem>;
 
+                       qcom,qmp = <&aoss_qmp>;
+
                        qcom,smem-states = <&cdsp_smp2p_out 0>;
                        qcom,smem-state-names = "stop";
 
                                label = "cdsp";
                                qcom,remote-pid = <5>;
                                mboxes = <&apss_shared 4>;
+
+                               fastrpc {
+                                       compatible = "qcom,fastrpc";
+                                       qcom,glink-channels = "fastrpcglink-apps-dsp";
+                                       label = "cdsp";
+                                       #address-cells = <1>;
+                                       #size-cells = <0>;
+
+                                       compute-cb@1 {
+                                               compatible = "qcom,fastrpc-compute-cb";
+                                               reg = <1>;
+                                               iommus = <&apps_smmu 0x1401 0x2040>,
+                                                        <&apps_smmu 0x1421 0x0>,
+                                                        <&apps_smmu 0x2001 0x420>,
+                                                        <&apps_smmu 0x2041 0x0>;
+                                       };
+
+                                       compute-cb@2 {
+                                               compatible = "qcom,fastrpc-compute-cb";
+                                               reg = <2>;
+                                               iommus = <&apps_smmu 0x2 0x3440>,
+                                                        <&apps_smmu 0x22 0x3400>;
+                                       };
+
+                                       compute-cb@3 {
+                                               compatible = "qcom,fastrpc-compute-cb";
+                                               reg = <3>;
+                                               iommus = <&apps_smmu 0x3 0x3440>,
+                                                        <&apps_smmu 0x1423 0x0>,
+                                                        <&apps_smmu 0x2023 0x0>;
+                                       };
+
+                                       compute-cb@4 {
+                                               compatible = "qcom,fastrpc-compute-cb";
+                                               reg = <4>;
+                                               iommus = <&apps_smmu 0x4 0x3440>,
+                                                        <&apps_smmu 0x24 0x3400>;
+                                       };
+
+                                       compute-cb@5 {
+                                               compatible = "qcom,fastrpc-compute-cb";
+                                               reg = <5>;
+                                               iommus = <&apps_smmu 0x5 0x3440>,
+                                                        <&apps_smmu 0x25 0x3400>;
+                                       };
+
+                                       compute-cb@6 {
+                                               compatible = "qcom,fastrpc-compute-cb";
+                                               reg = <6>;
+                                               iommus = <&apps_smmu 0x6 0x3460>;
+                                       };
+
+                                       compute-cb@7 {
+                                               compatible = "qcom,fastrpc-compute-cb";
+                                               reg = <7>;
+                                               iommus = <&apps_smmu 0x7 0x3460>;
+                                       };
+
+                                       compute-cb@8 {
+                                               compatible = "qcom,fastrpc-compute-cb";
+                                               reg = <8>;
+                                               iommus = <&apps_smmu 0x8 0x3460>;
+                                       };
+
+                                       /* note: secure cb9 in downstream */
+                               };
                        };
                };
 
                        compatible = "qcom,sm8150-qmp-usb3-phy";
                        reg = <0 0x088e9000 0 0x18c>,
                              <0 0x088e8000 0 0x10>;
-                       reg-names = "reg-base", "dp_com";
                        status = "disabled";
                        #address-cells = <2>;
                        #size-cells = <2>;
                                 <&gcc GCC_USB3_PHY_PRIM_BCR>;
                        reset-names = "phy", "common";
 
-                       usb_1_ssphy: lanes@88e9200 {
+                       usb_1_ssphy: phy@88e9200 {
                                reg = <0 0x088e9200 0 0x200>,
                                      <0 0x088e9400 0 0x200>,
                                      <0 0x088e9c00 0 0x218>,
                                 <&gcc GCC_USB3_PHY_SEC_BCR>;
                        reset-names = "phy", "common";
 
-                       usb_2_ssphy: lane@88eb200 {
+                       usb_2_ssphy: phy@88eb200 {
                                reg = <0 0x088eb200 0 0x200>,
                                      <0 0x088eb400 0 0x200>,
                                      <0 0x088eb800 0 0x800>,
 
                aoss_qmp: power-controller@c300000 {
                        compatible = "qcom,sm8150-aoss-qmp";
-                       reg = <0x0 0x0c300000 0x0 0x100000>;
+                       reg = <0x0 0x0c300000 0x0 0x400>;
                        interrupts = <GIC_SPI 389 IRQ_TYPE_EDGE_RISING>;
                        mboxes = <&apss_shared 0>;
 
                        #clock-cells = <0>;
-                       #power-domain-cells = <1>;
+               };
+
+               sram@c3f0000 {
+                       compatible = "qcom,rpmh-stats";
+                       reg = <0 0x0c3f0000 0 0x400>;
                };
 
                tsens0: thermal-sensor@c263000 {
                        clocks = <&rpmhcc RPMH_CXO_CLK>;
                        clock-names = "xo";
 
-                       power-domains = <&aoss_qmp AOSS_QMP_LS_LPASS>,
-                                       <&rpmhpd 7>;
-                       power-domain-names = "load_state", "cx";
+                       power-domains = <&rpmhpd 7>;
 
                        memory-region = <&adsp_mem>;
 
+                       qcom,qmp = <&aoss_qmp>;
+
                        qcom,smem-states = <&adsp_smp2p_out 0>;
                        qcom,smem-state-names = "stop";
 
                                label = "lpass";
                                qcom,remote-pid = <2>;
                                mboxes = <&apss_shared 8>;
+
+                               fastrpc {
+                                       compatible = "qcom,fastrpc";
+                                       qcom,glink-channels = "fastrpcglink-apps-dsp";
+                                       label = "adsp";
+                                       #address-cells = <1>;
+                                       #size-cells = <0>;
+
+                                       compute-cb@3 {
+                                               compatible = "qcom,fastrpc-compute-cb";
+                                               reg = <3>;
+                                               iommus = <&apps_smmu 0x1b23 0x0>;
+                                       };
+
+                                       compute-cb@4 {
+                                               compatible = "qcom,fastrpc-compute-cb";
+                                               reg = <4>;
+                                               iommus = <&apps_smmu 0x1b24 0x0>;
+                                       };
+
+                                       compute-cb@5 {
+                                               compatible = "qcom,fastrpc-compute-cb";
+                                               reg = <5>;
+                                               iommus = <&apps_smmu 0x1b25 0x0>;
+                                       };
+                               };
                        };
                };
 
index 4774281..3b08247 100644 (file)
        status = "okay";
 
        vdda-phy-supply = <&vreg_l5a_0p88>;
-       vdda-max-microamp = <89900>;
        vdda-pll-supply = <&vreg_l9a_1p2>;
-       vdda-pll-max-microamp = <18800>;
 };
 
 &usb_1_hsphy {
index 062b944..5ffbcdd 100644 (file)
        status = "okay";
 
        vdda-phy-supply = <&vreg_l5a_0p875>;
-       vdda-max-microamp = <90200>;
        vdda-pll-supply = <&vreg_l9a_1p2>;
-       vdda-pll-max-microamp = <19000>;
 };
 
 &usb_1 {
index 79afeb0..356a816 100644 (file)
@@ -10,6 +10,7 @@
 / {
        model = "Sony Xperia 1 II";
        compatible = "sony,pdx203-generic", "qcom,sm8250";
+       chassis-type = "handset";
 };
 
 /delete-node/ &vreg_l7f_1p8;
index 16c96e8..5ecf7da 100644 (file)
@@ -10,6 +10,7 @@
 / {
        model = "Sony Xperia 5 II";
        compatible = "sony,pdx206-generic", "qcom,sm8250";
+       chassis-type = "handset";
 };
 
 &framebuffer {
index d12e4cb..6f6129b 100644 (file)
@@ -13,7 +13,6 @@
 #include <dt-bindings/interconnect/qcom,osm-l3.h>
 #include <dt-bindings/interconnect/qcom,sm8250.h>
 #include <dt-bindings/mailbox/qcom-ipcc.h>
-#include <dt-bindings/power/qcom-aoss-qmp.h>
 #include <dt-bindings/power/qcom-rpmpd.h>
 #include <dt-bindings/soc/qcom,apr.h>
 #include <dt-bindings/soc/qcom,rpmh-rsc.h>
                reg = <0x0 0x80000000 0x0 0x0>;
        };
 
-       mmcx_reg: mmcx-reg {
-               compatible = "regulator-fixed-domain";
-               power-domains = <&rpmhpd SM8250_MMCX>;
-               required-opps = <&rpmhpd_opp_low_svs>;
-               regulator-name = "MMCX";
-       };
-
        pmu {
                compatible = "arm,armv8-pmuv3";
                interrupts = <GIC_PPI 7 IRQ_TYPE_LEVEL_LOW>;
 
                        status = "disabled";
 
-                       pcie0_lane: lanes@1c06200 {
+                       pcie0_lane: phy@1c06200 {
                                reg = <0 0x1c06200 0 0x170>, /* tx */
                                      <0 0x1c06400 0 0x200>, /* rx */
                                      <0 0x1c06800 0 0x1f0>, /* pcs */
 
                        status = "disabled";
 
-                       pcie1_lane: lanes@1c0e200 {
+                       pcie1_lane: phy@1c0e200 {
                                reg = <0 0x1c0e200 0 0x170>, /* tx0 */
                                      <0 0x1c0e400 0 0x200>, /* rx0 */
                                      <0 0x1c0ea00 0 0x1f0>, /* pcs */
 
                        status = "disabled";
 
-                       pcie2_lane: lanes@1c16200 {
+                       pcie2_lane: phy@1c16200 {
                                reg = <0 0x1c16200 0 0x170>, /* tx0 */
                                      <0 0x1c16400 0 0x200>, /* rx0 */
                                      <0 0x1c16a00 0 0x1f0>, /* pcs */
                        reset-names = "ufsphy";
                        status = "disabled";
 
-                       ufs_mem_phy_lanes: lanes@1d87400 {
+                       ufs_mem_phy_lanes: phy@1d87400 {
                                reg = <0 0x01d87400 0 0x108>,
                                      <0 0x01d87600 0 0x1e0>,
                                      <0 0x01d87c00 0 0x1dc>,
                        clocks = <&rpmhcc RPMH_CXO_CLK>;
                        clock-names = "xo";
 
-                       power-domains = <&aoss_qmp AOSS_QMP_LS_SLPI>,
-                                       <&rpmhpd SM8250_LCX>,
+                       power-domains = <&rpmhpd SM8250_LCX>,
                                        <&rpmhpd SM8250_LMX>;
-                       power-domain-names = "load_state", "lcx", "lmx";
+                       power-domain-names = "lcx", "lmx";
 
                        memory-region = <&slpi_mem>;
 
+                       qcom,qmp = <&aoss_qmp>;
+
                        qcom,smem-states = <&smp2p_slpi_out 0>;
                        qcom,smem-state-names = "stop";
 
                        clocks = <&rpmhcc RPMH_CXO_CLK>;
                        clock-names = "xo";
 
-                       power-domains = <&aoss_qmp AOSS_QMP_LS_CDSP>,
-                                       <&rpmhpd SM8250_CX>;
-                       power-domain-names = "load_state", "cx";
+                       power-domains = <&rpmhpd SM8250_CX>;
 
                        memory-region = <&cdsp_mem>;
 
+                       qcom,qmp = <&aoss_qmp>;
+
                        qcom,smem-states = <&smp2p_cdsp_out 0>;
                        qcom,smem-state-names = "stop";
 
                                 <&gcc GCC_USB3_PHY_SEC_BCR>;
                        reset-names = "phy", "common";
 
-                       usb_2_ssphy: lanes@88eb200 {
+                       usb_2_ssphy: phy@88eb200 {
                                reg = <0 0x088eb200 0 0x200>,
                                      <0 0x088eb400 0 0x200>,
                                      <0 0x088eb800 0 0x800>;
                        clocks = <&gcc GCC_VIDEO_AHB_CLK>,
                                 <&rpmhcc RPMH_CXO_CLK>,
                                 <&rpmhcc RPMH_CXO_CLK_A>;
-                       mmcx-supply = <&mmcx_reg>;
+                       power-domains = <&rpmhpd SM8250_MMCX>;
+                       required-opps = <&rpmhpd_opp_low_svs>;
                        clock-names = "iface", "bi_tcxo", "bi_tcxo_ao";
                        #clock-cells = <1>;
                        #reset-cells = <1>;
                dispcc: clock-controller@af00000 {
                        compatible = "qcom,sm8250-dispcc";
                        reg = <0 0x0af00000 0 0x10000>;
-                       mmcx-supply = <&mmcx_reg>;
+                       power-domains = <&rpmhpd SM8250_MMCX>;
+                       required-opps = <&rpmhpd_opp_low_svs>;
                        clocks = <&rpmhcc RPMH_CXO_CLK>,
                                 <&dsi0_phy 0>,
                                 <&dsi0_phy 1>,
 
                aoss_qmp: power-controller@c300000 {
                        compatible = "qcom,sm8250-aoss-qmp";
-                       reg = <0 0x0c300000 0 0x100000>;
+                       reg = <0 0x0c300000 0 0x400>;
                        interrupts-extended = <&ipcc IPCC_CLIENT_AOP
                                                     IPCC_MPROC_SIGNAL_GLINK_QMP
                                                     IRQ_TYPE_EDGE_RISING>;
                                        IPCC_MPROC_SIGNAL_GLINK_QMP>;
 
                        #clock-cells = <0>;
-                       #power-domain-cells = <1>;
+               };
+
+               sram@c3f0000 {
+                       compatible = "qcom,rpmh-stats";
+                       reg = <0 0x0c3f0000 0 0x400>;
                };
 
                spmi_bus: spmi@c440000 {
                        clocks = <&rpmhcc RPMH_CXO_CLK>;
                        clock-names = "xo";
 
-                       power-domains = <&aoss_qmp AOSS_QMP_LS_LPASS>,
-                                       <&rpmhpd SM8250_LCX>,
+                       power-domains = <&rpmhpd SM8250_LCX>,
                                        <&rpmhpd SM8250_LMX>;
-                       power-domain-names = "load_state", "lcx", "lmx";
+                       power-domain-names = "lcx", "lmx";
 
                        memory-region = <&adsp_mem>;
 
+                       qcom,qmp = <&aoss_qmp>;
+
                        qcom,smem-states = <&smp2p_adsp_out 0>;
                        qcom,smem-state-names = "stop";
 
index 56093e2..be06237 100644 (file)
        status = "okay";
 
        vdda-phy-supply = <&vreg_l5b_0p88>;
-       vdda-max-microamp = <91600>;
        vdda-pll-supply = <&vreg_l6b_1p2>;
-       vdda-pll-max-microamp = <19000>;
 };
 
 &usb_1 {
index bd95009..06eedbe 100644 (file)
        firmware-name = "qcom/sm8350/modem.mbn";
 };
 
+&pmk8350_rtc {
+       status = "okay";
+};
+
 &qupv3_id_0 {
        status = "okay";
 };
        status = "okay";
 
        vdda-phy-supply = <&vreg_l5b_0p88>;
-       vdda-max-microamp = <91600>;
        vdda-pll-supply = <&vreg_l6b_1p2>;
-       vdda-pll-max-microamp = <19000>;
 };
 
 &usb_1 {
index e91cd8a..d134280 100644 (file)
@@ -8,7 +8,6 @@
 #include <dt-bindings/clock/qcom,rpmh.h>
 #include <dt-bindings/interconnect/qcom,sm8350.h>
 #include <dt-bindings/mailbox/qcom-ipcc.h>
-#include <dt-bindings/power/qcom-aoss-qmp.h>
 #include <dt-bindings/power/qcom-rpmpd.h>
 #include <dt-bindings/soc/qcom,rpmh-rsc.h>
 #include <dt-bindings/thermal/thermal.h>
@@ -48,6 +47,8 @@
                        enable-method = "psci";
                        next-level-cache = <&L2_0>;
                        qcom,freq-domain = <&cpufreq_hw 0>;
+                       power-domains = <&CPU_PD0>;
+                       power-domain-names = "psci";
                        #cooling-cells = <2>;
                        L2_0: l2-cache {
                              compatible = "cache";
@@ -65,6 +66,8 @@
                        enable-method = "psci";
                        next-level-cache = <&L2_100>;
                        qcom,freq-domain = <&cpufreq_hw 0>;
+                       power-domains = <&CPU_PD1>;
+                       power-domain-names = "psci";
                        #cooling-cells = <2>;
                        L2_100: l2-cache {
                              compatible = "cache";
@@ -79,6 +82,8 @@
                        enable-method = "psci";
                        next-level-cache = <&L2_200>;
                        qcom,freq-domain = <&cpufreq_hw 0>;
+                       power-domains = <&CPU_PD2>;
+                       power-domain-names = "psci";
                        #cooling-cells = <2>;
                        L2_200: l2-cache {
                              compatible = "cache";
@@ -93,6 +98,8 @@
                        enable-method = "psci";
                        next-level-cache = <&L2_300>;
                        qcom,freq-domain = <&cpufreq_hw 0>;
+                       power-domains = <&CPU_PD3>;
+                       power-domain-names = "psci";
                        #cooling-cells = <2>;
                        L2_300: l2-cache {
                              compatible = "cache";
                        enable-method = "psci";
                        next-level-cache = <&L2_400>;
                        qcom,freq-domain = <&cpufreq_hw 1>;
+                       power-domains = <&CPU_PD4>;
+                       power-domain-names = "psci";
                        #cooling-cells = <2>;
                        L2_400: l2-cache {
                              compatible = "cache";
                        enable-method = "psci";
                        next-level-cache = <&L2_500>;
                        qcom,freq-domain = <&cpufreq_hw 1>;
+                       power-domains = <&CPU_PD5>;
+                       power-domain-names = "psci";
                        #cooling-cells = <2>;
                        L2_500: l2-cache {
                              compatible = "cache";
                        enable-method = "psci";
                        next-level-cache = <&L2_600>;
                        qcom,freq-domain = <&cpufreq_hw 1>;
+                       power-domains = <&CPU_PD6>;
+                       power-domain-names = "psci";
                        #cooling-cells = <2>;
                        L2_600: l2-cache {
                              compatible = "cache";
                        enable-method = "psci";
                        next-level-cache = <&L2_700>;
                        qcom,freq-domain = <&cpufreq_hw 2>;
+                       power-domains = <&CPU_PD7>;
+                       power-domain-names = "psci";
                        #cooling-cells = <2>;
                        L2_700: l2-cache {
                              compatible = "cache";
                              next-level-cache = <&L3_0>;
                        };
                };
+
+               cpu-map {
+                       cluster0 {
+                               core0 {
+                                       cpu = <&CPU0>;
+                               };
+
+                               core1 {
+                                       cpu = <&CPU1>;
+                               };
+
+                               core2 {
+                                       cpu = <&CPU2>;
+                               };
+
+                               core3 {
+                                       cpu = <&CPU3>;
+                               };
+
+                               core4 {
+                                       cpu = <&CPU4>;
+                               };
+
+                               core5 {
+                                       cpu = <&CPU5>;
+                               };
+
+                               core6 {
+                                       cpu = <&CPU6>;
+                               };
+
+                               core7 {
+                                       cpu = <&CPU7>;
+                               };
+                       };
+               };
+
+               idle-states {
+                       entry-method = "psci";
+
+                       LITTLE_CPU_SLEEP_0: cpu-sleep-0-0 {
+                               compatible = "arm,idle-state";
+                               idle-state-name = "silver-rail-power-collapse";
+                               arm,psci-suspend-param = <0x40000004>;
+                               entry-latency-us = <355>;
+                               exit-latency-us = <909>;
+                               min-residency-us = <3934>;
+                               local-timer-stop;
+                       };
+
+                       BIG_CPU_SLEEP_0: cpu-sleep-1-0 {
+                               compatible = "arm,idle-state";
+                               idle-state-name = "gold-rail-power-collapse";
+                               arm,psci-suspend-param = <0x40000004>;
+                               entry-latency-us = <241>;
+                               exit-latency-us = <1461>;
+                               min-residency-us = <4488>;
+                               local-timer-stop;
+                       };
+               };
+
+               domain-idle-states {
+                       CLUSTER_SLEEP_0: cluster-sleep-0 {
+                               compatible = "domain-idle-state";
+                               idle-state-name = "cluster-power-collapse";
+                               arm,psci-suspend-param = <0x4100c344>;
+                               entry-latency-us = <3263>;
+                               exit-latency-us = <6562>;
+                               min-residency-us = <9987>;
+                               local-timer-stop;
+                       };
+               };
        };
 
        firmware {
        psci {
                compatible = "arm,psci-1.0";
                method = "smc";
+
+               CPU_PD0: cpu0 {
+                       #power-domain-cells = <0>;
+                       power-domains = <&CLUSTER_PD>;
+                       domain-idle-states = <&LITTLE_CPU_SLEEP_0>;
+               };
+
+               CPU_PD1: cpu1 {
+                       #power-domain-cells = <0>;
+                       power-domains = <&CLUSTER_PD>;
+                       domain-idle-states = <&LITTLE_CPU_SLEEP_0>;
+               };
+
+               CPU_PD2: cpu2 {
+                       #power-domain-cells = <0>;
+                       power-domains = <&CLUSTER_PD>;
+                       domain-idle-states = <&LITTLE_CPU_SLEEP_0>;
+               };
+
+               CPU_PD3: cpu3 {
+                       #power-domain-cells = <0>;
+                       power-domains = <&CLUSTER_PD>;
+                       domain-idle-states = <&LITTLE_CPU_SLEEP_0>;
+               };
+
+               CPU_PD4: cpu4 {
+                       #power-domain-cells = <0>;
+                       power-domains = <&CLUSTER_PD>;
+                       domain-idle-states = <&BIG_CPU_SLEEP_0>;
+               };
+
+               CPU_PD5: cpu5 {
+                       #power-domain-cells = <0>;
+                       power-domains = <&CLUSTER_PD>;
+                       domain-idle-states = <&BIG_CPU_SLEEP_0>;
+               };
+
+               CPU_PD6: cpu6 {
+                       #power-domain-cells = <0>;
+                       power-domains = <&CLUSTER_PD>;
+                       domain-idle-states = <&BIG_CPU_SLEEP_0>;
+               };
+
+               CPU_PD7: cpu7 {
+                       #power-domain-cells = <0>;
+                       power-domains = <&CLUSTER_PD>;
+                       domain-idle-states = <&BIG_CPU_SLEEP_0>;
+               };
+
+               CLUSTER_PD: cpu-cluster0 {
+                       #power-domain-cells = <0>;
+                       domain-idle-states = <&CLUSTER_SLEEP_0>;
+               };
        };
 
        reserved_memory: reserved-memory {
                        clocks = <&rpmhcc RPMH_CXO_CLK>;
                        clock-names = "xo";
 
-                       power-domains = <&aoss_qmp AOSS_QMP_LS_MODEM>,
-                                       <&rpmhpd 0>,
+                       power-domains = <&rpmhpd 0>,
                                        <&rpmhpd 12>;
-                       power-domain-names = "load_state", "cx", "mss";
+                       power-domain-names = "cx", "mss";
 
                        interconnects = <&mc_virt MASTER_LLCC &mc_virt SLAVE_EBI1>;
 
                        memory-region = <&pil_modem_mem>;
 
+                       qcom,qmp = <&aoss_qmp>;
+
                        qcom,smem-states = <&smp2p_modem_out 0>;
                        qcom,smem-state-names = "stop";
 
 
                aoss_qmp: power-controller@c300000 {
                        compatible = "qcom,sm8350-aoss-qmp";
-                       reg = <0 0x0c300000 0 0x100000>;
+                       reg = <0 0x0c300000 0 0x400>;
                        interrupts-extended = <&ipcc IPCC_CLIENT_AOP IPCC_MPROC_SIGNAL_GLINK_QMP
                                                     IRQ_TYPE_EDGE_RISING>;
                        mboxes = <&ipcc IPCC_CLIENT_AOP IPCC_MPROC_SIGNAL_GLINK_QMP>;
 
                        #clock-cells = <0>;
-                       #power-domain-cells = <1>;
+               };
+
+               sram@c3f0000 {
+                       compatible = "qcom,rpmh-stats";
+                       reg = <0 0x0c3f0000 0 0x400>;
                };
 
                spmi_bus: spmi@c440000 {
                        reg = <0 0x01d87000 0 0xe10>;
                        #address-cells = <2>;
                        #size-cells = <2>;
-                       #clock-cells = <1>;
                        ranges;
                        clock-names = "ref",
                                      "ref_aux";
                        reset-names = "ufsphy";
                        status = "disabled";
 
-                       ufs_mem_phy_lanes: lanes@1d87400 {
+                       ufs_mem_phy_lanes: phy@1d87400 {
                                reg = <0 0x01d87400 0 0x108>,
                                      <0 0x01d87600 0 0x1e0>,
                                      <0 0x01d87c00 0 0x1dc>,
                        clocks = <&rpmhcc RPMH_CXO_CLK>;
                        clock-names = "xo";
 
-                       power-domains = <&aoss_qmp AOSS_QMP_LS_SLPI>,
-                                       <&rpmhpd 4>,
+                       power-domains = <&rpmhpd 4>,
                                        <&rpmhpd 5>;
-                       power-domain-names = "load_state", "lcx", "lmx";
+                       power-domain-names = "lcx", "lmx";
 
                        memory-region = <&pil_slpi_mem>;
 
+                       qcom,qmp = <&aoss_qmp>;
+
                        qcom,smem-states = <&smp2p_slpi_out 0>;
                        qcom,smem-state-names = "stop";
 
                                label = "slpi";
                                qcom,remote-pid = <3>;
 
+                               fastrpc {
+                                       compatible = "qcom,fastrpc";
+                                       qcom,glink-channels = "fastrpcglink-apps-dsp";
+                                       label = "sdsp";
+                                       #address-cells = <1>;
+                                       #size-cells = <0>;
+
+                                       compute-cb@1 {
+                                               compatible = "qcom,fastrpc-compute-cb";
+                                               reg = <1>;
+                                               iommus = <&apps_smmu 0x0541 0x0>;
+                                       };
+
+                                       compute-cb@2 {
+                                               compatible = "qcom,fastrpc-compute-cb";
+                                               reg = <2>;
+                                               iommus = <&apps_smmu 0x0542 0x0>;
+                                       };
+
+                                       compute-cb@3 {
+                                               compatible = "qcom,fastrpc-compute-cb";
+                                               reg = <3>;
+                                               iommus = <&apps_smmu 0x0543 0x0>;
+                                               /* note: shared-cb = <4> in downstream */
+                                       };
+                               };
                        };
                };
 
                        clocks = <&rpmhcc RPMH_CXO_CLK>;
                        clock-names = "xo";
 
-                       power-domains = <&aoss_qmp AOSS_QMP_LS_CDSP>,
-                                       <&rpmhpd 0>,
+                       power-domains = <&rpmhpd 0>,
                                        <&rpmhpd 10>;
-                       power-domain-names = "load_state", "cx", "mxc";
+                       power-domain-names = "cx", "mxc";
 
                        interconnects = <&compute_noc MASTER_CDSP_PROC &mc_virt SLAVE_EBI1>;
 
                        memory-region = <&pil_cdsp_mem>;
 
+                       qcom,qmp = <&aoss_qmp>;
+
                        qcom,smem-states = <&smp2p_cdsp_out 0>;
                        qcom,smem-state-names = "stop";
 
 
                                label = "cdsp";
                                qcom,remote-pid = <5>;
+
+                               fastrpc {
+                                       compatible = "qcom,fastrpc";
+                                       qcom,glink-channels = "fastrpcglink-apps-dsp";
+                                       label = "cdsp";
+                                       #address-cells = <1>;
+                                       #size-cells = <0>;
+
+                                       compute-cb@1 {
+                                               compatible = "qcom,fastrpc-compute-cb";
+                                               reg = <1>;
+                                               iommus = <&apps_smmu 0x2161 0x0400>,
+                                                        <&apps_smmu 0x1181 0x0420>;
+                                       };
+
+                                       compute-cb@2 {
+                                               compatible = "qcom,fastrpc-compute-cb";
+                                               reg = <2>;
+                                               iommus = <&apps_smmu 0x2162 0x0400>,
+                                                        <&apps_smmu 0x1182 0x0420>;
+                                       };
+
+                                       compute-cb@3 {
+                                               compatible = "qcom,fastrpc-compute-cb";
+                                               reg = <3>;
+                                               iommus = <&apps_smmu 0x2163 0x0400>,
+                                                        <&apps_smmu 0x1183 0x0420>;
+                                       };
+
+                                       compute-cb@4 {
+                                               compatible = "qcom,fastrpc-compute-cb";
+                                               reg = <4>;
+                                               iommus = <&apps_smmu 0x2164 0x0400>,
+                                                        <&apps_smmu 0x1184 0x0420>;
+                                       };
+
+                                       compute-cb@5 {
+                                               compatible = "qcom,fastrpc-compute-cb";
+                                               reg = <5>;
+                                               iommus = <&apps_smmu 0x2165 0x0400>,
+                                                        <&apps_smmu 0x1185 0x0420>;
+                                       };
+
+                                       compute-cb@6 {
+                                               compatible = "qcom,fastrpc-compute-cb";
+                                               reg = <6>;
+                                               iommus = <&apps_smmu 0x2166 0x0400>,
+                                                        <&apps_smmu 0x1186 0x0420>;
+                                       };
+
+                                       compute-cb@7 {
+                                               compatible = "qcom,fastrpc-compute-cb";
+                                               reg = <7>;
+                                               iommus = <&apps_smmu 0x2167 0x0400>,
+                                                        <&apps_smmu 0x1187 0x0420>;
+                                       };
+
+                                       compute-cb@8 {
+                                               compatible = "qcom,fastrpc-compute-cb";
+                                               reg = <8>;
+                                               iommus = <&apps_smmu 0x2168 0x0400>,
+                                                        <&apps_smmu 0x1188 0x0420>;
+                                       };
+
+                                       /* note: secure cb9 in downstream */
+                               };
                        };
                };
 
                        compatible = "qcom,sm8350-qmp-usb3-phy";
                        reg = <0 0x088e9000 0 0x200>,
                              <0 0x088e8000 0 0x20>;
-                       reg-names = "reg-base", "dp_com";
                        status = "disabled";
-                       #clock-cells = <1>;
                        #address-cells = <2>;
                        #size-cells = <2>;
                        ranges;
                        compatible = "qcom,sm8350-qmp-usb3-uni-phy";
                        reg = <0 0x088eb000 0 0x200>;
                        status = "disabled";
-                       #clock-cells = <1>;
                        #address-cells = <2>;
                        #size-cells = <2>;
                        ranges;
                        clocks = <&rpmhcc RPMH_CXO_CLK>;
                        clock-names = "xo";
 
-                       power-domains = <&aoss_qmp AOSS_QMP_LS_LPASS>,
-                                       <&rpmhpd 4>,
+                       power-domains = <&rpmhpd 4>,
                                        <&rpmhpd 5>;
-                       power-domain-names = "load_state", "lcx", "lmx";
+                       power-domain-names = "lcx", "lmx";
 
                        memory-region = <&pil_adsp_mem>;
 
+                       qcom,qmp = <&aoss_qmp>;
+
                        qcom,smem-states = <&smp2p_adsp_out 0>;
                        qcom,smem-state-names = "stop";
 
 
                                label = "lpass";
                                qcom,remote-pid = <2>;
+
+                               fastrpc {
+                                       compatible = "qcom,fastrpc";
+                                       qcom,glink-channels = "fastrpcglink-apps-dsp";
+                                       label = "adsp";
+                                       #address-cells = <1>;
+                                       #size-cells = <0>;
+
+                                       compute-cb@3 {
+                                               compatible = "qcom,fastrpc-compute-cb";
+                                               reg = <3>;
+                                               iommus = <&apps_smmu 0x1803 0x0>;
+                                       };
+
+                                       compute-cb@4 {
+                                               compatible = "qcom,fastrpc-compute-cb";
+                                               reg = <4>;
+                                               iommus = <&apps_smmu 0x1804 0x0>;
+                                       };
+
+                                       compute-cb@5 {
+                                               compatible = "qcom,fastrpc-compute-cb";
+                                               reg = <5>;
+                                               iommus = <&apps_smmu 0x1805 0x0>;
+                                       };
+                               };
                        };
                };
        };
index 15a53b5..d1c5c21 100644 (file)
@@ -71,4 +71,6 @@ dtb-$(CONFIG_ARCH_R8A77961) += r8a779m3-salvator-xs.dtb
 dtb-$(CONFIG_ARCH_R8A77961) += r8a779m3-ulcb.dtb
 dtb-$(CONFIG_ARCH_R8A77961) += r8a779m3-ulcb-kf.dtb
 
+dtb-$(CONFIG_ARCH_R8A77965) += r8a779m5-salvator-xs.dtb
+
 dtb-$(CONFIG_ARCH_R9A07G044) += r9a07g044l2-smarc.dtb
index 090dc9c..0d13680 100644 (file)
@@ -50,6 +50,7 @@
 &avb {
        pinctrl-0 = <&avb_pins>;
        pinctrl-names = "default";
+       phy-mode = "rgmii-rxid";
        phy-handle = <&phy0>;
        rx-internal-delay-ps = <1800>;
        tx-internal-delay-ps = <2000>;
@@ -58,6 +59,8 @@
        status = "okay";
 
        phy0: ethernet-phy@0 {
+               compatible = "ethernet-phy-id004d.d074",
+                            "ethernet-phy-ieee802.3-c22";
                reg = <0>;
                interrupt-parent = <&gpio2>;
                interrupts = <11 IRQ_TYPE_LEVEL_LOW>;
index 801ea54..a69d24e 100644 (file)
@@ -21,6 +21,8 @@
        status = "okay";
 
        phy0: ethernet-phy@0 {
+               compatible = "ethernet-phy-id001c.c915",
+                            "ethernet-phy-ieee802.3-c22";
                reg = <0>;
                interrupt-parent = <&gpio2>;
                interrupts = <21 IRQ_TYPE_LEVEL_LOW>;
diff --git a/arch/arm64/boot/dts/renesas/draak.dtsi b/arch/arm64/boot/dts/renesas/draak.dtsi
new file mode 100644 (file)
index 0000000..eb0327c
--- /dev/null
@@ -0,0 +1,686 @@
+// SPDX-License-Identifier: GPL-2.0
+/*
+ * Device Tree Source for the Draak board
+ *
+ * Copyright (C) 2016-2018 Renesas Electronics Corp.
+ * Copyright (C) 2017 Glider bvba
+ */
+
+#include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/input/input.h>
+
+/ {
+       model = "Renesas Draak board";
+       compatible = "renesas,draak";
+
+       aliases {
+               serial0 = &scif2;
+               ethernet0 = &avb;
+       };
+
+       audio_clkout: audio-clkout {
+               /*
+                * This is same as <&rcar_sound 0>
+                * but needed to avoid cs2000/rcar_sound probe dead-lock
+                */
+               compatible = "fixed-clock";
+               #clock-cells = <0>;
+               clock-frequency = <12288000>;
+       };
+
+       backlight: backlight {
+               compatible = "pwm-backlight";
+               pwms = <&pwm1 0 50000>;
+
+               brightness-levels = <512 511 505 494 473 440 392 327 241 133 0>;
+               default-brightness-level = <10>;
+
+               power-supply = <&reg_12p0v>;
+               enable-gpios = <&gpio4 0 GPIO_ACTIVE_HIGH>;
+       };
+
+       chosen {
+               bootargs = "ignore_loglevel rw root=/dev/nfs ip=on";
+               stdout-path = "serial0:115200n8";
+       };
+
+       composite-in {
+               compatible = "composite-video-connector";
+
+               port {
+                       composite_con_in: endpoint {
+                               remote-endpoint = <&adv7180_in>;
+                       };
+               };
+       };
+
+       hdmi-in {
+               compatible = "hdmi-connector";
+               type = "a";
+
+               port {
+                       hdmi_con_in: endpoint {
+                               remote-endpoint = <&adv7612_in>;
+                       };
+               };
+       };
+
+       hdmi-out {
+               compatible = "hdmi-connector";
+               type = "a";
+
+               port {
+                       hdmi_con_out: endpoint {
+                               remote-endpoint = <&adv7511_out>;
+                       };
+               };
+       };
+
+       keys {
+               compatible = "gpio-keys";
+
+               pinctrl-0 = <&keys_pins>;
+               pinctrl-names = "default";
+
+               key-1 {
+                       gpios = <&gpio4 12 GPIO_ACTIVE_LOW>;
+                       linux,code = <KEY_1>;
+                       label = "SW56-1";
+                       wakeup-source;
+                       debounce-interval = <20>;
+               };
+               key-2 {
+                       gpios = <&gpio4 13 GPIO_ACTIVE_LOW>;
+                       linux,code = <KEY_2>;
+                       label = "SW56-2";
+                       wakeup-source;
+                       debounce-interval = <20>;
+               };
+               key-3 {
+                       gpios = <&gpio4 14 GPIO_ACTIVE_LOW>;
+                       linux,code = <KEY_3>;
+                       label = "SW56-3";
+                       wakeup-source;
+                       debounce-interval = <20>;
+               };
+               key-4 {
+                       gpios = <&gpio4 15 GPIO_ACTIVE_LOW>;
+                       linux,code = <KEY_4>;
+                       label = "SW56-4";
+                       wakeup-source;
+                       debounce-interval = <20>;
+               };
+       };
+
+       lvds-decoder {
+               compatible = "thine,thc63lvd1024";
+               vcc-supply = <&reg_3p3v>;
+
+               ports {
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+
+                       port@0 {
+                               reg = <0>;
+                               thc63lvd1024_in: endpoint {
+                                       remote-endpoint = <&lvds0_out>;
+                               };
+                       };
+
+                       port@2 {
+                               reg = <2>;
+                               thc63lvd1024_out: endpoint {
+                                       remote-endpoint = <&adv7511_in>;
+                               };
+                       };
+               };
+       };
+
+       memory@48000000 {
+               device_type = "memory";
+               /* first 128MB is reserved for secure area. */
+               reg = <0x0 0x48000000 0x0 0x18000000>;
+       };
+
+       reg_1p8v: regulator-1p8v {
+               compatible = "regulator-fixed";
+               regulator-name = "fixed-1.8V";
+               regulator-min-microvolt = <1800000>;
+               regulator-max-microvolt = <1800000>;
+               regulator-boot-on;
+               regulator-always-on;
+       };
+
+       reg_3p3v: regulator-3p3v {
+               compatible = "regulator-fixed";
+               regulator-name = "fixed-3.3V";
+               regulator-min-microvolt = <3300000>;
+               regulator-max-microvolt = <3300000>;
+               regulator-boot-on;
+               regulator-always-on;
+       };
+
+       reg_12p0v: regulator-12p0v {
+               compatible = "regulator-fixed";
+               regulator-name = "D12.0V";
+               regulator-min-microvolt = <12000000>;
+               regulator-max-microvolt = <12000000>;
+               regulator-boot-on;
+               regulator-always-on;
+       };
+
+       sound_card: sound {
+               compatible = "audio-graph-card";
+
+               dais = <&rsnd_port0     /* ak4613 */
+                       /* HDMI is not yet supported */
+               >;
+       };
+
+       vga {
+               compatible = "vga-connector";
+
+               port {
+                       vga_in: endpoint {
+                               remote-endpoint = <&adv7123_out>;
+                       };
+               };
+       };
+
+       vga-encoder {
+               compatible = "adi,adv7123";
+
+               ports {
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+
+                       port@0 {
+                               reg = <0>;
+                               adv7123_in: endpoint {
+                                       remote-endpoint = <&du_out_rgb>;
+                               };
+                       };
+                       port@1 {
+                               reg = <1>;
+                               adv7123_out: endpoint {
+                                       remote-endpoint = <&vga_in>;
+                               };
+                       };
+               };
+       };
+
+       x12_clk: x12 {
+               compatible = "fixed-clock";
+               #clock-cells = <0>;
+               clock-frequency = <74250000>;
+       };
+
+       x19_clk: x19 {
+               compatible = "fixed-clock";
+               #clock-cells = <0>;
+               clock-frequency = <24576000>;
+       };
+};
+
+&audio_clk_b {
+       /*
+        * X11 is connected to VI4_FIELD/SCIF_CLK/AUDIO_CLKB,
+        * and R-Car Sound uses AUDIO_CLKB.
+        * Note is that schematic indicates VI4_FIELD conection only
+        * not AUDIO_CLKB at SoC page.
+        * And this VI4_FIELD/SCIF_CLK/AUDIO_CLKB is connected to SW60.
+        * SW60 should be 1-2.
+        */
+
+       clock-frequency = <22579200>;
+};
+
+&avb {
+       pinctrl-0 = <&avb0_pins>;
+       pinctrl-names = "default";
+       renesas,no-ether-link;
+       phy-handle = <&phy0>;
+       status = "okay";
+
+       phy0: ethernet-phy@0 {
+               compatible = "ethernet-phy-id0022.1622",
+                            "ethernet-phy-ieee802.3-c22";
+               rxc-skew-ps = <1500>;
+               reg = <0>;
+               interrupt-parent = <&gpio5>;
+               interrupts = <19 IRQ_TYPE_LEVEL_LOW>;
+               reset-gpios = <&gpio5 18 GPIO_ACTIVE_LOW>;
+               /*
+                * TX clock internal delay mode is required for reliable
+                * 1Gbps communication using the KSZ9031RNX phy present on
+                * the Draak board, however, TX clock internal delay mode
+                * isn't supported on R-Car D3(e).  Thus, limit speed to
+                * 100Mbps for reliable communication.
+                */
+               max-speed = <100>;
+       };
+};
+
+&can0 {
+       pinctrl-0 = <&can0_pins>;
+       pinctrl-names = "default";
+       status = "okay";
+};
+
+&can1 {
+       pinctrl-0 = <&can1_pins>;
+       pinctrl-names = "default";
+       status = "okay";
+};
+
+&du {
+       pinctrl-0 = <&du_pins>;
+       pinctrl-names = "default";
+       status = "okay";
+
+       clocks = <&cpg CPG_MOD 724>,
+                <&cpg CPG_MOD 723>,
+                <&x12_clk>;
+       clock-names = "du.0", "du.1", "dclkin.0";
+
+       ports {
+               port@0 {
+                       endpoint {
+                               remote-endpoint = <&adv7123_in>;
+                       };
+               };
+       };
+};
+
+&ehci0 {
+       dr_mode = "host";
+       status = "okay";
+};
+
+&extal_clk {
+       clock-frequency = <48000000>;
+};
+
+&hsusb {
+       dr_mode = "host";
+       status = "okay";
+};
+
+&i2c0 {
+       pinctrl-0 = <&i2c0_pins>;
+       pinctrl-names = "default";
+       status = "okay";
+
+       ak4613: codec@10 {
+               compatible = "asahi-kasei,ak4613";
+               #sound-dai-cells = <0>;
+               reg = <0x10>;
+               clocks = <&rcar_sound 0>; /* audio_clkout */
+
+               asahi-kasei,in1-single-end;
+               asahi-kasei,in2-single-end;
+               asahi-kasei,out1-single-end;
+               asahi-kasei,out2-single-end;
+               asahi-kasei,out3-single-end;
+               asahi-kasei,out4-single-end;
+               asahi-kasei,out5-single-end;
+               asahi-kasei,out6-single-end;
+
+               port {
+                       ak4613_endpoint: endpoint {
+                               remote-endpoint = <&rsnd_for_ak4613>;
+                       };
+               };
+       };
+
+       composite-in@20 {
+               compatible = "adi,adv7180cp";
+               reg = <0x20>;
+
+               ports {
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+
+                       port@0 {
+                               reg = <0>;
+                               adv7180_in: endpoint {
+                                       remote-endpoint = <&composite_con_in>;
+                               };
+                       };
+
+                       port@3 {
+                               reg = <3>;
+
+                               /*
+                                * The VIN4 video input path is shared between
+                                * CVBS and HDMI inputs through SW[49-53]
+                                * switches.
+                                *
+                                * CVBS is the default selection, link it to
+                                * VIN4 here.
+                                */
+                               adv7180_out: endpoint {
+                                       remote-endpoint = <&vin4_in>;
+                               };
+                       };
+               };
+
+       };
+
+       hdmi-encoder@39 {
+               compatible = "adi,adv7511w";
+               reg = <0x39>, <0x3f>, <0x3c>, <0x38>;
+               reg-names = "main", "edid", "cec", "packet";
+               interrupt-parent = <&gpio1>;
+               interrupts = <28 IRQ_TYPE_LEVEL_LOW>;
+
+               adi,input-depth = <8>;
+               adi,input-colorspace = "rgb";
+               adi,input-clock = "1x";
+
+               ports {
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+
+                       port@0 {
+                               reg = <0>;
+                               adv7511_in: endpoint {
+                                       remote-endpoint = <&thc63lvd1024_out>;
+                               };
+                       };
+
+                       port@1 {
+                               reg = <1>;
+                               adv7511_out: endpoint {
+                                       remote-endpoint = <&hdmi_con_out>;
+                               };
+                       };
+               };
+       };
+
+       hdmi-decoder@4c {
+               compatible = "adi,adv7612";
+               reg = <0x4c>;
+               default-input = <0>;
+
+               ports {
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+
+                       port@0 {
+                               reg = <0>;
+
+                               adv7612_in: endpoint {
+                                       remote-endpoint = <&hdmi_con_in>;
+                               };
+                       };
+
+                       port@2 {
+                               reg = <2>;
+
+                               /*
+                                * The VIN4 video input path is shared between
+                                * CVBS and HDMI inputs through SW[49-53]
+                                * switches.
+                                *
+                                * CVBS is the default selection, leave HDMI
+                                * not connected here.
+                                */
+                               adv7612_out: endpoint {
+                                       pclk-sample = <0>;
+                                       hsync-active = <0>;
+                                       vsync-active = <0>;
+                               };
+                       };
+               };
+       };
+
+       cs2000: clk-multiplier@4f {
+               #clock-cells = <0>;
+               compatible = "cirrus,cs2000-cp";
+               reg = <0x4f>;
+               clocks = <&audio_clkout>, <&x19_clk>; /* audio_clkout_1, x19 */
+               clock-names = "clk_in", "ref_clk";
+
+               assigned-clocks = <&cs2000>;
+               assigned-clock-rates = <24576000>; /* 1/1 divide */
+       };
+
+       eeprom@50 {
+               compatible = "rohm,br24t01", "atmel,24c01";
+               reg = <0x50>;
+               pagesize = <8>;
+       };
+};
+
+&i2c1 {
+       pinctrl-0 = <&i2c1_pins>;
+       pinctrl-names = "default";
+       status = "okay";
+};
+
+&lvds0 {
+       status = "okay";
+
+       clocks = <&cpg CPG_MOD 727>,
+                <&x12_clk>,
+                <&extal_clk>;
+       clock-names = "fck", "dclkin.0", "extal";
+
+       ports {
+               port@1 {
+                       lvds0_out: endpoint {
+                               remote-endpoint = <&thc63lvd1024_in>;
+                       };
+               };
+       };
+};
+
+&lvds1 {
+       /*
+        * Even though the LVDS1 output is not connected, the encoder must be
+        * enabled to supply a pixel clock to the DU for the DPAD output when
+        * LVDS0 is in use.
+        */
+       status = "okay";
+
+       clocks = <&cpg CPG_MOD 727>,
+                <&x12_clk>,
+                <&extal_clk>;
+       clock-names = "fck", "dclkin.0", "extal";
+};
+
+&ohci0 {
+       dr_mode = "host";
+       status = "okay";
+};
+
+&pfc {
+       avb0_pins: avb {
+               groups = "avb0_link", "avb0_mdio", "avb0_mii";
+               function = "avb0";
+       };
+
+       can0_pins: can0 {
+               groups = "can0_data_a";
+               function = "can0";
+       };
+
+       can1_pins: can1 {
+               groups = "can1_data_a";
+               function = "can1";
+       };
+
+       du_pins: du {
+               groups = "du_rgb888", "du_sync", "du_disp", "du_clk_out_0";
+               function = "du";
+       };
+
+       i2c0_pins: i2c0 {
+               groups = "i2c0";
+               function = "i2c0";
+       };
+
+       i2c1_pins: i2c1 {
+               groups = "i2c1";
+               function = "i2c1";
+       };
+
+       keys_pins: keys {
+               pins = "GP_4_12", "GP_4_13", "GP_4_14", "GP_4_15";
+               bias-pull-up;
+       };
+
+       pwm0_pins: pwm0 {
+               groups = "pwm0_c";
+               function = "pwm0";
+       };
+
+       pwm1_pins: pwm1 {
+               groups = "pwm1_c";
+               function = "pwm1";
+       };
+
+       scif2_pins: scif2 {
+               groups = "scif2_data";
+               function = "scif2";
+       };
+
+       sdhi2_pins: sd2 {
+               groups = "mmc_data8", "mmc_ctrl";
+               function = "mmc";
+               power-source = <1800>;
+       };
+
+       sdhi2_pins_uhs: sd2_uhs {
+               groups = "mmc_data8", "mmc_ctrl";
+               function = "mmc";
+               power-source = <1800>;
+       };
+
+       sound_pins: sound {
+               groups = "ssi34_ctrl", "ssi3_data", "ssi4_data_a";
+               function = "ssi";
+       };
+
+       sound_clk_pins: sound-clk {
+               groups = "audio_clk_a", "audio_clk_b",
+                        "audio_clkout", "audio_clkout1";
+               function = "audio_clk";
+       };
+
+       usb0_pins: usb0 {
+               groups = "usb0";
+               function = "usb0";
+       };
+
+       vin4_pins_cvbs: vin4 {
+               groups = "vin4_data8", "vin4_sync", "vin4_clk";
+               function = "vin4";
+       };
+};
+
+&pwm0 {
+       pinctrl-0 = <&pwm0_pins>;
+       pinctrl-names = "default";
+
+       status = "okay";
+};
+
+&pwm1 {
+       pinctrl-0 = <&pwm1_pins>;
+       pinctrl-names = "default";
+
+       status = "okay";
+};
+
+&rcar_sound {
+       pinctrl-0 = <&sound_pins>, <&sound_clk_pins>;
+       pinctrl-names = "default";
+
+       /* Single DAI */
+       #sound-dai-cells = <0>;
+
+       /* audio_clkout0/1 */
+       #clock-cells = <1>;
+       clock-frequency = <12288000 11289600>;
+
+       status = "okay";
+
+       clocks = <&cpg CPG_MOD 1005>,
+                <&cpg CPG_MOD 1011>, <&cpg CPG_MOD 1012>,
+                <&cpg CPG_MOD 1025>, <&cpg CPG_MOD 1026>,
+                <&cpg CPG_MOD 1020>, <&cpg CPG_MOD 1021>,
+                <&cpg CPG_MOD 1020>, <&cpg CPG_MOD 1021>,
+                <&cpg CPG_MOD 1019>, <&cpg CPG_MOD 1018>,
+                <&cs2000>, <&audio_clk_b>,
+                <&cpg CPG_CORE R8A77995_CLK_ZA2>;
+
+       ports {
+               rsnd_port0: port {
+                       rsnd_for_ak4613: endpoint {
+                               remote-endpoint = <&ak4613_endpoint>;
+                               dai-format = "left_j";
+                               bitclock-master = <&rsnd_for_ak4613>;
+                               frame-master = <&rsnd_for_ak4613>;
+                               playback = <&ssi3>, <&src5>, <&dvc0>;
+                               capture  = <&ssi4>, <&src6>, <&dvc1>;
+                       };
+               };
+       };
+};
+
+&rwdt {
+       timeout-sec = <60>;
+       status = "okay";
+};
+
+&scif2 {
+       pinctrl-0 = <&scif2_pins>;
+       pinctrl-names = "default";
+
+       status = "okay";
+};
+
+&sdhi2 {
+       /* used for on-board eMMC */
+       pinctrl-0 = <&sdhi2_pins>;
+       pinctrl-1 = <&sdhi2_pins_uhs>;
+       pinctrl-names = "default", "state_uhs";
+
+       vmmc-supply = <&reg_3p3v>;
+       vqmmc-supply = <&reg_1p8v>;
+       bus-width = <8>;
+       mmc-hs200-1_8v;
+       no-sd;
+       no-sdio;
+       non-removable;
+       status = "okay";
+};
+
+&ssi4 {
+       shared-pin;
+};
+
+&usb2_phy0 {
+       pinctrl-0 = <&usb0_pins>;
+       pinctrl-names = "default";
+
+       renesas,no-otg-pins;
+       status = "okay";
+};
+
+&vin4 {
+       pinctrl-0 = <&vin4_pins_cvbs>;
+       pinctrl-names = "default";
+
+       status = "okay";
+
+       ports {
+               port {
+                       vin4_in: endpoint {
+                               remote-endpoint = <&adv7180_out>;
+                       };
+               };
+       };
+};
diff --git a/arch/arm64/boot/dts/renesas/ebisu.dtsi b/arch/arm64/boot/dts/renesas/ebisu.dtsi
new file mode 100644 (file)
index 0000000..67231c8
--- /dev/null
@@ -0,0 +1,803 @@
+// SPDX-License-Identifier: GPL-2.0
+/*
+ * Device Tree Source for the Ebisu board
+ *
+ * Copyright (C) 2018 Renesas Electronics Corp.
+ */
+
+#include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/input/input.h>
+
+/ {
+       model = "Renesas Ebisu board";
+       compatible = "renesas,ebisu";
+
+       aliases {
+               serial0 = &scif2;
+               ethernet0 = &avb;
+               mmc0 = &sdhi3;
+               mmc1 = &sdhi0;
+               mmc2 = &sdhi1;
+       };
+
+       chosen {
+               bootargs = "ignore_loglevel rw root=/dev/nfs ip=on";
+               stdout-path = "serial0:115200n8";
+       };
+
+       audio_clkout: audio-clkout {
+               /*
+                * This is same as <&rcar_sound 0>
+                * but needed to avoid cs2000/rcar_sound probe dead-lock
+                */
+               compatible = "fixed-clock";
+               #clock-cells = <0>;
+               clock-frequency = <11289600>;
+       };
+
+       backlight: backlight {
+               compatible = "pwm-backlight";
+               pwms = <&pwm3 0 50000>;
+
+               brightness-levels = <512 511 505 494 473 440 392 327 241 133 0>;
+               default-brightness-level = <10>;
+
+               power-supply = <&reg_12p0v>;
+       };
+
+       cvbs-in {
+               compatible = "composite-video-connector";
+               label = "CVBS IN";
+
+               port {
+                       cvbs_con: endpoint {
+                               remote-endpoint = <&adv7482_ain7>;
+                       };
+               };
+       };
+
+       hdmi-in {
+               compatible = "hdmi-connector";
+               label = "HDMI IN";
+               type = "a";
+
+               port {
+                       hdmi_in_con: endpoint {
+                               remote-endpoint = <&adv7482_hdmi>;
+                       };
+               };
+       };
+
+       hdmi-out {
+               compatible = "hdmi-connector";
+               type = "a";
+
+               port {
+                       hdmi_con_out: endpoint {
+                               remote-endpoint = <&adv7511_out>;
+                       };
+               };
+       };
+
+       keys {
+               compatible = "gpio-keys";
+
+               pinctrl-0 = <&keys_pins>;
+               pinctrl-names = "default";
+
+               key-1 {
+                       gpios = <&gpio5 10 GPIO_ACTIVE_LOW>;
+                       linux,code = <KEY_1>;
+                       label = "SW4-1";
+                       wakeup-source;
+                       debounce-interval = <20>;
+               };
+               key-2 {
+                       gpios = <&gpio5 11 GPIO_ACTIVE_LOW>;
+                       linux,code = <KEY_2>;
+                       label = "SW4-2";
+                       wakeup-source;
+                       debounce-interval = <20>;
+               };
+               key-3 {
+                       gpios = <&gpio5 12 GPIO_ACTIVE_LOW>;
+                       linux,code = <KEY_3>;
+                       label = "SW4-3";
+                       wakeup-source;
+                       debounce-interval = <20>;
+               };
+               key-4 {
+                       gpios = <&gpio5 13 GPIO_ACTIVE_LOW>;
+                       linux,code = <KEY_4>;
+                       label = "SW4-4";
+                       wakeup-source;
+                       debounce-interval = <20>;
+               };
+       };
+
+       lvds-decoder {
+               compatible = "thine,thc63lvd1024";
+               vcc-supply = <&reg_3p3v>;
+
+               ports {
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+
+                       port@0 {
+                               reg = <0>;
+                               thc63lvd1024_in: endpoint {
+                                       remote-endpoint = <&lvds0_out>;
+                               };
+                       };
+
+                       port@2 {
+                               reg = <2>;
+                               thc63lvd1024_out: endpoint {
+                                       remote-endpoint = <&adv7511_in>;
+                               };
+                       };
+               };
+       };
+
+       memory@48000000 {
+               device_type = "memory";
+               /* first 128MB is reserved for secure area. */
+               reg = <0x0 0x48000000 0x0 0x38000000>;
+       };
+
+       reg_1p8v: regulator0 {
+               compatible = "regulator-fixed";
+               regulator-name = "fixed-1.8V";
+               regulator-min-microvolt = <1800000>;
+               regulator-max-microvolt = <1800000>;
+               regulator-boot-on;
+               regulator-always-on;
+       };
+
+       reg_3p3v: regulator1 {
+               compatible = "regulator-fixed";
+               regulator-name = "fixed-3.3V";
+               regulator-min-microvolt = <3300000>;
+               regulator-max-microvolt = <3300000>;
+               regulator-boot-on;
+               regulator-always-on;
+       };
+
+       reg_12p0v: regulator2 {
+               compatible = "regulator-fixed";
+               regulator-name = "D12.0V";
+               regulator-min-microvolt = <12000000>;
+               regulator-max-microvolt = <12000000>;
+               regulator-boot-on;
+               regulator-always-on;
+       };
+
+       rsnd_ak4613: sound {
+               compatible = "simple-audio-card";
+
+               simple-audio-card,name = "rsnd-ak4613";
+               simple-audio-card,format = "left_j";
+               simple-audio-card,bitclock-master = <&sndcpu>;
+               simple-audio-card,frame-master = <&sndcpu>;
+
+               sndcodec: simple-audio-card,codec {
+                       sound-dai = <&ak4613>;
+               };
+
+               sndcpu: simple-audio-card,cpu {
+                       sound-dai = <&rcar_sound>;
+               };
+       };
+
+       vbus0_usb2: regulator-vbus0-usb2 {
+               compatible = "regulator-fixed";
+
+               regulator-name = "USB20_VBUS_CN";
+               regulator-min-microvolt = <5000000>;
+               regulator-max-microvolt = <5000000>;
+
+               gpio = <&gpio6 4 GPIO_ACTIVE_HIGH>;
+               enable-active-high;
+       };
+
+       vcc_sdhi0: regulator-vcc-sdhi0 {
+               compatible = "regulator-fixed";
+
+               regulator-name = "SDHI0 Vcc";
+               regulator-min-microvolt = <3300000>;
+               regulator-max-microvolt = <3300000>;
+
+               gpio = <&gpio5 17 GPIO_ACTIVE_HIGH>;
+               enable-active-high;
+       };
+
+       vccq_sdhi0: regulator-vccq-sdhi0 {
+               compatible = "regulator-gpio";
+
+               regulator-name = "SDHI0 VccQ";
+               regulator-min-microvolt = <1800000>;
+               regulator-max-microvolt = <3300000>;
+
+               gpios = <&gpio5 18 GPIO_ACTIVE_HIGH>;
+               gpios-states = <1>;
+               states = <3300000 1>, <1800000 0>;
+       };
+
+       vcc_sdhi1: regulator-vcc-sdhi1 {
+               compatible = "regulator-fixed";
+
+               regulator-name = "SDHI1 Vcc";
+               regulator-min-microvolt = <3300000>;
+               regulator-max-microvolt = <3300000>;
+
+               gpio = <&gpio0 4 GPIO_ACTIVE_HIGH>;
+               enable-active-high;
+       };
+
+       vccq_sdhi1: regulator-vccq-sdhi1 {
+               compatible = "regulator-gpio";
+
+               regulator-name = "SDHI1 VccQ";
+               regulator-min-microvolt = <1800000>;
+               regulator-max-microvolt = <3300000>;
+
+               gpios = <&gpio3 15 GPIO_ACTIVE_HIGH>;
+               gpios-states = <1>;
+               states = <3300000 1>, <1800000 0>;
+       };
+
+       vga {
+               compatible = "vga-connector";
+
+               port {
+                       vga_in: endpoint {
+                               remote-endpoint = <&adv7123_out>;
+                       };
+               };
+       };
+
+       vga-encoder {
+               compatible = "adi,adv7123";
+
+               ports {
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+
+                       port@0 {
+                               reg = <0>;
+                               adv7123_in: endpoint {
+                                       remote-endpoint = <&du_out_rgb>;
+                               };
+                       };
+                       port@1 {
+                               reg = <1>;
+                               adv7123_out: endpoint {
+                                       remote-endpoint = <&vga_in>;
+                               };
+                       };
+               };
+       };
+
+       x12_clk: x12 {
+               compatible = "fixed-clock";
+               #clock-cells = <0>;
+               clock-frequency = <24576000>;
+       };
+
+       x13_clk: x13 {
+               compatible = "fixed-clock";
+               #clock-cells = <0>;
+               clock-frequency = <74250000>;
+       };
+};
+
+&audio_clk_a {
+       clock-frequency = <22579200>;
+};
+
+&avb {
+       pinctrl-0 = <&avb_pins>;
+       pinctrl-names = "default";
+       phy-handle = <&phy0>;
+       status = "okay";
+
+       phy0: ethernet-phy@0 {
+               compatible = "ethernet-phy-id0022.1622",
+                            "ethernet-phy-ieee802.3-c22";
+               rxc-skew-ps = <1500>;
+               reg = <0>;
+               interrupt-parent = <&gpio2>;
+               interrupts = <21 IRQ_TYPE_LEVEL_LOW>;
+               reset-gpios = <&gpio1 20 GPIO_ACTIVE_LOW>;
+               /*
+                * TX clock internal delay mode is required for reliable
+                * 1Gbps communication using the KSZ9031RNX phy present on
+                * the Ebisu board, however, TX clock internal delay mode
+                * isn't supported on R-Car E3(e).  Thus, limit speed to
+                * 100Mbps for reliable communication.
+                */
+               max-speed = <100>;
+       };
+};
+
+&canfd {
+       pinctrl-0 = <&canfd0_pins>;
+       pinctrl-names = "default";
+       status = "okay";
+
+       channel0 {
+               status = "okay";
+       };
+};
+
+&csi40 {
+       status = "okay";
+
+       ports {
+               port@0 {
+                       csi40_in: endpoint {
+                               clock-lanes = <0>;
+                               data-lanes = <1 2>;
+                               remote-endpoint = <&adv7482_txa>;
+                       };
+               };
+       };
+};
+
+&du {
+       pinctrl-0 = <&du_pins>;
+       pinctrl-names = "default";
+       status = "okay";
+
+       clocks = <&cpg CPG_MOD 724>,
+                <&cpg CPG_MOD 723>,
+                <&x13_clk>;
+       clock-names = "du.0", "du.1", "dclkin.0";
+
+       ports {
+               port@0 {
+                       endpoint {
+                               remote-endpoint = <&adv7123_in>;
+                       };
+               };
+       };
+};
+
+&ehci0 {
+       dr_mode = "otg";
+       status = "okay";
+};
+
+&extal_clk {
+       clock-frequency = <48000000>;
+};
+
+&hsusb {
+       dr_mode = "otg";
+       status = "okay";
+};
+
+&i2c0 {
+       status = "okay";
+
+       io_expander: gpio@20 {
+               compatible = "onnn,pca9654";
+               reg = <0x20>;
+               gpio-controller;
+               #gpio-cells = <2>;
+               interrupt-parent = <&gpio2>;
+               interrupts = <22 IRQ_TYPE_LEVEL_LOW>;
+       };
+
+       hdmi-encoder@39 {
+               compatible = "adi,adv7511w";
+               reg = <0x39>;
+               interrupt-parent = <&gpio1>;
+               interrupts = <1 IRQ_TYPE_LEVEL_LOW>;
+
+               adi,input-depth = <8>;
+               adi,input-colorspace = "rgb";
+               adi,input-clock = "1x";
+
+               ports {
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+
+                       port@0 {
+                               reg = <0>;
+                               adv7511_in: endpoint {
+                                       remote-endpoint = <&thc63lvd1024_out>;
+                               };
+                       };
+
+                       port@1 {
+                               reg = <1>;
+                               adv7511_out: endpoint {
+                                       remote-endpoint = <&hdmi_con_out>;
+                               };
+                       };
+               };
+       };
+
+       video-receiver@70 {
+               compatible = "adi,adv7482";
+               reg = <0x70>;
+
+               interrupt-parent = <&gpio0>;
+               interrupt-names = "intrq1", "intrq2";
+               interrupts = <7 IRQ_TYPE_LEVEL_LOW>,
+                            <17 IRQ_TYPE_LEVEL_LOW>;
+
+               ports {
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+
+                       port@7 {
+                               reg = <7>;
+
+                               adv7482_ain7: endpoint {
+                                       remote-endpoint = <&cvbs_con>;
+                               };
+                       };
+
+                       port@8 {
+                               reg = <8>;
+
+                               adv7482_hdmi: endpoint {
+                                       remote-endpoint = <&hdmi_in_con>;
+                               };
+                       };
+
+                       port@a {
+                               reg = <10>;
+
+                               adv7482_txa: endpoint {
+                                       clock-lanes = <0>;
+                                       data-lanes = <1 2>;
+                                       remote-endpoint = <&csi40_in>;
+                               };
+                       };
+               };
+       };
+};
+
+&i2c3 {
+       status = "okay";
+
+       ak4613: codec@10 {
+               compatible = "asahi-kasei,ak4613";
+               #sound-dai-cells = <0>;
+               reg = <0x10>;
+               clocks = <&rcar_sound 3>;
+
+               asahi-kasei,in1-single-end;
+               asahi-kasei,in2-single-end;
+               asahi-kasei,out1-single-end;
+               asahi-kasei,out2-single-end;
+               asahi-kasei,out3-single-end;
+               asahi-kasei,out4-single-end;
+               asahi-kasei,out5-single-end;
+               asahi-kasei,out6-single-end;
+       };
+
+       cs2000: clk-multiplier@4f {
+               #clock-cells = <0>;
+               compatible = "cirrus,cs2000-cp";
+               reg = <0x4f>;
+               clocks = <&audio_clkout>, <&x12_clk>;
+               clock-names = "clk_in", "ref_clk";
+
+               assigned-clocks = <&cs2000>;
+               assigned-clock-rates = <24576000>; /* 1/1 divide */
+       };
+};
+
+&i2c_dvfs {
+       status = "okay";
+
+       clock-frequency = <400000>;
+
+       pmic: pmic@30 {
+               pinctrl-0 = <&irq0_pins>;
+               pinctrl-names = "default";
+
+               compatible = "rohm,bd9571mwv";
+               reg = <0x30>;
+               interrupt-parent = <&intc_ex>;
+               interrupts = <0 IRQ_TYPE_LEVEL_LOW>;
+               interrupt-controller;
+               #interrupt-cells = <2>;
+               gpio-controller;
+               #gpio-cells = <2>;
+               rohm,ddr-backup-power = <0x1>;
+               rohm,rstbmode-level;
+       };
+
+       eeprom@50 {
+               compatible = "rohm,br24t01", "atmel,24c01";
+               reg = <0x50>;
+               pagesize = <8>;
+       };
+};
+
+&lvds0 {
+       status = "okay";
+
+       clocks = <&cpg CPG_MOD 727>,
+                <&x13_clk>,
+                <&extal_clk>;
+       clock-names = "fck", "dclkin.0", "extal";
+
+       ports {
+               port@1 {
+                       lvds0_out: endpoint {
+                               remote-endpoint = <&thc63lvd1024_in>;
+                       };
+               };
+       };
+};
+
+&lvds1 {
+       /*
+        * Even though the LVDS1 output is not connected, the encoder must be
+        * enabled to supply a pixel clock to the DU for the DPAD output when
+        * LVDS0 is in use.
+        */
+       status = "okay";
+
+       clocks = <&cpg CPG_MOD 727>,
+                <&x13_clk>,
+                <&extal_clk>;
+       clock-names = "fck", "dclkin.0", "extal";
+};
+
+&ohci0 {
+       dr_mode = "otg";
+       status = "okay";
+};
+
+&pcie_bus_clk {
+       clock-frequency = <100000000>;
+};
+
+&pciec0 {
+       status = "okay";
+};
+
+&pfc {
+       avb_pins: avb {
+               groups = "avb_link", "avb_mii";
+               function = "avb";
+       };
+
+       canfd0_pins: canfd0 {
+               groups = "canfd0_data";
+               function = "canfd0";
+       };
+
+       du_pins: du {
+               groups = "du_rgb888", "du_sync", "du_disp", "du_clk_out_0";
+               function = "du";
+       };
+
+       irq0_pins: irq0 {
+               groups = "intc_ex_irq0";
+               function = "intc_ex";
+       };
+
+       keys_pins: keys {
+               pins = "GP_5_10", "GP_5_11", "GP_5_12", "GP_5_13";
+               bias-pull-up;
+       };
+
+       pwm3_pins: pwm3 {
+               groups = "pwm3_b";
+               function = "pwm3";
+       };
+
+       pwm5_pins: pwm5 {
+               groups = "pwm5_a";
+               function = "pwm5";
+       };
+
+       scif2_pins: scif2 {
+               groups = "scif2_data_a";
+               function = "scif2";
+       };
+
+       sdhi0_pins: sd0 {
+               groups = "sdhi0_data4", "sdhi0_ctrl";
+               function = "sdhi0";
+               power-source = <3300>;
+       };
+
+       sdhi0_pins_uhs: sd0_uhs {
+               groups = "sdhi0_data4", "sdhi0_ctrl";
+               function = "sdhi0";
+               power-source = <1800>;
+       };
+
+       sdhi1_pins: sd1 {
+               groups = "sdhi1_data4", "sdhi1_ctrl";
+               function = "sdhi1";
+               power-source = <3300>;
+       };
+
+       sdhi1_pins_uhs: sd1_uhs {
+               groups = "sdhi1_data4", "sdhi1_ctrl";
+               function = "sdhi1";
+               power-source = <1800>;
+       };
+
+       sdhi3_pins: sd3 {
+               groups = "sdhi3_data8", "sdhi3_ctrl", "sdhi3_ds";
+               function = "sdhi3";
+               power-source = <1800>;
+       };
+
+       sound_clk_pins: sound_clk {
+               groups = "audio_clk_a", "audio_clk_b_a", "audio_clk_c_a",
+                        "audio_clkout_a", "audio_clkout1_a";
+               function = "audio_clk";
+       };
+
+       sound_pins: sound {
+               groups = "ssi01239_ctrl", "ssi0_data", "ssi1_data";
+               function = "ssi";
+       };
+
+       usb0_pins: usb {
+               groups = "usb0_b", "usb0_id";
+               function = "usb0";
+       };
+
+       usb30_pins: usb30 {
+               groups = "usb30";
+               function = "usb30";
+       };
+};
+
+&pwm3 {
+       pinctrl-0 = <&pwm3_pins>;
+       pinctrl-names = "default";
+
+       status = "okay";
+};
+
+&pwm5 {
+       pinctrl-0 = <&pwm5_pins>;
+       pinctrl-names = "default";
+
+       status = "okay";
+};
+
+&rcar_sound {
+       pinctrl-0 = <&sound_pins>, <&sound_clk_pins>;
+       pinctrl-names = "default";
+
+       /* Single DAI */
+       #sound-dai-cells = <0>;
+
+       /* audio_clkout0/1/2/3 */
+       #clock-cells = <1>;
+       clock-frequency = <12288000 11289600>;
+
+       status = "okay";
+
+       /* update <audio_clk_b> to <cs2000> */
+       clocks = <&cpg CPG_MOD 1005>,
+                <&cpg CPG_MOD 1006>, <&cpg CPG_MOD 1007>,
+                <&cpg CPG_MOD 1008>, <&cpg CPG_MOD 1009>,
+                <&cpg CPG_MOD 1010>, <&cpg CPG_MOD 1011>,
+                <&cpg CPG_MOD 1012>, <&cpg CPG_MOD 1013>,
+                <&cpg CPG_MOD 1014>, <&cpg CPG_MOD 1015>,
+                <&cpg CPG_MOD 1022>, <&cpg CPG_MOD 1023>,
+                <&cpg CPG_MOD 1024>, <&cpg CPG_MOD 1025>,
+                <&cpg CPG_MOD 1026>, <&cpg CPG_MOD 1027>,
+                <&cpg CPG_MOD 1028>, <&cpg CPG_MOD 1029>,
+                <&cpg CPG_MOD 1030>, <&cpg CPG_MOD 1031>,
+                <&cpg CPG_MOD 1020>, <&cpg CPG_MOD 1021>,
+                <&cpg CPG_MOD 1020>, <&cpg CPG_MOD 1021>,
+                <&cpg CPG_MOD 1019>, <&cpg CPG_MOD 1018>,
+                <&audio_clk_a>, <&cs2000>, <&audio_clk_c>,
+                <&cpg CPG_CORE R8A77990_CLK_ZA2>;
+
+       rcar_sound,dai {
+               dai0 {
+                       playback = <&ssi0>, <&src0>, <&dvc0>;
+                       capture  = <&ssi1>, <&src1>, <&dvc1>;
+               };
+       };
+
+};
+
+&rwdt {
+       timeout-sec = <60>;
+       status = "okay";
+};
+
+&scif2 {
+       pinctrl-0 = <&scif2_pins>;
+       pinctrl-names = "default";
+
+       status = "okay";
+};
+
+&sdhi0 {
+       pinctrl-0 = <&sdhi0_pins>;
+       pinctrl-1 = <&sdhi0_pins_uhs>;
+       pinctrl-names = "default", "state_uhs";
+
+       vmmc-supply = <&vcc_sdhi0>;
+       vqmmc-supply = <&vccq_sdhi0>;
+       cd-gpios = <&gpio3 12 GPIO_ACTIVE_LOW>;
+       wp-gpios = <&gpio3 13 GPIO_ACTIVE_HIGH>;
+       bus-width = <4>;
+       sd-uhs-sdr50;
+       sd-uhs-sdr104;
+       status = "okay";
+};
+
+&sdhi1 {
+       pinctrl-0 = <&sdhi1_pins>;
+       pinctrl-1 = <&sdhi1_pins_uhs>;
+       pinctrl-names = "default", "state_uhs";
+
+       vmmc-supply = <&vcc_sdhi1>;
+       vqmmc-supply = <&vccq_sdhi1>;
+       cd-gpios = <&gpio3 14 GPIO_ACTIVE_LOW>;
+       bus-width = <4>;
+       sd-uhs-sdr50;
+       sd-uhs-sdr104;
+       status = "okay";
+};
+
+&sdhi3 {
+       /* used for on-board 8bit eMMC */
+       pinctrl-0 = <&sdhi3_pins>;
+       pinctrl-1 = <&sdhi3_pins>;
+       pinctrl-names = "default", "state_uhs";
+
+       vmmc-supply = <&reg_3p3v>;
+       vqmmc-supply = <&reg_1p8v>;
+       mmc-hs200-1_8v;
+       mmc-hs400-1_8v;
+       bus-width = <8>;
+       no-sd;
+       no-sdio;
+       non-removable;
+       full-pwr-cycle-in-suspend;
+       status = "okay";
+};
+
+&ssi1 {
+       shared-pin;
+};
+
+&usb2_phy0 {
+       pinctrl-0 = <&usb0_pins>;
+       pinctrl-names = "default";
+
+       vbus-supply = <&vbus0_usb2>;
+       status = "okay";
+};
+
+&usb3_peri0 {
+       companion = <&xhci0>;
+       status = "okay";
+};
+
+&vin4 {
+       status = "okay";
+};
+
+&vin5 {
+       status = "okay";
+};
+
+&xhci0 {
+       pinctrl-0 = <&usb30_pins>;
+       pinctrl-names = "default";
+
+       status = "okay";
+};
index dde3a07..ad898c6 100644 (file)
@@ -24,6 +24,8 @@
        status = "okay";
 
        phy0: ethernet-phy@0 {
+               compatible = "ethernet-phy-id001c.c915",
+                            "ethernet-phy-ieee802.3-c22";
                reg = <0>;
                interrupt-parent = <&gpio2>;
                interrupts = <11 IRQ_TYPE_LEVEL_LOW>;
index 041473a..86d59e7 100644 (file)
                        status = "disabled";
                };
 
+               tpu: pwm@e6e80000 {
+                       compatible = "renesas,tpu-r8a77961", "renesas,tpu";
+                       reg = <0 0xe6e80000 0 0x148>;
+                       interrupts = <GIC_SPI 135 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&cpg CPG_MOD 304>;
+                       power-domains = <&sysc R8A77961_PD_ALWAYS_ON>;
+                       resets = <&cpg 304>;
+                       #pwm-cells = <3>;
+                       status = "disabled";
+               };
+
                msiof0: spi@e6e90000 {
                        compatible = "renesas,msiof-r8a77961",
                                     "renesas,rcar-gen3-msiof";
index d24da54..b579d31 100644 (file)
@@ -8,6 +8,7 @@
 
 /dts-v1/;
 #include "r8a77970.dtsi"
+#include <dt-bindings/gpio/gpio.h>
 
 / {
        model = "Renesas Eagle board based on r8a77970";
        status = "okay";
 
        phy0: ethernet-phy@0 {
+               compatible = "ethernet-phy-id0022.1622",
+                            "ethernet-phy-ieee802.3-c22";
                rxc-skew-ps = <1500>;
                reg = <0>;
                interrupt-parent = <&gpio1>;
                interrupts = <17 IRQ_TYPE_LEVEL_LOW>;
+               reset-gpios = <&gpio1 16 GPIO_ACTIVE_LOW>;
        };
 };
 
index 2426e53..39f3e6c 100644 (file)
@@ -8,6 +8,7 @@
 
 /dts-v1/;
 #include "r8a77970.dtsi"
+#include <dt-bindings/gpio/gpio.h>
 
 / {
        model = "Renesas V3M Starter Kit board";
        status = "okay";
 
        phy0: ethernet-phy@0 {
+               compatible = "ethernet-phy-id0022.1622",
+                            "ethernet-phy-ieee802.3-c22";
                rxc-skew-ps = <1500>;
                reg = <0>;
                interrupt-parent = <&gpio1>;
                interrupts = <17 IRQ_TYPE_LEVEL_LOW>;
+               reset-gpios = <&gpio1 16 GPIO_ACTIVE_LOW>;
        };
 };
 
index edf7f2a..3d6d10c 100644 (file)
@@ -8,6 +8,7 @@
 
 /dts-v1/;
 #include "r8a77980.dtsi"
+#include <dt-bindings/gpio/gpio.h>
 
 / {
        model = "Renesas Condor board based on r8a77980";
        status = "okay";
 
        phy0: ethernet-phy@0 {
+               compatible = "ethernet-phy-id0022.1622",
+                            "ethernet-phy-ieee802.3-c22";
                rxc-skew-ps = <1500>;
                reg = <0>;
                interrupt-parent = <&gpio4>;
                interrupts = <23 IRQ_TYPE_LEVEL_LOW>;
+               reset-gpios = <&gpio4 22 GPIO_ACTIVE_LOW>;
        };
 };
 
index 7838dce..1d09d88 100644 (file)
@@ -8,6 +8,7 @@
 
 /dts-v1/;
 #include "r8a77980.dtsi"
+#include <dt-bindings/gpio/gpio.h>
 
 / {
        model = "Renesas V3H Starter Kit board";
        status = "okay";
 
        phy0: ethernet-phy@0 {
+               compatible = "ethernet-phy-id0022.1622",
+                            "ethernet-phy-ieee802.3-c22";
                reg = <0>;
                interrupt-parent = <&gpio4>;
                interrupts = <23 IRQ_TYPE_LEVEL_LOW>;
+               reset-gpios = <&gpio4 22 GPIO_ACTIVE_LOW>;
        };
 };
 
index 9c71460..9da0fd0 100644 (file)
@@ -7,795 +7,9 @@
 
 /dts-v1/;
 #include "r8a77990.dtsi"
-#include <dt-bindings/gpio/gpio.h>
-#include <dt-bindings/input/input.h>
+#include "ebisu.dtsi"
 
 / {
        model = "Renesas Ebisu board based on r8a77990";
        compatible = "renesas,ebisu", "renesas,r8a77990";
-
-       aliases {
-               serial0 = &scif2;
-               ethernet0 = &avb;
-               mmc0 = &sdhi3;
-               mmc1 = &sdhi0;
-               mmc2 = &sdhi1;
-       };
-
-       chosen {
-               bootargs = "ignore_loglevel rw root=/dev/nfs ip=on";
-               stdout-path = "serial0:115200n8";
-       };
-
-       audio_clkout: audio-clkout {
-               /*
-                * This is same as <&rcar_sound 0>
-                * but needed to avoid cs2000/rcar_sound probe dead-lock
-                */
-               compatible = "fixed-clock";
-               #clock-cells = <0>;
-               clock-frequency = <11289600>;
-       };
-
-       backlight: backlight {
-               compatible = "pwm-backlight";
-               pwms = <&pwm3 0 50000>;
-
-               brightness-levels = <512 511 505 494 473 440 392 327 241 133 0>;
-               default-brightness-level = <10>;
-
-               power-supply = <&reg_12p0v>;
-       };
-
-       cvbs-in {
-               compatible = "composite-video-connector";
-               label = "CVBS IN";
-
-               port {
-                       cvbs_con: endpoint {
-                               remote-endpoint = <&adv7482_ain7>;
-                       };
-               };
-       };
-
-       hdmi-in {
-               compatible = "hdmi-connector";
-               label = "HDMI IN";
-               type = "a";
-
-               port {
-                       hdmi_in_con: endpoint {
-                               remote-endpoint = <&adv7482_hdmi>;
-                       };
-               };
-       };
-
-       hdmi-out {
-               compatible = "hdmi-connector";
-               type = "a";
-
-               port {
-                       hdmi_con_out: endpoint {
-                               remote-endpoint = <&adv7511_out>;
-                       };
-               };
-       };
-
-       keys {
-               compatible = "gpio-keys";
-
-               pinctrl-0 = <&keys_pins>;
-               pinctrl-names = "default";
-
-               key-1 {
-                       gpios = <&gpio5 10 GPIO_ACTIVE_LOW>;
-                       linux,code = <KEY_1>;
-                       label = "SW4-1";
-                       wakeup-source;
-                       debounce-interval = <20>;
-               };
-               key-2 {
-                       gpios = <&gpio5 11 GPIO_ACTIVE_LOW>;
-                       linux,code = <KEY_2>;
-                       label = "SW4-2";
-                       wakeup-source;
-                       debounce-interval = <20>;
-               };
-               key-3 {
-                       gpios = <&gpio5 12 GPIO_ACTIVE_LOW>;
-                       linux,code = <KEY_3>;
-                       label = "SW4-3";
-                       wakeup-source;
-                       debounce-interval = <20>;
-               };
-               key-4 {
-                       gpios = <&gpio5 13 GPIO_ACTIVE_LOW>;
-                       linux,code = <KEY_4>;
-                       label = "SW4-4";
-                       wakeup-source;
-                       debounce-interval = <20>;
-               };
-       };
-
-       lvds-decoder {
-               compatible = "thine,thc63lvd1024";
-               vcc-supply = <&reg_3p3v>;
-
-               ports {
-                       #address-cells = <1>;
-                       #size-cells = <0>;
-
-                       port@0 {
-                               reg = <0>;
-                               thc63lvd1024_in: endpoint {
-                                       remote-endpoint = <&lvds0_out>;
-                               };
-                       };
-
-                       port@2 {
-                               reg = <2>;
-                               thc63lvd1024_out: endpoint {
-                                       remote-endpoint = <&adv7511_in>;
-                               };
-                       };
-               };
-       };
-
-       memory@48000000 {
-               device_type = "memory";
-               /* first 128MB is reserved for secure area. */
-               reg = <0x0 0x48000000 0x0 0x38000000>;
-       };
-
-       reg_1p8v: regulator0 {
-               compatible = "regulator-fixed";
-               regulator-name = "fixed-1.8V";
-               regulator-min-microvolt = <1800000>;
-               regulator-max-microvolt = <1800000>;
-               regulator-boot-on;
-               regulator-always-on;
-       };
-
-       reg_3p3v: regulator1 {
-               compatible = "regulator-fixed";
-               regulator-name = "fixed-3.3V";
-               regulator-min-microvolt = <3300000>;
-               regulator-max-microvolt = <3300000>;
-               regulator-boot-on;
-               regulator-always-on;
-       };
-
-       reg_12p0v: regulator2 {
-               compatible = "regulator-fixed";
-               regulator-name = "D12.0V";
-               regulator-min-microvolt = <12000000>;
-               regulator-max-microvolt = <12000000>;
-               regulator-boot-on;
-               regulator-always-on;
-       };
-
-       rsnd_ak4613: sound {
-               compatible = "simple-audio-card";
-
-               simple-audio-card,name = "rsnd-ak4613";
-               simple-audio-card,format = "left_j";
-               simple-audio-card,bitclock-master = <&sndcpu>;
-               simple-audio-card,frame-master = <&sndcpu>;
-
-               sndcodec: simple-audio-card,codec {
-                       sound-dai = <&ak4613>;
-               };
-
-               sndcpu: simple-audio-card,cpu {
-                       sound-dai = <&rcar_sound>;
-               };
-       };
-
-       vbus0_usb2: regulator-vbus0-usb2 {
-               compatible = "regulator-fixed";
-
-               regulator-name = "USB20_VBUS_CN";
-               regulator-min-microvolt = <5000000>;
-               regulator-max-microvolt = <5000000>;
-
-               gpio = <&gpio6 4 GPIO_ACTIVE_HIGH>;
-               enable-active-high;
-       };
-
-       vcc_sdhi0: regulator-vcc-sdhi0 {
-               compatible = "regulator-fixed";
-
-               regulator-name = "SDHI0 Vcc";
-               regulator-min-microvolt = <3300000>;
-               regulator-max-microvolt = <3300000>;
-
-               gpio = <&gpio5 17 GPIO_ACTIVE_HIGH>;
-               enable-active-high;
-       };
-
-       vccq_sdhi0: regulator-vccq-sdhi0 {
-               compatible = "regulator-gpio";
-
-               regulator-name = "SDHI0 VccQ";
-               regulator-min-microvolt = <1800000>;
-               regulator-max-microvolt = <3300000>;
-
-               gpios = <&gpio5 18 GPIO_ACTIVE_HIGH>;
-               gpios-states = <1>;
-               states = <3300000 1>, <1800000 0>;
-       };
-
-       vcc_sdhi1: regulator-vcc-sdhi1 {
-               compatible = "regulator-fixed";
-
-               regulator-name = "SDHI1 Vcc";
-               regulator-min-microvolt = <3300000>;
-               regulator-max-microvolt = <3300000>;
-
-               gpio = <&gpio0 4 GPIO_ACTIVE_HIGH>;
-               enable-active-high;
-       };
-
-       vccq_sdhi1: regulator-vccq-sdhi1 {
-               compatible = "regulator-gpio";
-
-               regulator-name = "SDHI1 VccQ";
-               regulator-min-microvolt = <1800000>;
-               regulator-max-microvolt = <3300000>;
-
-               gpios = <&gpio3 15 GPIO_ACTIVE_HIGH>;
-               gpios-states = <1>;
-               states = <3300000 1>, <1800000 0>;
-       };
-
-       vga {
-               compatible = "vga-connector";
-
-               port {
-                       vga_in: endpoint {
-                               remote-endpoint = <&adv7123_out>;
-                       };
-               };
-       };
-
-       vga-encoder {
-               compatible = "adi,adv7123";
-
-               ports {
-                       #address-cells = <1>;
-                       #size-cells = <0>;
-
-                       port@0 {
-                               reg = <0>;
-                               adv7123_in: endpoint {
-                                       remote-endpoint = <&du_out_rgb>;
-                               };
-                       };
-                       port@1 {
-                               reg = <1>;
-                               adv7123_out: endpoint {
-                                       remote-endpoint = <&vga_in>;
-                               };
-                       };
-               };
-       };
-
-       x12_clk: x12 {
-               compatible = "fixed-clock";
-               #clock-cells = <0>;
-               clock-frequency = <24576000>;
-       };
-
-       x13_clk: x13 {
-               compatible = "fixed-clock";
-               #clock-cells = <0>;
-               clock-frequency = <74250000>;
-       };
-};
-
-&audio_clk_a {
-       clock-frequency = <22579200>;
-};
-
-&avb {
-       pinctrl-0 = <&avb_pins>;
-       pinctrl-names = "default";
-       phy-handle = <&phy0>;
-       status = "okay";
-
-       phy0: ethernet-phy@0 {
-               rxc-skew-ps = <1500>;
-               reg = <0>;
-               interrupt-parent = <&gpio2>;
-               interrupts = <21 IRQ_TYPE_LEVEL_LOW>;
-               reset-gpios = <&gpio1 20 GPIO_ACTIVE_LOW>;
-               /*
-                * TX clock internal delay mode is required for reliable
-                * 1Gbps communication using the KSZ9031RNX phy present on
-                * the Ebisu board, however, TX clock internal delay mode
-                * isn't supported on r8a77990.  Thus, limit speed to
-                * 100Mbps for reliable communication.
-                */
-               max-speed = <100>;
-       };
-};
-
-&canfd {
-       pinctrl-0 = <&canfd0_pins>;
-       pinctrl-names = "default";
-       status = "okay";
-
-       channel0 {
-               status = "okay";
-       };
-};
-
-&csi40 {
-       status = "okay";
-
-       ports {
-               port@0 {
-                       csi40_in: endpoint {
-                               clock-lanes = <0>;
-                               data-lanes = <1 2>;
-                               remote-endpoint = <&adv7482_txa>;
-                       };
-               };
-       };
-};
-
-&du {
-       pinctrl-0 = <&du_pins>;
-       pinctrl-names = "default";
-       status = "okay";
-
-       clocks = <&cpg CPG_MOD 724>,
-                <&cpg CPG_MOD 723>,
-                <&x13_clk>;
-       clock-names = "du.0", "du.1", "dclkin.0";
-
-       ports {
-               port@0 {
-                       endpoint {
-                               remote-endpoint = <&adv7123_in>;
-                       };
-               };
-       };
-};
-
-&ehci0 {
-       dr_mode = "otg";
-       status = "okay";
-};
-
-&extal_clk {
-       clock-frequency = <48000000>;
-};
-
-&hsusb {
-       dr_mode = "otg";
-       status = "okay";
-};
-
-&i2c0 {
-       status = "okay";
-
-       io_expander: gpio@20 {
-               compatible = "onnn,pca9654";
-               reg = <0x20>;
-               gpio-controller;
-               #gpio-cells = <2>;
-               interrupt-parent = <&gpio2>;
-               interrupts = <22 IRQ_TYPE_LEVEL_LOW>;
-       };
-
-       hdmi-encoder@39 {
-               compatible = "adi,adv7511w";
-               reg = <0x39>;
-               interrupt-parent = <&gpio1>;
-               interrupts = <1 IRQ_TYPE_LEVEL_LOW>;
-
-               adi,input-depth = <8>;
-               adi,input-colorspace = "rgb";
-               adi,input-clock = "1x";
-
-               ports {
-                       #address-cells = <1>;
-                       #size-cells = <0>;
-
-                       port@0 {
-                               reg = <0>;
-                               adv7511_in: endpoint {
-                                       remote-endpoint = <&thc63lvd1024_out>;
-                               };
-                       };
-
-                       port@1 {
-                               reg = <1>;
-                               adv7511_out: endpoint {
-                                       remote-endpoint = <&hdmi_con_out>;
-                               };
-                       };
-               };
-       };
-
-       video-receiver@70 {
-               compatible = "adi,adv7482";
-               reg = <0x70>;
-
-               #address-cells = <1>;
-               #size-cells = <0>;
-
-               interrupt-parent = <&gpio0>;
-               interrupt-names = "intrq1", "intrq2";
-               interrupts = <7 IRQ_TYPE_LEVEL_LOW>,
-                            <17 IRQ_TYPE_LEVEL_LOW>;
-
-               port@7 {
-                       reg = <7>;
-
-                       adv7482_ain7: endpoint {
-                               remote-endpoint = <&cvbs_con>;
-                       };
-               };
-
-               port@8 {
-                       reg = <8>;
-
-                       adv7482_hdmi: endpoint {
-                               remote-endpoint = <&hdmi_in_con>;
-                       };
-               };
-
-               port@a {
-                       reg = <10>;
-
-                       adv7482_txa: endpoint {
-                               clock-lanes = <0>;
-                               data-lanes = <1 2>;
-                               remote-endpoint = <&csi40_in>;
-                       };
-               };
-       };
-};
-
-&i2c3 {
-       status = "okay";
-
-       ak4613: codec@10 {
-               compatible = "asahi-kasei,ak4613";
-               #sound-dai-cells = <0>;
-               reg = <0x10>;
-               clocks = <&rcar_sound 3>;
-
-               asahi-kasei,in1-single-end;
-               asahi-kasei,in2-single-end;
-               asahi-kasei,out1-single-end;
-               asahi-kasei,out2-single-end;
-               asahi-kasei,out3-single-end;
-               asahi-kasei,out4-single-end;
-               asahi-kasei,out5-single-end;
-               asahi-kasei,out6-single-end;
-       };
-
-       cs2000: clk-multiplier@4f {
-               #clock-cells = <0>;
-               compatible = "cirrus,cs2000-cp";
-               reg = <0x4f>;
-               clocks = <&audio_clkout>, <&x12_clk>;
-               clock-names = "clk_in", "ref_clk";
-
-               assigned-clocks = <&cs2000>;
-               assigned-clock-rates = <24576000>; /* 1/1 divide */
-       };
-};
-
-&i2c_dvfs {
-       status = "okay";
-
-       clock-frequency = <400000>;
-
-       pmic: pmic@30 {
-               pinctrl-0 = <&irq0_pins>;
-               pinctrl-names = "default";
-
-               compatible = "rohm,bd9571mwv";
-               reg = <0x30>;
-               interrupt-parent = <&intc_ex>;
-               interrupts = <0 IRQ_TYPE_LEVEL_LOW>;
-               interrupt-controller;
-               #interrupt-cells = <2>;
-               gpio-controller;
-               #gpio-cells = <2>;
-               rohm,ddr-backup-power = <0x1>;
-               rohm,rstbmode-level;
-       };
-
-       eeprom@50 {
-               compatible = "rohm,br24t01", "atmel,24c01";
-               reg = <0x50>;
-               pagesize = <8>;
-       };
-};
-
-&lvds0 {
-       status = "okay";
-
-       clocks = <&cpg CPG_MOD 727>,
-                <&x13_clk>,
-                <&extal_clk>;
-       clock-names = "fck", "dclkin.0", "extal";
-
-       ports {
-               port@1 {
-                       lvds0_out: endpoint {
-                               remote-endpoint = <&thc63lvd1024_in>;
-                       };
-               };
-       };
-};
-
-&lvds1 {
-       /*
-        * Even though the LVDS1 output is not connected, the encoder must be
-        * enabled to supply a pixel clock to the DU for the DPAD output when
-        * LVDS0 is in use.
-        */
-       status = "okay";
-
-       clocks = <&cpg CPG_MOD 727>,
-                <&x13_clk>,
-                <&extal_clk>;
-       clock-names = "fck", "dclkin.0", "extal";
-};
-
-&ohci0 {
-       dr_mode = "otg";
-       status = "okay";
-};
-
-&pcie_bus_clk {
-       clock-frequency = <100000000>;
-};
-
-&pciec0 {
-       status = "okay";
-};
-
-&pfc {
-       avb_pins: avb {
-               groups = "avb_link", "avb_mii";
-               function = "avb";
-       };
-
-       canfd0_pins: canfd0 {
-               groups = "canfd0_data";
-               function = "canfd0";
-       };
-
-       du_pins: du {
-               groups = "du_rgb888", "du_sync", "du_disp", "du_clk_out_0";
-               function = "du";
-       };
-
-       irq0_pins: irq0 {
-               groups = "intc_ex_irq0";
-               function = "intc_ex";
-       };
-
-       keys_pins: keys {
-               pins = "GP_5_10", "GP_5_11", "GP_5_12", "GP_5_13";
-               bias-pull-up;
-       };
-
-       pwm3_pins: pwm3 {
-               groups = "pwm3_b";
-               function = "pwm3";
-       };
-
-       pwm5_pins: pwm5 {
-               groups = "pwm5_a";
-               function = "pwm5";
-       };
-
-       scif2_pins: scif2 {
-               groups = "scif2_data_a";
-               function = "scif2";
-       };
-
-       sdhi0_pins: sd0 {
-               groups = "sdhi0_data4", "sdhi0_ctrl";
-               function = "sdhi0";
-               power-source = <3300>;
-       };
-
-       sdhi0_pins_uhs: sd0_uhs {
-               groups = "sdhi0_data4", "sdhi0_ctrl";
-               function = "sdhi0";
-               power-source = <1800>;
-       };
-
-       sdhi1_pins: sd1 {
-               groups = "sdhi1_data4", "sdhi1_ctrl";
-               function = "sdhi1";
-               power-source = <3300>;
-       };
-
-       sdhi1_pins_uhs: sd1_uhs {
-               groups = "sdhi1_data4", "sdhi1_ctrl";
-               function = "sdhi1";
-               power-source = <1800>;
-       };
-
-       sdhi3_pins: sd3 {
-               groups = "sdhi3_data8", "sdhi3_ctrl", "sdhi3_ds";
-               function = "sdhi3";
-               power-source = <1800>;
-       };
-
-       sound_clk_pins: sound_clk {
-               groups = "audio_clk_a", "audio_clk_b_a", "audio_clk_c_a",
-                        "audio_clkout_a", "audio_clkout1_a";
-               function = "audio_clk";
-       };
-
-       sound_pins: sound {
-               groups = "ssi01239_ctrl", "ssi0_data", "ssi1_data";
-               function = "ssi";
-       };
-
-       usb0_pins: usb {
-               groups = "usb0_b", "usb0_id";
-               function = "usb0";
-       };
-
-       usb30_pins: usb30 {
-               groups = "usb30";
-               function = "usb30";
-       };
-};
-
-&pwm3 {
-       pinctrl-0 = <&pwm3_pins>;
-       pinctrl-names = "default";
-
-       status = "okay";
-};
-
-&pwm5 {
-       pinctrl-0 = <&pwm5_pins>;
-       pinctrl-names = "default";
-
-       status = "okay";
-};
-
-&rcar_sound {
-       pinctrl-0 = <&sound_pins>, <&sound_clk_pins>;
-       pinctrl-names = "default";
-
-       /* Single DAI */
-       #sound-dai-cells = <0>;
-
-       /* audio_clkout0/1/2/3 */
-       #clock-cells = <1>;
-       clock-frequency = <12288000 11289600>;
-
-       status = "okay";
-
-       /* update <audio_clk_b> to <cs2000> */
-       clocks = <&cpg CPG_MOD 1005>,
-                <&cpg CPG_MOD 1006>, <&cpg CPG_MOD 1007>,
-                <&cpg CPG_MOD 1008>, <&cpg CPG_MOD 1009>,
-                <&cpg CPG_MOD 1010>, <&cpg CPG_MOD 1011>,
-                <&cpg CPG_MOD 1012>, <&cpg CPG_MOD 1013>,
-                <&cpg CPG_MOD 1014>, <&cpg CPG_MOD 1015>,
-                <&cpg CPG_MOD 1022>, <&cpg CPG_MOD 1023>,
-                <&cpg CPG_MOD 1024>, <&cpg CPG_MOD 1025>,
-                <&cpg CPG_MOD 1026>, <&cpg CPG_MOD 1027>,
-                <&cpg CPG_MOD 1028>, <&cpg CPG_MOD 1029>,
-                <&cpg CPG_MOD 1030>, <&cpg CPG_MOD 1031>,
-                <&cpg CPG_MOD 1020>, <&cpg CPG_MOD 1021>,
-                <&cpg CPG_MOD 1020>, <&cpg CPG_MOD 1021>,
-                <&cpg CPG_MOD 1019>, <&cpg CPG_MOD 1018>,
-                <&audio_clk_a>, <&cs2000>, <&audio_clk_c>,
-                <&cpg CPG_CORE R8A77990_CLK_ZA2>;
-
-       rcar_sound,dai {
-               dai0 {
-                       playback = <&ssi0>, <&src0>, <&dvc0>;
-                       capture  = <&ssi1>, <&src1>, <&dvc1>;
-               };
-       };
-
-};
-
-&rwdt {
-       timeout-sec = <60>;
-       status = "okay";
-};
-
-&scif2 {
-       pinctrl-0 = <&scif2_pins>;
-       pinctrl-names = "default";
-
-       status = "okay";
-};
-
-&sdhi0 {
-       pinctrl-0 = <&sdhi0_pins>;
-       pinctrl-1 = <&sdhi0_pins_uhs>;
-       pinctrl-names = "default", "state_uhs";
-
-       vmmc-supply = <&vcc_sdhi0>;
-       vqmmc-supply = <&vccq_sdhi0>;
-       cd-gpios = <&gpio3 12 GPIO_ACTIVE_LOW>;
-       wp-gpios = <&gpio3 13 GPIO_ACTIVE_HIGH>;
-       bus-width = <4>;
-       sd-uhs-sdr50;
-       sd-uhs-sdr104;
-       status = "okay";
-};
-
-&sdhi1 {
-       pinctrl-0 = <&sdhi1_pins>;
-       pinctrl-1 = <&sdhi1_pins_uhs>;
-       pinctrl-names = "default", "state_uhs";
-
-       vmmc-supply = <&vcc_sdhi1>;
-       vqmmc-supply = <&vccq_sdhi1>;
-       cd-gpios = <&gpio3 14 GPIO_ACTIVE_LOW>;
-       bus-width = <4>;
-       sd-uhs-sdr50;
-       sd-uhs-sdr104;
-       status = "okay";
-};
-
-&sdhi3 {
-       /* used for on-board 8bit eMMC */
-       pinctrl-0 = <&sdhi3_pins>;
-       pinctrl-1 = <&sdhi3_pins>;
-       pinctrl-names = "default", "state_uhs";
-
-       vmmc-supply = <&reg_3p3v>;
-       vqmmc-supply = <&reg_1p8v>;
-       mmc-hs200-1_8v;
-       mmc-hs400-1_8v;
-       bus-width = <8>;
-       no-sd;
-       no-sdio;
-       non-removable;
-       full-pwr-cycle-in-suspend;
-       status = "okay";
-};
-
-&ssi1 {
-       shared-pin;
-};
-
-&usb2_phy0 {
-       pinctrl-0 = <&usb0_pins>;
-       pinctrl-names = "default";
-
-       vbus-supply = <&vbus0_usb2>;
-       status = "okay";
-};
-
-&usb3_peri0 {
-       companion = <&xhci0>;
-       status = "okay";
-};
-
-&vin4 {
-       status = "okay";
-};
-
-&vin5 {
-       status = "okay";
-};
-
-&xhci0 {
-       pinctrl-0 = <&usb30_pins>;
-       pinctrl-names = "default";
-
-       status = "okay";
 };
index 1ac15aa..3848256 100644 (file)
@@ -8,678 +8,9 @@
 
 /dts-v1/;
 #include "r8a77995.dtsi"
-#include <dt-bindings/gpio/gpio.h>
-#include <dt-bindings/input/input.h>
+#include "draak.dtsi"
 
 / {
        model = "Renesas Draak board based on r8a77995";
        compatible = "renesas,draak", "renesas,r8a77995";
-
-       aliases {
-               serial0 = &scif2;
-               ethernet0 = &avb;
-       };
-
-       audio_clkout: audio-clkout {
-               /*
-                * This is same as <&rcar_sound 0>
-                * but needed to avoid cs2000/rcar_sound probe dead-lock
-                */
-               compatible = "fixed-clock";
-               #clock-cells = <0>;
-               clock-frequency = <12288000>;
-       };
-
-       backlight: backlight {
-               compatible = "pwm-backlight";
-               pwms = <&pwm1 0 50000>;
-
-               brightness-levels = <512 511 505 494 473 440 392 327 241 133 0>;
-               default-brightness-level = <10>;
-
-               power-supply = <&reg_12p0v>;
-               enable-gpios = <&gpio4 0 GPIO_ACTIVE_HIGH>;
-       };
-
-       chosen {
-               bootargs = "ignore_loglevel rw root=/dev/nfs ip=on";
-               stdout-path = "serial0:115200n8";
-       };
-
-       composite-in {
-               compatible = "composite-video-connector";
-
-               port {
-                       composite_con_in: endpoint {
-                               remote-endpoint = <&adv7180_in>;
-                       };
-               };
-       };
-
-       hdmi-in {
-               compatible = "hdmi-connector";
-               type = "a";
-
-               port {
-                       hdmi_con_in: endpoint {
-                               remote-endpoint = <&adv7612_in>;
-                       };
-               };
-       };
-
-       hdmi-out {
-               compatible = "hdmi-connector";
-               type = "a";
-
-               port {
-                       hdmi_con_out: endpoint {
-                               remote-endpoint = <&adv7511_out>;
-                       };
-               };
-       };
-
-       keys {
-               compatible = "gpio-keys";
-
-               pinctrl-0 = <&keys_pins>;
-               pinctrl-names = "default";
-
-               key-1 {
-                       gpios = <&gpio4 12 GPIO_ACTIVE_LOW>;
-                       linux,code = <KEY_1>;
-                       label = "SW56-1";
-                       wakeup-source;
-                       debounce-interval = <20>;
-               };
-               key-2 {
-                       gpios = <&gpio4 13 GPIO_ACTIVE_LOW>;
-                       linux,code = <KEY_2>;
-                       label = "SW56-2";
-                       wakeup-source;
-                       debounce-interval = <20>;
-               };
-               key-3 {
-                       gpios = <&gpio4 14 GPIO_ACTIVE_LOW>;
-                       linux,code = <KEY_3>;
-                       label = "SW56-3";
-                       wakeup-source;
-                       debounce-interval = <20>;
-               };
-               key-4 {
-                       gpios = <&gpio4 15 GPIO_ACTIVE_LOW>;
-                       linux,code = <KEY_4>;
-                       label = "SW56-4";
-                       wakeup-source;
-                       debounce-interval = <20>;
-               };
-       };
-
-       lvds-decoder {
-               compatible = "thine,thc63lvd1024";
-               vcc-supply = <&reg_3p3v>;
-
-               ports {
-                       #address-cells = <1>;
-                       #size-cells = <0>;
-
-                       port@0 {
-                               reg = <0>;
-                               thc63lvd1024_in: endpoint {
-                                       remote-endpoint = <&lvds0_out>;
-                               };
-                       };
-
-                       port@2 {
-                               reg = <2>;
-                               thc63lvd1024_out: endpoint {
-                                       remote-endpoint = <&adv7511_in>;
-                               };
-                       };
-               };
-       };
-
-       memory@48000000 {
-               device_type = "memory";
-               /* first 128MB is reserved for secure area. */
-               reg = <0x0 0x48000000 0x0 0x18000000>;
-       };
-
-       reg_1p8v: regulator-1p8v {
-               compatible = "regulator-fixed";
-               regulator-name = "fixed-1.8V";
-               regulator-min-microvolt = <1800000>;
-               regulator-max-microvolt = <1800000>;
-               regulator-boot-on;
-               regulator-always-on;
-       };
-
-       reg_3p3v: regulator-3p3v {
-               compatible = "regulator-fixed";
-               regulator-name = "fixed-3.3V";
-               regulator-min-microvolt = <3300000>;
-               regulator-max-microvolt = <3300000>;
-               regulator-boot-on;
-               regulator-always-on;
-       };
-
-       reg_12p0v: regulator-12p0v {
-               compatible = "regulator-fixed";
-               regulator-name = "D12.0V";
-               regulator-min-microvolt = <12000000>;
-               regulator-max-microvolt = <12000000>;
-               regulator-boot-on;
-               regulator-always-on;
-       };
-
-       sound_card: sound {
-               compatible = "audio-graph-card";
-
-               dais = <&rsnd_port0     /* ak4613 */
-                       /* HDMI is not yet supported */
-               >;
-       };
-
-       vga {
-               compatible = "vga-connector";
-
-               port {
-                       vga_in: endpoint {
-                               remote-endpoint = <&adv7123_out>;
-                       };
-               };
-       };
-
-       vga-encoder {
-               compatible = "adi,adv7123";
-
-               ports {
-                       #address-cells = <1>;
-                       #size-cells = <0>;
-
-                       port@0 {
-                               reg = <0>;
-                               adv7123_in: endpoint {
-                                       remote-endpoint = <&du_out_rgb>;
-                               };
-                       };
-                       port@1 {
-                               reg = <1>;
-                               adv7123_out: endpoint {
-                                       remote-endpoint = <&vga_in>;
-                               };
-                       };
-               };
-       };
-
-       x12_clk: x12 {
-               compatible = "fixed-clock";
-               #clock-cells = <0>;
-               clock-frequency = <74250000>;
-       };
-
-       x19_clk: x19 {
-               compatible = "fixed-clock";
-               #clock-cells = <0>;
-               clock-frequency = <24576000>;
-       };
-};
-
-&audio_clk_b {
-       /*
-        * X11 is connected to VI4_FIELD/SCIF_CLK/AUDIO_CLKB,
-        * and R-Car Sound uses AUDIO_CLKB.
-        * Note is that schematic indicates VI4_FIELD conection only
-        * not AUDIO_CLKB at SoC page.
-        * And this VI4_FIELD/SCIF_CLK/AUDIO_CLKB is connected to SW60.
-        * SW60 should be 1-2.
-        */
-
-       clock-frequency = <22579200>;
-};
-
-&avb {
-       pinctrl-0 = <&avb0_pins>;
-       pinctrl-names = "default";
-       renesas,no-ether-link;
-       phy-handle = <&phy0>;
-       status = "okay";
-
-       phy0: ethernet-phy@0 {
-               rxc-skew-ps = <1500>;
-               reg = <0>;
-               interrupt-parent = <&gpio5>;
-               interrupts = <19 IRQ_TYPE_LEVEL_LOW>;
-               /*
-                * TX clock internal delay mode is required for reliable
-                * 1Gbps communication using the KSZ9031RNX phy present on
-                * the Draak board, however, TX clock internal delay mode
-                * isn't supported on r8a77995.  Thus, limit speed to
-                * 100Mbps for reliable communication.
-                */
-               max-speed = <100>;
-       };
-};
-
-&can0 {
-       pinctrl-0 = <&can0_pins>;
-       pinctrl-names = "default";
-       status = "okay";
-};
-
-&can1 {
-       pinctrl-0 = <&can1_pins>;
-       pinctrl-names = "default";
-       status = "okay";
-};
-
-&du {
-       pinctrl-0 = <&du_pins>;
-       pinctrl-names = "default";
-       status = "okay";
-
-       clocks = <&cpg CPG_MOD 724>,
-                <&cpg CPG_MOD 723>,
-                <&x12_clk>;
-       clock-names = "du.0", "du.1", "dclkin.0";
-
-       ports {
-               port@0 {
-                       endpoint {
-                               remote-endpoint = <&adv7123_in>;
-                       };
-               };
-       };
-};
-
-&ehci0 {
-       dr_mode = "host";
-       status = "okay";
-};
-
-&extal_clk {
-       clock-frequency = <48000000>;
-};
-
-&hsusb {
-       dr_mode = "host";
-       status = "okay";
-};
-
-&i2c0 {
-       pinctrl-0 = <&i2c0_pins>;
-       pinctrl-names = "default";
-       status = "okay";
-
-       ak4613: codec@10 {
-               compatible = "asahi-kasei,ak4613";
-               #sound-dai-cells = <0>;
-               reg = <0x10>;
-               clocks = <&rcar_sound 0>; /* audio_clkout */
-
-               asahi-kasei,in1-single-end;
-               asahi-kasei,in2-single-end;
-               asahi-kasei,out1-single-end;
-               asahi-kasei,out2-single-end;
-               asahi-kasei,out3-single-end;
-               asahi-kasei,out4-single-end;
-               asahi-kasei,out5-single-end;
-               asahi-kasei,out6-single-end;
-
-               port {
-                       ak4613_endpoint: endpoint {
-                               remote-endpoint = <&rsnd_for_ak4613>;
-                       };
-               };
-       };
-
-       composite-in@20 {
-               compatible = "adi,adv7180cp";
-               reg = <0x20>;
-
-               ports {
-                       #address-cells = <1>;
-                       #size-cells = <0>;
-
-                       port@0 {
-                               reg = <0>;
-                               adv7180_in: endpoint {
-                                       remote-endpoint = <&composite_con_in>;
-                               };
-                       };
-
-                       port@3 {
-                               reg = <3>;
-
-                               /*
-                                * The VIN4 video input path is shared between
-                                * CVBS and HDMI inputs through SW[49-53]
-                                * switches.
-                                *
-                                * CVBS is the default selection, link it to
-                                * VIN4 here.
-                                */
-                               adv7180_out: endpoint {
-                                       remote-endpoint = <&vin4_in>;
-                               };
-                       };
-               };
-
-       };
-
-       hdmi-encoder@39 {
-               compatible = "adi,adv7511w";
-               reg = <0x39>, <0x3f>, <0x3c>, <0x38>;
-               reg-names = "main", "edid", "cec", "packet";
-               interrupt-parent = <&gpio1>;
-               interrupts = <28 IRQ_TYPE_LEVEL_LOW>;
-
-               adi,input-depth = <8>;
-               adi,input-colorspace = "rgb";
-               adi,input-clock = "1x";
-
-               ports {
-                       #address-cells = <1>;
-                       #size-cells = <0>;
-
-                       port@0 {
-                               reg = <0>;
-                               adv7511_in: endpoint {
-                                       remote-endpoint = <&thc63lvd1024_out>;
-                               };
-                       };
-
-                       port@1 {
-                               reg = <1>;
-                               adv7511_out: endpoint {
-                                       remote-endpoint = <&hdmi_con_out>;
-                               };
-                       };
-               };
-       };
-
-       hdmi-decoder@4c {
-               compatible = "adi,adv7612";
-               reg = <0x4c>;
-               default-input = <0>;
-
-               ports {
-                       #address-cells = <1>;
-                       #size-cells = <0>;
-
-                       port@0 {
-                               reg = <0>;
-
-                               adv7612_in: endpoint {
-                                       remote-endpoint = <&hdmi_con_in>;
-                               };
-                       };
-
-                       port@2 {
-                               reg = <2>;
-
-                               /*
-                                * The VIN4 video input path is shared between
-                                * CVBS and HDMI inputs through SW[49-53]
-                                * switches.
-                                *
-                                * CVBS is the default selection, leave HDMI
-                                * not connected here.
-                                */
-                               adv7612_out: endpoint {
-                                       pclk-sample = <0>;
-                                       hsync-active = <0>;
-                                       vsync-active = <0>;
-                               };
-                       };
-               };
-       };
-
-       cs2000: clk-multiplier@4f {
-               #clock-cells = <0>;
-               compatible = "cirrus,cs2000-cp";
-               reg = <0x4f>;
-               clocks = <&audio_clkout>, <&x19_clk>; /* audio_clkout_1, x19 */
-               clock-names = "clk_in", "ref_clk";
-
-               assigned-clocks = <&cs2000>;
-               assigned-clock-rates = <24576000>; /* 1/1 divide */
-       };
-
-       eeprom@50 {
-               compatible = "rohm,br24t01", "atmel,24c01";
-               reg = <0x50>;
-               pagesize = <8>;
-       };
-};
-
-&i2c1 {
-       pinctrl-0 = <&i2c1_pins>;
-       pinctrl-names = "default";
-       status = "okay";
-};
-
-&lvds0 {
-       status = "okay";
-
-       clocks = <&cpg CPG_MOD 727>,
-                <&x12_clk>,
-                <&extal_clk>;
-       clock-names = "fck", "dclkin.0", "extal";
-
-       ports {
-               port@1 {
-                       lvds0_out: endpoint {
-                               remote-endpoint = <&thc63lvd1024_in>;
-                       };
-               };
-       };
-};
-
-&lvds1 {
-       /*
-        * Even though the LVDS1 output is not connected, the encoder must be
-        * enabled to supply a pixel clock to the DU for the DPAD output when
-        * LVDS0 is in use.
-        */
-       status = "okay";
-
-       clocks = <&cpg CPG_MOD 727>,
-                <&x12_clk>,
-                <&extal_clk>;
-       clock-names = "fck", "dclkin.0", "extal";
-};
-
-&ohci0 {
-       dr_mode = "host";
-       status = "okay";
-};
-
-&pfc {
-       avb0_pins: avb {
-               groups = "avb0_link", "avb0_mdio", "avb0_mii";
-               function = "avb0";
-       };
-
-       can0_pins: can0 {
-               groups = "can0_data_a";
-               function = "can0";
-       };
-
-       can1_pins: can1 {
-               groups = "can1_data_a";
-               function = "can1";
-       };
-
-       du_pins: du {
-               groups = "du_rgb888", "du_sync", "du_disp", "du_clk_out_0";
-               function = "du";
-       };
-
-       i2c0_pins: i2c0 {
-               groups = "i2c0";
-               function = "i2c0";
-       };
-
-       i2c1_pins: i2c1 {
-               groups = "i2c1";
-               function = "i2c1";
-       };
-
-       keys_pins: keys {
-               pins = "GP_4_12", "GP_4_13", "GP_4_14", "GP_4_15";
-               bias-pull-up;
-       };
-
-       pwm0_pins: pwm0 {
-               groups = "pwm0_c";
-               function = "pwm0";
-       };
-
-       pwm1_pins: pwm1 {
-               groups = "pwm1_c";
-               function = "pwm1";
-       };
-
-       scif2_pins: scif2 {
-               groups = "scif2_data";
-               function = "scif2";
-       };
-
-       sdhi2_pins: sd2 {
-               groups = "mmc_data8", "mmc_ctrl";
-               function = "mmc";
-               power-source = <1800>;
-       };
-
-       sdhi2_pins_uhs: sd2_uhs {
-               groups = "mmc_data8", "mmc_ctrl";
-               function = "mmc";
-               power-source = <1800>;
-       };
-
-       sound_pins: sound {
-               groups = "ssi34_ctrl", "ssi3_data", "ssi4_data_a";
-               function = "ssi";
-       };
-
-       sound_clk_pins: sound-clk {
-               groups = "audio_clk_a", "audio_clk_b",
-                        "audio_clkout", "audio_clkout1";
-               function = "audio_clk";
-       };
-
-       usb0_pins: usb0 {
-               groups = "usb0";
-               function = "usb0";
-       };
-
-       vin4_pins_cvbs: vin4 {
-               groups = "vin4_data8", "vin4_sync", "vin4_clk";
-               function = "vin4";
-       };
-};
-
-&pwm0 {
-       pinctrl-0 = <&pwm0_pins>;
-       pinctrl-names = "default";
-
-       status = "okay";
-};
-
-&pwm1 {
-       pinctrl-0 = <&pwm1_pins>;
-       pinctrl-names = "default";
-
-       status = "okay";
-};
-
-&rcar_sound {
-       pinctrl-0 = <&sound_pins>, <&sound_clk_pins>;
-       pinctrl-names = "default";
-
-       /* Single DAI */
-       #sound-dai-cells = <0>;
-
-       /* audio_clkout0/1 */
-       #clock-cells = <1>;
-       clock-frequency = <12288000 11289600>;
-
-       status = "okay";
-
-       clocks = <&cpg CPG_MOD 1005>,
-                <&cpg CPG_MOD 1011>, <&cpg CPG_MOD 1012>,
-                <&cpg CPG_MOD 1025>, <&cpg CPG_MOD 1026>,
-                <&cpg CPG_MOD 1020>, <&cpg CPG_MOD 1021>,
-                <&cpg CPG_MOD 1020>, <&cpg CPG_MOD 1021>,
-                <&cpg CPG_MOD 1019>, <&cpg CPG_MOD 1018>,
-                <&cs2000>, <&audio_clk_b>,
-                <&cpg CPG_CORE R8A77995_CLK_ZA2>;
-
-       ports {
-               rsnd_port0: port {
-                       rsnd_for_ak4613: endpoint {
-                               remote-endpoint = <&ak4613_endpoint>;
-                               dai-format = "left_j";
-                               bitclock-master = <&rsnd_for_ak4613>;
-                               frame-master = <&rsnd_for_ak4613>;
-                               playback = <&ssi3>, <&src5>, <&dvc0>;
-                               capture  = <&ssi4>, <&src6>, <&dvc1>;
-                       };
-               };
-       };
-};
-
-&rwdt {
-       timeout-sec = <60>;
-       status = "okay";
-};
-
-&scif2 {
-       pinctrl-0 = <&scif2_pins>;
-       pinctrl-names = "default";
-
-       status = "okay";
-};
-
-&sdhi2 {
-       /* used for on-board eMMC */
-       pinctrl-0 = <&sdhi2_pins>;
-       pinctrl-1 = <&sdhi2_pins_uhs>;
-       pinctrl-names = "default", "state_uhs";
-
-       vmmc-supply = <&reg_3p3v>;
-       vqmmc-supply = <&reg_1p8v>;
-       bus-width = <8>;
-       mmc-hs200-1_8v;
-       no-sd;
-       no-sdio;
-       non-removable;
-       status = "okay";
-};
-
-&ssi4 {
-       shared-pin;
-};
-
-&usb2_phy0 {
-       pinctrl-0 = <&usb0_pins>;
-       pinctrl-names = "default";
-
-       renesas,no-otg-pins;
-       status = "okay";
-};
-
-&vin4 {
-       pinctrl-0 = <&vin4_pins_cvbs>;
-       pinctrl-names = "default";
-
-       status = "okay";
-
-       ports {
-               port {
-                       vin4_in: endpoint {
-                               remote-endpoint = <&adv7180_out>;
-                       };
-               };
-       };
 };
index a0a1a1d..cd2f0d6 100644 (file)
@@ -6,6 +6,7 @@
  */
 
 #include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/input/input.h>
 #include <dt-bindings/leds/common.h>
 
 #include "r8a779a0.dtsi"
                stdout-path = "serial0:115200n8";
        };
 
+       keys {
+               compatible = "gpio-keys";
+
+               pinctrl-0 = <&keys_pins>;
+               pinctrl-names = "default";
+
+               key-1 {
+                       gpios = <&gpio6 18 GPIO_ACTIVE_LOW>;
+                       linux,code = <KEY_1>;
+                       label = "SW47";
+                       wakeup-source;
+                       debounce-interval = <20>;
+               };
+
+               key-2 {
+                       gpios = <&gpio6 19 GPIO_ACTIVE_LOW>;
+                       linux,code = <KEY_2>;
+                       label = "SW48";
+                       wakeup-source;
+                       debounce-interval = <20>;
+               };
+
+               key-3 {
+                       gpios = <&gpio6 20 GPIO_ACTIVE_LOW>;
+                       linux,code = <KEY_3>;
+                       label = "SW49";
+                       wakeup-source;
+                       debounce-interval = <20>;
+               };
+       };
+
        leds {
                compatible = "gpio-leds";
 
                function = "i2c6";
        };
 
+       keys_pins: keys {
+               pins = "GP_6_18", "GP_6_19", "GP_6_20";
+               bias-pull-up;
+       };
+
        mmc_pins: mmc {
                groups = "mmc_data8", "mmc_ctrl", "mmc_ds";
                function = "mmc";
                power-source = <1800>;
        };
 
+       qspi0_pins: qspi0 {
+               groups = "qspi0_ctrl", "qspi0_data4";
+               function = "qspi0";
+       };
+
        scif0_pins: scif0 {
                groups = "scif0_data", "scif0_ctrl";
                function = "scif0";
        };
 };
 
+&rpc {
+       pinctrl-0 = <&qspi0_pins>;
+       pinctrl-names = "default";
+
+       status = "okay";
+
+       flash@0 {
+               compatible = "spansion,s25fs512s", "jedec,spi-nor";
+               reg = <0>;
+               spi-max-frequency = <40000000>;
+               spi-rx-bus-width = <4>;
+
+               partitions {
+                       compatible = "fixed-partitions";
+                       #address-cells = <1>;
+                       #size-cells = <1>;
+
+                       boot@0 {
+                               reg = <0x0 0xcc0000>;
+                               read-only;
+                       };
+                       user@cc0000 {
+                               reg = <0xcc0000 0x3340000>;
+                       };
+               };
+       };
+};
+
 &rwdt {
        timeout-sec = <60>;
        status = "okay";
index dc671ff..e46dc9a 100644 (file)
@@ -27,6 +27,8 @@
        status = "okay";
 
        phy0: ethernet-phy@0 {
+               compatible = "ethernet-phy-id0022.1622",
+                            "ethernet-phy-ieee802.3-c22";
                rxc-skew-ps = <1500>;
                reg = <0>;
                interrupt-parent = <&gpio4>;
index 631d520..43bf2cb 100644 (file)
                        status = "disabled";
                };
 
+               tpu: pwm@e6e80000 {
+                       compatible = "renesas,tpu-r8a779a0", "renesas,tpu";
+                       reg = <0 0xe6e80000 0 0x148>;
+                       interrupts = <GIC_SPI 515 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&cpg CPG_MOD 718>;
+                       power-domains = <&sysc R8A779A0_PD_ALWAYS_ON>;
+                       resets = <&cpg 718>;
+                       #pwm-cells = <3>;
+                       status = "disabled";
+               };
+
                msiof0: spi@e6e90000 {
                        compatible = "renesas,msiof-r8a779a0",
                                     "renesas,rcar-gen3-msiof";
                        status = "disabled";
                };
 
+               vin00: video@e6ef0000 {
+                       compatible = "renesas,vin-r8a779a0";
+                       reg = <0 0xe6ef0000 0 0x1000>;
+                       interrupts = <GIC_SPI 160 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&cpg CPG_MOD 730>;
+                       power-domains = <&sysc R8A779A0_PD_ALWAYS_ON>;
+                       resets = <&cpg 730>;
+                       renesas,id = <0>;
+                       status = "disabled";
+
+                       ports {
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+
+                               port@2 {
+                                       #address-cells = <1>;
+                                       #size-cells = <0>;
+
+                                       reg = <2>;
+
+                                       vin00isp0: endpoint@0 {
+                                               reg = <0>;
+                                               remote-endpoint = <&isp0vin00>;
+                                       };
+                               };
+                       };
+               };
+
+               vin01: video@e6ef1000 {
+                       compatible = "renesas,vin-r8a779a0";
+                       reg = <0 0xe6ef1000 0 0x1000>;
+                       interrupts = <GIC_SPI 161 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&cpg CPG_MOD 731>;
+                       power-domains = <&sysc R8A779A0_PD_ALWAYS_ON>;
+                       resets = <&cpg 731>;
+                       renesas,id = <1>;
+                       status = "disabled";
+
+                       ports {
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+
+                               port@2 {
+                                       #address-cells = <1>;
+                                       #size-cells = <0>;
+
+                                       reg = <2>;
+
+                                       vin01isp0: endpoint@0 {
+                                               reg = <0>;
+                                               remote-endpoint = <&isp0vin01>;
+                                       };
+                               };
+                       };
+               };
+
+               vin02: video@e6ef2000 {
+                       compatible = "renesas,vin-r8a779a0";
+                       reg = <0 0xe6ef2000 0 0x1000>;
+                       interrupts = <GIC_SPI 162 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&cpg CPG_MOD 800>;
+                       power-domains = <&sysc R8A779A0_PD_ALWAYS_ON>;
+                       resets = <&cpg 800>;
+                       renesas,id = <2>;
+                       status = "disabled";
+
+                       ports {
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+
+                               port@2 {
+                                       #address-cells = <1>;
+                                       #size-cells = <0>;
+
+                                       reg = <2>;
+
+                                       vin02isp0: endpoint@0 {
+                                               reg = <0>;
+                                               remote-endpoint = <&isp0vin02>;
+                                       };
+                               };
+                       };
+               };
+
+               vin03: video@e6ef3000 {
+                       compatible = "renesas,vin-r8a779a0";
+                       reg = <0 0xe6ef3000 0 0x1000>;
+                       interrupts = <GIC_SPI 163 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&cpg CPG_MOD 801>;
+                       power-domains = <&sysc R8A779A0_PD_ALWAYS_ON>;
+                       resets = <&cpg 801>;
+                       renesas,id = <3>;
+                       status = "disabled";
+
+                       ports {
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+
+                               port@2 {
+                                       #address-cells = <1>;
+                                       #size-cells = <0>;
+
+                                       reg = <2>;
+
+                                       vin03isp0: endpoint@0 {
+                                               reg = <0>;
+                                               remote-endpoint = <&isp0vin03>;
+                                       };
+                               };
+                       };
+               };
+
+               vin04: video@e6ef4000 {
+                       compatible = "renesas,vin-r8a779a0";
+                       reg = <0 0xe6ef4000 0 0x1000>;
+                       interrupts = <GIC_SPI 164 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&cpg CPG_MOD 802>;
+                       power-domains = <&sysc R8A779A0_PD_ALWAYS_ON>;
+                       resets = <&cpg 802>;
+                       renesas,id = <4>;
+                       status = "disabled";
+
+                       ports {
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+
+                               port@2 {
+                                       #address-cells = <1>;
+                                       #size-cells = <0>;
+
+                                       reg = <2>;
+
+                                       vin04isp0: endpoint@0 {
+                                               reg = <0>;
+                                               remote-endpoint = <&isp0vin04>;
+                                       };
+                               };
+                       };
+               };
+
+               vin05: video@e6ef5000 {
+                       compatible = "renesas,vin-r8a779a0";
+                       reg = <0 0xe6ef5000 0 0x1000>;
+                       interrupts = <GIC_SPI 165 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&cpg CPG_MOD 803>;
+                       power-domains = <&sysc R8A779A0_PD_ALWAYS_ON>;
+                       resets = <&cpg 803>;
+                       renesas,id = <5>;
+                       status = "disabled";
+
+                       ports {
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+
+                               port@2 {
+                                       #address-cells = <1>;
+                                       #size-cells = <0>;
+
+                                       reg = <2>;
+
+                                       vin05isp0: endpoint@0 {
+                                               reg = <0>;
+                                               remote-endpoint = <&isp0vin05>;
+                                       };
+                               };
+                       };
+               };
+
+               vin06: video@e6ef6000 {
+                       compatible = "renesas,vin-r8a779a0";
+                       reg = <0 0xe6ef6000 0 0x1000>;
+                       interrupts = <GIC_SPI 166 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&cpg CPG_MOD 804>;
+                       power-domains = <&sysc R8A779A0_PD_ALWAYS_ON>;
+                       resets = <&cpg 804>;
+                       renesas,id = <6>;
+                       status = "disabled";
+
+                       ports {
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+
+                               port@2 {
+                                       #address-cells = <1>;
+                                       #size-cells = <0>;
+
+                                       reg = <2>;
+
+                                       vin06isp0: endpoint@0 {
+                                               reg = <0>;
+                                               remote-endpoint = <&isp0vin06>;
+                                       };
+                               };
+                       };
+               };
+
+               vin07: video@e6ef7000 {
+                       compatible = "renesas,vin-r8a779a0";
+                       reg = <0 0xe6ef7000 0 0x1000>;
+                       interrupts = <GIC_SPI 167 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&cpg CPG_MOD 805>;
+                       power-domains = <&sysc R8A779A0_PD_ALWAYS_ON>;
+                       resets = <&cpg 805>;
+                       renesas,id = <7>;
+                       status = "disabled";
+
+                       ports {
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+
+                               port@2 {
+                                       #address-cells = <1>;
+                                       #size-cells = <0>;
+
+                                       reg = <2>;
+
+                                       vin07isp0: endpoint@0 {
+                                               reg = <0>;
+                                               remote-endpoint = <&isp0vin07>;
+                                       };
+                               };
+                       };
+               };
+
+               vin08: video@e6ef8000 {
+                       compatible = "renesas,vin-r8a779a0";
+                       reg = <0 0xe6ef8000 0 0x1000>;
+                       interrupts = <GIC_SPI 168 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&cpg CPG_MOD 806>;
+                       power-domains = <&sysc R8A779A0_PD_ALWAYS_ON>;
+                       resets = <&cpg 806>;
+                       renesas,id = <8>;
+                       status = "disabled";
+
+                       ports {
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+
+                               port@2 {
+                                       #address-cells = <1>;
+                                       #size-cells = <0>;
+
+                                       reg = <2>;
+
+                                       vin08isp1: endpoint@1 {
+                                               reg = <1>;
+                                               remote-endpoint = <&isp1vin08>;
+                                       };
+                               };
+                       };
+               };
+
+               vin09: video@e6ef9000 {
+                       compatible = "renesas,vin-r8a779a0";
+                       reg = <0 0xe6ef9000 0 0x1000>;
+                       interrupts = <GIC_SPI 169 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&cpg CPG_MOD 807>;
+                       power-domains = <&sysc R8A779A0_PD_ALWAYS_ON>;
+                       resets = <&cpg 807>;
+                       renesas,id = <9>;
+                       status = "disabled";
+
+                       ports {
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+
+                               port@2 {
+                                       #address-cells = <1>;
+                                       #size-cells = <0>;
+
+                                       reg = <2>;
+
+                                       vin09isp1: endpoint@1 {
+                                               reg = <1>;
+                                               remote-endpoint = <&isp1vin09>;
+                                       };
+                               };
+                       };
+               };
+
+               vin10: video@e6efa000 {
+                       compatible = "renesas,vin-r8a779a0";
+                       reg = <0 0xe6efa000 0 0x1000>;
+                       interrupts = <GIC_SPI 170 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&cpg CPG_MOD 808>;
+                       power-domains = <&sysc R8A779A0_PD_ALWAYS_ON>;
+                       resets = <&cpg 808>;
+                       renesas,id = <10>;
+                       status = "disabled";
+
+                       ports {
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+
+                               port@2 {
+                                       #address-cells = <1>;
+                                       #size-cells = <0>;
+
+                                       reg = <2>;
+
+                                       vin10isp1: endpoint@1 {
+                                               reg = <1>;
+                                               remote-endpoint = <&isp1vin10>;
+                                       };
+                               };
+                       };
+               };
+
+               vin11: video@e6efb000 {
+                       compatible = "renesas,vin-r8a779a0";
+                       reg = <0 0xe6efb000 0 0x1000>;
+                       interrupts = <GIC_SPI 171 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&cpg CPG_MOD 809>;
+                       power-domains = <&sysc R8A779A0_PD_ALWAYS_ON>;
+                       resets = <&cpg 809>;
+                       renesas,id = <11>;
+                       status = "disabled";
+
+                       ports {
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+
+                               port@2 {
+                                       #address-cells = <1>;
+                                       #size-cells = <0>;
+
+                                       reg = <2>;
+
+                                       vin11isp1: endpoint@1 {
+                                               reg = <1>;
+                                               remote-endpoint = <&isp1vin11>;
+                                       };
+                               };
+                       };
+               };
+
+               vin12: video@e6efc000 {
+                       compatible = "renesas,vin-r8a779a0";
+                       reg = <0 0xe6efc000 0 0x1000>;
+                       interrupts = <GIC_SPI 172 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&cpg CPG_MOD 810>;
+                       power-domains = <&sysc R8A779A0_PD_ALWAYS_ON>;
+                       resets = <&cpg 810>;
+                       renesas,id = <12>;
+                       status = "disabled";
+
+                       ports {
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+
+                               port@2 {
+                                       #address-cells = <1>;
+                                       #size-cells = <0>;
+
+                                       reg = <2>;
+
+                                       vin12isp1: endpoint@1 {
+                                               reg = <1>;
+                                               remote-endpoint = <&isp1vin12>;
+                                       };
+                               };
+                       };
+               };
+
+               vin13: video@e6efd000 {
+                       compatible = "renesas,vin-r8a779a0";
+                       reg = <0 0xe6efd000 0 0x1000>;
+                       interrupts = <GIC_SPI 173 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&cpg CPG_MOD 811>;
+                       power-domains = <&sysc R8A779A0_PD_ALWAYS_ON>;
+                       resets = <&cpg 811>;
+                       renesas,id = <13>;
+                       status = "disabled";
+
+                       ports {
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+
+                               port@2 {
+                                       #address-cells = <1>;
+                                       #size-cells = <0>;
+
+                                       reg = <2>;
+
+                                       vin13isp1: endpoint@1 {
+                                               reg = <1>;
+                                               remote-endpoint = <&isp1vin13>;
+                                       };
+                               };
+                       };
+               };
+
+               vin14: video@e6efe000 {
+                       compatible = "renesas,vin-r8a779a0";
+                       reg = <0 0xe6efe000 0 0x1000>;
+                       interrupts = <GIC_SPI 174 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&cpg CPG_MOD 812>;
+                       power-domains = <&sysc R8A779A0_PD_ALWAYS_ON>;
+                       resets = <&cpg 812>;
+                       renesas,id = <14>;
+                       status = "disabled";
+
+                       ports {
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+
+                               port@2 {
+                                       #address-cells = <1>;
+                                       #size-cells = <0>;
+
+                                       reg = <2>;
+
+                                       vin14isp1: endpoint@1 {
+                                               reg = <1>;
+                                               remote-endpoint = <&isp1vin14>;
+                                       };
+                               };
+                       };
+               };
+
+               vin15: video@e6eff000 {
+                       compatible = "renesas,vin-r8a779a0";
+                       reg = <0 0xe6eff000 0 0x1000>;
+                       interrupts = <GIC_SPI 175 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&cpg CPG_MOD 813>;
+                       power-domains = <&sysc R8A779A0_PD_ALWAYS_ON>;
+                       resets = <&cpg 813>;
+                       renesas,id = <15>;
+                       status = "disabled";
+
+                       ports {
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+
+                               port@2 {
+                                       #address-cells = <1>;
+                                       #size-cells = <0>;
+
+                                       reg = <2>;
+
+                                       vin15isp1: endpoint@1 {
+                                               reg = <1>;
+                                               remote-endpoint = <&isp1vin15>;
+                                       };
+                               };
+                       };
+               };
+
+               vin16: video@e6ed0000 {
+                       compatible = "renesas,vin-r8a779a0";
+                       reg = <0 0xe6ed0000 0 0x1000>;
+                       interrupts = <GIC_SPI 176 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&cpg CPG_MOD 814>;
+                       power-domains = <&sysc R8A779A0_PD_ALWAYS_ON>;
+                       resets = <&cpg 814>;
+                       renesas,id = <16>;
+                       status = "disabled";
+
+                       ports {
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+
+                               port@2 {
+                                       #address-cells = <1>;
+                                       #size-cells = <0>;
+
+                                       reg = <2>;
+
+                                       vin16isp2: endpoint@2 {
+                                               reg = <2>;
+                                               remote-endpoint = <&isp2vin16>;
+                                       };
+                               };
+                       };
+               };
+
+               vin17: video@e6ed1000 {
+                       compatible = "renesas,vin-r8a779a0";
+                       reg = <0 0xe6ed1000 0 0x1000>;
+                       interrupts = <GIC_SPI 177 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&cpg CPG_MOD 815>;
+                       power-domains = <&sysc R8A779A0_PD_ALWAYS_ON>;
+                       resets = <&cpg 815>;
+                       renesas,id = <17>;
+                       status = "disabled";
+
+                       ports {
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+
+                               port@2 {
+                                       #address-cells = <1>;
+                                       #size-cells = <0>;
+
+                                       reg = <2>;
+
+                                       vin17isp2: endpoint@2 {
+                                               reg = <2>;
+                                               remote-endpoint = <&isp2vin17>;
+                                       };
+                               };
+                       };
+               };
+
+               vin18: video@e6ed2000 {
+                       compatible = "renesas,vin-r8a779a0";
+                       reg = <0 0xe6ed2000 0 0x1000>;
+                       interrupts = <GIC_SPI 178 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&cpg CPG_MOD 816>;
+                       power-domains = <&sysc R8A779A0_PD_ALWAYS_ON>;
+                       resets = <&cpg 816>;
+                       renesas,id = <18>;
+                       status = "disabled";
+
+                       ports {
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+
+                               port@2 {
+                                       #address-cells = <1>;
+                                       #size-cells = <0>;
+
+                                       reg = <2>;
+
+                                       vin18isp2: endpoint@2 {
+                                               reg = <2>;
+                                               remote-endpoint = <&isp2vin18>;
+                                       };
+                               };
+                       };
+               };
+
+               vin19: video@e6ed3000 {
+                       compatible = "renesas,vin-r8a779a0";
+                       reg = <0 0xe6ed3000 0 0x1000>;
+                       interrupts = <GIC_SPI 179 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&cpg CPG_MOD 817>;
+                       power-domains = <&sysc R8A779A0_PD_ALWAYS_ON>;
+                       resets = <&cpg 817>;
+                       renesas,id = <19>;
+                       status = "disabled";
+
+                       ports {
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+
+                               port@2 {
+                                       #address-cells = <1>;
+                                       #size-cells = <0>;
+
+                                       reg = <2>;
+
+                                       vin19isp2: endpoint@2 {
+                                               reg = <2>;
+                                               remote-endpoint = <&isp2vin19>;
+                                       };
+                               };
+                       };
+               };
+
+               vin20: video@e6ed4000 {
+                       compatible = "renesas,vin-r8a779a0";
+                       reg = <0 0xe6ed4000 0 0x1000>;
+                       interrupts = <GIC_SPI 180 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&cpg CPG_MOD 818>;
+                       power-domains = <&sysc R8A779A0_PD_ALWAYS_ON>;
+                       resets = <&cpg 818>;
+                       renesas,id = <20>;
+                       status = "disabled";
+
+                       ports {
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+
+                               port@2 {
+                                       #address-cells = <1>;
+                                       #size-cells = <0>;
+
+                                       reg = <2>;
+
+                                       vin20isp2: endpoint@2 {
+                                               reg = <2>;
+                                               remote-endpoint = <&isp2vin20>;
+                                       };
+                               };
+                       };
+               };
+
+               vin21: video@e6ed5000 {
+                       compatible = "renesas,vin-r8a779a0";
+                       reg = <0 0xe6ed5000 0 0x1000>;
+                       interrupts = <GIC_SPI 181 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&cpg CPG_MOD 819>;
+                       power-domains = <&sysc R8A779A0_PD_ALWAYS_ON>;
+                       resets = <&cpg 819>;
+                       renesas,id = <21>;
+                       status = "disabled";
+
+                       ports {
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+
+                               port@2 {
+                                       #address-cells = <1>;
+                                       #size-cells = <0>;
+
+                                       reg = <2>;
+
+                                       vin21isp2: endpoint@2 {
+                                               reg = <2>;
+                                               remote-endpoint = <&isp2vin21>;
+                                       };
+                               };
+                       };
+               };
+
+               vin22: video@e6ed6000 {
+                       compatible = "renesas,vin-r8a779a0";
+                       reg = <0 0xe6ed6000 0 0x1000>;
+                       interrupts = <GIC_SPI 182 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&cpg CPG_MOD 820>;
+                       power-domains = <&sysc R8A779A0_PD_ALWAYS_ON>;
+                       resets = <&cpg 820>;
+                       renesas,id = <22>;
+                       status = "disabled";
+
+                       ports {
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+
+                               port@2 {
+                                       #address-cells = <1>;
+                                       #size-cells = <0>;
+
+                                       reg = <2>;
+
+                                       vin22isp2: endpoint@2 {
+                                               reg = <2>;
+                                               remote-endpoint = <&isp2vin22>;
+                                       };
+                               };
+                       };
+               };
+
+               vin23: video@e6ed7000 {
+                       compatible = "renesas,vin-r8a779a0";
+                       reg = <0 0xe6ed7000 0 0x1000>;
+                       interrupts = <GIC_SPI 183 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&cpg CPG_MOD 821>;
+                       power-domains = <&sysc R8A779A0_PD_ALWAYS_ON>;
+                       resets = <&cpg 821>;
+                       renesas,id = <23>;
+                       status = "disabled";
+
+                       ports {
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+
+                               port@2 {
+                                       #address-cells = <1>;
+                                       #size-cells = <0>;
+
+                                       reg = <2>;
+
+                                       vin23isp2: endpoint@2 {
+                                               reg = <2>;
+                                               remote-endpoint = <&isp2vin23>;
+                                       };
+                               };
+                       };
+               };
+
+               vin24: video@e6ed8000 {
+                       compatible = "renesas,vin-r8a779a0";
+                       reg = <0 0xe6ed8000 0 0x1000>;
+                       interrupts = <GIC_SPI 184 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&cpg CPG_MOD 822>;
+                       power-domains = <&sysc R8A779A0_PD_ALWAYS_ON>;
+                       resets = <&cpg 822>;
+                       renesas,id = <24>;
+                       status = "disabled";
+
+                       ports {
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+
+                               port@2 {
+                                       #address-cells = <1>;
+                                       #size-cells = <0>;
+
+                                       reg = <2>;
+
+                                       vin24isp3: endpoint@3 {
+                                               reg = <3>;
+                                               remote-endpoint = <&isp3vin24>;
+                                       };
+                               };
+                       };
+               };
+
+               vin25: video@e6ed9000 {
+                       compatible = "renesas,vin-r8a779a0";
+                       reg = <0 0xe6ed9000 0 0x1000>;
+                       interrupts = <GIC_SPI 185 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&cpg CPG_MOD 823>;
+                       power-domains = <&sysc R8A779A0_PD_ALWAYS_ON>;
+                       resets = <&cpg 823>;
+                       renesas,id = <25>;
+                       status = "disabled";
+
+                       ports {
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+
+                               port@2 {
+                                       #address-cells = <1>;
+                                       #size-cells = <0>;
+
+                                       reg = <2>;
+
+                                       vin25isp3: endpoint@3 {
+                                               reg = <3>;
+                                               remote-endpoint = <&isp3vin25>;
+                                       };
+                               };
+                       };
+               };
+
+               vin26: video@e6eda000 {
+                       compatible = "renesas,vin-r8a779a0";
+                       reg = <0 0xe6eda000 0 0x1000>;
+                       interrupts = <GIC_SPI 186 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&cpg CPG_MOD 824>;
+                       power-domains = <&sysc R8A779A0_PD_ALWAYS_ON>;
+                       resets = <&cpg 824>;
+                       renesas,id = <26>;
+                       status = "disabled";
+
+                       ports {
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+
+                               port@2 {
+                                       #address-cells = <1>;
+                                       #size-cells = <0>;
+
+                                       reg = <2>;
+
+                                       vin26isp3: endpoint@3 {
+                                               reg = <3>;
+                                               remote-endpoint = <&isp3vin26>;
+                                       };
+                               };
+                       };
+               };
+
+               vin27: video@e6edb000 {
+                       compatible = "renesas,vin-r8a779a0";
+                       reg = <0 0xe6edb000 0 0x1000>;
+                       interrupts = <GIC_SPI 187 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&cpg CPG_MOD 825>;
+                       power-domains = <&sysc R8A779A0_PD_ALWAYS_ON>;
+                       resets = <&cpg 825>;
+                       renesas,id = <27>;
+                       status = "disabled";
+
+                       ports {
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+
+                               port@2 {
+                                       #address-cells = <1>;
+                                       #size-cells = <0>;
+
+                                       reg = <2>;
+
+                                       vin27isp3: endpoint@3 {
+                                               reg = <3>;
+                                               remote-endpoint = <&isp3vin27>;
+                                       };
+                               };
+                       };
+               };
+
+               vin28: video@e6edc000 {
+                       compatible = "renesas,vin-r8a779a0";
+                       reg = <0 0xe6edc000 0 0x1000>;
+                       interrupts = <GIC_SPI 188 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&cpg CPG_MOD 826>;
+                       power-domains = <&sysc R8A779A0_PD_ALWAYS_ON>;
+                       resets = <&cpg 826>;
+                       renesas,id = <28>;
+                       status = "disabled";
+
+                       ports {
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+
+                               port@2 {
+                                       #address-cells = <1>;
+                                       #size-cells = <0>;
+
+                                       reg = <2>;
+
+                                       vin28isp3: endpoint@3 {
+                                               reg = <3>;
+                                               remote-endpoint = <&isp3vin28>;
+                                       };
+                               };
+                       };
+               };
+
+               vin29: video@e6edd000 {
+                       compatible = "renesas,vin-r8a779a0";
+                       reg = <0 0xe6edd000 0 0x1000>;
+                       interrupts = <GIC_SPI 189 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&cpg CPG_MOD 827>;
+                       power-domains = <&sysc R8A779A0_PD_ALWAYS_ON>;
+                       resets = <&cpg 827>;
+                       renesas,id = <29>;
+                       status = "disabled";
+
+                       ports {
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+
+                               port@2 {
+                                       #address-cells = <1>;
+                                       #size-cells = <0>;
+
+                                       reg = <2>;
+
+                                       vin29isp3: endpoint@3 {
+                                               reg = <3>;
+                                               remote-endpoint = <&isp3vin29>;
+                                       };
+                               };
+                       };
+               };
+
+               vin30: video@e6ede000 {
+                       compatible = "renesas,vin-r8a779a0";
+                       reg = <0 0xe6ede000 0 0x1000>;
+                       interrupts = <GIC_SPI 190 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&cpg CPG_MOD 828>;
+                       power-domains = <&sysc R8A779A0_PD_ALWAYS_ON>;
+                       resets = <&cpg 828>;
+                       renesas,id = <30>;
+                       status = "disabled";
+
+                       ports {
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+
+                               port@2 {
+                                       #address-cells = <1>;
+                                       #size-cells = <0>;
+
+                                       reg = <2>;
+
+                                       vin30isp3: endpoint@3 {
+                                               reg = <3>;
+                                               remote-endpoint = <&isp3vin30>;
+                                       };
+                               };
+                       };
+               };
+
+               vin31: video@e6edf000 {
+                       compatible = "renesas,vin-r8a779a0";
+                       reg = <0 0xe6edf000 0 0x1000>;
+                       interrupts = <GIC_SPI 191 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&cpg CPG_MOD 829>;
+                       power-domains = <&sysc R8A779A0_PD_ALWAYS_ON>;
+                       resets = <&cpg 829>;
+                       renesas,id = <31>;
+                       status = "disabled";
+
+                       ports {
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+
+                               port@2 {
+                                       #address-cells = <1>;
+                                       #size-cells = <0>;
+
+                                       reg = <2>;
+
+                                       vin31isp3: endpoint@3 {
+                                               reg = <3>;
+                                               remote-endpoint = <&isp3vin31>;
+                                       };
+                               };
+                       };
+               };
+
                dmac1: dma-controller@e7350000 {
                        compatible = "renesas,dmac-r8a779a0";
                        reg = <0 0xe7350000 0 0x1000>,
                        power-domains = <&sysc R8A779A0_PD_ALWAYS_ON>;
                        resets = <&cpg 706>;
                        max-frequency = <200000000>;
+                       iommus = <&ipmmu_ds0 32>;
                        status = "disabled";
                };
 
+               rpc: spi@ee200000 {
+                       compatible = "renesas,r8a779a0-rpc-if",
+                                    "renesas,rcar-gen3-rpc-if";
+                       reg = <0 0xee200000 0 0x200>,
+                             <0 0x08000000 0 0x04000000>,
+                             <0 0xee208000 0 0x100>;
+                       reg-names = "regs", "dirmap", "wbuf";
+                       interrupts = <GIC_SPI 135 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&cpg CPG_MOD 629>;
+                       clock-names = "rpc";
+                       power-domains = <&sysc R8A779A0_PD_ALWAYS_ON>;
+                       resets = <&cpg 629>;
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       status = "disabled";
+               };
+
+               ipmmu_rt0: iommu@ee480000 {
+                       compatible = "renesas,ipmmu-r8a779a0";
+                       reg = <0 0xee480000 0 0x20000>;
+                       renesas,ipmmu-main = <&ipmmu_mm 10>;
+                       power-domains = <&sysc R8A779A0_PD_ALWAYS_ON>;
+                       #iommu-cells = <1>;
+               };
+
+               ipmmu_rt1: iommu@ee4c0000 {
+                       compatible = "renesas,ipmmu-r8a779a0";
+                       reg = <0 0xee4c0000 0 0x20000>;
+                       renesas,ipmmu-main = <&ipmmu_mm 19>;
+                       power-domains = <&sysc R8A779A0_PD_ALWAYS_ON>;
+                       #iommu-cells = <1>;
+               };
+
+               ipmmu_ds0: iommu@eed00000 {
+                       compatible = "renesas,ipmmu-r8a779a0";
+                       reg = <0 0xeed00000 0 0x20000>;
+                       renesas,ipmmu-main = <&ipmmu_mm 0>;
+                       power-domains = <&sysc R8A779A0_PD_ALWAYS_ON>;
+                       #iommu-cells = <1>;
+               };
+
+               ipmmu_ds1: iommu@eed40000 {
+                       compatible = "renesas,ipmmu-r8a779a0";
+                       reg = <0 0xeed40000 0 0x20000>;
+                       renesas,ipmmu-main = <&ipmmu_mm 1>;
+                       power-domains = <&sysc R8A779A0_PD_ALWAYS_ON>;
+                       #iommu-cells = <1>;
+               };
+
+               ipmmu_ir: iommu@eed80000 {
+                       compatible = "renesas,ipmmu-r8a779a0";
+                       reg = <0 0xeed80000 0 0x20000>;
+                       renesas,ipmmu-main = <&ipmmu_mm 3>;
+                       power-domains = <&sysc R8A779A0_PD_A3IR>;
+                       #iommu-cells = <1>;
+               };
+
+               ipmmu_vc0: iommu@eedc0000 {
+                       compatible = "renesas,ipmmu-r8a779a0";
+                       reg = <0 0xeedc0000 0 0x20000>;
+                       renesas,ipmmu-main = <&ipmmu_mm 12>;
+                       power-domains = <&sysc R8A779A0_PD_ALWAYS_ON>;
+                       #iommu-cells = <1>;
+               };
+
+               ipmmu_vi0: iommu@eee80000 {
+                       compatible = "renesas,ipmmu-r8a779a0";
+                       reg = <0 0xeee80000 0 0x20000>;
+                       renesas,ipmmu-main = <&ipmmu_mm 14>;
+                       power-domains = <&sysc R8A779A0_PD_ALWAYS_ON>;
+                       #iommu-cells = <1>;
+               };
+
+               ipmmu_vi1: iommu@eeec0000 {
+                       compatible = "renesas,ipmmu-r8a779a0";
+                       reg = <0 0xeeec0000 0 0x20000>;
+                       renesas,ipmmu-main = <&ipmmu_mm 15>;
+                       power-domains = <&sysc R8A779A0_PD_ALWAYS_ON>;
+                       #iommu-cells = <1>;
+               };
+
+               ipmmu_3dg: iommu@eee00000 {
+                       compatible = "renesas,ipmmu-r8a779a0";
+                       reg = <0 0xeee00000 0 0x20000>;
+                       renesas,ipmmu-main = <&ipmmu_mm 6>;
+                       power-domains = <&sysc R8A779A0_PD_ALWAYS_ON>;
+                       #iommu-cells = <1>;
+               };
+
+               ipmmu_vip0: iommu@eef00000 {
+                       compatible = "renesas,ipmmu-r8a779a0";
+                       reg = <0 0xeef00000 0 0x20000>;
+                       renesas,ipmmu-main = <&ipmmu_mm 5>;
+                       power-domains = <&sysc R8A779A0_PD_ALWAYS_ON>;
+                       #iommu-cells = <1>;
+               };
+
+               ipmmu_vip1: iommu@eef40000 {
+                       compatible = "renesas,ipmmu-r8a779a0";
+                       reg = <0 0xeef40000 0 0x20000>;
+                       renesas,ipmmu-main = <&ipmmu_mm 11>;
+                       power-domains = <&sysc R8A779A0_PD_ALWAYS_ON>;
+                       #iommu-cells = <1>;
+               };
+
+               ipmmu_mm: iommu@eefc0000 {
+                       compatible = "renesas,ipmmu-r8a779a0";
+                       reg = <0 0xeefc0000 0 0x20000>;
+                       interrupts = <GIC_SPI 21 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 22 IRQ_TYPE_LEVEL_HIGH>;
+                       power-domains = <&sysc R8A779A0_PD_ALWAYS_ON>;
+                       #iommu-cells = <1>;
+               };
+
                gic: interrupt-controller@f1000000 {
                        compatible = "arm,gic-v3";
                        #interrupt-cells = <3>;
                        renesas,fcp = <&fcpvd1>;
                };
 
+               csi40: csi2@feaa0000 {
+                       compatible = "renesas,r8a779a0-csi2";
+                       reg = <0 0xfeaa0000 0 0x10000>;
+                       interrupts = <GIC_SPI 192 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&cpg CPG_MOD 331>;
+                       power-domains = <&sysc R8A779A0_PD_ALWAYS_ON>;
+                       resets = <&cpg 331>;
+                       status = "disabled";
+
+                       ports {
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+
+                               port@0 {
+                                       reg = <0>;
+                               };
+
+                               port@1 {
+                                       reg = <1>;
+                                       csi40isp0: endpoint {
+                                               remote-endpoint = <&isp0csi40>;
+                                       };
+                               };
+                       };
+               };
+
+               csi41: csi2@feab0000 {
+                       compatible = "renesas,r8a779a0-csi2";
+                       reg = <0 0xfeab0000 0 0x10000>;
+                       interrupts = <GIC_SPI 193 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&cpg CPG_MOD 400>;
+                       power-domains = <&sysc R8A779A0_PD_ALWAYS_ON>;
+                       resets = <&cpg 400>;
+                       status = "disabled";
+
+                       ports {
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+
+                               port@0 {
+                                       reg = <0>;
+                               };
+
+                               port@1 {
+                                       reg = <1>;
+                                       csi41isp1: endpoint {
+                                               remote-endpoint = <&isp1csi41>;
+                                       };
+                               };
+                       };
+               };
+
+               csi42: csi2@fed60000 {
+                       compatible = "renesas,r8a779a0-csi2";
+                       reg = <0 0xfed60000 0 0x10000>;
+                       interrupts = <GIC_SPI 194 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&cpg CPG_MOD 401>;
+                       power-domains = <&sysc R8A779A0_PD_ALWAYS_ON>;
+                       resets = <&cpg 401>;
+                       status = "disabled";
+
+                       ports {
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+
+                               port@0 {
+                                       reg = <0>;
+                               };
+
+                               port@1 {
+                                       reg = <1>;
+                                       csi42isp2: endpoint {
+                                               remote-endpoint = <&isp2csi42>;
+                                       };
+                               };
+                       };
+               };
+
+               csi43: csi2@fed70000 {
+                       compatible = "renesas,r8a779a0-csi2";
+                       reg = <0 0xfed70000 0 0x10000>;
+                       interrupts = <GIC_SPI 195 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&cpg CPG_MOD 402>;
+                       power-domains = <&sysc R8A779A0_PD_ALWAYS_ON>;
+                       resets = <&cpg 402>;
+                       status = "disabled";
+
+                       ports {
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+
+                               port@0 {
+                                       reg = <0>;
+                               };
+
+                               port@1 {
+                                       reg = <1>;
+                                       csi43isp3: endpoint {
+                                               remote-endpoint = <&isp3csi43>;
+                                       };
+                               };
+                       };
+               };
+
+               isp0: isp@fed00000 {
+                       compatible = "renesas,r8a779a0-isp";
+                       reg = <0 0xfed00000 0 0x10000>;
+                       interrupts = <GIC_SPI 153 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&cpg CPG_MOD 612>;
+                       power-domains = <&sysc R8A779A0_PD_A3ISP01>;
+                       resets = <&cpg 612>;
+                       status = "disabled";
+
+                       ports {
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+
+                               port@0 {
+                                       #address-cells = <1>;
+                                       #size-cells = <0>;
+
+                                       reg = <0>;
+
+                                       isp0csi40: endpoint@0 {
+                                               reg = <0>;
+                                               remote-endpoint = <&csi40isp0>;
+                                       };
+                               };
+
+                               port@1 {
+                                       reg = <1>;
+                                       isp0vin00: endpoint {
+                                               remote-endpoint = <&vin00isp0>;
+                                       };
+                               };
+
+                               port@2 {
+                                       reg = <2>;
+                                       isp0vin01: endpoint {
+                                               remote-endpoint = <&vin01isp0>;
+                                       };
+                               };
+
+                               port@3 {
+                                       reg = <3>;
+                                       isp0vin02: endpoint {
+                                               remote-endpoint = <&vin02isp0>;
+                                       };
+                               };
+
+                               port@4 {
+                                       reg = <4>;
+                                       isp0vin03: endpoint {
+                                               remote-endpoint = <&vin03isp0>;
+                                       };
+                               };
+
+                               port@5 {
+                                       reg = <5>;
+                                       isp0vin04: endpoint {
+                                               remote-endpoint = <&vin04isp0>;
+                                       };
+                               };
+
+                               port@6 {
+                                       reg = <6>;
+                                       isp0vin05: endpoint {
+                                               remote-endpoint = <&vin05isp0>;
+                                       };
+                               };
+
+                               port@7 {
+                                       reg = <7>;
+                                       isp0vin06: endpoint {
+                                               remote-endpoint = <&vin06isp0>;
+                                       };
+                               };
+
+                               port@8 {
+                                       reg = <8>;
+                                       isp0vin07: endpoint {
+                                               remote-endpoint = <&vin07isp0>;
+                                       };
+                               };
+                       };
+               };
+
+               isp1: isp@fed20000 {
+                       compatible = "renesas,r8a779a0-isp";
+                       reg = <0 0xfed20000 0 0x10000>;
+                       interrupts = <GIC_SPI 155 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&cpg CPG_MOD 613>;
+                       power-domains = <&sysc R8A779A0_PD_A3ISP01>;
+                       resets = <&cpg 613>;
+                       status = "disabled";
+
+                       ports {
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+
+                               port@0 {
+                                       #address-cells = <1>;
+                                       #size-cells = <0>;
+
+                                       reg = <0>;
+
+                                       isp1csi41: endpoint@1 {
+                                               reg = <1>;
+                                               remote-endpoint = <&csi41isp1>;
+                                       };
+                               };
+
+                               port@1 {
+                                       reg = <1>;
+                                       isp1vin08: endpoint {
+                                               remote-endpoint = <&vin08isp1>;
+                                       };
+                               };
+
+                               port@2 {
+                                       reg = <2>;
+                                       isp1vin09: endpoint {
+                                               remote-endpoint = <&vin09isp1>;
+                                       };
+                               };
+
+                               port@3 {
+                                       reg = <3>;
+                                       isp1vin10: endpoint {
+                                               remote-endpoint = <&vin10isp1>;
+                                       };
+                               };
+
+                               port@4 {
+                                       reg = <4>;
+                                       isp1vin11: endpoint {
+                                               remote-endpoint = <&vin11isp1>;
+                                       };
+                               };
+
+                               port@5 {
+                                       reg = <5>;
+                                       isp1vin12: endpoint {
+                                               remote-endpoint = <&vin12isp1>;
+                                       };
+                               };
+
+                               port@6 {
+                                       reg = <6>;
+                                       isp1vin13: endpoint {
+                                               remote-endpoint = <&vin13isp1>;
+                                       };
+                               };
+
+                               port@7 {
+                                       reg = <7>;
+                                       isp1vin14: endpoint {
+                                               remote-endpoint = <&vin14isp1>;
+                                       };
+                               };
+
+                               port@8 {
+                                       reg = <8>;
+                                       isp1vin15: endpoint {
+                                               remote-endpoint = <&vin15isp1>;
+                                       };
+                               };
+                       };
+               };
+
+               isp2: isp@fed30000 {
+                       compatible = "renesas,r8a779a0-isp";
+                       reg = <0 0xfed30000 0 0x10000>;
+                       interrupts = <GIC_SPI 157 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&cpg CPG_MOD 614>;
+                       power-domains = <&sysc R8A779A0_PD_A3ISP23>;
+                       resets = <&cpg 614>;
+                       status = "disabled";
+
+                       ports {
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+
+                               port@0 {
+                                       #address-cells = <1>;
+                                       #size-cells = <0>;
+
+                                       reg = <0>;
+
+                                       isp2csi42: endpoint@0 {
+                                               reg = <0>;
+                                               remote-endpoint = <&csi42isp2>;
+                                       };
+                               };
+
+                               port@1 {
+                                       reg = <1>;
+                                       isp2vin16: endpoint {
+                                               remote-endpoint = <&vin16isp2>;
+                                       };
+                               };
+
+                               port@2 {
+                                       reg = <2>;
+                                       isp2vin17: endpoint {
+                                               remote-endpoint = <&vin17isp2>;
+                                       };
+                               };
+
+                               port@3 {
+                                       reg = <3>;
+                                       isp2vin18: endpoint {
+                                               remote-endpoint = <&vin18isp2>;
+                                       };
+                               };
+
+                               port@4 {
+                                       reg = <4>;
+                                       isp2vin19: endpoint {
+                                               remote-endpoint = <&vin19isp2>;
+                                       };
+                               };
+
+                               port@5 {
+                                       reg = <5>;
+                                       isp2vin20: endpoint {
+                                               remote-endpoint = <&vin20isp2>;
+                                       };
+                               };
+
+                               port@6 {
+                                       reg = <6>;
+                                       isp2vin21: endpoint {
+                                               remote-endpoint = <&vin21isp2>;
+                                       };
+                               };
+
+                               port@7 {
+                                       reg = <7>;
+                                       isp2vin22: endpoint {
+                                               remote-endpoint = <&vin22isp2>;
+                                       };
+                               };
+
+                               port@8 {
+                                       reg = <8>;
+                                       isp2vin23: endpoint {
+                                               remote-endpoint = <&vin23isp2>;
+                                       };
+                               };
+                       };
+               };
+
+               isp3: isp@fed40000 {
+                       compatible = "renesas,r8a779a0-isp";
+                       reg = <0 0xfed40000 0 0x10000>;
+                       interrupts = <GIC_SPI 159 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&cpg CPG_MOD 615>;
+                       power-domains = <&sysc R8A779A0_PD_A3ISP23>;
+                       resets = <&cpg 615>;
+                       status = "disabled";
+
+                       ports {
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+
+                               port@0 {
+                                       #address-cells = <1>;
+                                       #size-cells = <0>;
+
+                                       reg = <0>;
+
+                                       isp3csi43: endpoint@1 {
+                                               reg = <1>;
+                                               remote-endpoint = <&csi43isp3>;
+                                       };
+                               };
+
+                               port@1 {
+                                       reg = <1>;
+                                       isp3vin24: endpoint {
+                                               remote-endpoint = <&vin24isp3>;
+                                       };
+                               };
+
+                               port@2 {
+                                       reg = <2>;
+                                       isp3vin25: endpoint {
+                                               remote-endpoint = <&vin25isp3>;
+                                       };
+                               };
+
+                               port@3 {
+                                       reg = <3>;
+                                       isp3vin26: endpoint {
+                                               remote-endpoint = <&vin26isp3>;
+                                       };
+                               };
+
+                               port@4 {
+                                       reg = <4>;
+                                       isp3vin27: endpoint {
+                                               remote-endpoint = <&vin27isp3>;
+                                       };
+                               };
+
+                               port@5 {
+                                       reg = <5>;
+                                       isp3vin28: endpoint {
+                                               remote-endpoint = <&vin28isp3>;
+                                       };
+                               };
+
+                               port@6 {
+                                       reg = <6>;
+                                       isp3vin29: endpoint {
+                                               remote-endpoint = <&vin29isp3>;
+                                       };
+                               };
+
+                               port@7 {
+                                       reg = <7>;
+                                       isp3vin30: endpoint {
+                                               remote-endpoint = <&vin30isp3>;
+                                       };
+                               };
+
+                               port@8 {
+                                       reg = <8>;
+                                       isp3vin31: endpoint {
+                                               remote-endpoint = <&vin31isp3>;
+                                       };
+                               };
+                       };
+               };
+
                prr: chipid@fff00044 {
                        compatible = "renesas,prr";
                        reg = <0 0xfff00044 0 4>;
diff --git a/arch/arm64/boot/dts/renesas/r8a779m0.dtsi b/arch/arm64/boot/dts/renesas/r8a779m0.dtsi
new file mode 100644 (file)
index 0000000..6fb1979
--- /dev/null
@@ -0,0 +1,12 @@
+// SPDX-License-Identifier: (GPL-2.0 or MIT)
+/*
+ * Device Tree Source for the R-Car H3e (R8A779M0) SoC
+ *
+ * Copyright (C) 2021 Glider bv
+ */
+
+#include "r8a77951.dtsi"
+
+/ {
+       compatible = "renesas,r8a779m0", "renesas,r8a7795";
+};
index 0e9b044..b6e855f 100644 (file)
 / {
        compatible = "renesas,r8a779m1", "renesas,r8a7795";
 };
+
+&cluster0_opp {
+       opp-2000000000 {
+               opp-hz = /bits/ 64 <2000000000>;
+               opp-microvolt = <960000>;
+               clock-latency-ns = <300000>;
+               turbo-mode;
+       };
+};
diff --git a/arch/arm64/boot/dts/renesas/r8a779m2.dtsi b/arch/arm64/boot/dts/renesas/r8a779m2.dtsi
new file mode 100644 (file)
index 0000000..3246273
--- /dev/null
@@ -0,0 +1,12 @@
+// SPDX-License-Identifier: (GPL-2.0 or MIT)
+/*
+ * Device Tree Source for the R-Car M3e (R8A779M2) SoC
+ *
+ * Copyright (C) 2021 Glider bv
+ */
+
+#include "r8a77961.dtsi"
+
+/ {
+       compatible = "renesas,r8a779m2", "renesas,r8a77961";
+};
index 65bb618..6cff38a 100644 (file)
 / {
        compatible = "renesas,r8a779m3", "renesas,r8a77961";
 };
+
+&cluster0_opp {
+       opp-2000000000 {
+               opp-hz = /bits/ 64 <2000000000>;
+               opp-microvolt = <960000>;
+               clock-latency-ns = <300000>;
+               turbo-mode;
+       };
+};
diff --git a/arch/arm64/boot/dts/renesas/r8a779m4.dtsi b/arch/arm64/boot/dts/renesas/r8a779m4.dtsi
new file mode 100644 (file)
index 0000000..d7fbb6c
--- /dev/null
@@ -0,0 +1,12 @@
+// SPDX-License-Identifier: (GPL-2.0 or MIT)
+/*
+ * Device Tree Source for the R-Car M3Ne (R8A779M4) SoC
+ *
+ * Copyright (C) 2021 Glider bv
+ */
+
+#include "r8a77965.dtsi"
+
+/ {
+       compatible = "renesas,r8a779m4", "renesas,r8a77965";
+};
diff --git a/arch/arm64/boot/dts/renesas/r8a779m5-salvator-xs.dts b/arch/arm64/boot/dts/renesas/r8a779m5-salvator-xs.dts
new file mode 100644 (file)
index 0000000..c0341a8
--- /dev/null
@@ -0,0 +1,36 @@
+// SPDX-License-Identifier: (GPL-2.0 or MIT)
+/*
+ * Device Tree Source for the Salvator-X 2nd version board with R-Car M3Ne-2G
+ *
+ * Copyright (C) 2021 Glider bv
+ *
+ * Based on r8a77965-salvator-xs.dts
+ * Copyright (C) 2017 Renesas Electronics Corp.
+ */
+
+/dts-v1/;
+#include "r8a779m5.dtsi"
+#include "salvator-xs.dtsi"
+
+/ {
+       model = "Renesas Salvator-X 2nd version board based on r8a779m5";
+       compatible = "renesas,salvator-xs", "renesas,r8a779m5",
+                    "renesas,r8a77965";
+
+       memory@48000000 {
+               device_type = "memory";
+               /* first 128MB is reserved for secure area. */
+               reg = <0x0 0x48000000 0x0 0x78000000>;
+       };
+};
+
+&du {
+       clocks = <&cpg CPG_MOD 724>,
+                <&cpg CPG_MOD 723>,
+                <&cpg CPG_MOD 721>,
+                <&versaclock6 1>,
+                <&x21_clk>,
+                <&versaclock6 2>;
+       clock-names = "du.0", "du.1", "du.3",
+                     "dclkin.0", "dclkin.1", "dclkin.3";
+};
diff --git a/arch/arm64/boot/dts/renesas/r8a779m5.dtsi b/arch/arm64/boot/dts/renesas/r8a779m5.dtsi
new file mode 100644 (file)
index 0000000..8c9c055
--- /dev/null
@@ -0,0 +1,21 @@
+// SPDX-License-Identifier: (GPL-2.0 or MIT)
+/*
+ * Device Tree Source for the R-Car M3Ne-2G (R8A779M5) SoC
+ *
+ * Copyright (C) 2021 Glider bv
+ */
+
+#include "r8a77965.dtsi"
+
+/ {
+       compatible = "renesas,r8a779m5", "renesas,r8a77965";
+};
+
+&cluster0_opp {
+       opp-2000000000 {
+               opp-hz = /bits/ 64 <2000000000>;
+               opp-microvolt = <960000>;
+               clock-latency-ns = <300000>;
+               turbo-mode;
+       };
+};
diff --git a/arch/arm64/boot/dts/renesas/r8a779m6.dtsi b/arch/arm64/boot/dts/renesas/r8a779m6.dtsi
new file mode 100644 (file)
index 0000000..afe3cab
--- /dev/null
@@ -0,0 +1,12 @@
+// SPDX-License-Identifier: (GPL-2.0 or MIT)
+/*
+ * Device Tree Source for the R-Car E3e (R8A779M6) SoC
+ *
+ * Copyright (C) 2021 Glider bv
+ */
+
+#include "r8a77990.dtsi"
+
+/ {
+       compatible = "renesas,r8a779m6", "renesas,r8a77990";
+};
diff --git a/arch/arm64/boot/dts/renesas/r8a779m7.dtsi b/arch/arm64/boot/dts/renesas/r8a779m7.dtsi
new file mode 100644 (file)
index 0000000..4958bab
--- /dev/null
@@ -0,0 +1,12 @@
+// SPDX-License-Identifier: (GPL-2.0 or MIT)
+/*
+ * Device Tree Source for the R-Car D3e (R8A779M7) SoC
+ *
+ * Copyright (C) 2021 Glider bv
+ */
+
+#include "r8a77995.dtsi"
+
+/ {
+       compatible = "renesas,r8a779m7", "renesas,r8a77995";
+};
diff --git a/arch/arm64/boot/dts/renesas/r8a779m8.dtsi b/arch/arm64/boot/dts/renesas/r8a779m8.dtsi
new file mode 100644 (file)
index 0000000..752440b
--- /dev/null
@@ -0,0 +1,12 @@
+// SPDX-License-Identifier: (GPL-2.0 or MIT)
+/*
+ * Device Tree Source for the R-Car H3Ne (R8A779M8) SoC
+ *
+ * Copyright (C) 2021 Glider bv
+ */
+
+#include "r8a77951.dtsi"
+
+/ {
+       compatible = "renesas,r8a779m8", "renesas,r8a7795";
+};
index 5f3bc28..485ef5f 100644 (file)
        #address-cells = <2>;
        #size-cells = <2>;
 
+       audio_clk1: audio_clk1 {
+               compatible = "fixed-clock";
+               #clock-cells = <0>;
+               /* This value must be overridden by boards that provide it */
+               clock-frequency = <0>;
+       };
+
+       audio_clk2: audio_clk2 {
+               compatible = "fixed-clock";
+               #clock-cells = <0>;
+               /* This value must be overridden by boards that provide it */
+               clock-frequency = <0>;
+       };
+
        /* External CAN clock - to be overridden by boards that provide it */
        can_clk: can {
                compatible = "fixed-clock";
                #size-cells = <2>;
                ranges;
 
+               ssi0: ssi@10049c00 {
+                       compatible = "renesas,r9a07g044-ssi",
+                                    "renesas,rz-ssi";
+                       reg = <0 0x10049c00 0 0x400>;
+                       interrupts = <GIC_SPI 326 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 327 IRQ_TYPE_EDGE_RISING>,
+                                    <GIC_SPI 328 IRQ_TYPE_EDGE_RISING>,
+                                    <GIC_SPI 329 IRQ_TYPE_EDGE_RISING>;
+                       interrupt-names = "int_req", "dma_rx", "dma_tx", "dma_rt";
+                       clocks = <&cpg CPG_MOD R9A07G044_SSI0_PCLK2>,
+                                <&cpg CPG_MOD R9A07G044_SSI0_PCLK_SFR>,
+                                <&audio_clk1>, <&audio_clk2>;
+                       clock-names = "ssi", "ssi_sfr", "audio_clk1", "audio_clk2";
+                       resets = <&cpg R9A07G044_SSI0_RST_M2_REG>;
+                       dmas = <&dmac 0x2655>, <&dmac 0x2656>;
+                       dma-names = "tx", "rx";
+                       power-domains = <&cpg>;
+                       #sound-dai-cells = <0>;
+                       status = "disabled";
+               };
+
+               ssi1: ssi@1004a000 {
+                       compatible = "renesas,r9a07g044-ssi",
+                                    "renesas,rz-ssi";
+                       reg = <0 0x1004a000 0 0x400>;
+                       interrupts = <GIC_SPI 330 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 331 IRQ_TYPE_EDGE_RISING>,
+                                    <GIC_SPI 332 IRQ_TYPE_EDGE_RISING>,
+                                    <GIC_SPI 333 IRQ_TYPE_EDGE_RISING>;
+                       interrupt-names = "int_req", "dma_rx", "dma_tx", "dma_rt";
+                       clocks = <&cpg CPG_MOD R9A07G044_SSI1_PCLK2>,
+                                <&cpg CPG_MOD R9A07G044_SSI1_PCLK_SFR>,
+                                <&audio_clk1>, <&audio_clk2>;
+                       clock-names = "ssi", "ssi_sfr", "audio_clk1", "audio_clk2";
+                       resets = <&cpg R9A07G044_SSI1_RST_M2_REG>;
+                       dmas = <&dmac 0x2659>, <&dmac 0x265a>;
+                       dma-names = "tx", "rx";
+                       power-domains = <&cpg>;
+                       #sound-dai-cells = <0>;
+                       status = "disabled";
+               };
+
+               ssi2: ssi@1004a400 {
+                       compatible = "renesas,r9a07g044-ssi",
+                                    "renesas,rz-ssi";
+                       reg = <0 0x1004a400 0 0x400>;
+                       interrupts = <GIC_SPI 334 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 335 IRQ_TYPE_EDGE_RISING>,
+                                    <GIC_SPI 336 IRQ_TYPE_EDGE_RISING>,
+                                    <GIC_SPI 337 IRQ_TYPE_EDGE_RISING>;
+                       interrupt-names = "int_req", "dma_rx", "dma_tx", "dma_rt";
+                       clocks = <&cpg CPG_MOD R9A07G044_SSI2_PCLK2>,
+                                <&cpg CPG_MOD R9A07G044_SSI2_PCLK_SFR>,
+                                <&audio_clk1>, <&audio_clk2>;
+                       clock-names = "ssi", "ssi_sfr", "audio_clk1", "audio_clk2";
+                       resets = <&cpg R9A07G044_SSI2_RST_M2_REG>;
+                       dmas = <&dmac 0x265f>;
+                       dma-names = "rt";
+                       power-domains = <&cpg>;
+                       #sound-dai-cells = <0>;
+                       status = "disabled";
+               };
+
+               ssi3: ssi@1004a800 {
+                       compatible = "renesas,r9a07g044-ssi",
+                                    "renesas,rz-ssi";
+                       reg = <0 0x1004a800 0 0x400>;
+                       interrupts = <GIC_SPI 338 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 339 IRQ_TYPE_EDGE_RISING>,
+                                    <GIC_SPI 340 IRQ_TYPE_EDGE_RISING>,
+                                    <GIC_SPI 341 IRQ_TYPE_EDGE_RISING>;
+                       interrupt-names = "int_req", "dma_rx", "dma_tx", "dma_rt";
+                       clocks = <&cpg CPG_MOD R9A07G044_SSI3_PCLK2>,
+                                <&cpg CPG_MOD R9A07G044_SSI3_PCLK_SFR>,
+                                <&audio_clk1>, <&audio_clk2>;
+                       clock-names = "ssi", "ssi_sfr", "audio_clk1", "audio_clk2";
+                       resets = <&cpg R9A07G044_SSI3_RST_M2_REG>;
+                       dmas = <&dmac 0x2661>, <&dmac 0x2662>;
+                       dma-names = "tx", "rx";
+                       power-domains = <&cpg>;
+                       #sound-dai-cells = <0>;
+                       status = "disabled";
+               };
+
                scif0: serial@1004b800 {
                        compatible = "renesas,scif-r9a07g044";
                        reg = <0 0x1004b800 0 0x400>;
                        };
                };
 
+               sbc: spi@10060000 {
+                       compatible = "renesas,r9a07g044-rpc-if",
+                                    "renesas,rzg2l-rpc-if";
+                       reg = <0 0x10060000 0 0x10000>,
+                             <0 0x20000000 0 0x10000000>,
+                             <0 0x10070000 0 0x10000>;
+                       reg-names = "regs", "dirmap", "wbuf";
+                       interrupts = <GIC_SPI 41 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&cpg CPG_MOD R9A07G044_SPI_CLK2>,
+                                <&cpg CPG_MOD R9A07G044_SPI_CLK>;
+                       resets = <&cpg R9A07G044_SPI_RST>;
+                       power-domains = <&cpg>;
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       status = "disabled";
+               };
+
                cpg: clock-controller@11010000 {
                        compatible = "renesas,r9a07g044-cpg";
                        reg = <0 0x11010000 0 0x10000>;
                                 <&cpg R9A07G044_GPIO_SPARE_RESETN>;
                };
 
+               dmac: dma-controller@11820000 {
+                       compatible = "renesas,r9a07g044-dmac",
+                                    "renesas,rz-dmac";
+                       reg = <0 0x11820000 0 0x10000>,
+                             <0 0x11830000 0 0x10000>;
+                       interrupts = <GIC_SPI 141 IRQ_TYPE_EDGE_RISING>,
+                                    <GIC_SPI 125 IRQ_TYPE_EDGE_RISING>,
+                                    <GIC_SPI 126 IRQ_TYPE_EDGE_RISING>,
+                                    <GIC_SPI 127 IRQ_TYPE_EDGE_RISING>,
+                                    <GIC_SPI 128 IRQ_TYPE_EDGE_RISING>,
+                                    <GIC_SPI 129 IRQ_TYPE_EDGE_RISING>,
+                                    <GIC_SPI 130 IRQ_TYPE_EDGE_RISING>,
+                                    <GIC_SPI 131 IRQ_TYPE_EDGE_RISING>,
+                                    <GIC_SPI 132 IRQ_TYPE_EDGE_RISING>,
+                                    <GIC_SPI 133 IRQ_TYPE_EDGE_RISING>,
+                                    <GIC_SPI 134 IRQ_TYPE_EDGE_RISING>,
+                                    <GIC_SPI 135 IRQ_TYPE_EDGE_RISING>,
+                                    <GIC_SPI 136 IRQ_TYPE_EDGE_RISING>,
+                                    <GIC_SPI 137 IRQ_TYPE_EDGE_RISING>,
+                                    <GIC_SPI 138 IRQ_TYPE_EDGE_RISING>,
+                                    <GIC_SPI 139 IRQ_TYPE_EDGE_RISING>,
+                                    <GIC_SPI 140 IRQ_TYPE_EDGE_RISING>;
+                       interrupt-names = "error",
+                                         "ch0", "ch1", "ch2", "ch3",
+                                         "ch4", "ch5", "ch6", "ch7",
+                                         "ch8", "ch9", "ch10", "ch11",
+                                         "ch12", "ch13", "ch14", "ch15";
+                       clocks = <&cpg CPG_MOD R9A07G044_DMAC_ACLK>,
+                                <&cpg CPG_MOD R9A07G044_DMAC_PCLK>;
+                       power-domains = <&cpg>;
+                       resets = <&cpg R9A07G044_DMAC_ARESETN>,
+                                <&cpg R9A07G044_DMAC_RST_ASYNC>;
+                       #dma-cells = <1>;
+                       dma-channels = <16>;
+               };
+
                gic: interrupt-controller@11900000 {
                        compatible = "arm,gic-v3";
                        #interrupt-cells = <3>;
                              <0x0 0x11940000 0 0x60000>;
                        interrupts = <GIC_PPI 9 IRQ_TYPE_LEVEL_LOW>;
                };
+
+               sdhi0: mmc@11c00000  {
+                       compatible = "renesas,sdhi-r9a07g044",
+                                    "renesas,rcar-gen3-sdhi";
+                       reg = <0x0 0x11c00000 0 0x10000>;
+                       interrupts = <GIC_SPI 104 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 105 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&cpg CPG_MOD R9A07G044_SDHI0_IMCLK>,
+                                <&cpg CPG_MOD R9A07G044_SDHI0_IMCLK2>,
+                                <&cpg CPG_MOD R9A07G044_SDHI0_CLK_HS>,
+                                <&cpg CPG_MOD R9A07G044_SDHI0_ACLK>;
+                       clock-names = "imclk", "imclk2", "clk_hs", "aclk";
+                       resets = <&cpg R9A07G044_SDHI0_IXRST>;
+                       power-domains = <&cpg>;
+                       status = "disabled";
+               };
+
+               sdhi1: mmc@11c10000 {
+                       compatible = "renesas,sdhi-r9a07g044",
+                                    "renesas,rcar-gen3-sdhi";
+                       reg = <0x0 0x11c10000 0 0x10000>;
+                       interrupts = <GIC_SPI 106 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 107 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&cpg CPG_MOD R9A07G044_SDHI1_IMCLK>,
+                                <&cpg CPG_MOD R9A07G044_SDHI1_IMCLK2>,
+                                <&cpg CPG_MOD R9A07G044_SDHI1_CLK_HS>,
+                                <&cpg CPG_MOD R9A07G044_SDHI1_ACLK>;
+                       clock-names = "imclk", "imclk2", "clk_hs", "aclk";
+                       resets = <&cpg R9A07G044_SDHI1_IXRST>;
+                       power-domains = <&cpg>;
+                       status = "disabled";
+               };
+
+               eth0: ethernet@11c20000 {
+                       compatible = "renesas,r9a07g044-gbeth",
+                                    "renesas,rzg2l-gbeth";
+                       reg = <0 0x11c20000 0 0x10000>;
+                       interrupts = <GIC_SPI 84 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 85 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 86 IRQ_TYPE_LEVEL_HIGH>;
+                       interrupt-names = "mux", "fil", "arp_ns";
+                       phy-mode = "rgmii";
+                       clocks = <&cpg CPG_MOD R9A07G044_ETH0_CLK_AXI>,
+                                <&cpg CPG_MOD R9A07G044_ETH0_CLK_CHI>,
+                                <&cpg CPG_CORE R9A07G044_CLK_HP>;
+                       clock-names = "axi", "chi", "refclk";
+                       resets = <&cpg R9A07G044_ETH0_RST_HW_N>;
+                       power-domains = <&cpg>;
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       status = "disabled";
+               };
+
+               eth1: ethernet@11c30000 {
+                       compatible = "renesas,r9a07g044-gbeth",
+                                    "renesas,rzg2l-gbeth";
+                       reg = <0 0x11c30000 0 0x10000>;
+                       interrupts = <GIC_SPI 87 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 88 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 89 IRQ_TYPE_LEVEL_HIGH>;
+                       interrupt-names = "mux", "fil", "arp_ns";
+                       phy-mode = "rgmii";
+                       clocks = <&cpg CPG_MOD R9A07G044_ETH1_CLK_AXI>,
+                                <&cpg CPG_MOD R9A07G044_ETH1_CLK_CHI>,
+                                <&cpg CPG_CORE R9A07G044_CLK_HP>;
+                       clock-names = "axi", "chi", "refclk";
+                       resets = <&cpg R9A07G044_ETH1_RST_HW_N>;
+                       power-domains = <&cpg>;
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       status = "disabled";
+               };
+
+               phyrst: usbphy-ctrl@11c40000 {
+                       compatible = "renesas,r9a07g044-usbphy-ctrl",
+                                    "renesas,rzg2l-usbphy-ctrl";
+                       reg = <0 0x11c40000 0 0x10000>;
+                       clocks = <&cpg CPG_MOD R9A07G044_USB_PCLK>;
+                       resets = <&cpg R9A07G044_USB_PRESETN>;
+                       power-domains = <&cpg>;
+                       #reset-cells = <1>;
+                       status = "disabled";
+               };
+
+               ohci0: usb@11c50000 {
+                       compatible = "generic-ohci";
+                       reg = <0 0x11c50000 0 0x100>;
+                       interrupts = <GIC_SPI 91 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&cpg CPG_MOD R9A07G044_USB_PCLK>,
+                                <&cpg CPG_MOD R9A07G044_USB_U2H0_HCLK>;
+                       resets = <&phyrst 0>,
+                                <&cpg R9A07G044_USB_U2H0_HRESETN>;
+                       phys = <&usb2_phy0 1>;
+                       phy-names = "usb";
+                       power-domains = <&cpg>;
+                       status = "disabled";
+               };
+
+               ohci1: usb@11c70000 {
+                       compatible = "generic-ohci";
+                       reg = <0 0x11c70000 0 0x100>;
+                       interrupts = <GIC_SPI 96 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&cpg CPG_MOD R9A07G044_USB_PCLK>,
+                                <&cpg CPG_MOD R9A07G044_USB_U2H1_HCLK>;
+                       resets = <&phyrst 1>,
+                                <&cpg R9A07G044_USB_U2H1_HRESETN>;
+                       phys = <&usb2_phy1 1>;
+                       phy-names = "usb";
+                       power-domains = <&cpg>;
+                       status = "disabled";
+               };
+
+               ehci0: usb@11c50100 {
+                       compatible = "generic-ehci";
+                       reg = <0 0x11c50100 0 0x100>;
+                       interrupts = <GIC_SPI 92 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&cpg CPG_MOD R9A07G044_USB_PCLK>,
+                                <&cpg CPG_MOD R9A07G044_USB_U2H0_HCLK>;
+                       resets = <&phyrst 0>,
+                                <&cpg R9A07G044_USB_U2H0_HRESETN>;
+                       phys = <&usb2_phy0 2>;
+                       phy-names = "usb";
+                       companion = <&ohci0>;
+                       power-domains = <&cpg>;
+                       status = "disabled";
+               };
+
+               ehci1: usb@11c70100 {
+                       compatible = "generic-ehci";
+                       reg = <0 0x11c70100 0 0x100>;
+                       interrupts = <GIC_SPI 97 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&cpg CPG_MOD R9A07G044_USB_PCLK>,
+                                <&cpg CPG_MOD R9A07G044_USB_U2H1_HCLK>;
+                       resets = <&phyrst 1>,
+                                <&cpg R9A07G044_USB_U2H1_HRESETN>;
+                       phys = <&usb2_phy1 2>;
+                       phy-names = "usb";
+                       companion = <&ohci1>;
+                       power-domains = <&cpg>;
+                       status = "disabled";
+               };
+
+               usb2_phy0: usb-phy@11c50200 {
+                       compatible = "renesas,usb2-phy-r9a07g044",
+                                    "renesas,rzg2l-usb2-phy";
+                       reg = <0 0x11c50200 0 0x700>;
+                       interrupts = <GIC_SPI 94 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&cpg CPG_MOD R9A07G044_USB_PCLK>,
+                                <&cpg CPG_MOD R9A07G044_USB_U2H0_HCLK>;
+                       resets = <&phyrst 0>;
+                       #phy-cells = <1>;
+                       power-domains = <&cpg>;
+                       status = "disabled";
+               };
+
+               usb2_phy1: usb-phy@11c70200 {
+                       compatible = "renesas,usb2-phy-r9a07g044",
+                                    "renesas,rzg2l-usb2-phy";
+                       reg = <0 0x11c70200 0 0x700>;
+                       interrupts = <GIC_SPI 99 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&cpg CPG_MOD R9A07G044_USB_PCLK>,
+                                <&cpg CPG_MOD R9A07G044_USB_U2H1_HCLK>;
+                       resets = <&phyrst 1>;
+                       #phy-cells = <1>;
+                       power-domains = <&cpg>;
+                       status = "disabled";
+               };
+
+               hsusb: usb@11c60000 {
+                       compatible = "renesas,usbhs-r9a07g044",
+                                    "renesas,rza2-usbhs";
+                       reg = <0 0x11c60000 0 0x10000>;
+                       interrupts = <GIC_SPI 100 IRQ_TYPE_EDGE_RISING>,
+                                    <GIC_SPI 101 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 102 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 103 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&cpg CPG_MOD R9A07G044_USB_PCLK>,
+                                <&cpg CPG_MOD R9A07G044_USB_U2P_EXR_CPUCLK>;
+                       resets = <&phyrst 0>,
+                                <&cpg R9A07G044_USB_U2P_EXL_SYSRST>;
+                       renesas,buswait = <7>;
+                       phys = <&usb2_phy0 3>;
+                       phy-names = "usb";
+                       power-domains = <&cpg>;
+                       status = "disabled";
+               };
        };
 
        timer {
index d3f72ec..247b0b3 100644 (file)
@@ -7,15 +7,10 @@
 
 /dts-v1/;
 #include "r9a07g044l2.dtsi"
+#include "rzg2l-smarc-som.dtsi"
 #include "rzg2l-smarc.dtsi"
 
 / {
        model = "Renesas SMARC EVK based on r9a07g044l2";
        compatible = "renesas,smarc-evk", "renesas,r9a07g044l2", "renesas,r9a07g044";
-
-       memory@48000000 {
-               device_type = "memory";
-               /* first 128MB is reserved for secure area. */
-               reg = <0x0 0x48000000 0x0 0x78000000>;
-       };
 };
diff --git a/arch/arm64/boot/dts/renesas/rzg2l-smarc-som.dtsi b/arch/arm64/boot/dts/renesas/rzg2l-smarc-som.dtsi
new file mode 100644 (file)
index 0000000..7e84a29
--- /dev/null
@@ -0,0 +1,275 @@
+// SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+/*
+ * Device Tree Source for the RZ/G2L SMARC SOM common parts
+ *
+ * Copyright (C) 2021 Renesas Electronics Corp.
+ */
+
+#include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/pinctrl/rzg2l-pinctrl.h>
+
+/* SW1[2] should be at position 2/OFF to enable 64 GB eMMC */
+#define EMMC   1
+
+/*
+ * To enable uSD card on CN3,
+ * SW1[2] should be at position 3/ON.
+ * Disable eMMC by setting "#define EMMC       0" above.
+ */
+#define SDHI   (!EMMC)
+
+/ {
+       aliases {
+               ethernet0 = &eth0;
+               ethernet1 = &eth1;
+       };
+
+       chosen {
+               bootargs = "ignore_loglevel rw root=/dev/nfs ip=on";
+       };
+
+       memory@48000000 {
+               device_type = "memory";
+               /* first 128MB is reserved for secure area. */
+               reg = <0x0 0x48000000 0x0 0x78000000>;
+       };
+
+       reg_1p8v: regulator0 {
+               compatible = "regulator-fixed";
+               regulator-name = "fixed-1.8V";
+               regulator-min-microvolt = <1800000>;
+               regulator-max-microvolt = <1800000>;
+               regulator-boot-on;
+               regulator-always-on;
+       };
+
+       reg_3p3v: regulator1 {
+               compatible = "regulator-fixed";
+               regulator-name = "fixed-3.3V";
+               regulator-min-microvolt = <3300000>;
+               regulator-max-microvolt = <3300000>;
+               regulator-boot-on;
+               regulator-always-on;
+       };
+
+       vccq_sdhi0: regulator-vccq-sdhi0 {
+               compatible = "regulator-gpio";
+
+               regulator-name = "SDHI0 VccQ";
+               regulator-min-microvolt = <1800000>;
+               regulator-max-microvolt = <3300000>;
+               states = <3300000 1>, <1800000 0>;
+               regulator-boot-on;
+               gpios = <&pinctrl RZG2L_GPIO(39, 0) GPIO_ACTIVE_HIGH>;
+               regulator-always-on;
+       };
+};
+
+&adc {
+       pinctrl-0 = <&adc_pins>;
+       pinctrl-names = "default";
+       status = "okay";
+
+       /delete-node/ channel@6;
+       /delete-node/ channel@7;
+};
+
+&eth0 {
+       pinctrl-0 = <&eth0_pins>;
+       pinctrl-names = "default";
+       phy-handle = <&phy0>;
+       phy-mode = "rgmii-id";
+       status = "okay";
+
+       phy0: ethernet-phy@7 {
+               compatible = "ethernet-phy-id0022.1640",
+                            "ethernet-phy-ieee802.3-c22";
+               reg = <7>;
+               rxc-skew-psec = <2400>;
+               txc-skew-psec = <2400>;
+               rxdv-skew-psec = <0>;
+               txdv-skew-psec = <0>;
+               rxd0-skew-psec = <0>;
+               rxd1-skew-psec = <0>;
+               rxd2-skew-psec = <0>;
+               rxd3-skew-psec = <0>;
+               txd0-skew-psec = <0>;
+               txd1-skew-psec = <0>;
+               txd2-skew-psec = <0>;
+               txd3-skew-psec = <0>;
+       };
+};
+
+&eth1 {
+       pinctrl-0 = <&eth1_pins>;
+       pinctrl-names = "default";
+       phy-handle = <&phy1>;
+       phy-mode = "rgmii-id";
+       status = "okay";
+
+       phy1: ethernet-phy@7 {
+               compatible = "ethernet-phy-id0022.1640",
+                            "ethernet-phy-ieee802.3-c22";
+               reg = <7>;
+               rxc-skew-psec = <2400>;
+               txc-skew-psec = <2400>;
+               rxdv-skew-psec = <0>;
+               txdv-skew-psec = <0>;
+               rxd0-skew-psec = <0>;
+               rxd1-skew-psec = <0>;
+               rxd2-skew-psec = <0>;
+               rxd3-skew-psec = <0>;
+               txd0-skew-psec = <0>;
+               txd1-skew-psec = <0>;
+               txd2-skew-psec = <0>;
+               txd3-skew-psec = <0>;
+       };
+};
+
+&extal_clk {
+       clock-frequency = <24000000>;
+};
+
+&pinctrl {
+       adc_pins: adc {
+               pinmux = <RZG2L_PORT_PINMUX(9, 0, 2)>; /* ADC_TRG */
+       };
+
+       eth0_pins: eth0 {
+               pinmux = <RZG2L_PORT_PINMUX(28, 1, 1)>, /* ET0_LINKSTA */
+                        <RZG2L_PORT_PINMUX(27, 1, 1)>, /* ET0_MDC */
+                        <RZG2L_PORT_PINMUX(28, 0, 1)>, /* ET0_MDIO */
+                        <RZG2L_PORT_PINMUX(20, 0, 1)>, /* ET0_TXC */
+                        <RZG2L_PORT_PINMUX(20, 1, 1)>, /* ET0_TX_CTL */
+                        <RZG2L_PORT_PINMUX(20, 2, 1)>, /* ET0_TXD0 */
+                        <RZG2L_PORT_PINMUX(21, 0, 1)>, /* ET0_TXD1 */
+                        <RZG2L_PORT_PINMUX(21, 1, 1)>, /* ET0_TXD2 */
+                        <RZG2L_PORT_PINMUX(22, 0, 1)>, /* ET0_TXD3 */
+                        <RZG2L_PORT_PINMUX(24, 0, 1)>, /* ET0_RXC */
+                        <RZG2L_PORT_PINMUX(24, 1, 1)>, /* ET0_RX_CTL */
+                        <RZG2L_PORT_PINMUX(25, 0, 1)>, /* ET0_RXD0 */
+                        <RZG2L_PORT_PINMUX(25, 1, 1)>, /* ET0_RXD1 */
+                        <RZG2L_PORT_PINMUX(26, 0, 1)>, /* ET0_RXD2 */
+                        <RZG2L_PORT_PINMUX(26, 1, 1)>; /* ET0_RXD3 */
+       };
+
+       eth1_pins: eth1 {
+               pinmux = <RZG2L_PORT_PINMUX(37, 2, 1)>, /* ET1_LINKSTA */
+                        <RZG2L_PORT_PINMUX(37, 0, 1)>, /* ET1_MDC */
+                        <RZG2L_PORT_PINMUX(37, 1, 1)>, /* ET1_MDIO */
+                        <RZG2L_PORT_PINMUX(29, 0, 1)>, /* ET1_TXC */
+                        <RZG2L_PORT_PINMUX(29, 1, 1)>, /* ET1_TX_CTL */
+                        <RZG2L_PORT_PINMUX(30, 0, 1)>, /* ET1_TXD0 */
+                        <RZG2L_PORT_PINMUX(30, 1, 1)>, /* ET1_TXD1 */
+                        <RZG2L_PORT_PINMUX(31, 0, 1)>, /* ET1_TXD2 */
+                        <RZG2L_PORT_PINMUX(31, 1, 1)>, /* ET1_TXD3 */
+                        <RZG2L_PORT_PINMUX(33, 1, 1)>, /* ET1_RXC */
+                        <RZG2L_PORT_PINMUX(34, 0, 1)>, /* ET1_RX_CTL */
+                        <RZG2L_PORT_PINMUX(34, 1, 1)>, /* ET1_RXD0 */
+                        <RZG2L_PORT_PINMUX(35, 0, 1)>, /* ET1_RXD1 */
+                        <RZG2L_PORT_PINMUX(35, 1, 1)>, /* ET1_RXD2 */
+                        <RZG2L_PORT_PINMUX(36, 0, 1)>; /* ET1_RXD3 */
+       };
+
+       gpio-sd0-pwr-en-hog {
+               gpio-hog;
+               gpios = <RZG2L_GPIO(4, 1) GPIO_ACTIVE_HIGH>;
+               output-high;
+               line-name = "gpio_sd0_pwr_en";
+       };
+
+       /*
+        * SD0 device selection is XOR between GPIO_SD0_DEV_SEL and SW1[2]
+        * The below switch logic can be used to select the device between
+        * eMMC and microSD, after setting GPIO_SD0_DEV_SEL to high in DT.
+        * SW1[2] should be at position 2/OFF to enable 64 GB eMMC
+        * SW1[2] should be at position 3/ON to enable uSD card CN3
+        */
+       sd0-dev-sel-hog {
+               gpio-hog;
+               gpios = <RZG2L_GPIO(41, 1) GPIO_ACTIVE_HIGH>;
+               output-high;
+               line-name = "sd0_dev_sel";
+       };
+
+       sdhi0_emmc_pins: sd0emmc {
+               sd0_emmc_data {
+                       pins = "SD0_DATA0", "SD0_DATA1", "SD0_DATA2", "SD0_DATA3",
+                              "SD0_DATA4", "SD0_DATA5", "SD0_DATA6", "SD0_DATA7";
+                       power-source = <1800>;
+               };
+
+               sd0_emmc_ctrl {
+                       pins = "SD0_CLK", "SD0_CMD";
+                       power-source = <1800>;
+               };
+
+               sd0_emmc_rst {
+                       pins = "SD0_RST#";
+                       power-source = <1800>;
+               };
+       };
+
+       sdhi0_pins: sd0 {
+               sd0_data {
+                       pins = "SD0_DATA0", "SD0_DATA1", "SD0_DATA2", "SD0_DATA3";
+                       power-source = <3300>;
+               };
+
+               sd0_ctrl {
+                       pins = "SD0_CLK", "SD0_CMD";
+                       power-source = <3300>;
+               };
+
+               sd0_mux {
+                       pinmux = <RZG2L_PORT_PINMUX(47, 0, 2)>; /* SD0_CD */
+               };
+       };
+
+       sdhi0_pins_uhs: sd0_uhs {
+               sd0_data_uhs {
+                       pins = "SD0_DATA0", "SD0_DATA1", "SD0_DATA2", "SD0_DATA3";
+                       power-source = <1800>;
+               };
+
+               sd0_ctrl_uhs {
+                       pins = "SD0_CLK", "SD0_CMD";
+                       power-source = <1800>;
+               };
+
+               sd0_mux_uhs {
+                       pinmux = <RZG2L_PORT_PINMUX(47, 0, 2)>; /* SD0_CD */
+               };
+       };
+};
+
+#if SDHI
+&sdhi0 {
+       pinctrl-0 = <&sdhi0_pins>;
+       pinctrl-1 = <&sdhi0_pins_uhs>;
+       pinctrl-names = "default", "state_uhs";
+
+       vmmc-supply = <&reg_3p3v>;
+       vqmmc-supply = <&vccq_sdhi0>;
+       bus-width = <4>;
+       sd-uhs-sdr50;
+       sd-uhs-sdr104;
+       status = "okay";
+};
+#endif
+
+#if EMMC
+&sdhi0 {
+       pinctrl-0 = <&sdhi0_emmc_pins>;
+       pinctrl-1 = <&sdhi0_emmc_pins>;
+       pinctrl-names = "default", "state_uhs";
+
+       vmmc-supply = <&reg_3p3v>;
+       vqmmc-supply = <&reg_1p8v>;
+       bus-width = <8>;
+       mmc-hs200-1_8v;
+       non-removable;
+       fixed-emmc-driver-type = <1>;
+       status = "okay";
+};
+#endif
index adcd4f5..2863e48 100644 (file)
  */
 
 #include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/pinctrl/rzg2l-pinctrl.h>
+
+/*
+ * SSI-WM8978
+ *
+ * This command is required when Playback/Capture
+ *
+ *     amixer cset name='Left Input Mixer L2 Switch' on
+ *     amixer cset name='Right Input Mixer R2 Switch' on
+ *     amixer cset name='Headphone Playback Volume' 100
+ *     amixer cset name='PCM Volume' 100%
+ *     amixer cset name='Input PGA Volume' 25
+ *
+ */
 
 / {
        aliases {
                serial0 = &scif0;
+               i2c0 = &i2c0;
+               i2c1 = &i2c1;
+               i2c3 = &i2c3;
        };
 
        chosen {
-               bootargs = "ignore_loglevel";
                stdout-path = "serial0:115200n8";
        };
+
+       audio_mclock: audio_mclock {
+               compatible = "fixed-clock";
+               #clock-cells = <0>;
+               clock-frequency = <11289600>;
+       };
+
+       snd_rzg2l: sound {
+               compatible = "simple-audio-card";
+               simple-audio-card,format = "i2s";
+               simple-audio-card,bitclock-master = <&cpu_dai>;
+               simple-audio-card,frame-master = <&cpu_dai>;
+               simple-audio-card,mclk-fs = <256>;
+
+               simple-audio-card,widgets = "Microphone", "Microphone Jack";
+               simple-audio-card,routing =
+                           "L2", "Mic Bias",
+                           "R2", "Mic Bias",
+                           "Mic Bias", "Microphone Jack";
+
+               cpu_dai: simple-audio-card,cpu {
+                       sound-dai = <&ssi0>;
+               };
+
+               codec_dai: simple-audio-card,codec {
+                       clocks = <&audio_mclock>;
+                       sound-dai = <&wm8978>;
+               };
+       };
+
+       usb0_vbus_otg: regulator-usb0-vbus-otg {
+               compatible = "regulator-fixed";
+
+               regulator-name = "USB0_VBUS_OTG";
+               regulator-min-microvolt = <5000000>;
+               regulator-max-microvolt = <5000000>;
+       };
+
+       vccq_sdhi1: regulator-vccq-sdhi1 {
+               compatible = "regulator-gpio";
+               regulator-name = "SDHI1 VccQ";
+               regulator-min-microvolt = <1800000>;
+               regulator-max-microvolt = <3300000>;
+               gpios = <&pinctrl RZG2L_GPIO(39, 1) GPIO_ACTIVE_HIGH>;
+               gpios-states = <1>;
+               states = <3300000 1>, <1800000 0>;
+       };
+};
+
+&audio_clk1{
+       clock-frequency = <11289600>;
+};
+
+&audio_clk2{
+       clock-frequency = <12288000>;
+};
+
+&canfd {
+       pinctrl-0 = <&can0_pins &can1_pins>;
+       pinctrl-names = "default";
+       status = "okay";
+
+       channel0 {
+               status = "okay";
+       };
+
+       channel1 {
+               status = "okay";
+       };
+};
+
+&ehci0 {
+       dr_mode = "otg";
+       status = "okay";
+};
+
+&ehci1 {
+       status = "okay";
+};
+
+&hsusb {
+       dr_mode = "otg";
+       status = "okay";
+};
+
+&i2c0 {
+       pinctrl-0 = <&i2c0_pins>;
+       pinctrl-names = "default";
+
+       status = "okay";
+};
+
+&i2c1 {
+       pinctrl-0 = <&i2c1_pins>;
+       pinctrl-names = "default";
+
+       status = "okay";
+};
+
+&i2c3 {
+       pinctrl-0 = <&i2c3_pins>;
+       pinctrl-names = "default";
+       clock-frequency = <400000>;
+
+       status = "okay";
+
+       wm8978: codec@1a {
+               compatible = "wlf,wm8978";
+               #sound-dai-cells = <0>;
+               reg = <0x1a>;
+       };
 };
 
-&extal_clk {
-       clock-frequency = <24000000>;
+&ohci0 {
+       dr_mode = "otg";
+       status = "okay";
+};
+
+&ohci1 {
+       status = "okay";
+};
+
+&phyrst {
+       status = "okay";
+};
+
+&pinctrl {
+       pinctrl-0 = <&sound_clk_pins>;
+       pinctrl-names = "default";
+
+       can0_pins: can0 {
+               pinmux = <RZG2L_PORT_PINMUX(10, 1, 2)>, /* TX */
+                        <RZG2L_PORT_PINMUX(11, 0, 2)>; /* RX */
+       };
+
+       /* SW7 should be at position 2->3 so that GPIO8_CAN0_STB line is activated */
+       can0-stb {
+               gpio-hog;
+               gpios = <RZG2L_GPIO(42, 2) GPIO_ACTIVE_HIGH>;
+               output-low;
+               line-name = "can0_stb";
+       };
+
+       can1_pins: can1 {
+               pinmux = <RZG2L_PORT_PINMUX(12, 1, 2)>, /* TX */
+                        <RZG2L_PORT_PINMUX(13, 0, 2)>; /* RX */
+       };
+
+       /* SW8 should be at position 2->3 so that GPIO9_CAN1_STB line is activated */
+       can1-stb {
+               gpio-hog;
+               gpios = <RZG2L_GPIO(42, 3) GPIO_ACTIVE_HIGH>;
+               output-low;
+               line-name = "can1_stb";
+       };
+
+       i2c0_pins: i2c0 {
+               pins = "RIIC0_SDA", "RIIC0_SCL";
+               input-enable;
+       };
+
+       i2c1_pins: i2c1 {
+               pins = "RIIC1_SDA", "RIIC1_SCL";
+               input-enable;
+       };
+
+       i2c3_pins: i2c3 {
+               pinmux = <RZG2L_PORT_PINMUX(18, 0, 3)>, /* SDA */
+                        <RZG2L_PORT_PINMUX(18, 1, 3)>; /* SCL */
+       };
+
+       scif0_pins: scif0 {
+               pinmux = <RZG2L_PORT_PINMUX(38, 0, 1)>, /* TxD */
+                        <RZG2L_PORT_PINMUX(38, 1, 1)>; /* RxD */
+       };
+
+       sd1-pwr-en-hog {
+               gpio-hog;
+               gpios = <RZG2L_GPIO(39, 2) GPIO_ACTIVE_HIGH>;
+               output-high;
+               line-name = "sd1_pwr_en";
+       };
+
+       sdhi1_pins: sd1 {
+               sd1_data {
+                       pins = "SD1_DATA0", "SD1_DATA1", "SD1_DATA2", "SD1_DATA3";
+                       power-source = <3300>;
+               };
+
+               sd1_ctrl {
+                       pins = "SD1_CLK", "SD1_CMD";
+                       power-source = <3300>;
+               };
+
+               sd1_mux {
+                       pinmux = <RZG2L_PORT_PINMUX(19, 0, 1)>; /* SD1_CD */
+               };
+       };
+
+       sdhi1_pins_uhs: sd1_uhs {
+               sd1_data_uhs {
+                       pins = "SD1_DATA0", "SD1_DATA1", "SD1_DATA2", "SD1_DATA3";
+                       power-source = <1800>;
+               };
+
+               sd1_ctrl_uhs {
+                       pins = "SD1_CLK", "SD1_CMD";
+                       power-source = <1800>;
+               };
+
+               sd1_mux_uhs {
+                       pinmux = <RZG2L_PORT_PINMUX(19, 0, 1)>; /* SD1_CD */
+               };
+       };
+
+       sound_clk_pins: sound_clk {
+               pins = "AUDIO_CLK1", "AUDIO_CLK2";
+               input-enable;
+       };
+
+       ssi0_pins: ssi0 {
+               pinmux = <RZG2L_PORT_PINMUX(45, 0, 1)>, /* BCK */
+                        <RZG2L_PORT_PINMUX(45, 1, 1)>, /* RCK */
+                        <RZG2L_PORT_PINMUX(45, 2, 1)>, /* TXD */
+                        <RZG2L_PORT_PINMUX(45, 3, 1)>; /* RXD */
+       };
+
+       usb0_pins: usb0 {
+               pinmux = <RZG2L_PORT_PINMUX(4, 0, 1)>, /* VBUS */
+                        <RZG2L_PORT_PINMUX(5, 0, 1)>, /* OVC */
+                        <RZG2L_PORT_PINMUX(5, 1, 1)>; /* OTG_ID */
+       };
+
+       usb1_pins: usb1 {
+               pinmux = <RZG2L_PORT_PINMUX(42, 0, 1)>, /* VBUS */
+                        <RZG2L_PORT_PINMUX(42, 1, 1)>; /* OVC */
+       };
 };
 
 &scif0 {
+       pinctrl-0 = <&scif0_pins>;
+       pinctrl-names = "default";
+       status = "okay";
+};
+
+&sdhi1 {
+       pinctrl-0 = <&sdhi1_pins>;
+       pinctrl-1 = <&sdhi1_pins_uhs>;
+       pinctrl-names = "default", "state_uhs";
+
+       vmmc-supply = <&reg_3p3v>;
+       vqmmc-supply = <&vccq_sdhi1>;
+       bus-width = <4>;
+       sd-uhs-sdr50;
+       sd-uhs-sdr104;
+       status = "okay";
+};
+
+&ssi0 {
+       pinctrl-0 = <&ssi0_pins>;
+       pinctrl-names = "default";
+
+       status = "okay";
+};
+
+&usb2_phy0 {
+       pinctrl-0 = <&usb0_pins>;
+       pinctrl-names = "default";
+
+       vbus-supply = <&usb0_vbus_otg>;
+       status = "okay";
+};
+
+&usb2_phy1 {
+       pinctrl-0 = <&usb1_pins>;
+       pinctrl-names = "default";
+
        status = "okay";
 };
index eb1f3b8..bf37777 100644 (file)
        status = "okay";
 
        phy0: ethernet-phy@0 {
+               compatible = "ethernet-phy-id0022.1622",
+                            "ethernet-phy-ieee802.3-c22";
                rxc-skew-ps = <1500>;
                reg = <0>;
                interrupt-parent = <&gpio2>;
                reg-names = "main", "dpll", "cp", "hdmi", "edid", "repeater",
                            "infoframe", "cbus", "cec", "sdp", "txa", "txb" ;
 
-               #address-cells = <1>;
-               #size-cells = <0>;
-
                interrupt-parent = <&gpio6>;
                interrupt-names = "intrq1", "intrq2";
                interrupts = <30 IRQ_TYPE_LEVEL_LOW>,
                             <31 IRQ_TYPE_LEVEL_LOW>;
 
-               port@7 {
-                       reg = <7>;
+               ports {
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+
+                       port@7 {
+                               reg = <7>;
 
-                       adv7482_ain7: endpoint {
-                               remote-endpoint = <&cvbs_con>;
+                               adv7482_ain7: endpoint {
+                                       remote-endpoint = <&cvbs_con>;
+                               };
                        };
-               };
 
-               port@8 {
-                       reg = <8>;
+                       port@8 {
+                               reg = <8>;
 
-                       adv7482_hdmi: endpoint {
-                               remote-endpoint = <&hdmi_in_con>;
+                               adv7482_hdmi: endpoint {
+                                       remote-endpoint = <&hdmi_in_con>;
+                               };
                        };
-               };
 
-               port@a {
-                       reg = <10>;
+                       port@a {
+                               reg = <10>;
 
-                       adv7482_txa: endpoint {
-                               clock-lanes = <0>;
-                               data-lanes = <1 2 3 4>;
-                               remote-endpoint = <&csi40_in>;
+                               adv7482_txa: endpoint {
+                                       clock-lanes = <0>;
+                                       data-lanes = <1 2 3 4>;
+                                       remote-endpoint = <&csi40_in>;
+                               };
                        };
-               };
 
-               port@b {
-                       reg = <11>;
+                       port@b {
+                               reg = <11>;
 
-                       adv7482_txb: endpoint {
-                               clock-lanes = <0>;
-                               data-lanes = <1>;
-                               remote-endpoint = <&csi20_in>;
+                               adv7482_txb: endpoint {
+                                       clock-lanes = <0>;
+                                       data-lanes = <1>;
+                                       remote-endpoint = <&csi20_in>;
+                               };
                        };
                };
        };
index 1f177af..7edffe7 100644 (file)
        status = "okay";
 
        phy0: ethernet-phy@0 {
+               compatible = "ethernet-phy-id0022.1622",
+                            "ethernet-phy-ieee802.3-c22";
                rxc-skew-ps = <1500>;
                reg = <0>;
                interrupt-parent = <&gpio2>;
index 7fdb41d..479906f 100644 (file)
@@ -13,6 +13,7 @@ dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3328-nanopi-r2s.dtb
 dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3328-rock64.dtb
 dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3328-rock-pi-e.dtb
 dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3328-roc-cc.dtb
+dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3328-roc-pc.dtb
 dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3368-evb-act8846.dtb
 dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3368-geekbox.dtb
 dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3368-lion-haikou.dtb
@@ -24,6 +25,7 @@ dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3399-ficus.dtb
 dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3399-firefly.dtb
 dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3399-gru-bob.dtb
 dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3399-gru-kevin.dtb
+dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3399-gru-scarlet-dumo.dtb
 dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3399-gru-scarlet-inx.dtb
 dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3399-gru-scarlet-kd.dtb
 dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3399-hugsun-x99.dtb
@@ -42,8 +44,11 @@ dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3399-pinebook-pro.dtb
 dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3399-puma-haikou.dtb
 dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3399-roc-pc.dtb
 dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3399-roc-pc-mezzanine.dtb
+dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3399-roc-pc-plus.dtb
 dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3399-rock-pi-4a.dtb
+dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3399-rock-pi-4a-plus.dtb
 dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3399-rock-pi-4b.dtb
+dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3399-rock-pi-4b-plus.dtb
 dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3399-rock-pi-4c.dtb
 dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3399-rock960.dtb
 dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3399-rockpro64-v2.dtb
@@ -51,4 +56,5 @@ dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3399-rockpro64.dtb
 dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3399-sapphire.dtb
 dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3399-sapphire-excavator.dtb
 dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3399pro-rock-pi-n10.dtb
+dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3566-quartz64-a.dtb
 dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3568-evb1-v10.dtb
index c1ce9c2..848bc39 100644 (file)
        cpu-supply = <&vdd_arm>;
 };
 
+&csi_dphy {
+       status = "okay";
+};
+
 &display_subsystem {
        status = "okay";
 };
        };
 };
 
+&i2c2 {
+       status = "okay";
+
+       clock-frequency = <100000>;
+
+       /* These are relatively safe rise/fall times; TODO: measure */
+       i2c-scl-falling-time-ns = <50>;
+       i2c-scl-rising-time-ns = <300>;
+
+       ov5695: ov5695@36 {
+               compatible = "ovti,ov5695";
+               reg = <0x36>;
+               avdd-supply = <&vcc2v8_dvp>;
+               clocks = <&cru SCLK_CIF_OUT>;
+               clock-names = "xvclk";
+               dvdd-supply = <&vcc1v5_dvp>;
+               dovdd-supply = <&vcc1v8_dvp>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&cif_clkout_m0>;
+               reset-gpios = <&gpio2 14 GPIO_ACTIVE_LOW>;
+
+               port {
+                       ucam_out: endpoint {
+                               remote-endpoint = <&mipi_in_ucam>;
+                               data-lanes = <1 2>;
+                       };
+               };
+       };
+};
+
 &i2s1_2ch {
        status = "okay";
 };
        vccio6-supply = <&vccio_flash>;
 };
 
+&isp {
+       status = "okay";
+
+       ports {
+               port@0 {
+                       mipi_in_ucam: endpoint@0 {
+                               reg = <0>;
+                               data-lanes = <1 2>;
+                               remote-endpoint = <&ucam_out>;
+                       };
+               };
+       };
+};
+
+&isp_mmu {
+       status = "okay";
+};
+
 &pinctrl {
        headphone {
                hp_det: hp-det {
index 248ebb6..00f50b0 100644 (file)
                };
        };
 
-       cpu0_opp_table: cpu0-opp-table {
+       cpu0_opp_table: opp-table-0 {
                compatible = "operating-points-v2";
                opp-shared;
 
                status = "disabled";
        };
 
+       csi_dphy: phy@ff2f0000 {
+               compatible = "rockchip,px30-csi-dphy";
+               reg = <0x0 0xff2f0000 0x0 0x4000>;
+               clocks = <&cru PCLK_MIPICSIPHY>;
+               clock-names = "pclk";
+               #phy-cells = <0>;
+               power-domains = <&power PX30_PD_VI>;
+               resets = <&cru SRST_MIPICSIPHY_P>;
+               reset-names = "apb";
+               rockchip,grf = <&grf>;
+               status = "disabled";
+       };
+
        usb20_otg: usb@ff300000 {
                compatible = "rockchip,px30-usb", "rockchip,rk3066-usb",
                             "snps,dwc2";
                status = "disabled";
        };
 
+       sfc: spi@ff3a0000 {
+               compatible = "rockchip,sfc";
+               reg = <0x0 0xff3a0000 0x0 0x4000>;
+               interrupts = <GIC_SPI 56 IRQ_TYPE_LEVEL_HIGH>;
+               clocks = <&cru SCLK_SFC>, <&cru HCLK_SFC>;
+               clock-names = "clk_sfc", "hclk_sfc";
+               pinctrl-0 = <&sfc_clk &sfc_cs0 &sfc_bus4>;
+               pinctrl-names = "default";
+               power-domains = <&power PX30_PD_MMC_NAND>;
+               status = "disabled";
+       };
+
        nfc: nand-controller@ff3b0000 {
                compatible = "rockchip,px30-nfc";
                reg = <0x0 0xff3b0000 0x0 0x4000>;
                status = "disabled";
        };
 
-       gpu_opp_table: opp-table2 {
+       gpu_opp_table: opp-table-1 {
                compatible = "operating-points-v2";
 
                opp-200000000 {
                status = "disabled";
        };
 
+       vpu: video-codec@ff442000 {
+               compatible = "rockchip,px30-vpu";
+               reg = <0x0 0xff442000 0x0 0x800>;
+               interrupts = <GIC_SPI 80 IRQ_TYPE_LEVEL_HIGH>,
+                            <GIC_SPI 79 IRQ_TYPE_LEVEL_HIGH>;
+               interrupt-names = "vepu", "vdpu";
+               clocks = <&cru ACLK_VPU>, <&cru HCLK_VPU>;
+               clock-names = "aclk", "hclk";
+               iommus = <&vpu_mmu>;
+               power-domains = <&power PX30_PD_VPU>;
+       };
+
+       vpu_mmu: iommu@ff442800 {
+               compatible = "rockchip,iommu";
+               reg = <0x0 0xff442800 0x0 0x100>;
+               interrupts = <GIC_SPI 81 IRQ_TYPE_LEVEL_HIGH>;
+               clocks = <&cru ACLK_VPU>, <&cru HCLK_VPU>;
+               clock-names = "aclk", "iface";
+               #iommu-cells = <0>;
+               power-domains = <&power PX30_PD_VPU>;
+       };
+
        dsi: dsi@ff450000 {
                compatible = "rockchip,px30-mipi-dsi";
                reg = <0x0 0xff450000 0x0 0x10000>;
                status = "disabled";
        };
 
+       isp: isp@ff4a0000 {
+               compatible = "rockchip,px30-cif-isp"; /*rk3326-rkisp1*/
+               reg = <0x0 0xff4a0000 0x0 0x8000>;
+               interrupts = <GIC_SPI 70 IRQ_TYPE_LEVEL_HIGH>,
+                            <GIC_SPI 73 IRQ_TYPE_LEVEL_HIGH>,
+                            <GIC_SPI 74 IRQ_TYPE_LEVEL_HIGH>;
+               interrupt-names = "isp", "mi", "mipi";
+               clocks = <&cru SCLK_ISP>,
+                        <&cru ACLK_ISP>,
+                        <&cru HCLK_ISP>,
+                        <&cru PCLK_ISP>;
+               clock-names = "isp", "aclk", "hclk", "pclk";
+               iommus = <&isp_mmu>;
+               phys = <&csi_dphy>;
+               phy-names = "dphy";
+               power-domains = <&power PX30_PD_VI>;
+               status = "disabled";
+
+               ports {
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+
+                       port@0 {
+                               reg = <0>;
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+                       };
+               };
+       };
+
+       isp_mmu: iommu@ff4a8000 {
+               compatible = "rockchip,iommu";
+               reg = <0x0 0xff4a8000 0x0 0x100>;
+               interrupts = <GIC_SPI 70 IRQ_TYPE_LEVEL_HIGH>;
+               clocks = <&cru ACLK_ISP>, <&cru HCLK_ISP>;
+               clock-names = "aclk", "iface";
+               power-domains = <&power PX30_PD_VI>;
+               rockchip,disable-mmu-reset;
+               #iommu-cells = <0>;
+       };
+
        qos_gmac: qos@ff518000 {
                compatible = "rockchip,px30-qos", "syscon";
                reg = <0x0 0xff518000 0x0 0x20>;
                #size-cells = <2>;
                ranges;
 
-               gpio0: gpio0@ff040000 {
+               gpio0: gpio@ff040000 {
                        compatible = "rockchip,gpio-bank";
                        reg = <0x0 0xff040000 0x0 0x100>;
                        interrupts = <GIC_SPI 3 IRQ_TYPE_LEVEL_HIGH>;
                        #interrupt-cells = <2>;
                };
 
-               gpio1: gpio1@ff250000 {
+               gpio1: gpio@ff250000 {
                        compatible = "rockchip,gpio-bank";
                        reg = <0x0 0xff250000 0x0 0x100>;
                        interrupts = <GIC_SPI 4 IRQ_TYPE_LEVEL_HIGH>;
                        #interrupt-cells = <2>;
                };
 
-               gpio2: gpio2@ff260000 {
+               gpio2: gpio@ff260000 {
                        compatible = "rockchip,gpio-bank";
                        reg = <0x0 0xff260000 0x0 0x100>;
                        interrupts = <GIC_SPI 5 IRQ_TYPE_LEVEL_HIGH>;
                        #interrupt-cells = <2>;
                };
 
-               gpio3: gpio3@ff270000 {
+               gpio3: gpio@ff270000 {
                        compatible = "rockchip,gpio-bank";
                        reg = <0x0 0xff270000 0x0 0x100>;
                        interrupts = <GIC_SPI 6 IRQ_TYPE_LEVEL_HIGH>;
                        };
                };
 
+               sfc {
+                       sfc_bus4: sfc-bus4 {
+                               rockchip,pins =
+                                       <1 RK_PA0 3 &pcfg_pull_none>,
+                                       <1 RK_PA1 3 &pcfg_pull_none>,
+                                       <1 RK_PA2 3 &pcfg_pull_none>,
+                                       <1 RK_PA3 3 &pcfg_pull_none>;
+                       };
+
+                       sfc_bus2: sfc-bus2 {
+                               rockchip,pins =
+                                       <1 RK_PA0 3 &pcfg_pull_none>,
+                                       <1 RK_PA1 3 &pcfg_pull_none>;
+                       };
+
+                       sfc_cs0: sfc-cs0 {
+                               rockchip,pins =
+                                       <1 RK_PA4 3 &pcfg_pull_none>;
+                       };
+
+                       sfc_clk: sfc-clk {
+                               rockchip,pins =
+                                       <1 RK_PB1 3 &pcfg_pull_none>;
+                       };
+               };
+
                lcdc {
                        lcdc_rgb_dclk_pin: lcdc-rgb-dclk-pin {
                                rockchip,pins =
index a185901..1cbe212 100644 (file)
@@ -99,7 +99,7 @@
                };
        };
 
-       cpu0_opp_table: cpu0-opp-table {
+       cpu0_opp_table: opp-table-0 {
                compatible = "operating-points-v2";
                opp-shared;
 
                status = "disabled";
        };
 
+       sfc: spi@ff4c0000 {
+               compatible = "rockchip,sfc";
+               reg = <0x0 0xff4c0000 0x0 0x4000>;
+               interrupts = <GIC_SPI 82 IRQ_TYPE_LEVEL_HIGH>;
+               clocks = <&cru SCLK_SFC>, <&cru HCLK_SFC>;
+               clock-names = "clk_sfc", "hclk_sfc";
+               pinctrl-0 = <&sfc_clk &sfc_cs0 &sfc_bus4>;
+               pinctrl-names = "default";
+               status = "disabled";
+       };
+
        cru: clock-controller@ff500000 {
                compatible = "rockchip,rk3308-cru";
                reg = <0x0 0xff500000 0x0 0x1000>;
                #size-cells = <2>;
                ranges;
 
-               gpio0: gpio0@ff220000 {
+               gpio0: gpio@ff220000 {
                        compatible = "rockchip,gpio-bank";
                        reg = <0x0 0xff220000 0x0 0x100>;
                        interrupts = <GIC_SPI 40 IRQ_TYPE_LEVEL_HIGH>;
                        #interrupt-cells = <2>;
                };
 
-               gpio1: gpio1@ff230000 {
+               gpio1: gpio@ff230000 {
                        compatible = "rockchip,gpio-bank";
                        reg = <0x0 0xff230000 0x0 0x100>;
                        interrupts = <GIC_SPI 41 IRQ_TYPE_LEVEL_HIGH>;
                        #interrupt-cells = <2>;
                };
 
-               gpio2: gpio2@ff240000 {
+               gpio2: gpio@ff240000 {
                        compatible = "rockchip,gpio-bank";
                        reg = <0x0 0xff240000 0x0 0x100>;
                        interrupts = <GIC_SPI 42 IRQ_TYPE_LEVEL_HIGH>;
                        #interrupt-cells = <2>;
                };
 
-               gpio3: gpio3@ff250000 {
+               gpio3: gpio@ff250000 {
                        compatible = "rockchip,gpio-bank";
                        reg = <0x0 0xff250000 0x0 0x100>;
                        interrupts = <GIC_SPI 43 IRQ_TYPE_LEVEL_HIGH>;
                        #interrupt-cells = <2>;
                };
 
-               gpio4: gpio4@ff260000 {
+               gpio4: gpio@ff260000 {
                        compatible = "rockchip,gpio-bank";
                        reg = <0x0 0xff260000 0x0 0x100>;
                        interrupts = <GIC_SPI 44 IRQ_TYPE_LEVEL_HIGH>;
                        };
                };
 
+               sfc {
+                       sfc_bus4: sfc-bus4 {
+                               rockchip,pins =
+                                       <3 RK_PA0 3 &pcfg_pull_none>,
+                                       <3 RK_PA1 3 &pcfg_pull_none>,
+                                       <3 RK_PA2 3 &pcfg_pull_none>,
+                                       <3 RK_PA3 3 &pcfg_pull_none>;
+                       };
+
+                       sfc_bus2: sfc-bus2 {
+                               rockchip,pins =
+                                       <3 RK_PA0 3 &pcfg_pull_none>,
+                                       <3 RK_PA1 3 &pcfg_pull_none>;
+                       };
+
+                       sfc_cs0: sfc-cs0 {
+                               rockchip,pins =
+                                       <3 RK_PA4 3 &pcfg_pull_none>;
+                       };
+
+                       sfc_clk: sfc-clk {
+                               rockchip,pins =
+                                       <3 RK_PA5 3 &pcfg_pull_none>;
+                       };
+               };
+
                gmac {
                        rmii_pins: rmii-pins {
                                rockchip,pins =
index 763cf9b..43c928a 100644 (file)
        assigned-clock-parents = <&cru SCLK_MAC2PHY_SRC>;
        assigned-clock-rate = <50000000>;
        assigned-clocks = <&cru SCLK_MAC2PHY>;
-       clock_in_out = "output";
        status = "okay";
 };
 
 };
 
 &hdmi {
-       ddc-i2c-scl-high-time-ns = <9625>;
-       ddc-i2c-scl-low-time-ns = <10000>;
        status = "okay";
 };
 
index 7fc674a..ea0695b 100644 (file)
                gpio = <&gpio0 RK_PB7 GPIO_ACTIVE_HIGH>;
                enable-active-high;
                regulator-always-on;
-               vin-supply = <&vccsys>;
+               regulator-boot-on;
+               vin-supply = <&usb_midu>;
        };
 };
 
                vcc5-supply = <&vccsys>;
                vcc6-supply = <&vccsys>;
                vcc7-supply = <&vccsys>;
+               vcc8-supply = <&vccsys>;
 
                regulators {
                        vdd_logic: DCDC_REG1 {
                                        regulator-suspend-microvolt = <3000000>;
                                };
                        };
+
+                       usb_midu: BOOST {
+                               regulator-name = "usb_midu";
+                               regulator-min-microvolt = <5000000>;
+                               regulator-max-microvolt = <5400000>;
+                               regulator-always-on;
+                               regulator-boot-on;
+                       };
                };
 
                rk817_codec: codec {
        status = "okay";
 };
 
+&sfc {
+       pinctrl-0 = <&sfc_clk &sfc_cs0 &sfc_bus2>;
+       pinctrl-names = "default";
+       #address-cells = <1>;
+       #size-cells = <0>;
+       status = "okay";
+
+       flash@0 {
+               compatible = "jedec,spi-nor";
+               reg = <0>;
+               spi-max-frequency = <108000000>;
+               spi-rx-bus-width = <2>;
+               spi-tx-bus-width = <1>;
+       };
+};
+
 &tsadc {
        status = "okay";
 };
diff --git a/arch/arm64/boot/dts/rockchip/rk3328-roc-pc.dts b/arch/arm64/boot/dts/rockchip/rk3328-roc-pc.dts
new file mode 100644 (file)
index 0000000..e3e3984
--- /dev/null
@@ -0,0 +1,110 @@
+// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
+// Copyright (c) 2021 T-Chip Intelligent Technology Co., Ltd
+
+/dts-v1/;
+
+#include <dt-bindings/input/input.h>
+
+#include "rk3328-roc-cc.dts"
+
+/ {
+       model = "Firefly ROC-RK3328-PC";
+       compatible = "firefly,roc-rk3328-pc", "rockchip,rk3328";
+
+       adc-keys {
+               compatible = "adc-keys";
+               io-channels = <&saradc 0>;
+               io-channel-names = "buttons";
+               keyup-threshold-microvolt = <1750000>;
+
+               /* This button is unpopulated out of the factory. */
+               button-recovery {
+                       label = "Recovery";
+                       linux,code = <KEY_VENDOR>;
+                       press-threshold-microvolt = <10000>;
+               };
+       };
+
+       ir-receiver {
+               compatible = "gpio-ir-receiver";
+               gpios = <&gpio2 RK_PA2 GPIO_ACTIVE_LOW>;
+               linux,rc-map-name = "rc-khadas";
+               pinctrl-names = "default";
+               pinctrl-0 = <&ir_int>;
+       };
+
+       sdio_pwrseq: sdio-pwrseq {
+               compatible = "mmc-pwrseq-simple";
+               pinctrl-names = "default";
+               pinctrl-0 = <&wifi_en>, <&wifi_host_wake>;
+               reset-gpios = <&gpio3 RK_PB0 GPIO_ACTIVE_LOW>;
+       };
+};
+
+&codec {
+       mute-gpios = <&grf_gpio 0 GPIO_ACTIVE_LOW>;
+};
+
+&gpu {
+       mali-supply = <&vdd_logic>;
+};
+
+&pinctrl {
+       ir {
+               ir_int: ir-int {
+                       rockchip,pins = <2 RK_PA2 RK_FUNC_GPIO &pcfg_pull_none>;
+               };
+       };
+
+       sdmmcio {
+               sdio_per_pin: sdio-per-pin {
+                       rockchip,pins = <0 RK_PD3 RK_FUNC_GPIO &pcfg_pull_down>;
+               };
+       };
+
+       wifi {
+               wifi_en: wifi-en {
+                       rockchip,pins = <3 RK_PB0 RK_FUNC_GPIO &pcfg_pull_none>;
+               };
+
+               wifi_host_wake: wifi-host-wake {
+                       rockchip,pins = <3 RK_PA1 RK_FUNC_GPIO &pcfg_pull_none_4ma>;
+               };
+
+               bt_rst: bt-rst {
+                       rockchip,pins = <1 RK_PD0 RK_FUNC_GPIO &pcfg_pull_none>;
+               };
+
+               bt_en: bt-en {
+                       rockchip,pins = <1 RK_PD2 RK_FUNC_GPIO &pcfg_pull_none>;
+               };
+       };
+};
+
+&pmic_int_l {
+       rockchip,pins = <0 RK_PA2 RK_FUNC_GPIO &pcfg_pull_up>;
+};
+
+&rk805 {
+       interrupt-parent = <&gpio0>;
+       interrupts = <RK_PA2 IRQ_TYPE_LEVEL_LOW>;
+};
+
+&saradc {
+       vref-supply = <&vcc_18>;
+       status = "okay";
+};
+
+&usb20_host_drv {
+       rockchip,pins = <0 RK_PA0 RK_FUNC_GPIO &pcfg_pull_up>;
+};
+
+&vcc_host1_5v {
+       gpio = <&gpio0 RK_PA0 GPIO_ACTIVE_HIGH>;
+};
+
+&vcc_sdio {
+       gpios = <&gpio0 RK_PD3 GPIO_ACTIVE_HIGH>;
+       pinctrl-names = "default";
+       pinctrl-0 = <&sdio_per_pin>;
+};
index 1b0f7e4..f69a38f 100644 (file)
 &spi0 {
        status = "okay";
 
-       spiflash@0 {
+       flash@0 {
                compatible = "jedec,spi-nor";
                reg = <0>;
 
index 8c821ac..39db0b8 100644 (file)
                };
        };
 
-       cpu0_opp_table: opp_table0 {
+       cpu0_opp_table: opp-table-0 {
                compatible = "operating-points-v2";
                opp-shared;
 
 
        gpu: gpu@ff300000 {
                compatible = "rockchip,rk3328-mali", "arm,mali-450";
-               reg = <0x0 0xff300000 0x0 0x40000>;
+               reg = <0x0 0xff300000 0x0 0x30000>;
                interrupts = <GIC_SPI 90 IRQ_TYPE_LEVEL_HIGH>,
                             <GIC_SPI 87 IRQ_TYPE_LEVEL_HIGH>,
                             <GIC_SPI 93 IRQ_TYPE_LEVEL_HIGH>,
                compatible = "rockchip,iommu";
                reg = <0x0 0xff330200 0 0x100>;
                interrupts = <GIC_SPI 96 IRQ_TYPE_LEVEL_HIGH>;
-               interrupt-names = "h265e_mmu";
                clocks = <&cru ACLK_H265>, <&cru PCLK_H265>;
                clock-names = "aclk", "iface";
                #iommu-cells = <0>;
                compatible = "rockchip,iommu";
                reg = <0x0 0xff340800 0x0 0x40>;
                interrupts = <GIC_SPI 98 IRQ_TYPE_LEVEL_HIGH>;
-               interrupt-names = "vepu_mmu";
                clocks = <&cru ACLK_VPU>, <&cru HCLK_VPU>;
                clock-names = "aclk", "iface";
                #iommu-cells = <0>;
                compatible = "rockchip,iommu";
                reg = <0x0 0xff350800 0x0 0x40>;
                interrupts = <GIC_SPI 11 IRQ_TYPE_LEVEL_HIGH>;
-               interrupt-names = "vpu_mmu";
                clocks = <&cru ACLK_VPU>, <&cru HCLK_VPU>;
                clock-names = "aclk", "iface";
                #iommu-cells = <0>;
                compatible = "rockchip,iommu";
                reg = <0x0 0xff360480 0x0 0x40>, <0x0 0xff3604c0 0x0 0x40>;
                interrupts = <GIC_SPI 74 IRQ_TYPE_LEVEL_HIGH>;
-               interrupt-names = "rkvdec_mmu";
                clocks = <&cru ACLK_RKVDEC>, <&cru HCLK_RKVDEC>;
                clock-names = "aclk", "iface";
                #iommu-cells = <0>;
                compatible = "rockchip,iommu";
                reg = <0x0 0xff373f00 0x0 0x100>;
                interrupts = <GIC_SPI 32 IRQ_TYPE_LEVEL_HIGH>;
-               interrupt-names = "vop_mmu";
                clocks = <&cru ACLK_VOP>, <&cru HCLK_VOP>;
                clock-names = "aclk", "iface";
                #iommu-cells = <0>;
                #size-cells = <2>;
                ranges;
 
-               gpio0: gpio0@ff210000 {
+               gpio0: gpio@ff210000 {
                        compatible = "rockchip,gpio-bank";
                        reg = <0x0 0xff210000 0x0 0x100>;
                        interrupts = <GIC_SPI 51 IRQ_TYPE_LEVEL_HIGH>;
                        #interrupt-cells = <2>;
                };
 
-               gpio1: gpio1@ff220000 {
+               gpio1: gpio@ff220000 {
                        compatible = "rockchip,gpio-bank";
                        reg = <0x0 0xff220000 0x0 0x100>;
                        interrupts = <GIC_SPI 52 IRQ_TYPE_LEVEL_HIGH>;
                        #interrupt-cells = <2>;
                };
 
-               gpio2: gpio2@ff230000 {
+               gpio2: gpio@ff230000 {
                        compatible = "rockchip,gpio-bank";
                        reg = <0x0 0xff230000 0x0 0x100>;
                        interrupts = <GIC_SPI 53 IRQ_TYPE_LEVEL_HIGH>;
                        #interrupt-cells = <2>;
                };
 
-               gpio3: gpio3@ff240000 {
+               gpio3: gpio@ff240000 {
                        compatible = "rockchip,gpio-bank";
                        reg = <0x0 0xff240000 0x0 0x100>;
                        interrupts = <GIC_SPI 54 IRQ_TYPE_LEVEL_HIGH>;
index bcd7977..5753e57 100644 (file)
                i2c-parent = <&i2c1>;
                mux-gpios = <&gpio1 RK_PA7 GPIO_ACTIVE_HIGH>;
 
-               /* Q7_GPO_I2C */
-               i2c@0 {
+               /* Q7_GP0_I2C */
+               i2c_gp0: i2c@0 {
                        reg = <0>;
                        #address-cells = <1>;
                        #size-cells = <0>;
                };
 
                /* Q7_SMB */
-               i2c@1 {
+               i2c_smb: i2c@1 {
                        reg = <1>;
                        #address-cells = <1>;
                        #size-cells = <0>;
@@ -52,7 +52,7 @@
                mux-gpios = <&gpio1 RK_PB4 GPIO_ACTIVE_HIGH>;
 
                /* Q7_LVDS_BLC_I2C */
-               i2c@0 {
+               i2c_lvds_blc: i2c@0 {
                        reg = <0>;
                        #address-cells = <1>;
                        #size-cells = <0>;
@@ -69,8 +69,8 @@
                        };
                };
 
-               /* Q7_GP2_I2C */
-               i2c@1 {
+               /* Q7_GP2_I2C = LVDS_DID_CLK/DAT */
+               i2c_gp2: i2c@1 {
                        reg = <1>;
                        #address-cells = <1>;
                        #size-cells = <0>;
        mmc-hs200-1_8v;
        non-removable;
        vmmc-supply = <&vcc33_io>;
-       vqmmc-supply = <&vcc18_io>;
+       vqmmc-supply = <&vcc_18>;
        pinctrl-names = "default";
        pinctrl-0 = <&emmc_clk>, <&emmc_cmd>, <&emmc_bus8>;
        status = "okay";
                                regulator-boot-on;
                        };
 
-                       vcc18_io: LDO_REG4 {
-                               regulator-name = "vcc18_io";
-                               regulator-min-microvolt = <1800000>;
-                               regulator-max-microvolt = <1800000>;
-                               regulator-boot-on;
-                       };
-
                        vdd10_video: LDO_REG6 {
                                regulator-name = "vdd10_video";
                                regulator-min-microvolt = <1000000>;
                                regulator-boot-on;
                        };
 
+                       vcc_18: LDO_REG7 {
+                               regulator-always-on;
+                               regulator-boot-on;
+                               regulator-min-microvolt = <1800000>;
+                               regulator-max-microvolt = <1800000>;
+                               regulator-name = "vcc_18";
+                       };
+
                        vcc18_video: LDO_REG8 {
                                regulator-name = "vcc18_video";
                                regulator-min-microvolt = <1800000>;
        status = "okay";
 };
 
+/* The RK3368-uQ7 "Lion" has most IO voltages hardwired to 3.3V. */
+&io_domains {
+       audio-supply = <&vcc33_io>;
+       dvp-supply = <&vcc33_io>;
+       flash0-supply = <&vcc_18>;
+       gpio30-supply = <&vcc33_io>;
+       gpio1830-supply = <&vcc33_io>;
+       sdcard-supply = <&vcc33_io>;
+       wifi-supply = <&vcc33_io>;
+       status = "okay";
+};
+
 &pinctrl {
        leds {
                module_led_pins: module-led-pins {
        };
 };
 
+&pmu_io_domains {
+       pmu-supply = <&vcc33_io>;
+       vop-supply = <&vcc33_io>;
+       status = "okay";
+};
+
 &spi1 {
        status = "okay";
 
index 4c64fbe..c99da90 100644 (file)
@@ -8,6 +8,7 @@
 #include <dt-bindings/interrupt-controller/irq.h>
 #include <dt-bindings/interrupt-controller/arm-gic.h>
 #include <dt-bindings/pinctrl/rockchip.h>
+#include <dt-bindings/power/rk3368-power.h>
 #include <dt-bindings/soc/rockchip,boot-mode.h>
 #include <dt-bindings/thermal/thermal.h>
 
                status = "disabled";
        };
 
+       pmu: power-management@ff730000 {
+               compatible = "rockchip,rk3368-pmu", "syscon", "simple-mfd";
+               reg = <0x0 0xff730000 0x0 0x1000>;
+
+               power: power-controller {
+                       compatible = "rockchip,rk3368-power-controller";
+                       #power-domain-cells = <1>;
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+
+                       /*
+                        * Note: Although SCLK_* are the working clocks
+                        * of device without including on the NOC, needed for
+                        * synchronous reset.
+                        *
+                        * The clocks on the which NOC:
+                        * ACLK_IEP/ACLK_VIP/ACLK_VOP0 are on ACLK_VIO0_NIU.
+                        * ACLK_ISP/ACLK_VOP1 are on ACLK_VIO1_NIU.
+                        * ACLK_RGA is on ACLK_RGA_NIU.
+                        * The others (HCLK_*,PLCK_*) are on HCLK_VIO_NIU.
+                        *
+                        * Which clock are device clocks:
+                        *      clocks          devices
+                        *      *_IEP           IEP:Image Enhancement Processor
+                        *      *_ISP           ISP:Image Signal Processing
+                        *      *_VIP           VIP:Video Input Processor
+                        *      *_VOP*          VOP:Visual Output Processor
+                        *      *_RGA           RGA
+                        *      *_EDP*          EDP
+                        *      *_DPHY*         LVDS
+                        *      *_HDMI          HDMI
+                        *      *_MIPI_*        MIPI
+                        */
+                       power-domain@RK3368_PD_VIO {
+                               reg = <RK3368_PD_VIO>;
+                               clocks = <&cru ACLK_IEP>,
+                                        <&cru ACLK_ISP>,
+                                        <&cru ACLK_VIP>,
+                                        <&cru ACLK_RGA>,
+                                        <&cru ACLK_VOP>,
+                                        <&cru ACLK_VOP_IEP>,
+                                        <&cru DCLK_VOP>,
+                                        <&cru HCLK_IEP>,
+                                        <&cru HCLK_ISP>,
+                                        <&cru HCLK_RGA>,
+                                        <&cru HCLK_VIP>,
+                                        <&cru HCLK_VOP>,
+                                        <&cru HCLK_VIO_HDCPMMU>,
+                                        <&cru PCLK_EDP_CTRL>,
+                                        <&cru PCLK_HDMI_CTRL>,
+                                        <&cru PCLK_HDCP>,
+                                        <&cru PCLK_ISP>,
+                                        <&cru PCLK_VIP>,
+                                        <&cru PCLK_DPHYRX>,
+                                        <&cru PCLK_DPHYTX0>,
+                                        <&cru PCLK_MIPI_CSI>,
+                                        <&cru PCLK_MIPI_DSI0>,
+                                        <&cru SCLK_VOP0_PWM>,
+                                        <&cru SCLK_EDP_24M>,
+                                        <&cru SCLK_EDP>,
+                                        <&cru SCLK_HDCP>,
+                                        <&cru SCLK_ISP>,
+                                        <&cru SCLK_RGA>,
+                                        <&cru SCLK_HDMI_CEC>,
+                                        <&cru SCLK_HDMI_HDCP>;
+                               pm_qos = <&qos_iep>,
+                                        <&qos_isp_r0>,
+                                        <&qos_isp_r1>,
+                                        <&qos_isp_w0>,
+                                        <&qos_isp_w1>,
+                                        <&qos_vip>,
+                                        <&qos_vop>,
+                                        <&qos_rga_r>,
+                                        <&qos_rga_w>;
+                               #power-domain-cells = <0>;
+                       };
+
+                       /*
+                        * Note: ACLK_VCODEC/HCLK_VCODEC are VCODEC
+                        * (video endecoder & decoder) clocks that on the
+                        * ACLK_VCODEC_NIU and HCLK_VCODEC_NIU (NOC).
+                        */
+                       power-domain@RK3368_PD_VIDEO {
+                               reg = <RK3368_PD_VIDEO>;
+                               clocks = <&cru ACLK_VIDEO>,
+                                        <&cru HCLK_VIDEO>,
+                                        <&cru SCLK_HEVC_CABAC>,
+                                        <&cru SCLK_HEVC_CORE>;
+                               pm_qos = <&qos_hevc_r>,
+                                        <&qos_vpu_r>,
+                                        <&qos_vpu_w>;
+                               #power-domain-cells = <0>;
+                       };
+
+                       /*
+                        * Note: ACLK_GPU is the GPU clock,
+                        * and on the ACLK_GPU_NIU (NOC).
+                        */
+                       power-domain@RK3368_PD_GPU_1 {
+                               reg = <RK3368_PD_GPU_1>;
+                               clocks = <&cru ACLK_GPU_CFG>,
+                                        <&cru ACLK_GPU_MEM>,
+                                        <&cru SCLK_GPU_CORE>;
+                               pm_qos = <&qos_gpu>;
+                               #power-domain-cells = <0>;
+                       };
+               };
+       };
+
        pmugrf: syscon@ff738000 {
                compatible = "rockchip,rk3368-pmugrf", "syscon", "simple-mfd";
                reg = <0x0 0xff738000 0x0 0x1000>;
                compatible = "rockchip,iommu";
                reg = <0x0 0xff900800 0x0 0x100>;
                interrupts = <GIC_SPI 17 IRQ_TYPE_LEVEL_HIGH>;
-               interrupt-names = "iep_mmu";
                clocks = <&cru ACLK_IEP>, <&cru HCLK_IEP>;
                clock-names = "aclk", "iface";
+               power-domains = <&power RK3368_PD_VIO>;
                #iommu-cells = <0>;
                status = "disabled";
        };
                reg = <0x0 0xff914000 0x0 0x100>,
                      <0x0 0xff915000 0x0 0x100>;
                interrupts = <GIC_SPI 14 IRQ_TYPE_LEVEL_HIGH>;
-               interrupt-names = "isp_mmu";
                clocks = <&cru ACLK_ISP>, <&cru HCLK_ISP>;
                clock-names = "aclk", "iface";
                #iommu-cells = <0>;
+               power-domains = <&power RK3368_PD_VIO>;
                rockchip,disable-mmu-reset;
                status = "disabled";
        };
                compatible = "rockchip,iommu";
                reg = <0x0 0xff930300 0x0 0x100>;
                interrupts = <GIC_SPI 15 IRQ_TYPE_LEVEL_HIGH>;
-               interrupt-names = "vop_mmu";
                clocks = <&cru ACLK_VOP>, <&cru HCLK_VOP>;
                clock-names = "aclk", "iface";
+               power-domains = <&power RK3368_PD_VIO>;
                #iommu-cells = <0>;
                status = "disabled";
        };
                reg = <0x0 0xff9a0440 0x0 0x40>,
                      <0x0 0xff9a0480 0x0 0x40>;
                interrupts = <GIC_SPI 12 IRQ_TYPE_LEVEL_HIGH>;
-               interrupt-names = "hevc_mmu";
                clocks = <&cru ACLK_VIDEO>, <&cru HCLK_VIDEO>;
                clock-names = "aclk", "iface";
                #iommu-cells = <0>;
                reg = <0x0 0xff9a0800 0x0 0x100>;
                interrupts = <GIC_SPI 9 IRQ_TYPE_LEVEL_HIGH>,
                             <GIC_SPI 10 IRQ_TYPE_LEVEL_HIGH>;
-               interrupt-names = "vepu_mmu", "vdpu_mmu";
                clocks = <&cru ACLK_VIDEO>, <&cru HCLK_VIDEO>;
                clock-names = "aclk", "iface";
                #iommu-cells = <0>;
                status = "disabled";
        };
 
+       qos_iep: qos@ffad0000 {
+               compatible = "rockchip,rk3368-qos", "syscon";
+               reg = <0x0 0xffad0000 0x0 0x20>;
+       };
+
+       qos_isp_r0: qos@ffad0080 {
+               compatible = "rockchip,rk3368-qos", "syscon";
+               reg = <0x0 0xffad0080 0x0 0x20>;
+       };
+
+       qos_isp_r1: qos@ffad0100 {
+               compatible = "rockchip,rk3368-qos", "syscon";
+               reg = <0x0 0xffad0100 0x0 0x20>;
+       };
+
+       qos_isp_w0: qos@ffad0180 {
+               compatible = "rockchip,rk3368-qos", "syscon";
+               reg = <0x0 0xffad0180 0x0 0x20>;
+       };
+
+       qos_isp_w1: qos@ffad0200 {
+               compatible = "rockchip,rk3368-qos", "syscon";
+               reg = <0x0 0xffad0200 0x0 0x20>;
+       };
+
+       qos_vip: qos@ffad0280 {
+               compatible = "rockchip,rk3368-qos", "syscon";
+               reg = <0x0 0xffad0280 0x0 0x20>;
+       };
+
+       qos_vop: qos@ffad0300 {
+               compatible = "rockchip,rk3368-qos", "syscon";
+               reg = <0x0 0xffad0300 0x0 0x20>;
+       };
+
+       qos_rga_r: qos@ffad0380 {
+               compatible = "rockchip,rk3368-qos", "syscon";
+               reg = <0x0 0xffad0380 0x0 0x20>;
+       };
+
+       qos_rga_w: qos@ffad0400 {
+               compatible = "rockchip,rk3368-qos", "syscon";
+               reg = <0x0 0xffad0400 0x0 0x20>;
+       };
+
+       qos_hevc_r: qos@ffae0000 {
+               compatible = "rockchip,rk3368-qos", "syscon";
+               reg = <0x0 0xffae0000 0x0 0x20>;
+       };
+
+       qos_vpu_r: qos@ffae0100 {
+               compatible = "rockchip,rk3368-qos", "syscon";
+               reg = <0x0 0xffae0100 0x0 0x20>;
+       };
+
+       qos_vpu_w: qos@ffae0180 {
+               compatible = "rockchip,rk3368-qos", "syscon";
+               reg = <0x0 0xffae0180 0x0 0x20>;
+       };
+
+       qos_gpu: qos@ffaf0000 {
+               compatible = "rockchip,rk3368-qos", "syscon";
+               reg = <0x0 0xffaf0000 0x0 0x20>;
+       };
+
        efuse256: efuse@ffb00000 {
                compatible = "rockchip,rk3368-efuse";
                reg = <0x0 0xffb00000 0x0 0x20>;
                #size-cells = <0x2>;
                ranges;
 
-               gpio0: gpio0@ff750000 {
+               gpio0: gpio@ff750000 {
                        compatible = "rockchip,gpio-bank";
                        reg = <0x0 0xff750000 0x0 0x100>;
                        clocks = <&cru PCLK_GPIO0>;
                        #interrupt-cells = <0x2>;
                };
 
-               gpio1: gpio1@ff780000 {
+               gpio1: gpio@ff780000 {
                        compatible = "rockchip,gpio-bank";
                        reg = <0x0 0xff780000 0x0 0x100>;
                        clocks = <&cru PCLK_GPIO1>;
                        #interrupt-cells = <0x2>;
                };
 
-               gpio2: gpio2@ff790000 {
+               gpio2: gpio@ff790000 {
                        compatible = "rockchip,gpio-bank";
                        reg = <0x0 0xff790000 0x0 0x100>;
                        clocks = <&cru PCLK_GPIO2>;
                        #interrupt-cells = <0x2>;
                };
 
-               gpio3: gpio3@ff7a0000 {
+               gpio3: gpio@ff7a0000 {
                        compatible = "rockchip,gpio-bank";
                        reg = <0x0 0xff7a0000 0x0 0x100>;
                        clocks = <&cru PCLK_GPIO3>;
index e6c1c94..31ebb4e 100644 (file)
@@ -16,6 +16,7 @@
                     "google,bob-rev7", "google,bob-rev6",
                     "google,bob-rev5", "google,bob-rev4",
                     "google,bob", "google,gru", "rockchip,rk3399";
+       chassis-type = "convertible";
 
        edp_panel: edp-panel {
                compatible = "boe,nv101wxmn51";
index 1384dab..9b2c679 100644 (file)
        };
 };
 
+&gpio0 {
+       gpio-line-names = /* GPIO0 A 0-7 */
+                         "AP_RTC_CLK_IN",
+                         "EC_AP_INT_L",
+                         "PP1800_AUDIO_EN",
+                         "BT_HOST_WAKE_L",
+                         "WLAN_MODULE_PD_L",
+                         "H1_INT_OD_L",
+                         "CENTERLOGIC_DVS_PWM",
+                         "",
+
+                         /* GPIO0 B 0-4 */
+                         "WIFI_HOST_WAKE_L",
+                         "PMUIO2_33_18_L",
+                         "PP1500_EN",
+                         "AP_EC_WARM_RESET_REQ",
+                         "PP3000_EN";
+};
+
+&gpio1 {
+       gpio-line-names = /* GPIO1 A 0-7 */
+                         "",
+                         "",
+                         "SPK_PA_EN",
+                         "",
+                         "TRACKPAD_INT_L",
+                         "AP_EC_S3_S0_L",
+                         "AP_EC_OVERTEMP",
+                         "AP_SPI_FLASH_MISO",
+
+                         /* GPIO1 B 0-7 */
+                         "AP_SPI_FLASH_MOSI_R",
+                         "AP_SPI_FLASH_CLK_R",
+                         "AP_SPI_FLASH_CS_L_R",
+                         "WLAN_MODULE_RESET_L",
+                         "WIFI_DISABLE_L",
+                         "MIC_INT",
+                         "",
+                         "AP_I2C_DVS_SDA",
+
+                         /* GPIO1 C 0-7 */
+                         "AP_I2C_DVS_SCL",
+                         "AP_BL_EN",
+                         /*
+                          * AP_FLASH_WP is crossystem ABI. Schematics call it
+                          * AP_FW_WP or CPU1_FW_WP, depending on the variant.
+                          */
+                         "AP_FLASH_WP",
+                         "LITCPU_DVS_PWM",
+                         "AP_I2C_AUDIO_SDA",
+                         "AP_I2C_AUDIO_SCL",
+                         "",
+                         "HEADSET_INT_L";
+};
+
+&gpio2 {
+       gpio-line-names = /* GPIO2 A 0-7 */
+                         "",
+                         "",
+                         "SD_IO_PWR_EN",
+                         "",
+                         "",
+                         "",
+                         "",
+                         "",
+
+                         /* GPIO2 B 0-7 */
+                         "",
+                         "",
+                         "",
+                         "",
+                         "",
+                         "",
+                         "",
+                         "",
+
+                         /* GPIO2 C 0-7 */
+                         "",
+                         "",
+                         "",
+                         "",
+                         "AP_SPI_EC_MISO",
+                         "AP_SPI_EC_MOSI",
+                         "AP_SPI_EC_CLK",
+                         "AP_SPI_EC_CS_L",
+
+                         /* GPIO2 D 0-4 */
+                         "BT_DEV_WAKE_L",
+                         "",
+                         "WIFI_PCIE_CLKREQ_L",
+                         "WIFI_PERST_L",
+                         "SD_PWR_3000_1800_L";
+};
+
+&gpio3 {
+       gpio-line-names = /* GPIO3 A 0-7 */
+                         "",
+                         "",
+                         "",
+                         "",
+                         "AP_SPI_TPM_MISO",
+                         "AP_SPI_TPM_MOSI_R",
+                         "AP_SPI_TPM_CLK_R",
+                         "AP_SPI_TPM_CS_L_R",
+
+                         /* GPIO3 B 0-7 */
+                         "EC_IN_RW",
+                         "",
+                         "AP_I2C_TP_SDA",
+                         "AP_I2C_TP_SCL",
+                         "AP_I2C_TP_PU_EN",
+                         "TOUCH_INT_L",
+                         "",
+                         "",
+
+                         /* GPIO3 C 0-7 */
+                         "",
+                         "",
+                         "",
+                         "",
+                         "",
+                         "",
+                         "",
+                         "",
+
+                         /* GPIO3 D 0-7 */
+                         "I2S0_SCLK",
+                         "I2S0_LRCK_RX",
+                         "I2S0_LRCK_TX",
+                         "I2S0_SDI_0",
+                         "I2S0_SDI_1",
+                         "",
+                         "I2S0_SDO_1",
+                         "I2S0_SDO_0";
+};
+
+&gpio4 {
+       gpio-line-names = /* GPIO4 A 0-7 */
+                         "I2S_MCLK",
+                         "AP_I2C_MIC_SDA",
+                         "AP_I2C_MIC_SCL",
+                         "",
+                         "",
+                         "",
+                         "",
+                         "",
+
+                         /* GPIO4 B 0-7 */
+                         "",
+                         "",
+                         "",
+                         "",
+                         "",
+                         "",
+                         "",
+                         "",
+
+                         /* GPIO4 C 0-7 */
+                         "AP_I2C_TS_SDA",
+                         "AP_I2C_TS_SCL",
+                         "GPU_DVS_PWM",
+                         "UART_DBG_TX_AP_RX",
+                         "UART_AP_TX_DBG_RX",
+                         "",
+                         "BIGCPU_DVS_PWM",
+                         "EDP_HPD_3V0",
+
+                         /* GPIO4 D 0-5 */
+                         "SD_CARD_DET_L",
+                         "USB_DP_HPD",
+                         "TOUCH_RESET_L",
+                         "PP3300_DISP_EN",
+                         "",
+                         "SD_SLOT_PWR_EN";
+};
+
 ap_i2c_mic: &i2c1 {
        status = "okay";
 
index 2bbef9f..6863689 100644 (file)
@@ -24,6 +24,7 @@
                     "google,kevin-rev9", "google,kevin-rev8",
                     "google,kevin-rev7", "google,kevin-rev6",
                     "google,kevin", "google,gru", "rockchip,rk3399";
+       chassis-type = "convertible";
 
        /* Power tree */
 
diff --git a/arch/arm64/boot/dts/rockchip/rk3399-gru-scarlet-dumo.dts b/arch/arm64/boot/dts/rockchip/rk3399-gru-scarlet-dumo.dts
new file mode 100644 (file)
index 0000000..853e884
--- /dev/null
@@ -0,0 +1,41 @@
+// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
+/*
+ * Google Gru-Scarlet Rev5+ (SKU-0) board device tree source
+ *
+ * Copyright 2021 Google LLC.
+ */
+
+/dts-v1/;
+
+#include "rk3399-gru-scarlet.dtsi"
+
+/ {
+       model = "Google Scarlet";
+       compatible = "google,scarlet-rev15-sku0", "google,scarlet-rev15",
+                    "google,scarlet-rev14-sku0", "google,scarlet-rev14",
+                    "google,scarlet-rev13-sku0", "google,scarlet-rev13",
+                    "google,scarlet-rev12-sku0", "google,scarlet-rev12",
+                    "google,scarlet-rev11-sku0", "google,scarlet-rev11",
+                    "google,scarlet-rev10-sku0", "google,scarlet-rev10",
+                    "google,scarlet-rev9-sku0",  "google,scarlet-rev9",
+                    "google,scarlet-rev8-sku0",  "google,scarlet-rev8",
+                    "google,scarlet-rev7-sku0",  "google,scarlet-rev7",
+                    "google,scarlet-rev6-sku0",  "google,scarlet-rev6",
+                    "google,scarlet-rev5-sku0",  "google,scarlet-rev5",
+                    "google,scarlet", "google,gru", "rockchip,rk3399";
+};
+
+&mipi_panel {
+       compatible = "innolux,p097pfg";
+       avdd-supply = <&ppvarp_lcd>;
+       avee-supply = <&ppvarn_lcd>;
+};
+
+&pci_rootport {
+       wifi@0,0 {
+               compatible = "qcom,ath10k";
+               reg = <0x00010000 0x0 0x00000000 0x0 0x00000000>,
+                     <0x03010010 0x0 0x00000000 0x0 0x00200000>;
+               qcom,ath10k-calibration-variant = "GO_DUMO";
+       };
+};
index 5d7a9d9..a9817b3 100644 (file)
@@ -8,6 +8,8 @@
 #include "rk3399-gru.dtsi"
 
 /{
+       chassis-type = "tablet";
+
        /* Power tree */
 
        /* ppvar_sys children, sorted by name */
@@ -389,6 +391,186 @@ camera: &i2c7 {
                <400000000>;
 };
 
+&gpio0 {
+       gpio-line-names = /* GPIO0 A 0-7 */
+                         "CLK_32K_AP",
+                         "EC_IN_RW_OD",
+                         "SPK_PA_EN",
+                         "WLAN_PERST_1V8_L",
+                         "WLAN_PD_1V8_L",
+                         "WLAN_RF_KILL_1V8_L",
+                         "BIGCPU_DVS_PWM",
+                         "SD_CD_L_JTAG_EN",
+
+                         /* GPIO0 B 0-5 */
+                         "BT_EN_BT_RF_KILL_1V8_L",
+                         "PMUIO2_33_18_L_PP3300_S0_EN",
+                         "TOUCH_RESET_L",
+                         "AP_EC_WARM_RESET_REQ",
+                         "PEN_RESET_L",
+                         /*
+                          * AP_FLASH_WP_L is crossystem ABI. Schematics call
+                          * it AP_FLASH_WP_R_ODL.
+                          */
+                         "AP_FLASH_WP_L";
+};
+
+&gpio1 {
+       gpio-line-names = /* GPIO1 A 0-7 */
+                         "PEN_INT_ODL",
+                         "PEN_EJECT_ODL",
+                         "BT_HOST_WAKE_1V8_L",
+                         "WLAN_HOST_WAKE_1V8_L",
+                         "TOUCH_INT_ODL",
+                         "AP_EC_S3_S0_L",
+                         "AP_EC_OVERTEMP",
+                         "AP_SPI_FLASH_MISO",
+
+                         /* GPIO1 B 0-7 */
+                         "AP_SPI_FLASH_MOSI_R",
+                         "AP_SPI_FLASH_CLK_R",
+                         "AP_SPI_FLASH_CS_L_R",
+                         "SD_CARD_DET_ODL",
+                         "",
+                         "AP_EXPANSION_IO1",
+                         "AP_EXPANSION_IO2",
+                         "AP_I2C_DISP_SDA",
+
+                         /* GPIO1 C 0-7 */
+                         "AP_I2C_DISP_SCL",
+                         "H1_INT_ODL",
+                         "EC_AP_INT_ODL",
+                         "LITCPU_DVS_PWM",
+                         "AP_I2C_AUDIO_SDA",
+                         "AP_I2C_AUDIO_SCL",
+                         "AP_EXPANSION_IO3",
+                         "HEADSET_INT_ODL",
+
+                         /* GPIO1 D0 */
+                         "AP_EXPANSION_IO4";
+};
+
+&gpio2 {
+       gpio-line-names = /* GPIO2 A 0-7 */
+                         "AP_I2C_PEN_SDA",
+                         "AP_I2C_PEN_SCL",
+                         "SD_IO_PWR_EN",
+                         "UCAM_RST_L",
+                         "PP1250_CAM_EN",
+                         "WCAM_RST_L",
+                         "AP_EXPANSION_IO5",
+                         "AP_I2C_CAM_SDA",
+
+                         /* GPIO2 B 0-7 */
+                         "AP_I2C_CAM_SCL",
+                         "AP_H1_SPI_MISO",
+                         "AP_H1_SPI_MOSI",
+                         "AP_H1_SPI_CLK",
+                         "AP_H1_SPI_CS_L",
+                         "",
+                         "",
+                         "",
+
+                         /* GPIO2 C 0-7 */
+                         "UART_EXPANSION_TX_AP_RX",
+                         "UART_AP_TX_EXPANSION_RX",
+                         "UART_EXPANSION_RTS_AP_CTS",
+                         "UART_AP_RTS_EXPANSION_CTS",
+                         "AP_SPI_EC_MISO",
+                         "AP_SPI_EC_MOSI",
+                         "AP_SPI_EC_CLK",
+                         "AP_SPI_EC_CS_L",
+
+                         /* GPIO2 D 0-4 */
+                         "PP2800_CAM_EN",
+                         "CLK_24M_CAM",
+                         "WLAN_PCIE_CLKREQ_1V8_L",
+                         "",
+                         "SD_PWR_3000_1800_L";
+};
+
+&gpio3 {
+       gpio-line-names = /* GPIO3 A 0-7 */
+                         "",
+                         "",
+                         "",
+                         "",
+                         "",
+                         "",
+                         "",
+                         "",
+
+                         /* GPIO3 B 0-7 */
+                         "",
+                         "",
+                         "",
+                         "",
+                         "",
+                         "",
+                         "",
+                         "",
+
+                         /* GPIO3 C 0-7 */
+                         "",
+                         "",
+                         "",
+                         "",
+                         "",
+                         "",
+                         "",
+                         "",
+
+                         /* GPIO3 D 0-7 */
+                         "I2S0_SCLK",
+                         "I2S0_LRCK_RX",
+                         "I2S0_LRCK_TX",
+                         "I2S0_SDI_0",
+                         "STRAP_LCDBIAS_L",
+                         "STRAP_FEATURE_1",
+                         "STRAP_FEATURE_2",
+                         "I2S0_SDO_0";
+};
+
+&gpio4 {
+       gpio-line-names = /* GPIO4 A 0-7 */
+                         "I2S_MCLK",
+                         "AP_I2C_EXPANSION_SDA",
+                         "AP_I2C_EXPANSION_SCL",
+                         "DMIC_EN",
+                         "",
+                         "",
+                         "",
+                         "",
+
+                         /* GPIO4 B 0-7 */
+                         "",
+                         "",
+                         "",
+                         "",
+                         "",
+                         "",
+                         "",
+                         "",
+
+                         /* GPIO4 C 0-7 */
+                         "AP_I2C_TS_SDA",
+                         "AP_I2C_TS_SCL",
+                         "GPU_DVS_PWM",
+                         "UART_DBG_TX_AP_RX",
+                         "UART_AP_TX_DBG_RX",
+                         "BL_EN",
+                         "BL_PWM",
+                         "",
+
+                         /* GPIO4 D 0-5 */
+                         "",
+                         "DISPLAY_RST_L",
+                         "",
+                         "PPVARP_LCD_EN",
+                         "PPVARN_LCD_EN",
+                         "SD_SLOT_PWR_EN";
+};
+
 &i2c_tunnel {
        google,remote-bus = <0>;
 };
index c1bcc8c..45a5ae5 100644 (file)
@@ -461,7 +461,7 @@ ap_i2c_audio: &i2c8 {
        vpcie0v9-supply = <&pp900_pcie>;
 
        pci_rootport: pcie@0,0 {
-               reg = <0x83000000 0x0 0x00000000 0x0 0x00000000>;
+               reg = <0x0000 0 0 0 0>;
                #address-cells = <3>;
                #size-cells = <2>;
                ranges;
@@ -543,7 +543,7 @@ ap_i2c_audio: &i2c8 {
        pinctrl-names = "default", "sleep";
        pinctrl-1 = <&spi1_sleep>;
 
-       spiflash@0 {
+       flash@0 {
                compatible = "jedec,spi-nor";
                reg = <0>;
 
index 738cfd2..63c7681 100644 (file)
@@ -21,6 +21,9 @@
        aliases {
                mmc0 = &sdmmc;
                mmc1 = &sdhci;
+               spi1 = &spi1;
+               spi2 = &spi2;
+               spi5 = &spi5;
        };
 
        avdd_0v9_s0: avdd-0v9-s0 {
                vin-supply = <&vcc3v3_sys_s3>;
        };
 
+       chosen {
+               stdout-path = "serial2:1500000n8";
+       };
+
        clkin_gmac: external-gmac-clock {
                compatible = "fixed-clock";
                clock-frequency = <125000000>;
        status = "okay";
 };
 
+&spi1 {
+       status = "okay";
+
+       spiflash: flash@0 {
+               compatible = "jedec,spi-nor";
+               reg = <0x0>;
+               spi-max-frequency = <25000000>;
+               status = "okay";
+               m25p,fast-read;
+       };
+};
+
+/* UEXT connector */
+&spi2 {
+       status = "okay";
+};
+
+&spi5 {
+       status = "okay";
+};
+
 &tcphy1 {
        /* phy for &usbdrd_dwc3_1 */
        status = "okay";
 };
 
+&tsadc {
+       /* tshut mode 0:CRU 1:GPIO */
+       rockchip,hw-tshut-mode = <1>;
+       /* tshut polarity 0:LOW 1:HIGH */
+       rockchip,hw-tshut-polarity = <1>;
+       status = "okay";
+};
+
 &u2phy1 {
        status = "okay";
 
index 69cc9b0..2180e0f 100644 (file)
@@ -4,7 +4,7 @@
  */
 
 / {
-       cluster0_opp: opp-table0 {
+       cluster0_opp: opp-table-0 {
                compatible = "operating-points-v2";
                opp-shared;
 
@@ -39,7 +39,7 @@
                };
        };
 
-       cluster1_opp: opp-table1 {
+       cluster1_opp: opp-table-1 {
                compatible = "operating-points-v2";
                opp-shared;
 
@@ -82,7 +82,7 @@
                };
        };
 
-       gpu_opp_table: opp-table2 {
+       gpu_opp_table: opp-table-2 {
                compatible = "operating-points-v2";
 
                opp00 {
index da41cd8..fee5e71 100644 (file)
@@ -4,7 +4,7 @@
  */
 
 / {
-       cluster0_opp: opp-table0 {
+       cluster0_opp: opp-table-0 {
                compatible = "operating-points-v2";
                opp-shared;
 
@@ -35,7 +35,7 @@
                };
        };
 
-       cluster1_opp: opp-table1 {
+       cluster1_opp: opp-table-1 {
                compatible = "operating-points-v2";
                opp-shared;
 
@@ -74,7 +74,7 @@
                };
        };
 
-       gpu_opp_table: opp-table2 {
+       gpu_opp_table: opp-table-2 {
                compatible = "operating-points-v2";
 
                opp00 {
index 2b5f001..c2f021a 100644 (file)
@@ -17,6 +17,7 @@
 / {
        model = "Pine64 Pinebook Pro";
        compatible = "pine64,pinebook-pro", "rockchip,rk3399";
+       chassis-type = "laptop";
 
        aliases {
                mmc0 = &sdio0;
        };
 };
 
-&cdn_dp {
-       status = "okay";
-};
-
 &cpu_b0 {
        cpu-supply = <&vdd_cpu_b>;
 };
 
                connector {
                        compatible = "usb-c-connector";
-                       data-role = "host";
+                       data-role = "dual";
                        label = "USB-C";
                        op-sink-microwatt = <1000000>;
                        power-role = "dual";
diff --git a/arch/arm64/boot/dts/rockchip/rk3399-roc-pc-plus.dts b/arch/arm64/boot/dts/rockchip/rk3399-roc-pc-plus.dts
new file mode 100644 (file)
index 0000000..5a2661a
--- /dev/null
@@ -0,0 +1,218 @@
+// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
+/*
+ * Copyright (c) 2017 T-Chip Intelligent Technology Co., Ltd
+ */
+
+/dts-v1/;
+#include "rk3399-roc-pc.dtsi"
+
+/*
+ * Notice:
+ * 1. rk3399-roc-pc-plus is powered by dc_12v directly.
+ * 2. rk3399-roc-pc-plus has only vcc_bus_typec0 in schematic, which is coresponding
+ *    to vcc_vbus_typec1 in rk3399-roc-pc.
+ *    For simplicity, reserve the node name of vcc_vbus_typec1.
+ * 3. vcc5v0_host is actually 2 regulators (host0, 1) controlled by the same gpio.
+ */
+
+/delete-node/ &fusb1;
+/delete-node/ &hub_rst;
+/delete-node/ &mp8859;
+/delete-node/ &vcc_sys_en;
+/delete-node/ &vcc_vbus_typec0;
+/delete-node/ &yellow_led;
+
+/ {
+       model = "Firefly ROC-RK3399-PC-PLUS Board";
+       compatible = "firefly,roc-rk3399-pc-plus", "rockchip,rk3399";
+
+       dc_12v: dc-12v {
+               compatible = "regulator-fixed";
+               regulator-name = "dc_12v";
+               regulator-always-on;
+               regulator-boot-on;
+               regulator-min-microvolt = <12000000>;
+               regulator-max-microvolt = <12000000>;
+       };
+
+       es8388-sound {
+               compatible = "simple-audio-card";
+               pinctrl-names = "default";
+               pinctrl-0 = <&hp_det_pin>;
+               simple-audio-card,name = "rockchip,es8388-codec";
+               simple-audio-card,format = "i2s";
+               simple-audio-card,mclk-fs = <256>;
+               simple-audio-card,widgets =
+                       "Microphone", "Mic Jack",
+                       "Headphone", "Headphones";
+               simple-audio-card,routing =
+                       "LINPUT1", "Mic Jack",
+                       "Headphone Amp INL", "LOUT2",
+                       "Headphone Amp INR", "ROUT2",
+                       "Headphones", "Headphone Amp OUTL",
+                       "Headphones", "Headphone Amp OUTR";
+               simple-audio-card,hp-det-gpio = <&gpio2 RK_PA6 GPIO_ACTIVE_HIGH>;
+               simple-audio-card,aux-devs = <&headphones_amp>;
+               simple-audio-card,pin-switches = "Headphones";
+
+               simple-audio-card,codec {
+                       sound-dai = <&es8388>;
+               };
+
+               simple-audio-card,cpu {
+                       sound-dai = <&i2s1>;
+               };
+       };
+
+       gpio-fan {
+               #cooling-cells = <2>;
+               compatible = "gpio-fan";
+               gpio-fan,speed-map = <0 0 3000 1>;
+               gpios = <&gpio1 RK_PA1 GPIO_ACTIVE_HIGH>;
+       };
+
+       /delete-node/ gpio-keys;
+
+       /* not amplifier, used as switcher only */
+       headphones_amp: headphones-amp {
+               compatible = "simple-audio-amplifier";
+               pinctrl-names = "default";
+               pinctrl-0 = <&ear_ctl_pin>;
+               enable-gpios = <&gpio0 RK_PA2 GPIO_ACTIVE_HIGH>;
+               sound-name-prefix = "Headphone Amp";
+               VCC-supply = <&vcca3v0_codec>;
+       };
+
+       ir-receiver {
+               linux,rc-map-name = "rc-khadas";
+       };
+
+       leds {
+               pinctrl-names = "default";
+               pinctrl-0 = <&work_led_pin>, <&diy_led_pin>;
+       };
+};
+
+&fusb0 {
+       vbus-supply = <&vcc_vbus_typec1>;
+};
+
+&i2c0 {
+       hym8563: hym8563@51 {
+               compatible = "haoyu,hym8563";
+               reg = <0x51>;
+               interrupt-parent = <&gpio0>;
+               interrupts = <RK_PA5 IRQ_TYPE_EDGE_FALLING>;
+               #clock-cells = <0>;
+               clock-frequency = <32768>;
+               clock-output-names = "xin32k";
+               pinctrl-names = "default";
+               pinctrl-0 = <&hym8563_int>;
+       };
+};
+
+&i2c1 {
+       es8388: es8388@11 {
+               compatible = "everest,es8388";
+               reg = <0x11>;
+               clock-names = "mclk";
+               clocks = <&cru SCLK_I2S_8CH_OUT>;
+               #sound-dai-cells = <0>;
+       };
+};
+
+/* <4 RK_PA0 1 &pcfg_pull_none> is used as i2s_8ch_mclk_pin */
+&i2s0_8ch_bus {
+       rockchip,pins =
+               <3 RK_PD0 1 &pcfg_pull_none>,
+               <3 RK_PD1 1 &pcfg_pull_none>,
+               <3 RK_PD2 1 &pcfg_pull_none>,
+               <3 RK_PD3 1 &pcfg_pull_none>,
+               <3 RK_PD4 1 &pcfg_pull_none>,
+               <3 RK_PD5 1 &pcfg_pull_none>,
+               <3 RK_PD6 1 &pcfg_pull_none>,
+               <3 RK_PD7 1 &pcfg_pull_none>;
+};
+
+&i2s1 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&i2s_8ch_mclk_pin>, <&i2s1_2ch_bus>;
+       rockchip,playback-channels = <2>;
+       rockchip,capture-channels = <2>;
+       status = "okay";
+};
+
+&pinctrl {
+       es8388 {
+               ear_ctl_pin: ear-ctl-pin {
+                       rockchip,pins = <0 RK_PA2 RK_FUNC_GPIO &pcfg_output_high>;
+               };
+
+               hp_det_pin: hp-det-pin {
+                       rockchip,pins = <2 RK_PA6 RK_FUNC_GPIO &pcfg_pull_down>;
+               };
+       };
+
+       hym8563 {
+               hym8563_int: hym8563-int {
+                       rockchip,pins = <0 RK_PA5 RK_FUNC_GPIO &pcfg_pull_up>;
+               };
+       };
+
+       i2s1 {
+               i2s_8ch_mclk_pin: i2s-8ch-mclk-pin {
+                       rockchip,pins = <4 RK_PA0 1 &pcfg_pull_none>;
+               };
+       };
+};
+
+&u2phy0 {
+       status = "okay";
+
+       u2phy0_otg: otg-port {
+               phy-supply = <&vcc_vbus_typec1>;
+               status = "okay";
+       };
+
+       u2phy0_host: host-port {
+               phy-supply = <&vcc5v0_host>;
+               status = "okay";
+       };
+};
+
+&u2phy1 {
+       status = "okay";
+
+       u2phy1_otg: otg-port {
+               phy-supply = <&vcc5v0_host>;
+               status = "okay";
+       };
+
+       u2phy1_host: host-port {
+               phy-supply = <&vcc5v0_host>;
+               status = "okay";
+       };
+};
+
+&uart0 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&uart0_xfer &uart0_cts &uart0_rts>;
+       status = "okay";
+};
+
+&usbdrd_dwc3_0 {
+       dr_mode = "host";
+       status = "okay";
+};
+
+&vcc_sys {
+       /* vcc_sys is fixed, not controlled by any gpio */
+       /delete-property/ gpio;
+       /delete-property/ pinctrl-names;
+       /delete-property/ pinctrl-0;
+};
+
+&vcc5v0_host {
+       pinctrl-names = "default";
+       pinctrl-0 = <&vcc5v0_host_en>;
+};
index b28888e..98136c8 100644 (file)
                reset-gpios = <&gpio0 RK_PB2 GPIO_ACTIVE_LOW>;
        };
 
+       sound {
+               compatible = "audio-graph-card";
+               label = "Analog";
+               dais = <&i2s0_p0>;
+       };
+
+       sound-dit {
+               compatible = "audio-graph-card";
+               label = "SPDIF";
+               dais = <&spdif_p0>;
+       };
+
+       spdif-dit {
+               compatible = "linux,spdif-dit";
+               #sound-dai-cells = <0>;
+
+               port {
+                       dit_p0_0: endpoint {
+                               remote-endpoint = <&spdif_p0_0>;
+                       };
+               };
+       };
+
        vcc12v_dcin: dc-12v {
                compatible = "regulator-fixed";
                regulator-name = "vcc12v_dcin";
        i2c-scl-rising-time-ns = <300>;
        i2c-scl-falling-time-ns = <15>;
        status = "okay";
+
+       es8316: codec@11 {
+               compatible = "everest,es8316";
+               reg = <0x11>;
+               clocks = <&cru SCLK_I2S_8CH_OUT>;
+               clock-names = "mclk";
+               #sound-dai-cells = <0>;
+
+               port {
+                       es8316_p0_0: endpoint {
+                               remote-endpoint = <&i2s0_p0_0>;
+                       };
+               };
+       };
 };
 
 &i2c3 {
        rockchip,capture-channels = <2>;
        rockchip,playback-channels = <2>;
        status = "okay";
+
+       i2s0_p0: port {
+               i2s0_p0_0: endpoint {
+                       dai-format = "i2s";
+                       mclk-fs = <256>;
+                       remote-endpoint = <&es8316_p0_0>;
+               };
+       };
 };
 
 &i2s1 {
        status = "okay";
 };
 
+&spdif {
+
+       spdif_p0: port {
+               spdif_p0_0: endpoint {
+                       remote-endpoint = <&dit_p0_0>;
+               };
+       };
+};
+
 &tcphy0 {
        status = "okay";
 };
diff --git a/arch/arm64/boot/dts/rockchip/rk3399-rock-pi-4a-plus.dts b/arch/arm64/boot/dts/rockchip/rk3399-rock-pi-4a-plus.dts
new file mode 100644 (file)
index 0000000..281a04b
--- /dev/null
@@ -0,0 +1,14 @@
+// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
+/*
+ * Copyright (c) 2019 Akash Gajjar <Akash_Gajjar@mentor.com>
+ * Copyright (c) 2019 Pragnesh Patel <Pragnesh_Patel@mentor.com>
+ */
+
+/dts-v1/;
+#include "rk3399-rock-pi-4.dtsi"
+#include "rk3399-op1-opp.dtsi"
+
+/ {
+       model = "Radxa ROCK Pi 4A+";
+       compatible = "radxa,rockpi4a-plus", "radxa,rockpi4", "rockchip,rk3399";
+};
diff --git a/arch/arm64/boot/dts/rockchip/rk3399-rock-pi-4b-plus.dts b/arch/arm64/boot/dts/rockchip/rk3399-rock-pi-4b-plus.dts
new file mode 100644 (file)
index 0000000..dfad13d
--- /dev/null
@@ -0,0 +1,47 @@
+// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
+/*
+ * Copyright (c) 2019 Akash Gajjar <Akash_Gajjar@mentor.com>
+ * Copyright (c) 2019 Pragnesh Patel <Pragnesh_Patel@mentor.com>
+ */
+
+/dts-v1/;
+#include "rk3399-rock-pi-4.dtsi"
+#include "rk3399-op1-opp.dtsi"
+
+/ {
+       model = "Radxa ROCK Pi 4B+";
+       compatible = "radxa,rockpi4b-plus", "radxa,rockpi4", "rockchip,rk3399";
+
+       aliases {
+               mmc2 = &sdio0;
+       };
+};
+
+&sdio0 {
+       status = "okay";
+
+       brcmf: wifi@1 {
+               compatible = "brcm,bcm4329-fmac";
+               reg = <1>;
+               interrupt-parent = <&gpio0>;
+               interrupts = <RK_PA3 GPIO_ACTIVE_HIGH>;
+               interrupt-names = "host-wake";
+               pinctrl-names = "default";
+               pinctrl-0 = <&wifi_host_wake_l>;
+       };
+};
+
+&uart0 {
+       status = "okay";
+
+       bluetooth {
+               compatible = "brcm,bcm43438-bt";
+               clocks = <&rk808 1>;
+               clock-names = "ext_clock";
+               device-wakeup-gpios = <&gpio2 RK_PD3 GPIO_ACTIVE_HIGH>;
+               host-wakeup-gpios = <&gpio0 RK_PA4 GPIO_ACTIVE_HIGH>;
+               shutdown-gpios = <&gpio0 RK_PB1 GPIO_ACTIVE_HIGH>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&bt_host_wake_l &bt_wake_l &bt_enable_h>;
+       };
+};
index 6bff8db..83db4ca 100644 (file)
@@ -69,6 +69,7 @@
 
        fan: pwm-fan {
                compatible = "pwm-fan";
+               cooling-levels = <0 100 150 200 255>;
                #cooling-cells = <2>;
                fan-supply = <&vcc12v_dcin>;
                pwms = <&pwm1 0 50000 0>;
        cpu-supply = <&vdd_cpu_b>;
 };
 
+&cpu_thermal {
+       trips {
+               cpu_warm: cpu_warm {
+                       temperature = <55000>;
+                       hysteresis = <2000>;
+                       type = "active";
+               };
+
+               cpu_hot: cpu_hot {
+                       temperature = <65000>;
+                       hysteresis = <2000>;
+                       type = "active";
+               };
+       };
+
+       cooling-maps {
+               map2 {
+                       trip = <&cpu_warm>;
+                       cooling-device = <&fan THERMAL_NO_LIMIT 1>;
+               };
+
+               map3 {
+                       trip = <&cpu_hot>;
+                       cooling-device = <&fan 2 THERMAL_NO_LIMIT>;
+               };
+       };
+};
+
 &emmc_phy {
        status = "okay";
 };
index 3871c7f..d3cdf6f 100644 (file)
                        #cooling-cells = <2>; /* min followed by max */
                        dynamic-power-coefficient = <436>;
                        cpu-idle-states = <&CPU_SLEEP &CLUSTER_SLEEP>;
+
+                       thermal-idle {
+                               #cooling-cells = <2>;
+                               duration-us = <10000>;
+                               exit-latency-us = <500>;
+                       };
                };
 
                cpu_b1: cpu@101 {
                        #cooling-cells = <2>; /* min followed by max */
                        dynamic-power-coefficient = <436>;
                        cpu-idle-states = <&CPU_SLEEP &CLUSTER_SLEEP>;
+
+                       thermal-idle {
+                               #cooling-cells = <2>;
+                               duration-us = <10000>;
+                               exit-latency-us = <500>;
+                       };
                };
 
                idle-states {
                status = "disabled";
        };
 
+       debug@fe430000 {
+               compatible = "arm,coresight-cpu-debug", "arm,primecell";
+               reg = <0 0xfe430000 0 0x1000>;
+               clocks = <&cru PCLK_COREDBG_L>;
+               clock-names = "apb_pclk";
+               cpu = <&cpu_l0>;
+       };
+
+       debug@fe432000 {
+               compatible = "arm,coresight-cpu-debug", "arm,primecell";
+               reg = <0 0xfe432000 0 0x1000>;
+               clocks = <&cru PCLK_COREDBG_L>;
+               clock-names = "apb_pclk";
+               cpu = <&cpu_l1>;
+       };
+
+       debug@fe434000 {
+               compatible = "arm,coresight-cpu-debug", "arm,primecell";
+               reg = <0 0xfe434000 0 0x1000>;
+               clocks = <&cru PCLK_COREDBG_L>;
+               clock-names = "apb_pclk";
+               cpu = <&cpu_l2>;
+       };
+
+       debug@fe436000 {
+               compatible = "arm,coresight-cpu-debug", "arm,primecell";
+               reg = <0 0xfe436000 0 0x1000>;
+               clocks = <&cru PCLK_COREDBG_L>;
+               clock-names = "apb_pclk";
+               cpu = <&cpu_l3>;
+       };
+
+       debug@fe610000 {
+               compatible = "arm,coresight-cpu-debug", "arm,primecell";
+               reg = <0 0xfe610000 0 0x1000>;
+               clocks = <&cru PCLK_COREDBG_B>;
+               clock-names = "apb_pclk";
+               cpu = <&cpu_b0>;
+       };
+
+       debug@fe710000 {
+               compatible = "arm,coresight-cpu-debug", "arm,primecell";
+               reg = <0 0xfe710000 0 0x1000>;
+               clocks = <&cru PCLK_COREDBG_B>;
+               clock-names = "apb_pclk";
+               cpu = <&cpu_b1>;
+       };
+
        usbdrd3_0: usb@fe800000 {
                compatible = "rockchip,rk3399-dwc3";
                #address-cells = <2>;
                compatible = "rockchip,iommu";
                reg = <0x0 0xff650800 0x0 0x40>;
                interrupts = <GIC_SPI 115 IRQ_TYPE_LEVEL_HIGH 0>;
-               interrupt-names = "vpu_mmu";
                clocks = <&cru ACLK_VCODEC>, <&cru HCLK_VCODEC>;
                clock-names = "aclk", "iface";
                #iommu-cells = <0>;
                compatible = "rockchip,iommu";
                reg = <0x0 0xff660480 0x0 0x40>, <0x0 0xff6604c0 0x0 0x40>;
                interrupts = <GIC_SPI 117 IRQ_TYPE_LEVEL_HIGH 0>;
-               interrupt-names = "vdec_mmu";
                clocks = <&cru ACLK_VDU>, <&cru HCLK_VDU>;
                clock-names = "aclk", "iface";
                power-domains = <&power RK3399_PD_VDU>;
                compatible = "rockchip,iommu";
                reg = <0x0 0xff670800 0x0 0x40>;
                interrupts = <GIC_SPI 42 IRQ_TYPE_LEVEL_HIGH 0>;
-               interrupt-names = "iep_mmu";
                clocks = <&cru ACLK_IEP>, <&cru HCLK_IEP>;
                clock-names = "aclk", "iface";
                #iommu-cells = <0>;
                compatible = "rockchip,iommu";
                reg = <0x0 0xff8f3f00 0x0 0x100>;
                interrupts = <GIC_SPI 119 IRQ_TYPE_LEVEL_HIGH 0>;
-               interrupt-names = "vopl_mmu";
                clocks = <&cru ACLK_VOP1>, <&cru HCLK_VOP1>;
                clock-names = "aclk", "iface";
                power-domains = <&power RK3399_PD_VOPL>;
                compatible = "rockchip,iommu";
                reg = <0x0 0xff903f00 0x0 0x100>;
                interrupts = <GIC_SPI 118 IRQ_TYPE_LEVEL_HIGH 0>;
-               interrupt-names = "vopb_mmu";
                clocks = <&cru ACLK_VOP0>, <&cru HCLK_VOP0>;
                clock-names = "aclk", "iface";
                power-domains = <&power RK3399_PD_VOPB>;
                compatible = "rockchip,iommu";
                reg = <0x0 0xff914000 0x0 0x100>, <0x0 0xff915000 0x0 0x100>;
                interrupts = <GIC_SPI 43 IRQ_TYPE_LEVEL_HIGH 0>;
-               interrupt-names = "isp0_mmu";
                clocks = <&cru ACLK_ISP0_WRAPPER>, <&cru HCLK_ISP0_WRAPPER>;
                clock-names = "aclk", "iface";
                #iommu-cells = <0>;
                rockchip,disable-mmu-reset;
        };
 
+       isp1: isp1@ff920000 {
+               compatible = "rockchip,rk3399-cif-isp";
+               reg = <0x0 0xff920000 0x0 0x4000>;
+               interrupts = <GIC_SPI 44 IRQ_TYPE_LEVEL_HIGH 0>;
+               clocks = <&cru SCLK_ISP1>,
+                        <&cru ACLK_ISP1_WRAPPER>,
+                        <&cru HCLK_ISP1_WRAPPER>;
+               clock-names = "isp", "aclk", "hclk";
+               iommus = <&isp1_mmu>;
+               phys = <&mipi_dsi1>;
+               phy-names = "dphy";
+               power-domains = <&power RK3399_PD_ISP1>;
+               status = "disabled";
+
+               ports {
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+
+                       port@0 {
+                               reg = <0>;
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+                       };
+               };
+       };
+
        isp1_mmu: iommu@ff924000 {
                compatible = "rockchip,iommu";
                reg = <0x0 0xff924000 0x0 0x100>, <0x0 0xff925000 0x0 0x100>;
                interrupts = <GIC_SPI 44 IRQ_TYPE_LEVEL_HIGH 0>;
-               interrupt-names = "isp1_mmu";
                clocks = <&cru ACLK_ISP1_WRAPPER>, <&cru HCLK_ISP1_WRAPPER>;
                clock-names = "aclk", "iface";
                #iommu-cells = <0>;
                rockchip,grf = <&grf>;
                #address-cells = <1>;
                #size-cells = <0>;
+               #phy-cells = <0>;
                status = "disabled";
 
                ports {
                #size-cells = <2>;
                ranges;
 
-               gpio0: gpio0@ff720000 {
+               gpio0: gpio@ff720000 {
                        compatible = "rockchip,gpio-bank";
                        reg = <0x0 0xff720000 0x0 0x100>;
                        clocks = <&pmucru PCLK_GPIO0_PMU>;
                        #interrupt-cells = <0x2>;
                };
 
-               gpio1: gpio1@ff730000 {
+               gpio1: gpio@ff730000 {
                        compatible = "rockchip,gpio-bank";
                        reg = <0x0 0xff730000 0x0 0x100>;
                        clocks = <&pmucru PCLK_GPIO1_PMU>;
                        #interrupt-cells = <0x2>;
                };
 
-               gpio2: gpio2@ff780000 {
+               gpio2: gpio@ff780000 {
                        compatible = "rockchip,gpio-bank";
                        reg = <0x0 0xff780000 0x0 0x100>;
                        clocks = <&cru PCLK_GPIO2>;
                        #interrupt-cells = <0x2>;
                };
 
-               gpio3: gpio3@ff788000 {
+               gpio3: gpio@ff788000 {
                        compatible = "rockchip,gpio-bank";
                        reg = <0x0 0xff788000 0x0 0x100>;
                        clocks = <&cru PCLK_GPIO3>;
                        #interrupt-cells = <0x2>;
                };
 
-               gpio4: gpio4@ff790000 {
+               gpio4: gpio@ff790000 {
                        compatible = "rockchip,gpio-bank";
                        reg = <0x0 0xff790000 0x0 0x100>;
                        clocks = <&cru PCLK_GPIO4>;
                        };
                };
 
+               cif {
+                       cif_clkin: cif-clkin {
+                               rockchip,pins =
+                                       <2 RK_PB2 3 &pcfg_pull_none>;
+                       };
+
+                       cif_clkouta: cif-clkouta {
+                               rockchip,pins =
+                                       <2 RK_PB3 3 &pcfg_pull_none>;
+                       };
+               };
+
                edp {
                        edp_hpd: edp-hpd {
                                rockchip,pins =
diff --git a/arch/arm64/boot/dts/rockchip/rk3566-quartz64-a.dts b/arch/arm64/boot/dts/rockchip/rk3566-quartz64-a.dts
new file mode 100644 (file)
index 0000000..4d4b2a3
--- /dev/null
@@ -0,0 +1,548 @@
+// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
+
+/dts-v1/;
+
+#include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/pinctrl/rockchip.h>
+#include "rk3566.dtsi"
+
+/ {
+       model = "Pine64 RK3566 Quartz64-A Board";
+       compatible = "pine64,quartz64-a", "rockchip,rk3566";
+
+       aliases {
+               ethernet0 = &gmac1;
+               mmc0 = &sdmmc0;
+               mmc1 = &sdhci;
+       };
+
+       chosen: chosen {
+               stdout-path = "serial2:1500000n8";
+       };
+
+       gmac1_clkin: external-gmac1-clock {
+               compatible = "fixed-clock";
+               clock-frequency = <125000000>;
+               clock-output-names = "gmac1_clkin";
+               #clock-cells = <0>;
+       };
+
+       fan: gpio_fan {
+               compatible = "gpio-fan";
+               gpios = <&gpio0 RK_PD5 GPIO_ACTIVE_HIGH>;
+               gpio-fan,speed-map = <0    0
+                                     4500 1>;
+               #cooling-cells = <2>;
+       };
+
+       leds {
+               compatible = "gpio-leds";
+
+               led-work {
+                       label = "work-led";
+                       default-state = "off";
+                       gpios = <&gpio0 RK_PD3 GPIO_ACTIVE_HIGH>;
+                       pinctrl-names = "default";
+                       pinctrl-0 = <&work_led_enable_h>;
+                       retain-state-suspended;
+               };
+
+               led-diy {
+                       label = "diy-led";
+                       default-state = "on";
+                       gpios = <&gpio0 RK_PD4 GPIO_ACTIVE_HIGH>;
+                       linux,default-trigger = "heartbeat";
+                       pinctrl-names = "default";
+                       pinctrl-0 = <&diy_led_enable_h>;
+                       retain-state-suspended;
+               };
+       };
+
+       rk817-sound {
+               compatible = "simple-audio-card";
+               simple-audio-card,format = "i2s";
+               simple-audio-card,name = "Analog RK817";
+               simple-audio-card,mclk-fs = <256>;
+
+               simple-audio-card,cpu {
+                       sound-dai = <&i2s1_8ch>;
+               };
+
+               simple-audio-card,codec {
+                       sound-dai = <&rk817>;
+               };
+       };
+
+       spdif_dit: spdif-dit {
+               compatible = "linux,spdif-dit";
+               #sound-dai-cells = <0>;
+       };
+
+       spdif_sound: spdif-sound {
+               compatible = "simple-audio-card";
+               simple-audio-card,name = "SPDIF";
+
+               simple-audio-card,cpu {
+                       sound-dai = <&spdif>;
+               };
+
+               simple-audio-card,codec {
+                       sound-dai = <&spdif_dit>;
+               };
+       };
+
+       vcc12v_dcin: vcc12v_dcin {
+               compatible = "regulator-fixed";
+               regulator-name = "vcc12v_dcin";
+               regulator-always-on;
+               regulator-boot-on;
+               regulator-min-microvolt = <12000000>;
+               regulator-max-microvolt = <12000000>;
+       };
+
+       /* vbus feeds the rk817 usb input.
+        * With no battery attached, also feeds vcc_bat+
+        * via ON/OFF_BAT jumper
+        */
+       vbus: vbus {
+               compatible = "regulator-fixed";
+               regulator-name = "vbus";
+               regulator-always-on;
+               regulator-boot-on;
+               regulator-min-microvolt = <5000000>;
+               regulator-max-microvolt = <5000000>;
+               vin-supply = <&vcc12v_dcin>;
+       };
+
+       vcc5v0_usb: vcc5v0_usb {
+               compatible = "regulator-fixed";
+               regulator-name = "vcc5v0_usb";
+               regulator-always-on;
+               regulator-boot-on;
+               regulator-min-microvolt = <5000000>;
+               regulator-max-microvolt = <5000000>;
+               vin-supply = <&vcc12v_dcin>;
+       };
+
+       vcc3v3_sd: vcc3v3_sd {
+               compatible = "regulator-fixed";
+               enable-active-low;
+               gpio = <&gpio0 RK_PA5 GPIO_ACTIVE_LOW>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&vcc_sd_h>;
+               regulator-boot-on;
+               regulator-name = "vcc3v3_sd";
+               regulator-min-microvolt = <3300000>;
+               regulator-max-microvolt = <3300000>;
+               vin-supply = <&vcc_3v3>;
+       };
+
+       /* sourced from vbus and vcc_bat+ via rk817 sw5 */
+       vcc_sys: vcc_sys {
+               compatible = "regulator-fixed";
+               regulator-name = "vcc_sys";
+               regulator-always-on;
+               regulator-boot-on;
+               regulator-min-microvolt = <4400000>;
+               regulator-max-microvolt = <4400000>;
+               vin-supply = <&vbus>;
+       };
+};
+
+&cpu0 {
+       cpu-supply = <&vdd_cpu>;
+};
+
+&cpu1 {
+       cpu-supply = <&vdd_cpu>;
+};
+
+&cpu2 {
+       cpu-supply = <&vdd_cpu>;
+};
+
+&cpu3 {
+       cpu-supply = <&vdd_cpu>;
+};
+
+&cpu_thermal {
+       trips {
+               cpu_hot: cpu_hot {
+                       temperature = <55000>;
+                       hysteresis = <2000>;
+                       type = "active";
+               };
+       };
+
+       cooling-maps {
+               map1 {
+                       trip = <&cpu_hot>;
+                       cooling-device = <&fan THERMAL_NO_LIMIT THERMAL_NO_LIMIT>;
+               };
+       };
+};
+
+&gmac1 {
+       assigned-clocks = <&cru SCLK_GMAC1_RX_TX>, <&cru SCLK_GMAC1_RGMII_SPEED>, <&cru SCLK_GMAC1>;
+       assigned-clock-parents = <&cru SCLK_GMAC1_RGMII_SPEED>, <&cru SCLK_GMAC1>, <&gmac1_clkin>;
+       clock_in_out = "input";
+       phy-supply = <&vcc_3v3>;
+       phy-mode = "rgmii";
+       pinctrl-names = "default";
+       pinctrl-0 = <&gmac1m0_miim
+                    &gmac1m0_tx_bus2
+                    &gmac1m0_rx_bus2
+                    &gmac1m0_rgmii_clk
+                    &gmac1m0_clkinout
+                    &gmac1m0_rgmii_bus>;
+       snps,reset-gpio = <&gpio0 RK_PC3 GPIO_ACTIVE_LOW>;
+       snps,reset-active-low;
+       /* Reset time is 20ms, 100ms for rtl8211f */
+       snps,reset-delays-us = <0 20000 100000>;
+       tx_delay = <0x30>;
+       rx_delay = <0x10>;
+       phy-handle = <&rgmii_phy1>;
+       status = "okay";
+};
+
+&i2c0 {
+       status = "okay";
+
+       vdd_cpu: regulator@1c {
+               compatible = "tcs,tcs4525";
+               reg = <0x1c>;
+               fcs,suspend-voltage-selector = <1>;
+               regulator-name = "vdd_cpu";
+               regulator-min-microvolt = <800000>;
+               regulator-max-microvolt = <1150000>;
+               regulator-ramp-delay = <2300>;
+               regulator-always-on;
+               regulator-boot-on;
+               vin-supply = <&vcc_sys>;
+
+               regulator-state-mem {
+                       regulator-off-in-suspend;
+               };
+       };
+
+       rk817: pmic@20 {
+               compatible = "rockchip,rk817";
+               reg = <0x20>;
+               interrupt-parent = <&gpio0>;
+               interrupts = <RK_PA3 IRQ_TYPE_LEVEL_LOW>;
+               assigned-clocks = <&cru I2S1_MCLKOUT_TX>;
+               assigned-clock-parents = <&cru CLK_I2S1_8CH_TX>;
+               clock-names = "mclk";
+               clocks = <&cru I2S1_MCLKOUT_TX>;
+               clock-output-names = "rk808-clkout1", "rk808-clkout2";
+               #clock-cells = <1>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&pmic_int_l>, <&i2s1m0_mclk>;
+               rockchip,system-power-controller;
+               #sound-dai-cells = <0>;
+               wakeup-source;
+
+               vcc1-supply = <&vcc_sys>;
+               vcc2-supply = <&vcc_sys>;
+               vcc3-supply = <&vcc_sys>;
+               vcc4-supply = <&vcc_sys>;
+               vcc5-supply = <&vcc_sys>;
+               vcc6-supply = <&vcc_sys>;
+               vcc7-supply = <&vcc_sys>;
+               vcc8-supply = <&vcc_sys>;
+               vcc9-supply = <&dcdc_boost>;
+
+               regulators {
+                       vdd_logic: DCDC_REG1 {
+                               regulator-always-on;
+                               regulator-boot-on;
+                               regulator-min-microvolt = <500000>;
+                               regulator-max-microvolt = <1350000>;
+                               regulator-init-microvolt = <900000>;
+                               regulator-ramp-delay = <6001>;
+                               regulator-initial-mode = <0x2>;
+                               regulator-name = "vdd_logic";
+                               regulator-state-mem {
+                                       regulator-on-in-suspend;
+                                       regulator-suspend-microvolt = <900000>;
+                               };
+                       };
+
+                       vdd_gpu: DCDC_REG2 {
+                               regulator-always-on;
+                               regulator-boot-on;
+                               regulator-min-microvolt = <500000>;
+                               regulator-max-microvolt = <1350000>;
+                               regulator-init-microvolt = <900000>;
+                               regulator-ramp-delay = <6001>;
+                               regulator-initial-mode = <0x2>;
+                               regulator-name = "vdd_gpu";
+                                       regulator-state-mem {
+                                       regulator-off-in-suspend;
+                               };
+                       };
+
+                       vcc_ddr: DCDC_REG3 {
+                               regulator-always-on;
+                               regulator-boot-on;
+                               regulator-min-microvolt = <1100000>;
+                               regulator-max-microvolt = <1100000>;
+                               regulator-initial-mode = <0x2>;
+                               regulator-name = "vcc_ddr";
+                               regulator-state-mem {
+                                       regulator-on-in-suspend;
+                               };
+                       };
+
+                       vcc_3v3: DCDC_REG4 {
+                               regulator-always-on;
+                               regulator-boot-on;
+                               regulator-min-microvolt = <3300000>;
+                               regulator-max-microvolt = <3300000>;
+                               regulator-initial-mode = <0x2>;
+                               regulator-name = "vcc_3v3";
+                               regulator-state-mem {
+                                       regulator-off-in-suspend;
+                               };
+                       };
+
+                       vcca1v8_pmu: LDO_REG1 {
+                               regulator-always-on;
+                               regulator-boot-on;
+                               regulator-min-microvolt = <1800000>;
+                               regulator-max-microvolt = <1800000>;
+                               regulator-name = "vcca1v8_pmu";
+                               regulator-state-mem {
+                                       regulator-on-in-suspend;
+                                       regulator-suspend-microvolt = <1800000>;
+                               };
+                       };
+
+                       vdda_0v9: LDO_REG2 {
+                               regulator-always-on;
+                               regulator-boot-on;
+                               regulator-min-microvolt = <900000>;
+                               regulator-max-microvolt = <900000>;
+                               regulator-name = "vdda_0v9";
+                               regulator-state-mem {
+                                       regulator-off-in-suspend;
+                               };
+                       };
+
+                       vdda0v9_pmu: LDO_REG3 {
+                               regulator-always-on;
+                               regulator-boot-on;
+                               regulator-min-microvolt = <900000>;
+                               regulator-max-microvolt = <900000>;
+                               regulator-name = "vdda0v9_pmu";
+                               regulator-state-mem {
+                                       regulator-on-in-suspend;
+                                       regulator-suspend-microvolt = <900000>;
+                               };
+                       };
+
+                       vccio_acodec: LDO_REG4 {
+                               regulator-always-on;
+                               regulator-boot-on;
+                               regulator-min-microvolt = <3300000>;
+                               regulator-max-microvolt = <3300000>;
+                               regulator-name = "vccio_acodec";
+                               regulator-state-mem {
+                                       regulator-off-in-suspend;
+                               };
+                       };
+
+                       vccio_sd: LDO_REG5 {
+                               regulator-always-on;
+                               regulator-boot-on;
+                               regulator-min-microvolt = <1800000>;
+                               regulator-max-microvolt = <3300000>;
+                               regulator-name = "vccio_sd";
+                               regulator-state-mem {
+                                       regulator-off-in-suspend;
+                               };
+                       };
+
+                       vcc3v3_pmu: LDO_REG6 {
+                               regulator-always-on;
+                               regulator-boot-on;
+                               regulator-min-microvolt = <3300000>;
+                               regulator-max-microvolt = <3300000>;
+                               regulator-name = "vcc3v3_pmu";
+                               regulator-state-mem {
+                                       regulator-on-in-suspend;
+                                       regulator-suspend-microvolt = <3300000>;
+                               };
+                       };
+
+                       vcc_1v8: LDO_REG7 {
+                               regulator-always-on;
+                               regulator-boot-on;
+                               regulator-min-microvolt = <1800000>;
+                               regulator-max-microvolt = <1800000>;
+                               regulator-name = "vcc_1v8";
+                               regulator-state-mem {
+                                       regulator-off-in-suspend;
+                               };
+                       };
+
+                       vcc1v8_dvp: LDO_REG8 {
+                               regulator-always-on;
+                               regulator-boot-on;
+                               regulator-min-microvolt = <1800000>;
+                               regulator-max-microvolt = <1800000>;
+                               regulator-name = "vcc1v8_dvp";
+                               regulator-state-mem {
+                                       regulator-off-in-suspend;
+                               };
+                       };
+
+                       vcc2v8_dvp: LDO_REG9 {
+                               regulator-always-on;
+                               regulator-boot-on;
+                               regulator-min-microvolt = <2800000>;
+                               regulator-max-microvolt = <2800000>;
+                               regulator-name = "vcc2v8_dvp";
+                               regulator-state-mem {
+                                       regulator-off-in-suspend;
+                               };
+                       };
+
+                       dcdc_boost: BOOST {
+                               regulator-always-on;
+                               regulator-boot-on;
+                               regulator-min-microvolt = <5000000>;
+                               regulator-max-microvolt = <5000000>;
+                               regulator-name = "boost";
+                               regulator-state-mem {
+                                       regulator-off-in-suspend;
+                               };
+                       };
+
+                       otg_switch: OTG_SWITCH {
+                               regulator-name = "otg_switch";
+                               regulator-state-mem {
+                                       regulator-off-in-suspend;
+                               };
+                       };
+               };
+       };
+};
+
+&i2s1_8ch {
+       pinctrl-names = "default";
+       pinctrl-0 = <&i2s1m0_sclktx
+                    &i2s1m0_lrcktx
+                    &i2s1m0_sdi0
+                    &i2s1m0_sdo0>;
+       rockchip,trcm-sync-tx-only;
+       status = "okay";
+};
+
+&mdio1 {
+       rgmii_phy1: ethernet-phy@0 {
+               compatible = "ethernet-phy-ieee802.3-c22";
+               reg = <0>;
+       };
+};
+
+&pinctrl {
+       bt {
+               bt_enable_h: bt-enable-h {
+                       rockchip,pins = <2 RK_PB7 RK_FUNC_GPIO &pcfg_pull_none>;
+               };
+
+               bt_host_wake_l: bt-host-wake-l {
+                       rockchip,pins = <2 RK_PC0 RK_FUNC_GPIO &pcfg_pull_down>;
+               };
+
+               bt_wake_l: bt-wake-l {
+                       rockchip,pins = <2 RK_PC1 RK_FUNC_GPIO &pcfg_pull_none>;
+               };
+       };
+
+       leds {
+               work_led_enable_h: work-led-enable-h {
+                       rockchip,pins = <0 RK_PD3 RK_FUNC_GPIO &pcfg_pull_none>;
+               };
+
+               diy_led_enable_h: diy-led-enable-h {
+                       rockchip,pins = <0 RK_PD4 RK_FUNC_GPIO &pcfg_pull_none>;
+               };
+       };
+
+       pmic {
+               pmic_int_l: pmic-int-l {
+                       rockchip,pins = <0 RK_PA3 RK_FUNC_GPIO &pcfg_pull_up>;
+               };
+       };
+
+       vcc_sd {
+               vcc_sd_h: vcc-sd-h {
+                       rockchip,pins = <0 RK_PA5 RK_FUNC_GPIO &pcfg_pull_none>;
+               };
+       };
+};
+
+&sdhci {
+       bus-width = <8>;
+       mmc-hs200-1_8v;
+       non-removable;
+       vmmc-supply = <&vcc_3v3>;
+       vqmmc-supply = <&vcc_1v8>;
+       status = "okay";
+};
+
+&sdmmc0 {
+       bus-width = <4>;
+       cap-sd-highspeed;
+       cd-gpios = <&gpio0 RK_PA4 GPIO_ACTIVE_LOW>;
+       disable-wp;
+       pinctrl-names = "default";
+       pinctrl-0 = <&sdmmc0_bus4 &sdmmc0_clk &sdmmc0_cmd &sdmmc0_det>;
+       vmmc-supply = <&vcc3v3_sd>;
+       vqmmc-supply = <&vccio_sd>;
+       status = "okay";
+};
+
+&spdif {
+       status = "okay";
+};
+
+&tsadc {
+       /* tshut mode 0:CRU 1:GPIO */
+       rockchip,hw-tshut-mode = <1>;
+       /* tshut polarity 0:LOW 1:HIGH */
+       rockchip,hw-tshut-polarity = <0>;
+       status = "okay";
+};
+
+&uart0 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&uart0_xfer>;
+       status = "okay";
+};
+
+&uart1 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&uart1m0_xfer &uart1m0_ctsn>;
+       status = "okay";
+       uart-has-rtscts;
+
+       bluetooth {
+               compatible = "brcm,bcm43438-bt";
+               clocks = <&rk817 1>;
+               clock-names = "lpo";
+               device-wake-gpios = <&gpio2 RK_PC1 GPIO_ACTIVE_HIGH>;
+               host-wake-gpios = <&gpio2 RK_PC0 GPIO_ACTIVE_HIGH>;
+               shutdown-gpios = <&gpio2 RK_PB7 GPIO_ACTIVE_HIGH>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&bt_host_wake_l &bt_wake_l &bt_enable_h>;
+               vbat-supply = <&vcc_sys>;
+               vddio-supply = <&vcca1v8_pmu>;
+       };
+};
+
+&uart2 {
+       status = "okay";
+};
diff --git a/arch/arm64/boot/dts/rockchip/rk3566.dtsi b/arch/arm64/boot/dts/rockchip/rk3566.dtsi
new file mode 100644 (file)
index 0000000..3839eef
--- /dev/null
@@ -0,0 +1,20 @@
+// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
+
+#include "rk356x.dtsi"
+
+/ {
+       compatible = "rockchip,rk3566";
+};
+
+&power {
+       power-domain@RK3568_PD_PIPE {
+               reg = <RK3568_PD_PIPE>;
+               clocks = <&cru PCLK_PIPE>;
+               pm_qos = <&qos_pcie2x1>,
+                        <&qos_sata1>,
+                        <&qos_sata2>,
+                        <&qos_usb3_0>,
+                        <&qos_usb3_1>;
+               #power-domain-cells = <0>;
+       };
+};
index 6978655..184e2aa 100644 (file)
        model = "Rockchip RK3568 EVB1 DDR4 V10 Board";
        compatible = "rockchip,rk3568-evb1-v10", "rockchip,rk3568";
 
+       aliases {
+               ethernet0 = &gmac0;
+               ethernet1 = &gmac1;
+               mmc0 = &sdmmc0;
+               mmc1 = &sdhci;
+       };
+
        chosen: chosen {
                stdout-path = "serial2:1500000n8";
        };
        };
 };
 
+&gmac0 {
+       assigned-clocks = <&cru SCLK_GMAC0_RX_TX>, <&cru SCLK_GMAC0>;
+       assigned-clock-parents = <&cru SCLK_GMAC0_RGMII_SPEED>;
+       assigned-clock-rates = <0>, <125000000>;
+       clock_in_out = "output";
+       phy-handle = <&rgmii_phy0>;
+       phy-mode = "rgmii-id";
+       pinctrl-names = "default";
+       pinctrl-0 = <&gmac0_miim
+                    &gmac0_tx_bus2
+                    &gmac0_rx_bus2
+                    &gmac0_rgmii_clk
+                    &gmac0_rgmii_bus>;
+       status = "okay";
+};
+
+&gmac1 {
+       assigned-clocks = <&cru SCLK_GMAC1_RX_TX>, <&cru SCLK_GMAC1>;
+       assigned-clock-parents = <&cru SCLK_GMAC1_RGMII_SPEED>;
+       assigned-clock-rates = <0>, <125000000>;
+       clock_in_out = "output";
+       phy-handle = <&rgmii_phy1>;
+       phy-mode = "rgmii-id";
+       pinctrl-names = "default";
+       pinctrl-0 = <&gmac1m1_miim
+                    &gmac1m1_tx_bus2
+                    &gmac1m1_rx_bus2
+                    &gmac1m1_rgmii_clk
+                    &gmac1m1_rgmii_bus>;
+       status = "okay";
+};
+
+&i2c0 {
+       status = "okay";
+
+       rk809: pmic@20 {
+               compatible = "rockchip,rk809";
+               reg = <0x20>;
+               interrupt-parent = <&gpio0>;
+               interrupts = <RK_PA3 IRQ_TYPE_LEVEL_LOW>;
+               #clock-cells = <1>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&pmic_int>;
+               rockchip,system-power-controller;
+               vcc1-supply = <&vcc3v3_sys>;
+               vcc2-supply = <&vcc3v3_sys>;
+               vcc3-supply = <&vcc3v3_sys>;
+               vcc4-supply = <&vcc3v3_sys>;
+               vcc5-supply = <&vcc3v3_sys>;
+               vcc6-supply = <&vcc3v3_sys>;
+               vcc7-supply = <&vcc3v3_sys>;
+               vcc8-supply = <&vcc3v3_sys>;
+               vcc9-supply = <&vcc3v3_sys>;
+               wakeup-source;
+
+               regulators {
+                       vdd_logic: DCDC_REG1 {
+                               regulator-name = "vdd_logic";
+                               regulator-always-on;
+                               regulator-boot-on;
+                               regulator-init-microvolt = <900000>;
+                               regulator-initial-mode = <0x2>;
+                               regulator-min-microvolt = <500000>;
+                               regulator-max-microvolt = <1350000>;
+                               regulator-ramp-delay = <6001>;
+
+                               regulator-state-mem {
+                                       regulator-off-in-suspend;
+                               };
+                       };
+
+                       vdd_gpu: DCDC_REG2 {
+                               regulator-name = "vdd_gpu";
+                               regulator-init-microvolt = <900000>;
+                               regulator-initial-mode = <0x2>;
+                               regulator-min-microvolt = <500000>;
+                               regulator-max-microvolt = <1350000>;
+                               regulator-ramp-delay = <6001>;
+
+                               regulator-state-mem {
+                                       regulator-off-in-suspend;
+                               };
+                       };
+
+                       vcc_ddr: DCDC_REG3 {
+                               regulator-name = "vcc_ddr";
+                               regulator-always-on;
+                               regulator-boot-on;
+                               regulator-initial-mode = <0x2>;
+
+                               regulator-state-mem {
+                                       regulator-on-in-suspend;
+                               };
+                       };
+
+                       vdd_npu: DCDC_REG4 {
+                               regulator-name = "vdd_npu";
+                               regulator-init-microvolt = <900000>;
+                               regulator-initial-mode = <0x2>;
+                               regulator-min-microvolt = <500000>;
+                               regulator-max-microvolt = <1350000>;
+                               regulator-ramp-delay = <6001>;
+
+                               regulator-state-mem {
+                                       regulator-off-in-suspend;
+                               };
+                       };
+
+                       vcc_1v8: DCDC_REG5 {
+                               regulator-name = "vcc_1v8";
+                               regulator-always-on;
+                               regulator-boot-on;
+                               regulator-min-microvolt = <1800000>;
+                               regulator-max-microvolt = <1800000>;
+
+                               regulator-state-mem {
+                                       regulator-off-in-suspend;
+                               };
+                       };
+
+                       vdda0v9_image: LDO_REG1 {
+                               regulator-name = "vdda0v9_image";
+                               regulator-min-microvolt = <900000>;
+                               regulator-max-microvolt = <900000>;
+
+                               regulator-state-mem {
+                                       regulator-off-in-suspend;
+                               };
+                       };
+
+                       vdda_0v9: LDO_REG2 {
+                               regulator-name = "vdda_0v9";
+                               regulator-always-on;
+                               regulator-boot-on;
+                               regulator-min-microvolt = <900000>;
+                               regulator-max-microvolt = <900000>;
+
+                               regulator-state-mem {
+                                       regulator-off-in-suspend;
+                               };
+                       };
+
+                       vdda0v9_pmu: LDO_REG3 {
+                               regulator-name = "vdda0v9_pmu";
+                               regulator-always-on;
+                               regulator-boot-on;
+                               regulator-min-microvolt = <900000>;
+                               regulator-max-microvolt = <900000>;
+
+                               regulator-state-mem {
+                                       regulator-on-in-suspend;
+                                       regulator-suspend-microvolt = <900000>;
+                               };
+                       };
+
+                       vccio_acodec: LDO_REG4 {
+                               regulator-name = "vccio_acodec";
+                               regulator-min-microvolt = <3300000>;
+                               regulator-max-microvolt = <3300000>;
+
+                               regulator-state-mem {
+                                       regulator-off-in-suspend;
+                               };
+                       };
+
+                       vccio_sd: LDO_REG5 {
+                               regulator-name = "vccio_sd";
+                               regulator-min-microvolt = <1800000>;
+                               regulator-max-microvolt = <3300000>;
+
+                               regulator-state-mem {
+                                       regulator-off-in-suspend;
+                               };
+                       };
+
+                       vcc3v3_pmu: LDO_REG6 {
+                               regulator-name = "vcc3v3_pmu";
+                               regulator-always-on;
+                               regulator-boot-on;
+                               regulator-min-microvolt = <3300000>;
+                               regulator-max-microvolt = <3300000>;
+
+                               regulator-state-mem {
+                                       regulator-on-in-suspend;
+                                       regulator-suspend-microvolt = <3300000>;
+                               };
+                       };
+
+                       vcca_1v8: LDO_REG7 {
+                               regulator-name = "vcca_1v8";
+                               regulator-always-on;
+                               regulator-boot-on;
+                               regulator-min-microvolt = <1800000>;
+                               regulator-max-microvolt = <1800000>;
+
+                               regulator-state-mem {
+                                       regulator-off-in-suspend;
+                               };
+                       };
+
+                       vcca1v8_pmu: LDO_REG8 {
+                               regulator-name = "vcca1v8_pmu";
+                               regulator-always-on;
+                               regulator-boot-on;
+                               regulator-min-microvolt = <1800000>;
+                               regulator-max-microvolt = <1800000>;
+
+                               regulator-state-mem {
+                                       regulator-on-in-suspend;
+                                       regulator-suspend-microvolt = <1800000>;
+                               };
+                       };
+
+                       vcca1v8_image: LDO_REG9 {
+                               regulator-name = "vcca1v8_image";
+                               regulator-min-microvolt = <1800000>;
+                               regulator-max-microvolt = <1800000>;
+
+                               regulator-state-mem {
+                                       regulator-off-in-suspend;
+                               };
+                       };
+
+                       vcc_3v3: SWITCH_REG1 {
+                               regulator-name = "vcc_3v3";
+                               regulator-always-on;
+                               regulator-boot-on;
+
+                               regulator-state-mem {
+                                       regulator-off-in-suspend;
+                               };
+                       };
+
+                       vcc3v3_sd: SWITCH_REG2 {
+                               regulator-name = "vcc3v3_sd";
+
+                               regulator-state-mem {
+                                       regulator-off-in-suspend;
+                               };
+                       };
+               };
+       };
+};
+
+&mdio0 {
+       rgmii_phy0: ethernet-phy@0 {
+               compatible = "ethernet-phy-ieee802.3-c22";
+               reg = <0x0>;
+               reset-assert-us = <20000>;
+               reset-deassert-us = <100000>;
+               reset-gpios = <&gpio2 RK_PD3 GPIO_ACTIVE_LOW>;
+       };
+};
+
+&mdio1 {
+       rgmii_phy1: ethernet-phy@0 {
+               compatible = "ethernet-phy-ieee802.3-c22";
+               reg = <0x0>;
+               reset-assert-us = <20000>;
+               reset-deassert-us = <100000>;
+               reset-gpios = <&gpio2 RK_PD1 GPIO_ACTIVE_LOW>;
+       };
+};
+
+&pinctrl {
+       pmic {
+               pmic_int: pmic_int {
+                       rockchip,pins =
+                               <0 RK_PA3 RK_FUNC_GPIO &pcfg_pull_up>;
+               };
+       };
+};
+
+&pmu_io_domains {
+       pmuio1-supply = <&vcc3v3_pmu>;
+       pmuio2-supply = <&vcc3v3_pmu>;
+       vccio1-supply = <&vccio_acodec>;
+       vccio2-supply = <&vcc_1v8>;
+       vccio3-supply = <&vccio_sd>;
+       vccio4-supply = <&vcc_1v8>;
+       vccio5-supply = <&vcc_3v3>;
+       vccio6-supply = <&vcc_1v8>;
+       vccio7-supply = <&vcc_3v3>;
+       status = "okay";
+};
+
+&saradc {
+       vref-supply = <&vcca_1v8>;
+       status = "okay";
+};
+
 &sdhci {
        bus-width = <8>;
        max-frequency = <200000000>;
        non-removable;
+       pinctrl-names = "default";
+       pinctrl-0 = <&emmc_bus8 &emmc_clk &emmc_cmd &emmc_datastrobe>;
+       status = "okay";
+};
+
+&sdmmc0 {
+       bus-width = <4>;
+       cap-sd-highspeed;
+       cd-gpios = <&gpio0 RK_PA4 GPIO_ACTIVE_LOW>;
+       disable-wp;
+       pinctrl-names = "default";
+       pinctrl-0 = <&sdmmc0_bus4 &sdmmc0_clk &sdmmc0_cmd &sdmmc0_det>;
+       sd-uhs-sdr104;
+       vmmc-supply = <&vcc3v3_sd>;
+       vqmmc-supply = <&vccio_sd>;
        status = "okay";
 };
 
index a588ca9..8f90c66 100644 (file)
                                <4 RK_PA0 3 &pcfg_pull_none_drv_level_2>;
                };
        };
+
+       tsadc {
+               /omit-if-no-ref/
+               tsadc_pin: tsadc-pin {
+                       rockchip,pins =
+                               /* tsadc_pin */
+                               <0 RK_PA1 0 &pcfg_pull_none>;
+               };
+       };
 };
index d225e6a..2fd313a 100644 (file)
  * Copyright (c) 2021 Rockchip Electronics Co., Ltd.
  */
 
-#include <dt-bindings/clock/rk3568-cru.h>
-#include <dt-bindings/interrupt-controller/arm-gic.h>
-#include <dt-bindings/interrupt-controller/irq.h>
-#include <dt-bindings/phy/phy.h>
-#include <dt-bindings/pinctrl/rockchip.h>
-#include <dt-bindings/soc/rockchip,boot-mode.h>
-#include <dt-bindings/thermal/thermal.h>
+#include "rk356x.dtsi"
 
 / {
        compatible = "rockchip,rk3568";
 
-       interrupt-parent = <&gic>;
-       #address-cells = <2>;
-       #size-cells = <2>;
-
-       aliases {
-               gpio0 = &gpio0;
-               gpio1 = &gpio1;
-               gpio2 = &gpio2;
-               gpio3 = &gpio3;
-               gpio4 = &gpio4;
-               i2c0 = &i2c0;
-               i2c1 = &i2c1;
-               i2c2 = &i2c2;
-               i2c3 = &i2c3;
-               i2c4 = &i2c4;
-               i2c5 = &i2c5;
-               serial0 = &uart0;
-               serial1 = &uart1;
-               serial2 = &uart2;
-               serial3 = &uart3;
-               serial4 = &uart4;
-               serial5 = &uart5;
-               serial6 = &uart6;
-               serial7 = &uart7;
-               serial8 = &uart8;
-               serial9 = &uart9;
-       };
-
-       cpus {
-               #address-cells = <2>;
-               #size-cells = <0>;
-
-               cpu0: cpu@0 {
-                       device_type = "cpu";
-                       compatible = "arm,cortex-a55";
-                       reg = <0x0 0x0>;
-                       clocks = <&scmi_clk 0>;
-                       enable-method = "psci";
-                       operating-points-v2 = <&cpu0_opp_table>;
-               };
-
-               cpu1: cpu@100 {
-                       device_type = "cpu";
-                       compatible = "arm,cortex-a55";
-                       reg = <0x0 0x100>;
-                       enable-method = "psci";
-                       operating-points-v2 = <&cpu0_opp_table>;
-               };
-
-               cpu2: cpu@200 {
-                       device_type = "cpu";
-                       compatible = "arm,cortex-a55";
-                       reg = <0x0 0x200>;
-                       enable-method = "psci";
-                       operating-points-v2 = <&cpu0_opp_table>;
-               };
-
-               cpu3: cpu@300 {
-                       device_type = "cpu";
-                       compatible = "arm,cortex-a55";
-                       reg = <0x0 0x300>;
-                       enable-method = "psci";
-                       operating-points-v2 = <&cpu0_opp_table>;
-               };
-       };
-
-       cpu0_opp_table: cpu0-opp-table {
-               compatible = "operating-points-v2";
-               opp-shared;
-
-               opp-408000000 {
-                       opp-hz = /bits/ 64 <408000000>;
-                       opp-microvolt = <900000 900000 1150000>;
-                       clock-latency-ns = <40000>;
-               };
-
-               opp-600000000 {
-                       opp-hz = /bits/ 64 <600000000>;
-                       opp-microvolt = <900000 900000 1150000>;
-               };
-
-               opp-816000000 {
-                       opp-hz = /bits/ 64 <816000000>;
-                       opp-microvolt = <900000 900000 1150000>;
-                       opp-suspend;
-               };
-
-               opp-1104000000 {
-                       opp-hz = /bits/ 64 <1104000000>;
-                       opp-microvolt = <900000 900000 1150000>;
-               };
-
-               opp-1416000000 {
-                       opp-hz = /bits/ 64 <1416000000>;
-                       opp-microvolt = <900000 900000 1150000>;
-               };
-
-               opp-1608000000 {
-                       opp-hz = /bits/ 64 <1608000000>;
-                       opp-microvolt = <975000 975000 1150000>;
-               };
+       qos_pcie3x1: qos@fe190080 {
+               compatible = "rockchip,rk3568-qos", "syscon";
+               reg = <0x0 0xfe190080 0x0 0x20>;
+       };
+
+       qos_pcie3x2: qos@fe190100 {
+               compatible = "rockchip,rk3568-qos", "syscon";
+               reg = <0x0 0xfe190100 0x0 0x20>;
+       };
+
+       qos_sata0: qos@fe190200 {
+               compatible = "rockchip,rk3568-qos", "syscon";
+               reg = <0x0 0xfe190200 0x0 0x20>;
+       };
+
+       gmac0: ethernet@fe2a0000 {
+               compatible = "rockchip,rk3568-gmac", "snps,dwmac-4.20a";
+               reg = <0x0 0xfe2a0000 0x0 0x10000>;
+               interrupts = <GIC_SPI 27 IRQ_TYPE_LEVEL_HIGH>,
+                            <GIC_SPI 24 IRQ_TYPE_LEVEL_HIGH>;
+               interrupt-names = "macirq", "eth_wake_irq";
+               clocks = <&cru SCLK_GMAC0>, <&cru SCLK_GMAC0_RX_TX>,
+                        <&cru SCLK_GMAC0_RX_TX>, <&cru CLK_MAC0_REFOUT>,
+                        <&cru ACLK_GMAC0>, <&cru PCLK_GMAC0>,
+                        <&cru SCLK_GMAC0_RX_TX>, <&cru CLK_GMAC0_PTP_REF>,
+                        <&cru PCLK_XPCS>;
+               clock-names = "stmmaceth", "mac_clk_rx",
+                             "mac_clk_tx", "clk_mac_refout",
+                             "aclk_mac", "pclk_mac",
+                             "clk_mac_speed", "ptp_ref",
+                             "pclk_xpcs";
+               resets = <&cru SRST_A_GMAC0>;
+               reset-names = "stmmaceth";
+               rockchip,grf = <&grf>;
+               snps,axi-config = <&gmac0_stmmac_axi_setup>;
+               snps,mixed-burst;
+               snps,mtl-rx-config = <&gmac0_mtl_rx_setup>;
+               snps,mtl-tx-config = <&gmac0_mtl_tx_setup>;
+               snps,tso;
+               status = "disabled";
 
-               opp-1800000000 {
-                       opp-hz = /bits/ 64 <1800000000>;
-                       opp-microvolt = <1050000 1050000 1150000>;
+               mdio0: mdio {
+                       compatible = "snps,dwmac-mdio";
+                       #address-cells = <0x1>;
+                       #size-cells = <0x0>;
                };
 
-               opp-1992000000 {
-                       opp-hz = /bits/ 64 <1992000000>;
-                       opp-microvolt = <1150000 1150000 1150000>;
+               gmac0_stmmac_axi_setup: stmmac-axi-config {
+                       snps,blen = <0 0 0 0 16 8 4>;
+                       snps,rd_osr_lmt = <8>;
+                       snps,wr_osr_lmt = <4>;
                };
-       };
 
-       firmware {
-               scmi: scmi {
-                       compatible = "arm,scmi-smc";
-                       arm,smc-id = <0x82000010>;
-                       shmem = <&scmi_shmem>;
-                       #address-cells = <1>;
-                       #size-cells = <0>;
-
-                       scmi_clk: protocol@14 {
-                               reg = <0x14>;
-                               #clock-cells = <1>;
-                       };
+               gmac0_mtl_rx_setup: rx-queues-config {
+                       snps,rx-queues-to-use = <1>;
+                       queue0 {};
                };
-       };
-
-       pmu {
-               compatible = "arm,cortex-a55-pmu";
-               interrupts = <GIC_SPI 228 IRQ_TYPE_LEVEL_HIGH>,
-                            <GIC_SPI 229 IRQ_TYPE_LEVEL_HIGH>,
-                            <GIC_SPI 230 IRQ_TYPE_LEVEL_HIGH>,
-                            <GIC_SPI 231 IRQ_TYPE_LEVEL_HIGH>;
-               interrupt-affinity = <&cpu0>, <&cpu1>, <&cpu2>, <&cpu3>;
-       };
 
-       psci {
-               compatible = "arm,psci-1.0";
-               method = "smc";
-       };
-
-       timer {
-               compatible = "arm,armv8-timer";
-               interrupts = <GIC_PPI 13 IRQ_TYPE_LEVEL_HIGH>,
-                            <GIC_PPI 14 IRQ_TYPE_LEVEL_HIGH>,
-                            <GIC_PPI 11 IRQ_TYPE_LEVEL_HIGH>,
-                            <GIC_PPI 10 IRQ_TYPE_LEVEL_HIGH>;
-               arm,no-tick-in-suspend;
-       };
-
-       xin24m: xin24m {
-               compatible = "fixed-clock";
-               clock-frequency = <24000000>;
-               clock-output-names = "xin24m";
-               #clock-cells = <0>;
-       };
-
-       xin32k: xin32k {
-               compatible = "fixed-clock";
-               clock-frequency = <32768>;
-               clock-output-names = "xin32k";
-               pinctrl-0 = <&clk32k_out0>;
-               pinctrl-names = "default";
-               #clock-cells = <0>;
-       };
-
-       sram@10f000 {
-               compatible = "mmio-sram";
-               reg = <0x0 0x0010f000 0x0 0x100>;
-               #address-cells = <1>;
-               #size-cells = <1>;
-               ranges = <0 0x0 0x0010f000 0x100>;
-
-               scmi_shmem: sram@0 {
-                       compatible = "arm,scmi-shmem";
-                       reg = <0x0 0x100>;
+               gmac0_mtl_tx_setup: tx-queues-config {
+                       snps,tx-queues-to-use = <1>;
+                       queue0 {};
                };
        };
+};
 
-       gic: interrupt-controller@fd400000 {
-               compatible = "arm,gic-v3";
-               reg = <0x0 0xfd400000 0 0x10000>, /* GICD */
-                     <0x0 0xfd460000 0 0x80000>; /* GICR */
-               interrupts = <GIC_PPI 9 IRQ_TYPE_LEVEL_HIGH>;
-               interrupt-controller;
-               #interrupt-cells = <3>;
-               mbi-alias = <0x0 0xfd100000>;
-               mbi-ranges = <296 24>;
-               msi-controller;
-       };
-
-       pmugrf: syscon@fdc20000 {
-               compatible = "rockchip,rk3568-pmugrf", "syscon", "simple-mfd";
-               reg = <0x0 0xfdc20000 0x0 0x10000>;
-       };
-
-       grf: syscon@fdc60000 {
-               compatible = "rockchip,rk3568-grf", "syscon", "simple-mfd";
-               reg = <0x0 0xfdc60000 0x0 0x10000>;
-       };
-
-       pmucru: clock-controller@fdd00000 {
-               compatible = "rockchip,rk3568-pmucru";
-               reg = <0x0 0xfdd00000 0x0 0x1000>;
-               #clock-cells = <1>;
-               #reset-cells = <1>;
-       };
-
-       cru: clock-controller@fdd20000 {
-               compatible = "rockchip,rk3568-cru";
-               reg = <0x0 0xfdd20000 0x0 0x1000>;
-               #clock-cells = <1>;
-               #reset-cells = <1>;
-       };
-
-       i2c0: i2c@fdd40000 {
-               compatible = "rockchip,rk3568-i2c", "rockchip,rk3399-i2c";
-               reg = <0x0 0xfdd40000 0x0 0x1000>;
-               interrupts = <GIC_SPI 46 IRQ_TYPE_LEVEL_HIGH>;
-               clocks = <&pmucru CLK_I2C0>, <&pmucru PCLK_I2C0>;
-               clock-names = "i2c", "pclk";
-               pinctrl-0 = <&i2c0_xfer>;
-               pinctrl-names = "default";
-               #address-cells = <1>;
-               #size-cells = <0>;
-               status = "disabled";
-       };
-
-       uart0: serial@fdd50000 {
-               compatible = "rockchip,rk3568-uart", "snps,dw-apb-uart";
-               reg = <0x0 0xfdd50000 0x0 0x100>;
-               interrupts = <GIC_SPI 116 IRQ_TYPE_LEVEL_HIGH>;
-               clocks = <&pmucru SCLK_UART0>, <&pmucru PCLK_UART0>;
-               clock-names = "baudclk", "apb_pclk";
-               dmas = <&dmac0 0>, <&dmac0 1>;
-               pinctrl-0 = <&uart0_xfer>;
-               pinctrl-names = "default";
-               reg-io-width = <4>;
-               reg-shift = <2>;
-               status = "disabled";
-       };
-
-       sdmmc2: mmc@fe000000 {
-               compatible = "rockchip,rk3568-dw-mshc", "rockchip,rk3288-dw-mshc";
-               reg = <0x0 0xfe000000 0x0 0x4000>;
-               interrupts = <GIC_SPI 100 IRQ_TYPE_LEVEL_HIGH>;
-               clocks = <&cru HCLK_SDMMC2>, <&cru CLK_SDMMC2>,
-                        <&cru SCLK_SDMMC2_DRV>, <&cru SCLK_SDMMC2_SAMPLE>;
-               clock-names = "biu", "ciu", "ciu-drive", "ciu-sample";
-               fifo-depth = <0x100>;
-               max-frequency = <150000000>;
-               resets = <&cru SRST_SDMMC2>;
-               reset-names = "reset";
-               status = "disabled";
-       };
-
-       sdmmc0: mmc@fe2b0000 {
-               compatible = "rockchip,rk3568-dw-mshc", "rockchip,rk3288-dw-mshc";
-               reg = <0x0 0xfe2b0000 0x0 0x4000>;
-               interrupts = <GIC_SPI 98 IRQ_TYPE_LEVEL_HIGH>;
-               clocks = <&cru HCLK_SDMMC0>, <&cru CLK_SDMMC0>,
-                        <&cru SCLK_SDMMC0_DRV>, <&cru SCLK_SDMMC0_SAMPLE>;
-               clock-names = "biu", "ciu", "ciu-drive", "ciu-sample";
-               fifo-depth = <0x100>;
-               max-frequency = <150000000>;
-               resets = <&cru SRST_SDMMC0>;
-               reset-names = "reset";
-               status = "disabled";
-       };
-
-       sdmmc1: mmc@fe2c0000 {
-               compatible = "rockchip,rk3568-dw-mshc", "rockchip,rk3288-dw-mshc";
-               reg = <0x0 0xfe2c0000 0x0 0x4000>;
-               interrupts = <GIC_SPI 99 IRQ_TYPE_LEVEL_HIGH>;
-               clocks = <&cru HCLK_SDMMC1>, <&cru CLK_SDMMC1>,
-                        <&cru SCLK_SDMMC1_DRV>, <&cru SCLK_SDMMC1_SAMPLE>;
-               clock-names = "biu", "ciu", "ciu-drive", "ciu-sample";
-               fifo-depth = <0x100>;
-               max-frequency = <150000000>;
-               resets = <&cru SRST_SDMMC1>;
-               reset-names = "reset";
-               status = "disabled";
-       };
-
-       sdhci: mmc@fe310000 {
-               compatible = "rockchip,rk3568-dwcmshc";
-               reg = <0x0 0xfe310000 0x0 0x10000>;
-               interrupts = <GIC_SPI 19 IRQ_TYPE_LEVEL_HIGH>;
-               assigned-clocks = <&cru BCLK_EMMC>, <&cru TCLK_EMMC>;
-               assigned-clock-rates = <200000000>, <24000000>;
-               clocks = <&cru CCLK_EMMC>, <&cru HCLK_EMMC>,
-                        <&cru ACLK_EMMC>, <&cru BCLK_EMMC>,
-                        <&cru TCLK_EMMC>;
-               clock-names = "core", "bus", "axi", "block", "timer";
-               status = "disabled";
-       };
-
-       dmac0: dmac@fe530000 {
-               compatible = "arm,pl330", "arm,primecell";
-               reg = <0x0 0xfe530000 0x0 0x4000>;
-               interrupts = <GIC_SPI 14 IRQ_TYPE_LEVEL_HIGH>,
-                            <GIC_SPI 13 IRQ_TYPE_LEVEL_HIGH>;
-               arm,pl330-periph-burst;
-               clocks = <&cru ACLK_BUS>;
-               clock-names = "apb_pclk";
-               #dma-cells = <1>;
-       };
-
-       dmac1: dmac@fe550000 {
-               compatible = "arm,pl330", "arm,primecell";
-               reg = <0x0 0xfe550000 0x0 0x4000>;
-               interrupts = <GIC_SPI 16 IRQ_TYPE_LEVEL_HIGH>,
-                            <GIC_SPI 15 IRQ_TYPE_LEVEL_HIGH>;
-               arm,pl330-periph-burst;
-               clocks = <&cru ACLK_BUS>;
-               clock-names = "apb_pclk";
-               #dma-cells = <1>;
-       };
-
-       i2c1: i2c@fe5a0000 {
-               compatible = "rockchip,rk3568-i2c", "rockchip,rk3399-i2c";
-               reg = <0x0 0xfe5a0000 0x0 0x1000>;
-               interrupts = <GIC_SPI 47 IRQ_TYPE_LEVEL_HIGH>;
-               clocks = <&cru CLK_I2C1>, <&cru PCLK_I2C1>;
-               clock-names = "i2c", "pclk";
-               pinctrl-0 = <&i2c1_xfer>;
-               pinctrl-names = "default";
-               #address-cells = <1>;
-               #size-cells = <0>;
-               status = "disabled";
-       };
-
-       i2c2: i2c@fe5b0000 {
-               compatible = "rockchip,rk3568-i2c", "rockchip,rk3399-i2c";
-               reg = <0x0 0xfe5b0000 0x0 0x1000>;
-               interrupts = <GIC_SPI 48 IRQ_TYPE_LEVEL_HIGH>;
-               clocks = <&cru CLK_I2C2>, <&cru PCLK_I2C2>;
-               clock-names = "i2c", "pclk";
-               pinctrl-0 = <&i2c2m0_xfer>;
-               pinctrl-names = "default";
-               #address-cells = <1>;
-               #size-cells = <0>;
-               status = "disabled";
-       };
-
-       i2c3: i2c@fe5c0000 {
-               compatible = "rockchip,rk3568-i2c", "rockchip,rk3399-i2c";
-               reg = <0x0 0xfe5c0000 0x0 0x1000>;
-               interrupts = <GIC_SPI 49 IRQ_TYPE_LEVEL_HIGH>;
-               clocks = <&cru CLK_I2C3>, <&cru PCLK_I2C3>;
-               clock-names = "i2c", "pclk";
-               pinctrl-0 = <&i2c3m0_xfer>;
-               pinctrl-names = "default";
-               #address-cells = <1>;
-               #size-cells = <0>;
-               status = "disabled";
-       };
-
-       i2c4: i2c@fe5d0000 {
-               compatible = "rockchip,rk3568-i2c", "rockchip,rk3399-i2c";
-               reg = <0x0 0xfe5d0000 0x0 0x1000>;
-               interrupts = <GIC_SPI 50 IRQ_TYPE_LEVEL_HIGH>;
-               clocks = <&cru CLK_I2C4>, <&cru PCLK_I2C4>;
-               clock-names = "i2c", "pclk";
-               pinctrl-0 = <&i2c4m0_xfer>;
-               pinctrl-names = "default";
-               #address-cells = <1>;
-               #size-cells = <0>;
-               status = "disabled";
-       };
-
-       i2c5: i2c@fe5e0000 {
-               compatible = "rockchip,rk3568-i2c", "rockchip,rk3399-i2c";
-               reg = <0x0 0xfe5e0000 0x0 0x1000>;
-               interrupts = <GIC_SPI 51 IRQ_TYPE_LEVEL_HIGH>;
-               clocks = <&cru CLK_I2C5>, <&cru PCLK_I2C5>;
-               clock-names = "i2c", "pclk";
-               pinctrl-0 = <&i2c5m0_xfer>;
-               pinctrl-names = "default";
-               #address-cells = <1>;
-               #size-cells = <0>;
-               status = "disabled";
-       };
-
-       uart1: serial@fe650000 {
-               compatible = "rockchip,rk3568-uart", "snps,dw-apb-uart";
-               reg = <0x0 0xfe650000 0x0 0x100>;
-               interrupts = <GIC_SPI 117 IRQ_TYPE_LEVEL_HIGH>;
-               clocks = <&cru SCLK_UART1>, <&cru PCLK_UART1>;
-               clock-names = "baudclk", "apb_pclk";
-               dmas = <&dmac0 2>, <&dmac0 3>;
-               pinctrl-0 = <&uart1m0_xfer>;
-               pinctrl-names = "default";
-               reg-io-width = <4>;
-               reg-shift = <2>;
-               status = "disabled";
-       };
-
-       uart2: serial@fe660000 {
-               compatible = "rockchip,rk3568-uart", "snps,dw-apb-uart";
-               reg = <0x0 0xfe660000 0x0 0x100>;
-               interrupts = <GIC_SPI 118 IRQ_TYPE_LEVEL_HIGH>;
-               clocks = <&cru SCLK_UART2>, <&cru PCLK_UART2>;
-               clock-names = "baudclk", "apb_pclk";
-               dmas = <&dmac0 4>, <&dmac0 5>;
-               pinctrl-0 = <&uart2m0_xfer>;
-               pinctrl-names = "default";
-               reg-io-width = <4>;
-               reg-shift = <2>;
-               status = "disabled";
-       };
-
-       uart3: serial@fe670000 {
-               compatible = "rockchip,rk3568-uart", "snps,dw-apb-uart";
-               reg = <0x0 0xfe670000 0x0 0x100>;
-               interrupts = <GIC_SPI 119 IRQ_TYPE_LEVEL_HIGH>;
-               clocks = <&cru SCLK_UART3>, <&cru PCLK_UART3>;
-               clock-names = "baudclk", "apb_pclk";
-               dmas = <&dmac0 6>, <&dmac0 7>;
-               pinctrl-0 = <&uart3m0_xfer>;
-               pinctrl-names = "default";
-               reg-io-width = <4>;
-               reg-shift = <2>;
-               status = "disabled";
-       };
-
-       uart4: serial@fe680000 {
-               compatible = "rockchip,rk3568-uart", "snps,dw-apb-uart";
-               reg = <0x0 0xfe680000 0x0 0x100>;
-               interrupts = <GIC_SPI 120 IRQ_TYPE_LEVEL_HIGH>;
-               clocks = <&cru SCLK_UART4>, <&cru PCLK_UART4>;
-               clock-names = "baudclk", "apb_pclk";
-               dmas = <&dmac0 8>, <&dmac0 9>;
-               pinctrl-0 = <&uart4m0_xfer>;
-               pinctrl-names = "default";
-               reg-io-width = <4>;
-               reg-shift = <2>;
-               status = "disabled";
-       };
-
-       uart5: serial@fe690000 {
-               compatible = "rockchip,rk3568-uart", "snps,dw-apb-uart";
-               reg = <0x0 0xfe690000 0x0 0x100>;
-               interrupts = <GIC_SPI 121 IRQ_TYPE_LEVEL_HIGH>;
-               clocks = <&cru SCLK_UART5>, <&cru PCLK_UART5>;
-               clock-names = "baudclk", "apb_pclk";
-               dmas = <&dmac0 10>, <&dmac0 11>;
-               pinctrl-0 = <&uart5m0_xfer>;
-               pinctrl-names = "default";
-               reg-io-width = <4>;
-               reg-shift = <2>;
-               status = "disabled";
-       };
-
-       uart6: serial@fe6a0000 {
-               compatible = "rockchip,rk3568-uart", "snps,dw-apb-uart";
-               reg = <0x0 0xfe6a0000 0x0 0x100>;
-               interrupts = <GIC_SPI 122 IRQ_TYPE_LEVEL_HIGH>;
-               clocks = <&cru SCLK_UART6>, <&cru PCLK_UART6>;
-               clock-names = "baudclk", "apb_pclk";
-               dmas = <&dmac0 12>, <&dmac0 13>;
-               pinctrl-0 = <&uart6m0_xfer>;
-               pinctrl-names = "default";
-               reg-io-width = <4>;
-               reg-shift = <2>;
-               status = "disabled";
-       };
-
-       uart7: serial@fe6b0000 {
-               compatible = "rockchip,rk3568-uart", "snps,dw-apb-uart";
-               reg = <0x0 0xfe6b0000 0x0 0x100>;
-               interrupts = <GIC_SPI 123 IRQ_TYPE_LEVEL_HIGH>;
-               clocks = <&cru SCLK_UART7>, <&cru PCLK_UART7>;
-               clock-names = "baudclk", "apb_pclk";
-               dmas = <&dmac0 14>, <&dmac0 15>;
-               pinctrl-0 = <&uart7m0_xfer>;
-               pinctrl-names = "default";
-               reg-io-width = <4>;
-               reg-shift = <2>;
-               status = "disabled";
-       };
-
-       uart8: serial@fe6c0000 {
-               compatible = "rockchip,rk3568-uart", "snps,dw-apb-uart";
-               reg = <0x0 0xfe6c0000 0x0 0x100>;
-               interrupts = <GIC_SPI 124 IRQ_TYPE_LEVEL_HIGH>;
-               clocks = <&cru SCLK_UART8>, <&cru PCLK_UART8>;
-               clock-names = "baudclk", "apb_pclk";
-               dmas = <&dmac0 16>, <&dmac0 17>;
-               pinctrl-0 = <&uart8m0_xfer>;
-               pinctrl-names = "default";
-               reg-io-width = <4>;
-               reg-shift = <2>;
-               status = "disabled";
-       };
-
-       uart9: serial@fe6d0000 {
-               compatible = "rockchip,rk3568-uart", "snps,dw-apb-uart";
-               reg = <0x0 0xfe6d0000 0x0 0x100>;
-               interrupts = <GIC_SPI 125 IRQ_TYPE_LEVEL_HIGH>;
-               clocks = <&cru SCLK_UART9>, <&cru PCLK_UART9>;
-               clock-names = "baudclk", "apb_pclk";
-               dmas = <&dmac0 18>, <&dmac0 19>;
-               pinctrl-0 = <&uart9m0_xfer>;
-               pinctrl-names = "default";
-               reg-io-width = <4>;
-               reg-shift = <2>;
-               status = "disabled";
+&cpu0_opp_table {
+       opp-1992000000 {
+               opp-hz = /bits/ 64 <1992000000>;
+               opp-microvolt = <1150000 1150000 1150000>;
        };
+};
 
-       pinctrl: pinctrl {
-               compatible = "rockchip,rk3568-pinctrl";
-               rockchip,grf = <&grf>;
-               rockchip,pmu = <&pmugrf>;
-               #address-cells = <2>;
-               #size-cells = <2>;
-               ranges;
-
-               gpio0: gpio@fdd60000 {
-                       compatible = "rockchip,gpio-bank";
-                       reg = <0x0 0xfdd60000 0x0 0x100>;
-                       interrupts = <GIC_SPI 33 IRQ_TYPE_LEVEL_HIGH>;
-                       clocks = <&pmucru PCLK_GPIO0>;
-                       gpio-controller;
-                       #gpio-cells = <2>;
-                       interrupt-controller;
-                       #interrupt-cells = <2>;
-               };
-
-               gpio1: gpio@fe740000 {
-                       compatible = "rockchip,gpio-bank";
-                       reg = <0x0 0xfe740000 0x0 0x100>;
-                       interrupts = <GIC_SPI 34 IRQ_TYPE_LEVEL_HIGH>;
-                       clocks = <&cru PCLK_GPIO1>;
-                       gpio-controller;
-                       #gpio-cells = <2>;
-                       interrupt-controller;
-                       #interrupt-cells = <2>;
-               };
-
-               gpio2: gpio@fe750000 {
-                       compatible = "rockchip,gpio-bank";
-                       reg = <0x0 0xfe750000 0x0 0x100>;
-                       interrupts = <GIC_SPI 35 IRQ_TYPE_LEVEL_HIGH>;
-                       clocks = <&cru PCLK_GPIO2>;
-                       gpio-controller;
-                       #gpio-cells = <2>;
-                       interrupt-controller;
-                       #interrupt-cells = <2>;
-               };
-
-               gpio3: gpio@fe760000 {
-                       compatible = "rockchip,gpio-bank";
-                       reg = <0x0 0xfe760000 0x0 0x100>;
-                       interrupts = <GIC_SPI 36 IRQ_TYPE_LEVEL_HIGH>;
-                       clocks = <&cru PCLK_GPIO3>;
-                       gpio-controller;
-                       #gpio-cells = <2>;
-                       interrupt-controller;
-                       #interrupt-cells = <2>;
-               };
-
-               gpio4: gpio@fe770000 {
-                       compatible = "rockchip,gpio-bank";
-                       reg = <0x0 0xfe770000 0x0 0x100>;
-                       interrupts = <GIC_SPI 37 IRQ_TYPE_LEVEL_HIGH>;
-                       clocks = <&cru PCLK_GPIO4>;
-                       gpio-controller;
-                       #gpio-cells = <2>;
-                       interrupt-controller;
-                       #interrupt-cells = <2>;
-               };
+&power {
+       power-domain@RK3568_PD_PIPE {
+               reg = <RK3568_PD_PIPE>;
+               clocks = <&cru PCLK_PIPE>;
+               pm_qos = <&qos_pcie2x1>,
+                        <&qos_pcie3x1>,
+                        <&qos_pcie3x2>,
+                        <&qos_sata0>,
+                        <&qos_sata1>,
+                        <&qos_sata2>,
+                        <&qos_usb3_0>,
+                        <&qos_usb3_1>;
+               #power-domain-cells = <0>;
        };
 };
-
-#include "rk3568-pinctrl.dtsi"
diff --git a/arch/arm64/boot/dts/rockchip/rk356x.dtsi b/arch/arm64/boot/dts/rockchip/rk356x.dtsi
new file mode 100644 (file)
index 0000000..46d9552
--- /dev/null
@@ -0,0 +1,1145 @@
+// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
+/*
+ * Copyright (c) 2021 Rockchip Electronics Co., Ltd.
+ */
+
+#include <dt-bindings/clock/rk3568-cru.h>
+#include <dt-bindings/interrupt-controller/arm-gic.h>
+#include <dt-bindings/interrupt-controller/irq.h>
+#include <dt-bindings/phy/phy.h>
+#include <dt-bindings/pinctrl/rockchip.h>
+#include <dt-bindings/power/rk3568-power.h>
+#include <dt-bindings/soc/rockchip,boot-mode.h>
+#include <dt-bindings/thermal/thermal.h>
+
+/ {
+       interrupt-parent = <&gic>;
+       #address-cells = <2>;
+       #size-cells = <2>;
+
+       aliases {
+               gpio0 = &gpio0;
+               gpio1 = &gpio1;
+               gpio2 = &gpio2;
+               gpio3 = &gpio3;
+               gpio4 = &gpio4;
+               i2c0 = &i2c0;
+               i2c1 = &i2c1;
+               i2c2 = &i2c2;
+               i2c3 = &i2c3;
+               i2c4 = &i2c4;
+               i2c5 = &i2c5;
+               serial0 = &uart0;
+               serial1 = &uart1;
+               serial2 = &uart2;
+               serial3 = &uart3;
+               serial4 = &uart4;
+               serial5 = &uart5;
+               serial6 = &uart6;
+               serial7 = &uart7;
+               serial8 = &uart8;
+               serial9 = &uart9;
+       };
+
+       cpus {
+               #address-cells = <2>;
+               #size-cells = <0>;
+
+               cpu0: cpu@0 {
+                       device_type = "cpu";
+                       compatible = "arm,cortex-a55";
+                       reg = <0x0 0x0>;
+                       clocks = <&scmi_clk 0>;
+                       #cooling-cells = <2>;
+                       enable-method = "psci";
+                       operating-points-v2 = <&cpu0_opp_table>;
+               };
+
+               cpu1: cpu@100 {
+                       device_type = "cpu";
+                       compatible = "arm,cortex-a55";
+                       reg = <0x0 0x100>;
+                       #cooling-cells = <2>;
+                       enable-method = "psci";
+                       operating-points-v2 = <&cpu0_opp_table>;
+               };
+
+               cpu2: cpu@200 {
+                       device_type = "cpu";
+                       compatible = "arm,cortex-a55";
+                       reg = <0x0 0x200>;
+                       #cooling-cells = <2>;
+                       enable-method = "psci";
+                       operating-points-v2 = <&cpu0_opp_table>;
+               };
+
+               cpu3: cpu@300 {
+                       device_type = "cpu";
+                       compatible = "arm,cortex-a55";
+                       reg = <0x0 0x300>;
+                       #cooling-cells = <2>;
+                       enable-method = "psci";
+                       operating-points-v2 = <&cpu0_opp_table>;
+               };
+       };
+
+       cpu0_opp_table: opp-table-0 {
+               compatible = "operating-points-v2";
+               opp-shared;
+
+               opp-408000000 {
+                       opp-hz = /bits/ 64 <408000000>;
+                       opp-microvolt = <900000 900000 1150000>;
+                       clock-latency-ns = <40000>;
+               };
+
+               opp-600000000 {
+                       opp-hz = /bits/ 64 <600000000>;
+                       opp-microvolt = <900000 900000 1150000>;
+               };
+
+               opp-816000000 {
+                       opp-hz = /bits/ 64 <816000000>;
+                       opp-microvolt = <900000 900000 1150000>;
+                       opp-suspend;
+               };
+
+               opp-1104000000 {
+                       opp-hz = /bits/ 64 <1104000000>;
+                       opp-microvolt = <900000 900000 1150000>;
+               };
+
+               opp-1416000000 {
+                       opp-hz = /bits/ 64 <1416000000>;
+                       opp-microvolt = <900000 900000 1150000>;
+               };
+
+               opp-1608000000 {
+                       opp-hz = /bits/ 64 <1608000000>;
+                       opp-microvolt = <975000 975000 1150000>;
+               };
+
+               opp-1800000000 {
+                       opp-hz = /bits/ 64 <1800000000>;
+                       opp-microvolt = <1050000 1050000 1150000>;
+               };
+       };
+
+       firmware {
+               scmi: scmi {
+                       compatible = "arm,scmi-smc";
+                       arm,smc-id = <0x82000010>;
+                       shmem = <&scmi_shmem>;
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+
+                       scmi_clk: protocol@14 {
+                               reg = <0x14>;
+                               #clock-cells = <1>;
+                       };
+               };
+       };
+
+       pmu {
+               compatible = "arm,cortex-a55-pmu";
+               interrupts = <GIC_SPI 228 IRQ_TYPE_LEVEL_HIGH>,
+                            <GIC_SPI 229 IRQ_TYPE_LEVEL_HIGH>,
+                            <GIC_SPI 230 IRQ_TYPE_LEVEL_HIGH>,
+                            <GIC_SPI 231 IRQ_TYPE_LEVEL_HIGH>;
+               interrupt-affinity = <&cpu0>, <&cpu1>, <&cpu2>, <&cpu3>;
+       };
+
+       psci {
+               compatible = "arm,psci-1.0";
+               method = "smc";
+       };
+
+       timer {
+               compatible = "arm,armv8-timer";
+               interrupts = <GIC_PPI 13 IRQ_TYPE_LEVEL_HIGH>,
+                            <GIC_PPI 14 IRQ_TYPE_LEVEL_HIGH>,
+                            <GIC_PPI 11 IRQ_TYPE_LEVEL_HIGH>,
+                            <GIC_PPI 10 IRQ_TYPE_LEVEL_HIGH>;
+               arm,no-tick-in-suspend;
+       };
+
+       xin24m: xin24m {
+               compatible = "fixed-clock";
+               clock-frequency = <24000000>;
+               clock-output-names = "xin24m";
+               #clock-cells = <0>;
+       };
+
+       xin32k: xin32k {
+               compatible = "fixed-clock";
+               clock-frequency = <32768>;
+               clock-output-names = "xin32k";
+               pinctrl-0 = <&clk32k_out0>;
+               pinctrl-names = "default";
+               #clock-cells = <0>;
+       };
+
+       sram@10f000 {
+               compatible = "mmio-sram";
+               reg = <0x0 0x0010f000 0x0 0x100>;
+               #address-cells = <1>;
+               #size-cells = <1>;
+               ranges = <0 0x0 0x0010f000 0x100>;
+
+               scmi_shmem: sram@0 {
+                       compatible = "arm,scmi-shmem";
+                       reg = <0x0 0x100>;
+               };
+       };
+
+       gic: interrupt-controller@fd400000 {
+               compatible = "arm,gic-v3";
+               reg = <0x0 0xfd400000 0 0x10000>, /* GICD */
+                     <0x0 0xfd460000 0 0x80000>; /* GICR */
+               interrupts = <GIC_PPI 9 IRQ_TYPE_LEVEL_HIGH>;
+               interrupt-controller;
+               #interrupt-cells = <3>;
+               mbi-alias = <0x0 0xfd410000>;
+               mbi-ranges = <296 24>;
+               msi-controller;
+       };
+
+       pmugrf: syscon@fdc20000 {
+               compatible = "rockchip,rk3568-pmugrf", "syscon", "simple-mfd";
+               reg = <0x0 0xfdc20000 0x0 0x10000>;
+
+               pmu_io_domains: io-domains {
+                       compatible = "rockchip,rk3568-pmu-io-voltage-domain";
+                       status = "disabled";
+               };
+       };
+
+       grf: syscon@fdc60000 {
+               compatible = "rockchip,rk3568-grf", "syscon", "simple-mfd";
+               reg = <0x0 0xfdc60000 0x0 0x10000>;
+       };
+
+       pmucru: clock-controller@fdd00000 {
+               compatible = "rockchip,rk3568-pmucru";
+               reg = <0x0 0xfdd00000 0x0 0x1000>;
+               #clock-cells = <1>;
+               #reset-cells = <1>;
+       };
+
+       cru: clock-controller@fdd20000 {
+               compatible = "rockchip,rk3568-cru";
+               reg = <0x0 0xfdd20000 0x0 0x1000>;
+               #clock-cells = <1>;
+               #reset-cells = <1>;
+               assigned-clocks = <&cru PLL_GPLL>, <&pmucru PLL_PPLL>;
+               assigned-clock-rates = <1200000000>, <200000000>;
+               rockchip,grf = <&grf>;
+       };
+
+       i2c0: i2c@fdd40000 {
+               compatible = "rockchip,rk3568-i2c", "rockchip,rk3399-i2c";
+               reg = <0x0 0xfdd40000 0x0 0x1000>;
+               interrupts = <GIC_SPI 46 IRQ_TYPE_LEVEL_HIGH>;
+               clocks = <&pmucru CLK_I2C0>, <&pmucru PCLK_I2C0>;
+               clock-names = "i2c", "pclk";
+               pinctrl-0 = <&i2c0_xfer>;
+               pinctrl-names = "default";
+               #address-cells = <1>;
+               #size-cells = <0>;
+               status = "disabled";
+       };
+
+       uart0: serial@fdd50000 {
+               compatible = "rockchip,rk3568-uart", "snps,dw-apb-uart";
+               reg = <0x0 0xfdd50000 0x0 0x100>;
+               interrupts = <GIC_SPI 116 IRQ_TYPE_LEVEL_HIGH>;
+               clocks = <&pmucru SCLK_UART0>, <&pmucru PCLK_UART0>;
+               clock-names = "baudclk", "apb_pclk";
+               dmas = <&dmac0 0>, <&dmac0 1>;
+               pinctrl-0 = <&uart0_xfer>;
+               pinctrl-names = "default";
+               reg-io-width = <4>;
+               reg-shift = <2>;
+               status = "disabled";
+       };
+
+       pwm0: pwm@fdd70000 {
+               compatible = "rockchip,rk3568-pwm", "rockchip,rk3328-pwm";
+               reg = <0x0 0xfdd70000 0x0 0x10>;
+               clocks = <&pmucru CLK_PWM0>, <&pmucru PCLK_PWM0>;
+               clock-names = "pwm", "pclk";
+               pinctrl-0 = <&pwm0m0_pins>;
+               pinctrl-names = "active";
+               #pwm-cells = <3>;
+               status = "disabled";
+       };
+
+       pwm1: pwm@fdd70010 {
+               compatible = "rockchip,rk3568-pwm", "rockchip,rk3328-pwm";
+               reg = <0x0 0xfdd70010 0x0 0x10>;
+               clocks = <&pmucru CLK_PWM0>, <&pmucru PCLK_PWM0>;
+               clock-names = "pwm", "pclk";
+               pinctrl-0 = <&pwm1m0_pins>;
+               pinctrl-names = "active";
+               #pwm-cells = <3>;
+               status = "disabled";
+       };
+
+       pwm2: pwm@fdd70020 {
+               compatible = "rockchip,rk3568-pwm", "rockchip,rk3328-pwm";
+               reg = <0x0 0xfdd70020 0x0 0x10>;
+               clocks = <&pmucru CLK_PWM0>, <&pmucru PCLK_PWM0>;
+               clock-names = "pwm", "pclk";
+               pinctrl-0 = <&pwm2m0_pins>;
+               pinctrl-names = "active";
+               #pwm-cells = <3>;
+               status = "disabled";
+       };
+
+       pwm3: pwm@fdd70030 {
+               compatible = "rockchip,rk3568-pwm", "rockchip,rk3328-pwm";
+               reg = <0x0 0xfdd70030 0x0 0x10>;
+               clocks = <&pmucru CLK_PWM0>, <&pmucru PCLK_PWM0>;
+               clock-names = "pwm", "pclk";
+               pinctrl-0 = <&pwm3_pins>;
+               pinctrl-names = "active";
+               #pwm-cells = <3>;
+               status = "disabled";
+       };
+
+       pmu: power-management@fdd90000 {
+               compatible = "rockchip,rk3568-pmu", "syscon", "simple-mfd";
+               reg = <0x0 0xfdd90000 0x0 0x1000>;
+
+               power: power-controller {
+                       compatible = "rockchip,rk3568-power-controller";
+                       #power-domain-cells = <1>;
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+
+                       /* These power domains are grouped by VD_GPU */
+                       power-domain@RK3568_PD_GPU {
+                               reg = <RK3568_PD_GPU>;
+                               clocks = <&cru ACLK_GPU_PRE>,
+                                        <&cru PCLK_GPU_PRE>;
+                               pm_qos = <&qos_gpu>;
+                               #power-domain-cells = <0>;
+                       };
+
+                       /* These power domains are grouped by VD_LOGIC */
+                       power-domain@RK3568_PD_VI {
+                               reg = <RK3568_PD_VI>;
+                               clocks = <&cru HCLK_VI>,
+                                        <&cru PCLK_VI>;
+                               pm_qos = <&qos_isp>,
+                                        <&qos_vicap0>,
+                                        <&qos_vicap1>;
+                               #power-domain-cells = <0>;
+                       };
+
+                       power-domain@RK3568_PD_VO {
+                               reg = <RK3568_PD_VO>;
+                               clocks = <&cru HCLK_VO>,
+                                        <&cru PCLK_VO>,
+                                        <&cru ACLK_VOP_PRE>;
+                               pm_qos = <&qos_hdcp>,
+                                        <&qos_vop_m0>,
+                                        <&qos_vop_m1>;
+                               #power-domain-cells = <0>;
+                       };
+
+                       power-domain@RK3568_PD_RGA {
+                               reg = <RK3568_PD_RGA>;
+                               clocks = <&cru HCLK_RGA_PRE>,
+                                        <&cru PCLK_RGA_PRE>;
+                               pm_qos = <&qos_ebc>,
+                                        <&qos_iep>,
+                                        <&qos_jpeg_dec>,
+                                        <&qos_jpeg_enc>,
+                                        <&qos_rga_rd>,
+                                        <&qos_rga_wr>;
+                               #power-domain-cells = <0>;
+                       };
+
+                       power-domain@RK3568_PD_VPU {
+                               reg = <RK3568_PD_VPU>;
+                               clocks = <&cru HCLK_VPU_PRE>;
+                               pm_qos = <&qos_vpu>;
+                               #power-domain-cells = <0>;
+                       };
+
+                       power-domain@RK3568_PD_RKVDEC {
+                               clocks = <&cru HCLK_RKVDEC_PRE>;
+                               reg = <RK3568_PD_RKVDEC>;
+                               pm_qos = <&qos_rkvdec>;
+                               #power-domain-cells = <0>;
+                       };
+
+                       power-domain@RK3568_PD_RKVENC {
+                               reg = <RK3568_PD_RKVENC>;
+                               clocks = <&cru HCLK_RKVENC_PRE>;
+                               pm_qos = <&qos_rkvenc_rd_m0>,
+                                        <&qos_rkvenc_rd_m1>,
+                                        <&qos_rkvenc_wr_m0>;
+                               #power-domain-cells = <0>;
+                       };
+               };
+       };
+
+       sdmmc2: mmc@fe000000 {
+               compatible = "rockchip,rk3568-dw-mshc", "rockchip,rk3288-dw-mshc";
+               reg = <0x0 0xfe000000 0x0 0x4000>;
+               interrupts = <GIC_SPI 100 IRQ_TYPE_LEVEL_HIGH>;
+               clocks = <&cru HCLK_SDMMC2>, <&cru CLK_SDMMC2>,
+                        <&cru SCLK_SDMMC2_DRV>, <&cru SCLK_SDMMC2_SAMPLE>;
+               clock-names = "biu", "ciu", "ciu-drive", "ciu-sample";
+               fifo-depth = <0x100>;
+               max-frequency = <150000000>;
+               resets = <&cru SRST_SDMMC2>;
+               reset-names = "reset";
+               status = "disabled";
+       };
+
+       gmac1: ethernet@fe010000 {
+               compatible = "rockchip,rk3568-gmac", "snps,dwmac-4.20a";
+               reg = <0x0 0xfe010000 0x0 0x10000>;
+               interrupts = <GIC_SPI 32 IRQ_TYPE_LEVEL_HIGH>,
+                            <GIC_SPI 29 IRQ_TYPE_LEVEL_HIGH>;
+               interrupt-names = "macirq", "eth_wake_irq";
+               clocks = <&cru SCLK_GMAC1>, <&cru SCLK_GMAC1_RX_TX>,
+                        <&cru SCLK_GMAC1_RX_TX>, <&cru CLK_MAC1_REFOUT>,
+                        <&cru ACLK_GMAC1>, <&cru PCLK_GMAC1>,
+                        <&cru SCLK_GMAC1_RX_TX>, <&cru CLK_GMAC1_PTP_REF>;
+               clock-names = "stmmaceth", "mac_clk_rx",
+                             "mac_clk_tx", "clk_mac_refout",
+                             "aclk_mac", "pclk_mac",
+                             "clk_mac_speed", "ptp_ref";
+               resets = <&cru SRST_A_GMAC1>;
+               reset-names = "stmmaceth";
+               rockchip,grf = <&grf>;
+               snps,axi-config = <&gmac1_stmmac_axi_setup>;
+               snps,mixed-burst;
+               snps,mtl-rx-config = <&gmac1_mtl_rx_setup>;
+               snps,mtl-tx-config = <&gmac1_mtl_tx_setup>;
+               snps,tso;
+               status = "disabled";
+
+               mdio1: mdio {
+                       compatible = "snps,dwmac-mdio";
+                       #address-cells = <0x1>;
+                       #size-cells = <0x0>;
+               };
+
+               gmac1_stmmac_axi_setup: stmmac-axi-config {
+                       snps,blen = <0 0 0 0 16 8 4>;
+                       snps,rd_osr_lmt = <8>;
+                       snps,wr_osr_lmt = <4>;
+               };
+
+               gmac1_mtl_rx_setup: rx-queues-config {
+                       snps,rx-queues-to-use = <1>;
+                       queue0 {};
+               };
+
+               gmac1_mtl_tx_setup: tx-queues-config {
+                       snps,tx-queues-to-use = <1>;
+                       queue0 {};
+               };
+       };
+
+       qos_gpu: qos@fe128000 {
+               compatible = "rockchip,rk3568-qos", "syscon";
+               reg = <0x0 0xfe128000 0x0 0x20>;
+       };
+
+       qos_rkvenc_rd_m0: qos@fe138080 {
+               compatible = "rockchip,rk3568-qos", "syscon";
+               reg = <0x0 0xfe138080 0x0 0x20>;
+       };
+
+       qos_rkvenc_rd_m1: qos@fe138100 {
+               compatible = "rockchip,rk3568-qos", "syscon";
+               reg = <0x0 0xfe138100 0x0 0x20>;
+       };
+
+       qos_rkvenc_wr_m0: qos@fe138180 {
+               compatible = "rockchip,rk3568-qos", "syscon";
+               reg = <0x0 0xfe138180 0x0 0x20>;
+       };
+
+       qos_isp: qos@fe148000 {
+               compatible = "rockchip,rk3568-qos", "syscon";
+               reg = <0x0 0xfe148000 0x0 0x20>;
+       };
+
+       qos_vicap0: qos@fe148080 {
+               compatible = "rockchip,rk3568-qos", "syscon";
+               reg = <0x0 0xfe148080 0x0 0x20>;
+       };
+
+       qos_vicap1: qos@fe148100 {
+               compatible = "rockchip,rk3568-qos", "syscon";
+               reg = <0x0 0xfe148100 0x0 0x20>;
+       };
+
+       qos_vpu: qos@fe150000 {
+               compatible = "rockchip,rk3568-qos", "syscon";
+               reg = <0x0 0xfe150000 0x0 0x20>;
+       };
+
+       qos_ebc: qos@fe158000 {
+               compatible = "rockchip,rk3568-qos", "syscon";
+               reg = <0x0 0xfe158000 0x0 0x20>;
+       };
+
+       qos_iep: qos@fe158100 {
+               compatible = "rockchip,rk3568-qos", "syscon";
+               reg = <0x0 0xfe158100 0x0 0x20>;
+       };
+
+       qos_jpeg_dec: qos@fe158180 {
+               compatible = "rockchip,rk3568-qos", "syscon";
+               reg = <0x0 0xfe158180 0x0 0x20>;
+       };
+
+       qos_jpeg_enc: qos@fe158200 {
+               compatible = "rockchip,rk3568-qos", "syscon";
+               reg = <0x0 0xfe158200 0x0 0x20>;
+       };
+
+       qos_rga_rd: qos@fe158280 {
+               compatible = "rockchip,rk3568-qos", "syscon";
+               reg = <0x0 0xfe158280 0x0 0x20>;
+       };
+
+       qos_rga_wr: qos@fe158300 {
+               compatible = "rockchip,rk3568-qos", "syscon";
+               reg = <0x0 0xfe158300 0x0 0x20>;
+       };
+
+       qos_npu: qos@fe180000 {
+               compatible = "rockchip,rk3568-qos", "syscon";
+               reg = <0x0 0xfe180000 0x0 0x20>;
+       };
+
+       qos_pcie2x1: qos@fe190000 {
+               compatible = "rockchip,rk3568-qos", "syscon";
+               reg = <0x0 0xfe190000 0x0 0x20>;
+       };
+
+       qos_sata1: qos@fe190280 {
+               compatible = "rockchip,rk3568-qos", "syscon";
+               reg = <0x0 0xfe190280 0x0 0x20>;
+       };
+
+       qos_sata2: qos@fe190300 {
+               compatible = "rockchip,rk3568-qos", "syscon";
+               reg = <0x0 0xfe190300 0x0 0x20>;
+       };
+
+       qos_usb3_0: qos@fe190380 {
+               compatible = "rockchip,rk3568-qos", "syscon";
+               reg = <0x0 0xfe190380 0x0 0x20>;
+       };
+
+       qos_usb3_1: qos@fe190400 {
+               compatible = "rockchip,rk3568-qos", "syscon";
+               reg = <0x0 0xfe190400 0x0 0x20>;
+       };
+
+       qos_rkvdec: qos@fe198000 {
+               compatible = "rockchip,rk3568-qos", "syscon";
+               reg = <0x0 0xfe198000 0x0 0x20>;
+       };
+
+       qos_hdcp: qos@fe1a8000 {
+               compatible = "rockchip,rk3568-qos", "syscon";
+               reg = <0x0 0xfe1a8000 0x0 0x20>;
+       };
+
+       qos_vop_m0: qos@fe1a8080 {
+               compatible = "rockchip,rk3568-qos", "syscon";
+               reg = <0x0 0xfe1a8080 0x0 0x20>;
+       };
+
+       qos_vop_m1: qos@fe1a8100 {
+               compatible = "rockchip,rk3568-qos", "syscon";
+               reg = <0x0 0xfe1a8100 0x0 0x20>;
+       };
+
+       sdmmc0: mmc@fe2b0000 {
+               compatible = "rockchip,rk3568-dw-mshc", "rockchip,rk3288-dw-mshc";
+               reg = <0x0 0xfe2b0000 0x0 0x4000>;
+               interrupts = <GIC_SPI 98 IRQ_TYPE_LEVEL_HIGH>;
+               clocks = <&cru HCLK_SDMMC0>, <&cru CLK_SDMMC0>,
+                        <&cru SCLK_SDMMC0_DRV>, <&cru SCLK_SDMMC0_SAMPLE>;
+               clock-names = "biu", "ciu", "ciu-drive", "ciu-sample";
+               fifo-depth = <0x100>;
+               max-frequency = <150000000>;
+               resets = <&cru SRST_SDMMC0>;
+               reset-names = "reset";
+               status = "disabled";
+       };
+
+       sdmmc1: mmc@fe2c0000 {
+               compatible = "rockchip,rk3568-dw-mshc", "rockchip,rk3288-dw-mshc";
+               reg = <0x0 0xfe2c0000 0x0 0x4000>;
+               interrupts = <GIC_SPI 99 IRQ_TYPE_LEVEL_HIGH>;
+               clocks = <&cru HCLK_SDMMC1>, <&cru CLK_SDMMC1>,
+                        <&cru SCLK_SDMMC1_DRV>, <&cru SCLK_SDMMC1_SAMPLE>;
+               clock-names = "biu", "ciu", "ciu-drive", "ciu-sample";
+               fifo-depth = <0x100>;
+               max-frequency = <150000000>;
+               resets = <&cru SRST_SDMMC1>;
+               reset-names = "reset";
+               status = "disabled";
+       };
+
+       sdhci: mmc@fe310000 {
+               compatible = "rockchip,rk3568-dwcmshc";
+               reg = <0x0 0xfe310000 0x0 0x10000>;
+               interrupts = <GIC_SPI 19 IRQ_TYPE_LEVEL_HIGH>;
+               assigned-clocks = <&cru BCLK_EMMC>, <&cru TCLK_EMMC>;
+               assigned-clock-rates = <200000000>, <24000000>;
+               clocks = <&cru CCLK_EMMC>, <&cru HCLK_EMMC>,
+                        <&cru ACLK_EMMC>, <&cru BCLK_EMMC>,
+                        <&cru TCLK_EMMC>;
+               clock-names = "core", "bus", "axi", "block", "timer";
+               status = "disabled";
+       };
+
+       spdif: spdif@fe460000 {
+               compatible = "rockchip,rk3568-spdif";
+               reg = <0x0 0xfe460000 0x0 0x1000>;
+               interrupts = <GIC_SPI 102 IRQ_TYPE_LEVEL_HIGH>;
+               clock-names = "mclk", "hclk";
+               clocks = <&cru MCLK_SPDIF_8CH>, <&cru HCLK_SPDIF_8CH>;
+               dmas = <&dmac1 1>;
+               dma-names = "tx";
+               pinctrl-names = "default";
+               pinctrl-0 = <&spdifm0_tx>;
+               #sound-dai-cells = <0>;
+               status = "disabled";
+       };
+
+       i2s1_8ch: i2s@fe410000 {
+               compatible = "rockchip,rk3568-i2s-tdm";
+               reg = <0x0 0xfe410000 0x0 0x1000>;
+               interrupts = <GIC_SPI 53 IRQ_TYPE_LEVEL_HIGH>;
+               assigned-clocks = <&cru CLK_I2S1_8CH_TX_SRC>, <&cru CLK_I2S1_8CH_RX_SRC>;
+               assigned-clock-rates = <1188000000>, <1188000000>;
+               clocks = <&cru MCLK_I2S1_8CH_TX>, <&cru MCLK_I2S1_8CH_RX>,
+                        <&cru HCLK_I2S1_8CH>;
+               clock-names = "mclk_tx", "mclk_rx", "hclk";
+               dmas = <&dmac1 3>, <&dmac1 2>;
+               dma-names = "rx", "tx";
+               resets = <&cru SRST_M_I2S1_8CH_TX>, <&cru SRST_M_I2S1_8CH_RX>;
+               reset-names = "tx-m", "rx-m";
+               rockchip,grf = <&grf>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&i2s1m0_sclktx &i2s1m0_sclkrx
+                            &i2s1m0_lrcktx &i2s1m0_lrckrx
+                            &i2s1m0_sdi0   &i2s1m0_sdi1
+                            &i2s1m0_sdi2   &i2s1m0_sdi3
+                            &i2s1m0_sdo0   &i2s1m0_sdo1
+                            &i2s1m0_sdo2   &i2s1m0_sdo3>;
+               #sound-dai-cells = <0>;
+               status = "disabled";
+       };
+
+       dmac0: dmac@fe530000 {
+               compatible = "arm,pl330", "arm,primecell";
+               reg = <0x0 0xfe530000 0x0 0x4000>;
+               interrupts = <GIC_SPI 14 IRQ_TYPE_LEVEL_HIGH>,
+                            <GIC_SPI 13 IRQ_TYPE_LEVEL_HIGH>;
+               arm,pl330-periph-burst;
+               clocks = <&cru ACLK_BUS>;
+               clock-names = "apb_pclk";
+               #dma-cells = <1>;
+       };
+
+       dmac1: dmac@fe550000 {
+               compatible = "arm,pl330", "arm,primecell";
+               reg = <0x0 0xfe550000 0x0 0x4000>;
+               interrupts = <GIC_SPI 16 IRQ_TYPE_LEVEL_HIGH>,
+                            <GIC_SPI 15 IRQ_TYPE_LEVEL_HIGH>;
+               arm,pl330-periph-burst;
+               clocks = <&cru ACLK_BUS>;
+               clock-names = "apb_pclk";
+               #dma-cells = <1>;
+       };
+
+       i2c1: i2c@fe5a0000 {
+               compatible = "rockchip,rk3568-i2c", "rockchip,rk3399-i2c";
+               reg = <0x0 0xfe5a0000 0x0 0x1000>;
+               interrupts = <GIC_SPI 47 IRQ_TYPE_LEVEL_HIGH>;
+               clocks = <&cru CLK_I2C1>, <&cru PCLK_I2C1>;
+               clock-names = "i2c", "pclk";
+               pinctrl-0 = <&i2c1_xfer>;
+               pinctrl-names = "default";
+               #address-cells = <1>;
+               #size-cells = <0>;
+               status = "disabled";
+       };
+
+       i2c2: i2c@fe5b0000 {
+               compatible = "rockchip,rk3568-i2c", "rockchip,rk3399-i2c";
+               reg = <0x0 0xfe5b0000 0x0 0x1000>;
+               interrupts = <GIC_SPI 48 IRQ_TYPE_LEVEL_HIGH>;
+               clocks = <&cru CLK_I2C2>, <&cru PCLK_I2C2>;
+               clock-names = "i2c", "pclk";
+               pinctrl-0 = <&i2c2m0_xfer>;
+               pinctrl-names = "default";
+               #address-cells = <1>;
+               #size-cells = <0>;
+               status = "disabled";
+       };
+
+       i2c3: i2c@fe5c0000 {
+               compatible = "rockchip,rk3568-i2c", "rockchip,rk3399-i2c";
+               reg = <0x0 0xfe5c0000 0x0 0x1000>;
+               interrupts = <GIC_SPI 49 IRQ_TYPE_LEVEL_HIGH>;
+               clocks = <&cru CLK_I2C3>, <&cru PCLK_I2C3>;
+               clock-names = "i2c", "pclk";
+               pinctrl-0 = <&i2c3m0_xfer>;
+               pinctrl-names = "default";
+               #address-cells = <1>;
+               #size-cells = <0>;
+               status = "disabled";
+       };
+
+       i2c4: i2c@fe5d0000 {
+               compatible = "rockchip,rk3568-i2c", "rockchip,rk3399-i2c";
+               reg = <0x0 0xfe5d0000 0x0 0x1000>;
+               interrupts = <GIC_SPI 50 IRQ_TYPE_LEVEL_HIGH>;
+               clocks = <&cru CLK_I2C4>, <&cru PCLK_I2C4>;
+               clock-names = "i2c", "pclk";
+               pinctrl-0 = <&i2c4m0_xfer>;
+               pinctrl-names = "default";
+               #address-cells = <1>;
+               #size-cells = <0>;
+               status = "disabled";
+       };
+
+       i2c5: i2c@fe5e0000 {
+               compatible = "rockchip,rk3568-i2c", "rockchip,rk3399-i2c";
+               reg = <0x0 0xfe5e0000 0x0 0x1000>;
+               interrupts = <GIC_SPI 51 IRQ_TYPE_LEVEL_HIGH>;
+               clocks = <&cru CLK_I2C5>, <&cru PCLK_I2C5>;
+               clock-names = "i2c", "pclk";
+               pinctrl-0 = <&i2c5m0_xfer>;
+               pinctrl-names = "default";
+               #address-cells = <1>;
+               #size-cells = <0>;
+               status = "disabled";
+       };
+
+       wdt: watchdog@fe600000 {
+               compatible = "rockchip,rk3568-wdt", "snps,dw-wdt";
+               reg = <0x0 0xfe600000 0x0 0x100>;
+               interrupts = <GIC_SPI 149 IRQ_TYPE_LEVEL_HIGH>;
+               clocks = <&cru TCLK_WDT_NS>, <&cru PCLK_WDT_NS>;
+               clock-names = "tclk", "pclk";
+       };
+
+       uart1: serial@fe650000 {
+               compatible = "rockchip,rk3568-uart", "snps,dw-apb-uart";
+               reg = <0x0 0xfe650000 0x0 0x100>;
+               interrupts = <GIC_SPI 117 IRQ_TYPE_LEVEL_HIGH>;
+               clocks = <&cru SCLK_UART1>, <&cru PCLK_UART1>;
+               clock-names = "baudclk", "apb_pclk";
+               dmas = <&dmac0 2>, <&dmac0 3>;
+               pinctrl-0 = <&uart1m0_xfer>;
+               pinctrl-names = "default";
+               reg-io-width = <4>;
+               reg-shift = <2>;
+               status = "disabled";
+       };
+
+       uart2: serial@fe660000 {
+               compatible = "rockchip,rk3568-uart", "snps,dw-apb-uart";
+               reg = <0x0 0xfe660000 0x0 0x100>;
+               interrupts = <GIC_SPI 118 IRQ_TYPE_LEVEL_HIGH>;
+               clocks = <&cru SCLK_UART2>, <&cru PCLK_UART2>;
+               clock-names = "baudclk", "apb_pclk";
+               dmas = <&dmac0 4>, <&dmac0 5>;
+               pinctrl-0 = <&uart2m0_xfer>;
+               pinctrl-names = "default";
+               reg-io-width = <4>;
+               reg-shift = <2>;
+               status = "disabled";
+       };
+
+       uart3: serial@fe670000 {
+               compatible = "rockchip,rk3568-uart", "snps,dw-apb-uart";
+               reg = <0x0 0xfe670000 0x0 0x100>;
+               interrupts = <GIC_SPI 119 IRQ_TYPE_LEVEL_HIGH>;
+               clocks = <&cru SCLK_UART3>, <&cru PCLK_UART3>;
+               clock-names = "baudclk", "apb_pclk";
+               dmas = <&dmac0 6>, <&dmac0 7>;
+               pinctrl-0 = <&uart3m0_xfer>;
+               pinctrl-names = "default";
+               reg-io-width = <4>;
+               reg-shift = <2>;
+               status = "disabled";
+       };
+
+       uart4: serial@fe680000 {
+               compatible = "rockchip,rk3568-uart", "snps,dw-apb-uart";
+               reg = <0x0 0xfe680000 0x0 0x100>;
+               interrupts = <GIC_SPI 120 IRQ_TYPE_LEVEL_HIGH>;
+               clocks = <&cru SCLK_UART4>, <&cru PCLK_UART4>;
+               clock-names = "baudclk", "apb_pclk";
+               dmas = <&dmac0 8>, <&dmac0 9>;
+               pinctrl-0 = <&uart4m0_xfer>;
+               pinctrl-names = "default";
+               reg-io-width = <4>;
+               reg-shift = <2>;
+               status = "disabled";
+       };
+
+       uart5: serial@fe690000 {
+               compatible = "rockchip,rk3568-uart", "snps,dw-apb-uart";
+               reg = <0x0 0xfe690000 0x0 0x100>;
+               interrupts = <GIC_SPI 121 IRQ_TYPE_LEVEL_HIGH>;
+               clocks = <&cru SCLK_UART5>, <&cru PCLK_UART5>;
+               clock-names = "baudclk", "apb_pclk";
+               dmas = <&dmac0 10>, <&dmac0 11>;
+               pinctrl-0 = <&uart5m0_xfer>;
+               pinctrl-names = "default";
+               reg-io-width = <4>;
+               reg-shift = <2>;
+               status = "disabled";
+       };
+
+       uart6: serial@fe6a0000 {
+               compatible = "rockchip,rk3568-uart", "snps,dw-apb-uart";
+               reg = <0x0 0xfe6a0000 0x0 0x100>;
+               interrupts = <GIC_SPI 122 IRQ_TYPE_LEVEL_HIGH>;
+               clocks = <&cru SCLK_UART6>, <&cru PCLK_UART6>;
+               clock-names = "baudclk", "apb_pclk";
+               dmas = <&dmac0 12>, <&dmac0 13>;
+               pinctrl-0 = <&uart6m0_xfer>;
+               pinctrl-names = "default";
+               reg-io-width = <4>;
+               reg-shift = <2>;
+               status = "disabled";
+       };
+
+       uart7: serial@fe6b0000 {
+               compatible = "rockchip,rk3568-uart", "snps,dw-apb-uart";
+               reg = <0x0 0xfe6b0000 0x0 0x100>;
+               interrupts = <GIC_SPI 123 IRQ_TYPE_LEVEL_HIGH>;
+               clocks = <&cru SCLK_UART7>, <&cru PCLK_UART7>;
+               clock-names = "baudclk", "apb_pclk";
+               dmas = <&dmac0 14>, <&dmac0 15>;
+               pinctrl-0 = <&uart7m0_xfer>;
+               pinctrl-names = "default";
+               reg-io-width = <4>;
+               reg-shift = <2>;
+               status = "disabled";
+       };
+
+       uart8: serial@fe6c0000 {
+               compatible = "rockchip,rk3568-uart", "snps,dw-apb-uart";
+               reg = <0x0 0xfe6c0000 0x0 0x100>;
+               interrupts = <GIC_SPI 124 IRQ_TYPE_LEVEL_HIGH>;
+               clocks = <&cru SCLK_UART8>, <&cru PCLK_UART8>;
+               clock-names = "baudclk", "apb_pclk";
+               dmas = <&dmac0 16>, <&dmac0 17>;
+               pinctrl-0 = <&uart8m0_xfer>;
+               pinctrl-names = "default";
+               reg-io-width = <4>;
+               reg-shift = <2>;
+               status = "disabled";
+       };
+
+       uart9: serial@fe6d0000 {
+               compatible = "rockchip,rk3568-uart", "snps,dw-apb-uart";
+               reg = <0x0 0xfe6d0000 0x0 0x100>;
+               interrupts = <GIC_SPI 125 IRQ_TYPE_LEVEL_HIGH>;
+               clocks = <&cru SCLK_UART9>, <&cru PCLK_UART9>;
+               clock-names = "baudclk", "apb_pclk";
+               dmas = <&dmac0 18>, <&dmac0 19>;
+               pinctrl-0 = <&uart9m0_xfer>;
+               pinctrl-names = "default";
+               reg-io-width = <4>;
+               reg-shift = <2>;
+               status = "disabled";
+       };
+
+       thermal_zones: thermal-zones {
+               cpu_thermal: cpu-thermal {
+                       polling-delay-passive = <100>;
+                       polling-delay = <1000>;
+
+                       thermal-sensors = <&tsadc 0>;
+
+                       trips {
+                               cpu_alert0: cpu_alert0 {
+                                       temperature = <70000>;
+                                       hysteresis = <2000>;
+                                       type = "passive";
+                               };
+                               cpu_alert1: cpu_alert1 {
+                                       temperature = <75000>;
+                                       hysteresis = <2000>;
+                                       type = "passive";
+                               };
+                               cpu_crit: cpu_crit {
+                                       temperature = <95000>;
+                                       hysteresis = <2000>;
+                                       type = "critical";
+                               };
+                       };
+
+                       cooling-maps {
+                               map0 {
+                                       trip = <&cpu_alert0>;
+                                       cooling-device =
+                                               <&cpu0 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
+                                               <&cpu1 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
+                                               <&cpu2 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
+                                               <&cpu3 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>;
+                               };
+                       };
+               };
+
+               gpu_thermal: gpu-thermal {
+                       polling-delay-passive = <20>; /* milliseconds */
+                       polling-delay = <1000>; /* milliseconds */
+
+                       thermal-sensors = <&tsadc 1>;
+               };
+       };
+
+       tsadc: tsadc@fe710000 {
+               compatible = "rockchip,rk3568-tsadc";
+               reg = <0x0 0xfe710000 0x0 0x100>;
+               interrupts = <GIC_SPI 115 IRQ_TYPE_LEVEL_HIGH>;
+               assigned-clocks = <&cru CLK_TSADC_TSEN>, <&cru CLK_TSADC>;
+               assigned-clock-rates = <17000000>, <700000>;
+               clocks = <&cru CLK_TSADC>, <&cru PCLK_TSADC>;
+               clock-names = "tsadc", "apb_pclk";
+               resets = <&cru SRST_P_TSADC>, <&cru SRST_TSADC>,
+                        <&cru SRST_TSADCPHY>;
+               rockchip,grf = <&grf>;
+               rockchip,hw-tshut-temp = <95000>;
+               pinctrl-names = "init", "default", "sleep";
+               pinctrl-0 = <&tsadc_pin>;
+               pinctrl-1 = <&tsadc_shutorg>;
+               pinctrl-2 = <&tsadc_pin>;
+               #thermal-sensor-cells = <1>;
+               status = "disabled";
+       };
+
+       saradc: saradc@fe720000 {
+               compatible = "rockchip,rk3568-saradc", "rockchip,rk3399-saradc";
+               reg = <0x0 0xfe720000 0x0 0x100>;
+               interrupts = <GIC_SPI 93 IRQ_TYPE_LEVEL_HIGH>;
+               clocks = <&cru CLK_SARADC>, <&cru PCLK_SARADC>;
+               clock-names = "saradc", "apb_pclk";
+               resets = <&cru SRST_P_SARADC>;
+               reset-names = "saradc-apb";
+               #io-channel-cells = <1>;
+               status = "disabled";
+       };
+
+       pwm4: pwm@fe6e0000 {
+               compatible = "rockchip,rk3568-pwm", "rockchip,rk3328-pwm";
+               reg = <0x0 0xfe6e0000 0x0 0x10>;
+               clocks = <&cru CLK_PWM1>, <&cru PCLK_PWM1>;
+               clock-names = "pwm", "pclk";
+               pinctrl-0 = <&pwm4_pins>;
+               pinctrl-names = "active";
+               #pwm-cells = <3>;
+               status = "disabled";
+       };
+
+       pwm5: pwm@fe6e0010 {
+               compatible = "rockchip,rk3568-pwm", "rockchip,rk3328-pwm";
+               reg = <0x0 0xfe6e0010 0x0 0x10>;
+               clocks = <&cru CLK_PWM1>, <&cru PCLK_PWM1>;
+               clock-names = "pwm", "pclk";
+               pinctrl-0 = <&pwm5_pins>;
+               pinctrl-names = "active";
+               #pwm-cells = <3>;
+               status = "disabled";
+       };
+
+       pwm6: pwm@fe6e0020 {
+               compatible = "rockchip,rk3568-pwm", "rockchip,rk3328-pwm";
+               reg = <0x0 0xfe6e0020 0x0 0x10>;
+               clocks = <&cru CLK_PWM1>, <&cru PCLK_PWM1>;
+               clock-names = "pwm", "pclk";
+               pinctrl-0 = <&pwm6_pins>;
+               pinctrl-names = "active";
+               #pwm-cells = <3>;
+               status = "disabled";
+       };
+
+       pwm7: pwm@fe6e0030 {
+               compatible = "rockchip,rk3568-pwm", "rockchip,rk3328-pwm";
+               reg = <0x0 0xfe6e0030 0x0 0x10>;
+               clocks = <&cru CLK_PWM1>, <&cru PCLK_PWM1>;
+               clock-names = "pwm", "pclk";
+               pinctrl-0 = <&pwm7_pins>;
+               pinctrl-names = "active";
+               #pwm-cells = <3>;
+               status = "disabled";
+       };
+
+       pwm8: pwm@fe6f0000 {
+               compatible = "rockchip,rk3568-pwm", "rockchip,rk3328-pwm";
+               reg = <0x0 0xfe6f0000 0x0 0x10>;
+               clocks = <&cru CLK_PWM2>, <&cru PCLK_PWM2>;
+               clock-names = "pwm", "pclk";
+               pinctrl-0 = <&pwm8m0_pins>;
+               pinctrl-names = "active";
+               #pwm-cells = <3>;
+               status = "disabled";
+       };
+
+       pwm9: pwm@fe6f0010 {
+               compatible = "rockchip,rk3568-pwm", "rockchip,rk3328-pwm";
+               reg = <0x0 0xfe6f0010 0x0 0x10>;
+               clocks = <&cru CLK_PWM2>, <&cru PCLK_PWM2>;
+               clock-names = "pwm", "pclk";
+               pinctrl-0 = <&pwm9m0_pins>;
+               pinctrl-names = "active";
+               #pwm-cells = <3>;
+               status = "disabled";
+       };
+
+       pwm10: pwm@fe6f0020 {
+               compatible = "rockchip,rk3568-pwm", "rockchip,rk3328-pwm";
+               reg = <0x0 0xfe6f0020 0x0 0x10>;
+               clocks = <&cru CLK_PWM2>, <&cru PCLK_PWM2>;
+               clock-names = "pwm", "pclk";
+               pinctrl-0 = <&pwm10m0_pins>;
+               pinctrl-names = "active";
+               #pwm-cells = <3>;
+               status = "disabled";
+       };
+
+       pwm11: pwm@fe6f0030 {
+               compatible = "rockchip,rk3568-pwm", "rockchip,rk3328-pwm";
+               reg = <0x0 0xfe6f0030 0x0 0x10>;
+               clocks = <&cru CLK_PWM2>, <&cru PCLK_PWM2>;
+               clock-names = "pwm", "pclk";
+               pinctrl-0 = <&pwm11m0_pins>;
+               pinctrl-names = "active";
+               #pwm-cells = <3>;
+               status = "disabled";
+       };
+
+       pwm12: pwm@fe700000 {
+               compatible = "rockchip,rk3568-pwm", "rockchip,rk3328-pwm";
+               reg = <0x0 0xfe700000 0x0 0x10>;
+               clocks = <&cru CLK_PWM3>, <&cru PCLK_PWM3>;
+               clock-names = "pwm", "pclk";
+               pinctrl-0 = <&pwm12m0_pins>;
+               pinctrl-names = "active";
+               #pwm-cells = <3>;
+               status = "disabled";
+       };
+
+       pwm13: pwm@fe700010 {
+               compatible = "rockchip,rk3568-pwm", "rockchip,rk3328-pwm";
+               reg = <0x0 0xfe700010 0x0 0x10>;
+               clocks = <&cru CLK_PWM3>, <&cru PCLK_PWM3>;
+               clock-names = "pwm", "pclk";
+               pinctrl-0 = <&pwm13m0_pins>;
+               pinctrl-names = "active";
+               #pwm-cells = <3>;
+               status = "disabled";
+       };
+
+       pwm14: pwm@fe700020 {
+               compatible = "rockchip,rk3568-pwm", "rockchip,rk3328-pwm";
+               reg = <0x0 0xfe700020 0x0 0x10>;
+               clocks = <&cru CLK_PWM3>, <&cru PCLK_PWM3>;
+               clock-names = "pwm", "pclk";
+               pinctrl-0 = <&pwm14m0_pins>;
+               pinctrl-names = "active";
+               #pwm-cells = <3>;
+               status = "disabled";
+       };
+
+       pwm15: pwm@fe700030 {
+               compatible = "rockchip,rk3568-pwm", "rockchip,rk3328-pwm";
+               reg = <0x0 0xfe700030 0x0 0x10>;
+               clocks = <&cru CLK_PWM3>, <&cru PCLK_PWM3>;
+               clock-names = "pwm", "pclk";
+               pinctrl-0 = <&pwm15m0_pins>;
+               pinctrl-names = "active";
+               #pwm-cells = <3>;
+               status = "disabled";
+       };
+
+       pinctrl: pinctrl {
+               compatible = "rockchip,rk3568-pinctrl";
+               rockchip,grf = <&grf>;
+               rockchip,pmu = <&pmugrf>;
+               #address-cells = <2>;
+               #size-cells = <2>;
+               ranges;
+
+               gpio0: gpio@fdd60000 {
+                       compatible = "rockchip,gpio-bank";
+                       reg = <0x0 0xfdd60000 0x0 0x100>;
+                       interrupts = <GIC_SPI 33 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&pmucru PCLK_GPIO0>, <&pmucru DBCLK_GPIO0>;
+                       gpio-controller;
+                       #gpio-cells = <2>;
+                       interrupt-controller;
+                       #interrupt-cells = <2>;
+               };
+
+               gpio1: gpio@fe740000 {
+                       compatible = "rockchip,gpio-bank";
+                       reg = <0x0 0xfe740000 0x0 0x100>;
+                       interrupts = <GIC_SPI 34 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&cru PCLK_GPIO1>, <&cru DBCLK_GPIO1>;
+                       gpio-controller;
+                       #gpio-cells = <2>;
+                       interrupt-controller;
+                       #interrupt-cells = <2>;
+               };
+
+               gpio2: gpio@fe750000 {
+                       compatible = "rockchip,gpio-bank";
+                       reg = <0x0 0xfe750000 0x0 0x100>;
+                       interrupts = <GIC_SPI 35 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&cru PCLK_GPIO2>, <&cru DBCLK_GPIO2>;
+                       gpio-controller;
+                       #gpio-cells = <2>;
+                       interrupt-controller;
+                       #interrupt-cells = <2>;
+               };
+
+               gpio3: gpio@fe760000 {
+                       compatible = "rockchip,gpio-bank";
+                       reg = <0x0 0xfe760000 0x0 0x100>;
+                       interrupts = <GIC_SPI 36 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&cru PCLK_GPIO3>, <&cru DBCLK_GPIO3>;
+                       gpio-controller;
+                       #gpio-cells = <2>;
+                       interrupt-controller;
+                       #interrupt-cells = <2>;
+               };
+
+               gpio4: gpio@fe770000 {
+                       compatible = "rockchip,gpio-bank";
+                       reg = <0x0 0xfe770000 0x0 0x100>;
+                       interrupts = <GIC_SPI 37 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&cru PCLK_GPIO4>, <&cru DBCLK_GPIO4>;
+                       gpio-controller;
+                       #gpio-cells = <2>;
+                       interrupt-controller;
+                       #interrupt-cells = <2>;
+               };
+       };
+};
+
+#include "rk3568-pinctrl.dtsi"
index d56c742..71f6097 100644 (file)
@@ -8,12 +8,14 @@
 
 dtb-$(CONFIG_ARCH_K3) += k3-am654-base-board.dtb
 dtb-$(CONFIG_ARCH_K3) += k3-am6528-iot2050-basic.dtb
+dtb-$(CONFIG_ARCH_K3) += k3-am6528-iot2050-basic-pg2.dtb
 dtb-$(CONFIG_ARCH_K3) += k3-am6548-iot2050-advanced.dtb
+dtb-$(CONFIG_ARCH_K3) += k3-am6548-iot2050-advanced-pg2.dtb
 
 dtb-$(CONFIG_ARCH_K3) += k3-j721e-common-proc-board.dtb
+dtb-$(CONFIG_ARCH_K3) += k3-j721e-sk.dtb
 
 dtb-$(CONFIG_ARCH_K3) += k3-j7200-common-proc-board.dtb
 
 dtb-$(CONFIG_ARCH_K3) += k3-am642-evm.dtb
-
 dtb-$(CONFIG_ARCH_K3) += k3-am642-sk.dtb
index 42d1d21..5ad638b 100644 (file)
                clocks = <&k3_clks 53 0>;
                clock-names = "fck";
        };
+
+       icssg0: icssg@30000000 {
+               compatible = "ti,am642-icssg";
+               reg = <0x00 0x30000000 0x00 0x80000>;
+               power-domains = <&k3_pds 81 TI_SCI_PD_EXCLUSIVE>;
+               #address-cells = <1>;
+               #size-cells = <1>;
+               ranges = <0x0 0x00 0x30000000 0x80000>;
+
+               icssg0_mem: memories@0 {
+                       reg = <0x0 0x2000>,
+                             <0x2000 0x2000>,
+                             <0x10000 0x10000>;
+                       reg-names = "dram0", "dram1", "shrdram2";
+               };
+
+               icssg0_cfg: cfg@26000 {
+                       compatible = "ti,pruss-cfg", "syscon";
+                       reg = <0x26000 0x200>;
+                       #address-cells = <1>;
+                       #size-cells = <1>;
+                       ranges = <0x0 0x26000 0x2000>;
+
+                       clocks {
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+
+                               icssg0_coreclk_mux: coreclk-mux@3c {
+                                       reg = <0x3c>;
+                                       #clock-cells = <0>;
+                                       clocks = <&k3_clks 81 0>,  /* icssg0_core_clk */
+                                                <&k3_clks 81 20>; /* icssg0_iclk */
+                                       assigned-clocks = <&icssg0_coreclk_mux>;
+                                       assigned-clock-parents = <&k3_clks 81 20>;
+                               };
+
+                               icssg0_iepclk_mux: iepclk-mux@30 {
+                                       reg = <0x30>;
+                                       #clock-cells = <0>;
+                                       clocks = <&k3_clks 81 3>,       /* icssg0_iep_clk */
+                                                <&icssg0_coreclk_mux>; /* icssg0_coreclk_mux */
+                                       assigned-clocks = <&icssg0_iepclk_mux>;
+                                       assigned-clock-parents = <&icssg0_coreclk_mux>;
+                               };
+                       };
+               };
+
+               icssg0_mii_rt: mii-rt@32000 {
+                       compatible = "ti,pruss-mii", "syscon";
+                       reg = <0x32000 0x100>;
+               };
+
+               icssg0_mii_g_rt: mii-g-rt@33000 {
+                       compatible = "ti,pruss-mii-g", "syscon";
+                       reg = <0x33000 0x1000>;
+               };
+
+               icssg0_intc: interrupt-controller@20000 {
+                       compatible = "ti,icssg-intc";
+                       reg = <0x20000 0x2000>;
+                       interrupt-controller;
+                       #interrupt-cells = <3>;
+                       interrupts = <GIC_SPI 88 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 89 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 90 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 91 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 92 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 93 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 94 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 95 IRQ_TYPE_LEVEL_HIGH>;
+                       interrupt-names = "host_intr0", "host_intr1",
+                                         "host_intr2", "host_intr3",
+                                         "host_intr4", "host_intr5",
+                                         "host_intr6", "host_intr7";
+               };
+
+               pru0_0: pru@34000 {
+                       compatible = "ti,am642-pru";
+                       reg = <0x34000 0x3000>,
+                             <0x22000 0x100>,
+                             <0x22400 0x100>;
+                       reg-names = "iram", "control", "debug";
+                       firmware-name = "am64x-pru0_0-fw";
+               };
+
+               rtu0_0: rtu@4000 {
+                       compatible = "ti,am642-rtu";
+                       reg = <0x4000 0x2000>,
+                             <0x23000 0x100>,
+                             <0x23400 0x100>;
+                       reg-names = "iram", "control", "debug";
+                       firmware-name = "am64x-rtu0_0-fw";
+               };
+
+               tx_pru0_0: txpru@a000 {
+                       compatible = "ti,am642-tx-pru";
+                       reg = <0xa000 0x1800>,
+                             <0x25000 0x100>,
+                             <0x25400 0x100>;
+                       reg-names = "iram", "control", "debug";
+                       firmware-name = "am64x-txpru0_0-fw";
+               };
+
+               pru0_1: pru@38000 {
+                       compatible = "ti,am642-pru";
+                       reg = <0x38000 0x3000>,
+                             <0x24000 0x100>,
+                             <0x24400 0x100>;
+                       reg-names = "iram", "control", "debug";
+                       firmware-name = "am64x-pru0_1-fw";
+               };
+
+               rtu0_1: rtu@6000 {
+                       compatible = "ti,am642-rtu";
+                       reg = <0x6000 0x2000>,
+                             <0x23800 0x100>,
+                             <0x23c00 0x100>;
+                       reg-names = "iram", "control", "debug";
+                       firmware-name = "am64x-rtu0_1-fw";
+               };
+
+               tx_pru0_1: txpru@c000 {
+                       compatible = "ti,am642-tx-pru";
+                       reg = <0xc000 0x1800>,
+                             <0x25800 0x100>,
+                             <0x25c00 0x100>;
+                       reg-names = "iram", "control", "debug";
+                       firmware-name = "am64x-txpru0_1-fw";
+               };
+
+               icssg0_mdio: mdio@32400 {
+                       compatible = "ti,davinci_mdio";
+                       reg = <0x32400 0x100>;
+                       clocks = <&k3_clks 62 3>;
+                       clock-names = "fck";
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       bus_freq = <1000000>;
+               };
+       };
+
+       icssg1: icssg@30080000 {
+               compatible = "ti,am642-icssg";
+               reg = <0x00 0x30080000 0x00 0x80000>;
+               power-domains = <&k3_pds 82 TI_SCI_PD_EXCLUSIVE>;
+               #address-cells = <1>;
+               #size-cells = <1>;
+               ranges = <0x0 0x00 0x30080000 0x80000>;
+
+               icssg1_mem: memories@0 {
+                       reg = <0x0 0x2000>,
+                             <0x2000 0x2000>,
+                             <0x10000 0x10000>;
+                       reg-names = "dram0", "dram1", "shrdram2";
+               };
+
+               icssg1_cfg: cfg@26000 {
+                       compatible = "ti,pruss-cfg", "syscon";
+                       reg = <0x26000 0x200>;
+                       #address-cells = <1>;
+                       #size-cells = <1>;
+                       ranges = <0x0 0x26000 0x2000>;
+
+                       clocks {
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+
+                               icssg1_coreclk_mux: coreclk-mux@3c {
+                                       reg = <0x3c>;
+                                       #clock-cells = <0>;
+                                       clocks = <&k3_clks 82 0>,   /* icssg1_core_clk */
+                                                <&k3_clks 82 20>;  /* icssg1_iclk */
+                                       assigned-clocks = <&icssg1_coreclk_mux>;
+                                       assigned-clock-parents = <&k3_clks 82 20>;
+                               };
+
+                               icssg1_iepclk_mux: iepclk-mux@30 {
+                                       reg = <0x30>;
+                                       #clock-cells = <0>;
+                                       clocks = <&k3_clks 82 3>,       /* icssg1_iep_clk */
+                                                <&icssg1_coreclk_mux>; /* icssg1_coreclk_mux */
+                                       assigned-clocks = <&icssg1_iepclk_mux>;
+                                       assigned-clock-parents = <&icssg1_coreclk_mux>;
+                               };
+                       };
+               };
+
+               icssg1_mii_rt: mii-rt@32000 {
+                       compatible = "ti,pruss-mii", "syscon";
+                       reg = <0x32000 0x100>;
+               };
+
+               icssg1_mii_g_rt: mii-g-rt@33000 {
+                       compatible = "ti,pruss-mii-g", "syscon";
+                       reg = <0x33000 0x1000>;
+               };
+
+               icssg1_intc: interrupt-controller@20000 {
+                       compatible = "ti,icssg-intc";
+                       reg = <0x20000 0x2000>;
+                       interrupt-controller;
+                       #interrupt-cells = <3>;
+                       interrupts = <GIC_SPI 216 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 217 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 218 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 219 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 220 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 221 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 222 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 223 IRQ_TYPE_LEVEL_HIGH>;
+                       interrupt-names = "host_intr0", "host_intr1",
+                                         "host_intr2", "host_intr3",
+                                         "host_intr4", "host_intr5",
+                                         "host_intr6", "host_intr7";
+               };
+
+               pru1_0: pru@34000 {
+                       compatible = "ti,am642-pru";
+                       reg = <0x34000 0x4000>,
+                             <0x22000 0x100>,
+                             <0x22400 0x100>;
+                       reg-names = "iram", "control", "debug";
+                       firmware-name = "am64x-pru1_0-fw";
+               };
+
+               rtu1_0: rtu@4000 {
+                       compatible = "ti,am642-rtu";
+                       reg = <0x4000 0x2000>,
+                             <0x23000 0x100>,
+                             <0x23400 0x100>;
+                       reg-names = "iram", "control", "debug";
+                       firmware-name = "am64x-rtu1_0-fw";
+               };
+
+               tx_pru1_0: txpru@a000 {
+                       compatible = "ti,am642-tx-pru";
+                       reg = <0xa000 0x1800>,
+                             <0x25000 0x100>,
+                             <0x25400 0x100>;
+                       reg-names = "iram", "control", "debug";
+                       firmware-name = "am64x-txpru1_0-fw";
+               };
+
+               pru1_1: pru@38000 {
+                       compatible = "ti,am642-pru";
+                       reg = <0x38000 0x4000>,
+                             <0x24000 0x100>,
+                             <0x24400 0x100>;
+                       reg-names = "iram", "control", "debug";
+                       firmware-name = "am64x-pru1_1-fw";
+               };
+
+               rtu1_1: rtu@6000 {
+                       compatible = "ti,am642-rtu";
+                       reg = <0x6000 0x2000>,
+                             <0x23800 0x100>,
+                             <0x23c00 0x100>;
+                       reg-names = "iram", "control", "debug";
+                       firmware-name = "am64x-rtu1_1-fw";
+               };
+
+               tx_pru1_1: txpru@c000 {
+                       compatible = "ti,am642-tx-pru";
+                       reg = <0xc000 0x1800>,
+                             <0x25800 0x100>,
+                             <0x25c00 0x100>;
+                       reg-names = "iram", "control", "debug";
+                       firmware-name = "am64x-txpru1_1-fw";
+               };
+
+               icssg1_mdio: mdio@32400 {
+                       compatible = "ti,davinci_mdio";
+                       reg = <0x32400 0x100>;
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       clocks = <&k3_clks 82 0>;
+                       clock-names = "fck";
+                       bus_freq = <1000000>;
+               };
+       };
 };
index 59cc58f..2bb5c9f 100644 (file)
                clocks = <&k3_clks 79 0>;
                clock-names = "gpio";
        };
+
+       mcu_pmx0: pinctrl@4084000 {
+               compatible = "pinctrl-single";
+               reg = <0x00 0x4084000 0x00 0x84>;
+               #pinctrl-cells = <1>;
+               pinctrl-single,register-width = <32>;
+               pinctrl-single,function-mask = <0xffffffff>;
+       };
 };
index de6805b..1209747 100644 (file)
@@ -30,6 +30,8 @@
                serial8 = &main_uart6;
                ethernet0 = &cpsw_port1;
                ethernet1 = &cpsw_port2;
+               mmc0 = &sdhci0;
+               mmc1 = &sdhci1;
        };
 
        chosen { };
index 24ce494..6726c4c 100644 (file)
 &epwm8 {
        status = "disabled";
 };
+
+&icssg0_mdio {
+       status = "disabled";
+};
+
+&icssg1_mdio {
+       status = "disabled";
+};
index 6b45cde..6b04745 100644 (file)
 &epwm8 {
        status = "disabled";
 };
+
+&icssg0_mdio {
+       status = "disabled";
+};
+
+&icssg1_mdio {
+       status = "disabled";
+};
diff --git a/arch/arm64/boot/dts/ti/k3-am65-iot2050-common-pg1.dtsi b/arch/arm64/boot/dts/ti/k3-am65-iot2050-common-pg1.dtsi
new file mode 100644 (file)
index 0000000..51f902f
--- /dev/null
@@ -0,0 +1,46 @@
+// SPDX-License-Identifier: GPL-2.0
+/*
+ * Copyright (c) Siemens AG, 2021
+ *
+ * Authors:
+ *   Jan Kiszka <jan.kiszka@siemens.com>
+ *
+ * Common bits of the IOT2050 Basic and Advanced variants, PG1
+ */
+
+&dss {
+       assigned-clocks = <&k3_clks 67 2>;
+       assigned-clock-parents = <&k3_clks 67 5>;
+};
+
+&serdes0 {
+       status = "disabled";
+};
+
+&sdhci1 {
+       no-1-8-v;
+};
+
+&tx_pru0_0 {
+       status = "disabled";
+};
+
+&tx_pru0_1 {
+       status = "disabled";
+};
+
+&tx_pru1_0 {
+       status = "disabled";
+};
+
+&tx_pru1_1 {
+       status = "disabled";
+};
+
+&tx_pru2_0 {
+       status = "disabled";
+};
+
+&tx_pru2_1 {
+       status = "disabled";
+};
diff --git a/arch/arm64/boot/dts/ti/k3-am65-iot2050-common-pg2.dtsi b/arch/arm64/boot/dts/ti/k3-am65-iot2050-common-pg2.dtsi
new file mode 100644 (file)
index 0000000..e73458c
--- /dev/null
@@ -0,0 +1,51 @@
+// SPDX-License-Identifier: GPL-2.0
+/*
+ * Copyright (c) Siemens AG, 2021
+ *
+ * Authors:
+ *   Chao Zeng <chao.zeng@siemens.com>
+ *   Jan Kiszka <jan.kiszka@siemens.com>
+ *
+ * Common bits of the IOT2050 Basic and Advanced variants, PG2
+ */
+
+&main_pmx0 {
+       cp2102n_reset_pin_default: cp2102n-reset-pin-default {
+               pinctrl-single,pins = <
+                       /* (AF12) GPIO1_24, used as cp2102 reset */
+                       AM65X_IOPAD(0x01e0, PIN_OUTPUT, 7)
+               >;
+       };
+};
+
+&main_gpio1 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&cp2102n_reset_pin_default>;
+       gpio-line-names =
+               "", "", "", "", "", "", "", "", "", "",
+               "", "", "", "", "", "", "", "", "", "",
+               "", "", "", "", "CP2102N-RESET";
+};
+
+&dss {
+       /* Workaround needed to get DP clock of 154Mhz */
+       assigned-clocks = <&k3_clks 67 0>;
+};
+
+&serdes0 {
+       assigned-clocks = <&k3_clks 153 4>, <&serdes0 AM654_SERDES_CMU_REFCLK>;
+       assigned-clock-parents = <&k3_clks 153 7>, <&k3_clks 153 4>;
+};
+
+&dwc3_0 {
+       assigned-clock-parents = <&k3_clks 151 4>,  /* set REF_CLK to 20MHz i.e. PER0_PLL/48 */
+                                <&k3_clks 151 8>;  /* set PIPE3_TXB_CLK to WIZ8B2M4VSB */
+       phys = <&serdes0 PHY_TYPE_USB3 0>;
+       phy-names = "usb3-phy";
+};
+
+&usb0 {
+       maximum-speed = "super-speed";
+       snps,dis-u1-entry-quirk;
+       snps,dis-u2-entry-quirk;
+};
index 1008e91..65da226 100644 (file)
@@ -4,19 +4,19 @@
  *
  * Authors:
  *   Le Jin <le.jin@siemens.com>
- *   Jan Kiszka <jan.kiszk@siemens.com>
+ *   Jan Kiszka <jan.kiszka@siemens.com>
  *
- * Common bits of the IOT2050 Basic and Advanced variants
+ * Common bits of the IOT2050 Basic and Advanced variants, PG1 and PG2
  */
 
-/dts-v1/;
-
 #include "k3-am654.dtsi"
 #include <dt-bindings/phy/phy.h>
 
 / {
        aliases {
                spi0 = &mcu_spi0;
+               mmc0 = &sdhci1;
+               mmc1 = &sdhci0;
        };
 
        chosen {
        pinctrl-0 = <&main_mmc1_pins_default>;
        ti,driver-strength-ohm = <50>;
        disable-wp;
-       no-1-8-v;
 };
 
 &usb0 {
        };
 };
 
-&serdes0 {
-       status = "disabled";
-};
-
 &pcie0_rc {
        status = "disabled";
 };
 };
 
 &mailbox0_cluster0 {
-       status = "disabled";
+       interrupts = <436>;
+
+       mbox_mcu_r5fss0_core0: mbox-mcu-r5fss0-core0 {
+               ti,mbox-tx = <1 0 0>;
+               ti,mbox-rx = <0 0 0>;
+       };
 };
 
 &mailbox0_cluster1 {
-       status = "disabled";
+       interrupts = <432>;
+
+       mbox_mcu_r5fss0_core1: mbox-mcu-r5fss0-core1 {
+               ti,mbox-tx = <1 0 0>;
+               ti,mbox-rx = <0 0 0>;
+       };
 };
 
 &mailbox0_cluster2 {
        status = "disabled";
 };
 
+&mcu_r5fss0_core0 {
+       memory-region = <&mcu_r5fss0_core0_dma_memory_region>,
+                       <&mcu_r5fss0_core0_memory_region>;
+       mboxes = <&mailbox0_cluster0 &mbox_mcu_r5fss0_core0>;
+};
+
+&mcu_r5fss0_core1 {
+       memory-region = <&mcu_r5fss0_core1_dma_memory_region>,
+                       <&mcu_r5fss0_core1_memory_region>;
+       mboxes = <&mailbox0_cluster1 &mbox_mcu_r5fss0_core1>;
+};
+
 &icssg0_mdio {
        status = "disabled";
 };
index ba4e5d3..ce8bb4a 100644 (file)
                power-domains = <&k3_pds 120 TI_SCI_PD_EXCLUSIVE>;
                #address-cells = <3>;
                #size-cells = <2>;
-               ranges = <0x81000000 0 0          0x0 0x10020000 0 0x00010000
-                         0x82000000 0 0x10030000 0x0 0x10030000 0 0x07FD0000>;
+               ranges = <0x81000000 0 0          0x0 0x10020000 0 0x00010000>,
+                        <0x82000000 0 0x10030000 0x0 0x10030000 0 0x07FD0000>;
                ti,syscon-pcie-id = <&pcie_devid>;
                ti,syscon-pcie-mode = <&pcie0_mode>;
                bus-range = <0x0 0xff>;
                power-domains = <&k3_pds 121 TI_SCI_PD_EXCLUSIVE>;
                #address-cells = <3>;
                #size-cells = <2>;
-               ranges = <0x81000000 0 0          0x0   0x18020000 0 0x00010000
-                         0x82000000 0 0x18030000 0x0   0x18030000 0 0x07FD0000>;
+               ranges = <0x81000000 0 0          0x0   0x18020000 0 0x00010000>,
+                        <0x82000000 0 0x18030000 0x0   0x18030000 0 0x07FD0000>;
                ti,syscon-pcie-id = <&pcie_devid>;
                ti,syscon-pcie-mode = <&pcie1_mode>;
                bus-range = <0x0 0xff>;
index 9d21cdf..9c69d09 100644 (file)
                power-domains = <&k3_pds 80 TI_SCI_PD_EXCLUSIVE>;
                #thermal-sensor-cells = <1>;
        };
-
-       thermal_zones: thermal-zones {
-               #include "k3-am654-industrial-thermal.dtsi"
-       };
 };
index a9fc1af..a58a39f 100644 (file)
@@ -31,6 +31,8 @@
                i2c4 = &main_i2c2;
                i2c5 = &main_i2c3;
                ethernet0 = &cpsw_port1;
+               mmc0 = &sdhci0;
+               mmc1 = &sdhci1;
        };
 
        chosen { };
diff --git a/arch/arm64/boot/dts/ti/k3-am6528-iot2050-basic-common.dtsi b/arch/arm64/boot/dts/ti/k3-am6528-iot2050-basic-common.dtsi
new file mode 100644 (file)
index 0000000..4a9bf7d
--- /dev/null
@@ -0,0 +1,60 @@
+// SPDX-License-Identifier: GPL-2.0
+/*
+ * Copyright (c) Siemens AG, 2018-2021
+ *
+ * Authors:
+ *   Le Jin <le.jin@siemens.com>
+ *   Jan Kiszka <jan.kiszka@siemens.com>
+ *
+ * Common bits of the IOT2050 Basic variant, PG1 and PG2
+ */
+
+#include "k3-am65-iot2050-common.dtsi"
+
+/ {
+       memory@80000000 {
+               device_type = "memory";
+               /* 1G RAM */
+               reg = <0x00000000 0x80000000 0x00000000 0x40000000>;
+       };
+
+       cpus {
+               cpu-map {
+                       /delete-node/ cluster1;
+               };
+               /delete-node/ cpu@100;
+               /delete-node/ cpu@101;
+       };
+
+       /delete-node/ l2-cache1;
+};
+
+/* eMMC */
+&sdhci0 {
+       status = "disabled";
+};
+
+&main_pmx0 {
+       main_uart0_pins_default: main-uart0-pins-default {
+               pinctrl-single,pins = <
+                       AM65X_IOPAD(0x01e4, PIN_INPUT,  0)  /* (AF11) UART0_RXD */
+                       AM65X_IOPAD(0x01e8, PIN_OUTPUT, 0)  /* (AE11) UART0_TXD */
+                       AM65X_IOPAD(0x01ec, PIN_INPUT,  0)  /* (AG11) UART0_CTSn */
+                       AM65X_IOPAD(0x01f0, PIN_OUTPUT, 0)  /* (AD11) UART0_RTSn */
+                       AM65X_IOPAD(0x0188, PIN_INPUT,  1)  /* (D25) UART0_DCDn */
+                       AM65X_IOPAD(0x018c, PIN_INPUT,  1)  /* (B26) UART0_DSRn */
+                       AM65X_IOPAD(0x0190, PIN_OUTPUT, 1)  /* (A24) UART0_DTRn */
+                       AM65X_IOPAD(0x0194, PIN_INPUT,  1)  /* (E24) UART0_RIN */
+               >;
+       };
+};
+
+&main_uart0 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&main_uart0_pins_default>;
+};
+
+&mcu_r5fss0 {
+       /* lock-step mode not supported on Basic boards */
+       ti,cluster-mode = <0>;
+};
diff --git a/arch/arm64/boot/dts/ti/k3-am6528-iot2050-basic-pg2.dts b/arch/arm64/boot/dts/ti/k3-am6528-iot2050-basic-pg2.dts
new file mode 100644 (file)
index 0000000..c62549a
--- /dev/null
@@ -0,0 +1,24 @@
+// SPDX-License-Identifier: GPL-2.0
+/*
+ * Copyright (c) Siemens AG, 2018-2021
+ *
+ * Authors:
+ *   Le Jin <le.jin@siemens.com>
+ *   Jan Kiszka <jan.kiszka@siemens.com>
+ *
+ * AM6528-based (dual-core) IOT2050 Basic variant, Product Generation 2
+ * 1 GB RAM, no eMMC, main_uart0 on connector X30
+ *
+ * Product homepage:
+ * https://new.siemens.com/global/en/products/automation/pc-based/iot-gateways/simatic-iot2050.html
+ */
+
+/dts-v1/;
+
+#include "k3-am6528-iot2050-basic-common.dtsi"
+#include "k3-am65-iot2050-common-pg2.dtsi"
+
+/ {
+       compatible = "siemens,iot2050-basic-pg2", "ti,am654";
+       model = "SIMATIC IOT2050 Basic PG2";
+};
index 94bb5dd..87928ff 100644 (file)
@@ -4,63 +4,21 @@
  *
  * Authors:
  *   Le Jin <le.jin@siemens.com>
- *   Jan Kiszka <jan.kiszk@siemens.com>
+ *   Jan Kiszka <jan.kiszka@siemens.com>
  *
- * AM6528-based (dual-core) IOT2050 Basic variant
+ * AM6528-based (dual-core) IOT2050 Basic variant, Product Generation 1
  * 1 GB RAM, no eMMC, main_uart0 on connector X30
+ *
+ * Product homepage:
+ * https://new.siemens.com/global/en/products/automation/pc-based/iot-gateways/simatic-iot2050.html
  */
 
 /dts-v1/;
 
-#include "k3-am65-iot2050-common.dtsi"
+#include "k3-am6528-iot2050-basic-common.dtsi"
+#include "k3-am65-iot2050-common-pg1.dtsi"
 
 / {
        compatible = "siemens,iot2050-basic", "ti,am654";
        model = "SIMATIC IOT2050 Basic";
-
-       memory@80000000 {
-               device_type = "memory";
-               /* 1G RAM */
-               reg = <0x00000000 0x80000000 0x00000000 0x40000000>;
-       };
-
-       cpus {
-               cpu-map {
-                       /delete-node/ cluster1;
-               };
-               /delete-node/ cpu@100;
-               /delete-node/ cpu@101;
-       };
-
-       /delete-node/ l2-cache1;
-};
-
-/* eMMC */
-&sdhci0 {
-       status = "disabled";
-};
-
-&main_pmx0 {
-       main_uart0_pins_default: main-uart0-pins-default {
-               pinctrl-single,pins = <
-                       AM65X_IOPAD(0x01e4, PIN_INPUT,  0)  /* (AF11) UART0_RXD */
-                       AM65X_IOPAD(0x01e8, PIN_OUTPUT, 0)  /* (AE11) UART0_TXD */
-                       AM65X_IOPAD(0x01ec, PIN_INPUT,  0)  /* (AG11) UART0_CTSn */
-                       AM65X_IOPAD(0x01f0, PIN_OUTPUT, 0)  /* (AD11) UART0_RTSn */
-                       AM65X_IOPAD(0x0188, PIN_INPUT,  1)  /* (D25) UART0_DCDn */
-                       AM65X_IOPAD(0x018c, PIN_INPUT,  1)  /* (B26) UART0_DSRn */
-                       AM65X_IOPAD(0x0190, PIN_OUTPUT, 1)  /* (A24) UART0_DTRn */
-                       AM65X_IOPAD(0x0194, PIN_INPUT,  1)  /* (E24) UART0_RIN */
-               >;
-       };
-};
-
-&main_uart0 {
-       pinctrl-names = "default";
-       pinctrl-0 = <&main_uart0_pins_default>;
-};
-
-&mcu_r5fss0 {
-       /* lock-step mode not supported on this board */
-       ti,cluster-mode = <0>;
 };
index f0a6541..a892579 100644 (file)
                compatible = "cache";
                cache-level = <3>;
        };
+
+       thermal_zones: thermal-zones {
+               #include "k3-am654-industrial-thermal.dtsi"
+       };
 };
diff --git a/arch/arm64/boot/dts/ti/k3-am6548-iot2050-advanced-common.dtsi b/arch/arm64/boot/dts/ti/k3-am6548-iot2050-advanced-common.dtsi
new file mode 100644 (file)
index 0000000..d25e8b2
--- /dev/null
@@ -0,0 +1,56 @@
+// SPDX-License-Identifier: GPL-2.0
+/*
+ * Copyright (c) Siemens AG, 2018-2021
+ *
+ * Authors:
+ *   Le Jin <le.jin@siemens.com>
+ *   Jan Kiszka <jan.kiszka@siemens.com>
+ *
+ * Common bits of the IOT2050 Advanced variant, PG1 and PG2
+ */
+
+/dts-v1/;
+
+#include "k3-am65-iot2050-common.dtsi"
+
+/ {
+       memory@80000000 {
+               device_type = "memory";
+               /* 2G RAM */
+               reg = <0x00000000 0x80000000 0x00000000 0x80000000>;
+       };
+};
+
+&main_pmx0 {
+       main_mmc0_pins_default: main-mmc0-pins-default {
+               pinctrl-single,pins = <
+                       AM65X_IOPAD(0x01a8, PIN_INPUT_PULLDOWN, 0)  /* (B25) MMC0_CLK */
+                       AM65X_IOPAD(0x01ac, PIN_INPUT_PULLUP,   0)  /* (B27) MMC0_CMD */
+                       AM65X_IOPAD(0x01a4, PIN_INPUT_PULLUP,   0)  /* (A26) MMC0_DAT0 */
+                       AM65X_IOPAD(0x01a0, PIN_INPUT_PULLUP,   0)  /* (E25) MMC0_DAT1 */
+                       AM65X_IOPAD(0x019c, PIN_INPUT_PULLUP,   0)  /* (C26) MMC0_DAT2 */
+                       AM65X_IOPAD(0x0198, PIN_INPUT_PULLUP,   0)  /* (A25) MMC0_DAT3 */
+                       AM65X_IOPAD(0x0194, PIN_INPUT_PULLUP,   0)  /* (E24) MMC0_DAT4 */
+                       AM65X_IOPAD(0x0190, PIN_INPUT_PULLUP,   0)  /* (A24) MMC0_DAT5 */
+                       AM65X_IOPAD(0x018c, PIN_INPUT_PULLUP,   0)  /* (B26) MMC0_DAT6 */
+                       AM65X_IOPAD(0x0188, PIN_INPUT_PULLUP,   0)  /* (D25) MMC0_DAT7 */
+                       AM65X_IOPAD(0x01b8, PIN_OUTPUT_PULLUP,  7)  /* (B23) MMC0_SDWP */
+                       AM65X_IOPAD(0x01b4, PIN_INPUT_PULLUP,   0)  /* (A23) MMC0_SDCD */
+                       AM65X_IOPAD(0x01b0, PIN_INPUT,          0)  /* (C25) MMC0_DS */
+               >;
+       };
+};
+
+/* eMMC */
+&sdhci0 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&main_mmc0_pins_default>;
+       bus-width = <8>;
+       non-removable;
+       ti,driver-strength-ohm = <50>;
+       disable-wp;
+};
+
+&main_uart0 {
+       status = "disabled";
+};
diff --git a/arch/arm64/boot/dts/ti/k3-am6548-iot2050-advanced-pg2.dts b/arch/arm64/boot/dts/ti/k3-am6548-iot2050-advanced-pg2.dts
new file mode 100644 (file)
index 0000000..f00dc86
--- /dev/null
@@ -0,0 +1,29 @@
+// SPDX-License-Identifier: GPL-2.0
+/*
+ * Copyright (c) Siemens AG, 2018-2021
+ *
+ * Authors:
+ *   Le Jin <le.jin@siemens.com>
+ *   Jan Kiszka <jan.kiszka@siemens.com>
+ *
+ * AM6548-based (quad-core) IOT2050 Advanced variant, Product Generation 2
+ * 2 GB RAM, 16 GB eMMC, USB-serial converter on connector X30
+ *
+ * Product homepage:
+ * https://new.siemens.com/global/en/products/automation/pc-based/iot-gateways/simatic-iot2050.html
+ */
+
+/dts-v1/;
+
+#include "k3-am6548-iot2050-advanced-common.dtsi"
+#include "k3-am65-iot2050-common-pg2.dtsi"
+
+/ {
+       compatible = "siemens,iot2050-advanced-pg2", "ti,am654";
+       model = "SIMATIC IOT2050 Advanced PG2";
+};
+
+&mcu_r5fss0 {
+       /* lock-step mode not supported on this board */
+       ti,cluster-mode = <0>;
+};
index ec9617c..077f165 100644 (file)
@@ -4,57 +4,21 @@
  *
  * Authors:
  *   Le Jin <le.jin@siemens.com>
- *   Jan Kiszka <jan.kiszk@siemens.com>
+ *   Jan Kiszka <jan.kiszka@siemens.com>
  *
- * AM6548-based (quad-core) IOT2050 Advanced variant
+ * AM6548-based (quad-core) IOT2050 Advanced variant, Product Generation 1
  * 2 GB RAM, 16 GB eMMC, USB-serial converter on connector X30
+ *
+ * Product homepage:
+ * https://new.siemens.com/global/en/products/automation/pc-based/iot-gateways/simatic-iot2050.html
  */
 
 /dts-v1/;
 
-#include "k3-am65-iot2050-common.dtsi"
+#include "k3-am6548-iot2050-advanced-common.dtsi"
+#include "k3-am65-iot2050-common-pg1.dtsi"
 
 / {
        compatible = "siemens,iot2050-advanced", "ti,am654";
        model = "SIMATIC IOT2050 Advanced";
-
-       memory@80000000 {
-               device_type = "memory";
-               /* 2G RAM */
-               reg = <0x00000000 0x80000000 0x00000000 0x80000000>;
-       };
-};
-
-&main_pmx0 {
-       main_mmc0_pins_default: main-mmc0-pins-default {
-               pinctrl-single,pins = <
-                       AM65X_IOPAD(0x01a8, PIN_INPUT_PULLDOWN, 0)  /* (B25) MMC0_CLK */
-                       AM65X_IOPAD(0x01ac, PIN_INPUT_PULLUP,   0)  /* (B27) MMC0_CMD */
-                       AM65X_IOPAD(0x01a4, PIN_INPUT_PULLUP,   0)  /* (A26) MMC0_DAT0 */
-                       AM65X_IOPAD(0x01a0, PIN_INPUT_PULLUP,   0)  /* (E25) MMC0_DAT1 */
-                       AM65X_IOPAD(0x019c, PIN_INPUT_PULLUP,   0)  /* (C26) MMC0_DAT2 */
-                       AM65X_IOPAD(0x0198, PIN_INPUT_PULLUP,   0)  /* (A25) MMC0_DAT3 */
-                       AM65X_IOPAD(0x0194, PIN_INPUT_PULLUP,   0)  /* (E24) MMC0_DAT4 */
-                       AM65X_IOPAD(0x0190, PIN_INPUT_PULLUP,   0)  /* (A24) MMC0_DAT5 */
-                       AM65X_IOPAD(0x018c, PIN_INPUT_PULLUP,   0)  /* (B26) MMC0_DAT6 */
-                       AM65X_IOPAD(0x0188, PIN_INPUT_PULLUP,   0)  /* (D25) MMC0_DAT7 */
-                       AM65X_IOPAD(0x01b8, PIN_OUTPUT_PULLUP,  7)  /* (B23) MMC0_SDWP */
-                       AM65X_IOPAD(0x01b4, PIN_INPUT_PULLUP,   0)  /* (A23) MMC0_SDCD */
-                       AM65X_IOPAD(0x01b0, PIN_INPUT,          0)  /* (C25) MMC0_DS */
-               >;
-       };
-};
-
-/* eMMC */
-&sdhci0 {
-       pinctrl-names = "default";
-       pinctrl-0 = <&main_mmc0_pins_default>;
-       bus-width = <8>;
-       non-removable;
-       ti,driver-strength-ohm = <50>;
-       disable-wp;
-};
-
-&main_uart0 {
-       status = "disabled";
 };
index d14f3c1..121975d 100644 (file)
@@ -12,6 +12,9 @@
 #include <dt-bindings/phy/phy.h>
 
 / {
+       compatible = "ti,j7200-evm", "ti,j7200";
+       model = "Texas Instruments J7200 EVM";
+
        chosen {
                stdout-path = "serial2:115200n8";
                bootargs = "console=ttyS2,115200n8 earlycon=ns16550a,mmio32,0x02800000";
index e8a41d0..d60ef4f 100644 (file)
                clock-names = "fck";
                #address-cells = <3>;
                #size-cells = <2>;
-               bus-range = <0x0 0xf>;
+               bus-range = <0x0 0xff>;
                cdns,no-bar-match-nbits = <64>;
-               vendor-id = /bits/ 16 <0x104c>;
-               device-id = /bits/ 16 <0xb00f>;
+               vendor-id = <0x104c>;
+               device-id = <0xb00f>;
                msi-map = <0x0 &gic_its 0x0 0x10000>;
                dma-coherent;
                ranges = <0x01000000 0x0 0x18001000  0x00 0x18001000  0x0 0x0010000>,
                clocks = <&k3_clks 240 6>;
                clock-names = "fck";
                max-functions = /bits/ 8 <6>;
+               max-virtual-functions = /bits/ 8 <4 4 4 4 0 0>;
                dma-coherent;
        };
 
index b7005b8..47567cb 100644 (file)
@@ -30,6 +30,8 @@
                serial9 = &main_uart7;
                serial10 = &main_uart8;
                serial11 = &main_uart9;
+               mmc0 = &main_sdhci0;
+               mmc1 = &main_sdhci1;
        };
 
        chosen { };
index 8bd02d9..dc2bc67 100644 (file)
@@ -12,6 +12,9 @@
 #include <dt-bindings/phy/phy-cadence.h>
 
 / {
+       compatible = "ti,j721e-evm", "ti,j721e";
+       model = "Texas Instruments J721e EVM";
+
        chosen {
                stdout-path = "serial2:115200n8";
                bootargs = "console=ttyS2,115200n8 earlycon=ns16550a,mmio32,0x02800000";
index cf34823..08c8d1b 100644 (file)
                clock-names = "fck";
                #address-cells = <3>;
                #size-cells = <2>;
-               bus-range = <0x0 0xf>;
+               bus-range = <0x0 0xff>;
                vendor-id = <0x104c>;
                device-id = <0xb00d>;
                msi-map = <0x0 &gic_its 0x0 0x10000>;
                clocks = <&k3_clks 239 1>;
                clock-names = "fck";
                max-functions = /bits/ 8 <6>;
-               max-virtual-functions = /bits/ 16 <4 4 4 4 0 0>;
+               max-virtual-functions = /bits/ 8 <4 4 4 4 0 0>;
                dma-coherent;
        };
 
                clock-names = "fck";
                #address-cells = <3>;
                #size-cells = <2>;
-               bus-range = <0x0 0xf>;
+               bus-range = <0x0 0xff>;
                vendor-id = <0x104c>;
                device-id = <0xb00d>;
                msi-map = <0x0 &gic_its 0x10000 0x10000>;
                clocks = <&k3_clks 240 1>;
                clock-names = "fck";
                max-functions = /bits/ 8 <6>;
-               max-virtual-functions = /bits/ 16 <4 4 4 4 0 0>;
+               max-virtual-functions = /bits/ 8 <4 4 4 4 0 0>;
                dma-coherent;
        };
 
                clock-names = "fck";
                #address-cells = <3>;
                #size-cells = <2>;
-               bus-range = <0x0 0xf>;
+               bus-range = <0x0 0xff>;
                vendor-id = <0x104c>;
                device-id = <0xb00d>;
                msi-map = <0x0 &gic_its 0x20000 0x10000>;
                clocks = <&k3_clks 241 1>;
                clock-names = "fck";
                max-functions = /bits/ 8 <6>;
-               max-virtual-functions = /bits/ 16 <4 4 4 4 0 0>;
+               max-virtual-functions = /bits/ 8 <4 4 4 4 0 0>;
                dma-coherent;
        };
 
                clock-names = "fck";
                #address-cells = <3>;
                #size-cells = <2>;
-               bus-range = <0x0 0xf>;
+               bus-range = <0x0 0xff>;
                vendor-id = <0x104c>;
                device-id = <0xb00d>;
                msi-map = <0x0 &gic_its 0x30000 0x10000>;
                clocks = <&k3_clks 242 1>;
                clock-names = "fck";
                max-functions = /bits/ 8 <6>;
-               max-virtual-functions = /bits/ 16 <4 4 4 4 0 0>;
+               max-virtual-functions = /bits/ 8 <4 4 4 4 0 0>;
                dma-coherent;
                #address-cells = <2>;
                #size-cells = <2>;
diff --git a/arch/arm64/boot/dts/ti/k3-j721e-sk.dts b/arch/arm64/boot/dts/ti/k3-j721e-sk.dts
new file mode 100644 (file)
index 0000000..b726310
--- /dev/null
@@ -0,0 +1,1002 @@
+// SPDX-License-Identifier: GPL-2.0
+/*
+ * Copyright (C) 2021 Texas Instruments Incorporated - https://www.ti.com/
+ *
+ * J721E SK URL: https://www.ti.com/tool/SK-TDA4VM
+ */
+
+/dts-v1/;
+
+#include "k3-j721e.dtsi"
+#include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/input/input.h>
+#include <dt-bindings/net/ti-dp83867.h>
+
+/ {
+       compatible = "ti,j721e-sk", "ti,j721e";
+       model = "Texas Instruments J721E SK";
+
+       chosen {
+               stdout-path = "serial2:115200n8";
+               bootargs = "console=ttyS2,115200n8 earlycon=ns16550a,mmio32,0x02800000";
+       };
+
+       memory@80000000 {
+               device_type = "memory";
+               /* 4G RAM */
+               reg = <0x00000000 0x80000000 0x00000000 0x80000000>,
+                     <0x00000008 0x80000000 0x00000000 0x80000000>;
+       };
+
+       reserved_memory: reserved-memory {
+               #address-cells = <2>;
+               #size-cells = <2>;
+               ranges;
+
+               secure_ddr: optee@9e800000 {
+                       reg = <0x00 0x9e800000 0x00 0x01800000>;
+                       alignment = <0x1000>;
+                       no-map;
+               };
+
+               mcu_r5fss0_core0_dma_memory_region: r5f-dma-memory@a0000000 {
+                       compatible = "shared-dma-pool";
+                       reg = <0x00 0xa0000000 0x00 0x100000>;
+                       no-map;
+               };
+
+               mcu_r5fss0_core0_memory_region: r5f-memory@a0100000 {
+                       compatible = "shared-dma-pool";
+                       reg = <0x00 0xa0100000 0x00 0xf00000>;
+                       no-map;
+               };
+
+               mcu_r5fss0_core1_dma_memory_region: r5f-dma-memory@a1000000 {
+                       compatible = "shared-dma-pool";
+                       reg = <0x00 0xa1000000 0x00 0x100000>;
+                       no-map;
+               };
+
+               mcu_r5fss0_core1_memory_region: r5f-memory@a1100000 {
+                       compatible = "shared-dma-pool";
+                       reg = <0x00 0xa1100000 0x00 0xf00000>;
+                       no-map;
+               };
+
+               main_r5fss0_core0_dma_memory_region: r5f-dma-memory@a2000000 {
+                       compatible = "shared-dma-pool";
+                       reg = <0x00 0xa2000000 0x00 0x100000>;
+                       no-map;
+               };
+
+               main_r5fss0_core0_memory_region: r5f-memory@a2100000 {
+                       compatible = "shared-dma-pool";
+                       reg = <0x00 0xa2100000 0x00 0xf00000>;
+                       no-map;
+               };
+
+               main_r5fss0_core1_dma_memory_region: r5f-dma-memory@a3000000 {
+                       compatible = "shared-dma-pool";
+                       reg = <0x00 0xa3000000 0x00 0x100000>;
+                       no-map;
+               };
+
+               main_r5fss0_core1_memory_region: r5f-memory@a3100000 {
+                       compatible = "shared-dma-pool";
+                       reg = <0x00 0xa3100000 0x00 0xf00000>;
+                       no-map;
+               };
+
+               main_r5fss1_core0_dma_memory_region: r5f-dma-memory@a4000000 {
+                       compatible = "shared-dma-pool";
+                       reg = <0x00 0xa4000000 0x00 0x100000>;
+                       no-map;
+               };
+
+               main_r5fss1_core0_memory_region: r5f-memory@a4100000 {
+                       compatible = "shared-dma-pool";
+                       reg = <0x00 0xa4100000 0x00 0xf00000>;
+                       no-map;
+               };
+
+               main_r5fss1_core1_dma_memory_region: r5f-dma-memory@a5000000 {
+                       compatible = "shared-dma-pool";
+                       reg = <0x00 0xa5000000 0x00 0x100000>;
+                       no-map;
+               };
+
+               main_r5fss1_core1_memory_region: r5f-memory@a5100000 {
+                       compatible = "shared-dma-pool";
+                       reg = <0x00 0xa5100000 0x00 0xf00000>;
+                       no-map;
+               };
+
+               c66_1_dma_memory_region: c66-dma-memory@a6000000 {
+                       compatible = "shared-dma-pool";
+                       reg = <0x00 0xa6000000 0x00 0x100000>;
+                       no-map;
+               };
+
+               c66_0_memory_region: c66-memory@a6100000 {
+                       compatible = "shared-dma-pool";
+                       reg = <0x00 0xa6100000 0x00 0xf00000>;
+                       no-map;
+               };
+
+               c66_0_dma_memory_region: c66-dma-memory@a7000000 {
+                       compatible = "shared-dma-pool";
+                       reg = <0x00 0xa7000000 0x00 0x100000>;
+                       no-map;
+               };
+
+               c66_1_memory_region: c66-memory@a7100000 {
+                       compatible = "shared-dma-pool";
+                       reg = <0x00 0xa7100000 0x00 0xf00000>;
+                       no-map;
+               };
+
+               c71_0_dma_memory_region: c71-dma-memory@a8000000 {
+                       compatible = "shared-dma-pool";
+                       reg = <0x00 0xa8000000 0x00 0x100000>;
+                       no-map;
+               };
+
+               c71_0_memory_region: c71-memory@a8100000 {
+                       compatible = "shared-dma-pool";
+                       reg = <0x00 0xa8100000 0x00 0xf00000>;
+                       no-map;
+               };
+
+               rtos_ipc_memory_region: ipc-memories@aa000000 {
+                       reg = <0x00 0xaa000000 0x00 0x01c00000>;
+                       alignment = <0x1000>;
+                       no-map;
+               };
+       };
+
+       vusb_main: fixedregulator-vusb-main5v0 {
+               /* USB MAIN INPUT 5V DC */
+               compatible = "regulator-fixed";
+               regulator-name = "vusb-main5v0";
+               regulator-min-microvolt = <5000000>;
+               regulator-max-microvolt = <5000000>;
+               regulator-always-on;
+               regulator-boot-on;
+       };
+
+       vsys_3v3: fixedregulator-vsys3v3 {
+               /* Output of LM5141 */
+               compatible = "regulator-fixed";
+               regulator-name = "vsys_3v3";
+               regulator-min-microvolt = <3300000>;
+               regulator-max-microvolt = <3300000>;
+               vin-supply = <&vusb_main>;
+               regulator-always-on;
+               regulator-boot-on;
+       };
+
+       vdd_mmc1: fixedregulator-sd {
+               compatible = "regulator-fixed";
+               pinctrl-names = "default";
+               pinctrl-0 = <&vdd_mmc1_en_pins_default>;
+               regulator-name = "vdd_mmc1";
+               regulator-min-microvolt = <3300000>;
+               regulator-max-microvolt = <3300000>;
+               regulator-boot-on;
+               enable-active-high;
+               vin-supply = <&vsys_3v3>;
+               gpio = <&wkup_gpio0 8 GPIO_ACTIVE_HIGH>;
+       };
+
+       vdd_sd_dv_alt: gpio-regulator-tps659411 {
+               compatible = "regulator-gpio";
+               pinctrl-names = "default";
+               pinctrl-0 = <&vdd_sd_dv_alt_pins_default>;
+               regulator-name = "tps659411";
+               regulator-min-microvolt = <1800000>;
+               regulator-max-microvolt = <3300000>;
+               regulator-boot-on;
+               vin-supply = <&vsys_3v3>;
+               gpios = <&wkup_gpio0 9 GPIO_ACTIVE_HIGH>;
+               states = <1800000 0x0>,
+                        <3300000 0x1>;
+       };
+
+       dp_pwr_3v3: fixedregulator-dp-prw {
+               compatible = "regulator-fixed";
+               regulator-name = "dp-pwr";
+               regulator-min-microvolt = <3300000>;
+               regulator-max-microvolt = <3300000>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&dp_pwr_en_pins_default>;
+               gpio = <&main_gpio0 111 0>;     /* DP0_3V3 _EN */
+               enable-active-high;
+       };
+
+};
+
+&main_pmx0 {
+       main_mmc1_pins_default: main-mmc1-pins-default {
+               pinctrl-single,pins = <
+                       J721E_IOPAD(0x254, PIN_INPUT, 0) /* (R29) MMC1_CMD */
+                       J721E_IOPAD(0x250, PIN_INPUT, 0) /* (P25) MMC1_CLK */
+                       J721E_IOPAD(0x2ac, PIN_INPUT, 0) /* (P25) MMC1_CLKLB */
+                       J721E_IOPAD(0x24c, PIN_INPUT, 0) /* (R24) MMC1_DAT0 */
+                       J721E_IOPAD(0x248, PIN_INPUT, 0) /* (P24) MMC1_DAT1 */
+                       J721E_IOPAD(0x244, PIN_INPUT, 0) /* (R25) MMC1_DAT2 */
+                       J721E_IOPAD(0x240, PIN_INPUT, 0) /* (R26) MMC1_DAT3 */
+                       J721E_IOPAD(0x258, PIN_INPUT, 0) /* (P23) MMC1_SDCD */
+               >;
+       };
+
+       main_uart0_pins_default: main-uart0-pins-default {
+               pinctrl-single,pins = <
+                       J721E_IOPAD(0x1f0, PIN_INPUT, 0) /* (AC2) UART0_CTSn */
+                       J721E_IOPAD(0x1f4, PIN_OUTPUT, 0) /* (AB1) UART0_RTSn */
+                       J721E_IOPAD(0x1e8, PIN_INPUT, 0) /* (AB2) UART0_RXD */
+                       J721E_IOPAD(0x1ec, PIN_OUTPUT, 0) /* (AB3) UART0_TXD */
+               >;
+       };
+
+       main_i2c0_pins_default: main-i2c0-pins-default {
+               pinctrl-single,pins = <
+                       J721E_IOPAD(0x220, PIN_INPUT_PULLUP, 0) /* (AC5) I2C0_SCL */
+                       J721E_IOPAD(0x224, PIN_INPUT_PULLUP, 0) /* (AA5) I2C0_SDA */
+               >;
+       };
+
+       main_i2c1_pins_default: main-i2c1-pins-default {
+               pinctrl-single,pins = <
+                       J721E_IOPAD(0x228, PIN_INPUT_PULLUP, 0) /* (Y6) I2C1_SCL */
+                       J721E_IOPAD(0x22c, PIN_INPUT_PULLUP, 0) /* (AA6) I2C1_SDA */
+               >;
+       };
+
+       main_i2c3_pins_default: main-i2c3-pins-default {
+               pinctrl-single,pins = <
+                       J721E_IOPAD(0x270, PIN_INPUT_PULLUP, 4) /* (T26) MMC2_CLK.I2C3_SCL */
+                       J721E_IOPAD(0x274, PIN_INPUT_PULLUP, 4) /* (T25) MMC2_CMD.I2C3_SDA */
+               >;
+       };
+
+       main_usbss0_pins_default: main-usbss0-pins-default {
+               pinctrl-single,pins = <
+                       J721E_IOPAD(0x290, PIN_OUTPUT, 0) /* (U6) USB0_DRVVBUS */
+                       J721E_IOPAD(0x210, PIN_INPUT, 7) /* (W3) MCAN1_RX.GPIO1_3 */
+               >;
+       };
+
+       main_usbss1_pins_default: main-usbss1-pins-default {
+               pinctrl-single,pins = <
+                       J721E_IOPAD(0x214, PIN_OUTPUT, 4) /* (V4) MCAN1_TX.USB1_DRVVBUS */
+               >;
+       };
+
+       dp0_pins_default: dp0-pins-default {
+               pinctrl-single,pins = <
+                       J721E_IOPAD(0x1c4, PIN_INPUT, 5) /* SPI0_CS1.DP0_HPD */
+               >;
+       };
+
+       dp_pwr_en_pins_default: dp-pwr-en-pins-default {
+               pinctrl-single,pins = <
+                       J721E_IOPAD(0x1c0, PIN_INPUT, 7) /* (AA2) SPI0_CS0.GPIO0_111 */
+               >;
+       };
+
+       dss_vout0_pins_default: dss-vout0-pins-default {
+               pinctrl-single,pins = <
+                       J721E_IOPAD(0x58, PIN_OUTPUT, 10) /* (AE22) PRG1_PRU1_GPO0.VOUT0_DATA0 */
+                       J721E_IOPAD(0x5c, PIN_OUTPUT, 10) /* (AG23) PRG1_PRU1_GPO1.VOUT0_DATA1 */
+                       J721E_IOPAD(0x60, PIN_OUTPUT, 10) /* (AF23) PRG1_PRU1_GPO2.VOUT0_DATA2 */
+                       J721E_IOPAD(0x64, PIN_OUTPUT, 10) /* (AD23) PRG1_PRU1_GPO3.VOUT0_DATA3 */
+                       J721E_IOPAD(0x68, PIN_OUTPUT, 10) /* (AH24) PRG1_PRU1_GPO4.VOUT0_DATA4 */
+                       J721E_IOPAD(0x6c, PIN_OUTPUT, 10) /* (AG21) PRG1_PRU1_GPO5.VOUT0_DATA5 */
+                       J721E_IOPAD(0x70, PIN_OUTPUT, 10) /* (AE23) PRG1_PRU1_GPO6.VOUT0_DATA6 */
+                       J721E_IOPAD(0x74, PIN_OUTPUT, 10) /* (AC21) PRG1_PRU1_GPO7.VOUT0_DATA7 */
+                       J721E_IOPAD(0x78, PIN_OUTPUT, 10) /* (Y23) PRG1_PRU1_GPO8.VOUT0_DATA8 */
+                       J721E_IOPAD(0x7c, PIN_OUTPUT, 10) /* (AF21) PRG1_PRU1_GPO9.VOUT0_DATA9 */
+                       J721E_IOPAD(0x80, PIN_OUTPUT, 10) /* (AB23) PRG1_PRU1_GPO10.VOUT0_DATA10 */
+                       J721E_IOPAD(0x84, PIN_OUTPUT, 10) /* (AJ25) PRG1_PRU1_GPO11.VOUT0_DATA11 */
+                       J721E_IOPAD(0x88, PIN_OUTPUT, 10) /* (AH25) PRG1_PRU1_GPO12.VOUT0_DATA12 */
+                       J721E_IOPAD(0x8c, PIN_OUTPUT, 10) /* (AG25) PRG1_PRU1_GPO13.VOUT0_DATA13 */
+                       J721E_IOPAD(0x90, PIN_OUTPUT, 10) /* (AH26) PRG1_PRU1_GPO14.VOUT0_DATA14 */
+                       J721E_IOPAD(0x94, PIN_OUTPUT, 10) /* (AJ27) PRG1_PRU1_GPO15.VOUT0_DATA15 */
+                       J721E_IOPAD(0x30, PIN_OUTPUT, 10) /* (AF24) PRG1_PRU0_GPO11.VOUT0_DATA16 */
+                       J721E_IOPAD(0x34, PIN_OUTPUT, 10) /* (AJ24) PRG1_PRU0_GPO12.VOUT0_DATA17 */
+                       J721E_IOPAD(0x38, PIN_OUTPUT, 10) /* (AG24) PRG1_PRU0_GPO13.VOUT0_DATA18 */
+                       J721E_IOPAD(0x3c, PIN_OUTPUT, 10) /* (AD24) PRG1_PRU0_GPO14.VOUT0_DATA19 */
+                       J721E_IOPAD(0x40, PIN_OUTPUT, 10) /* (AC24) PRG1_PRU0_GPO15.VOUT0_DATA20 */
+                       J721E_IOPAD(0x44, PIN_OUTPUT, 10) /* (AE24) PRG1_PRU0_GPO16.VOUT0_DATA21 */
+                       J721E_IOPAD(0x24, PIN_OUTPUT, 10) /* (AJ20) PRG1_PRU0_GPO8.VOUT0_DATA22 */
+                       J721E_IOPAD(0x28, PIN_OUTPUT, 10) /* (AG20) PRG1_PRU0_GPO9.VOUT0_DATA23 */
+                       J721E_IOPAD(0x9c, PIN_OUTPUT, 10) /* (AC22) PRG1_PRU1_GPO17.VOUT0_DE */
+                       J721E_IOPAD(0x98, PIN_OUTPUT, 10) /* (AJ26) PRG1_PRU1_GPO16.VOUT0_HSYNC */
+                       J721E_IOPAD(0xa4, PIN_OUTPUT, 10) /* (AH22) PRG1_PRU1_GPO19.VOUT0_PCLK */
+                       J721E_IOPAD(0xa0, PIN_OUTPUT, 10) /* (AJ22) PRG1_PRU1_GPO18.VOUT0_VSYNC */
+               >;
+       };
+
+       /* Reset for M.2 E Key slot on PCIe0  */
+       ekey_reset_pins_default: ekey-reset-pns-pins-default {
+               pinctrl-single,pins = <
+                       J721E_IOPAD(0x124, PIN_INPUT, 7) /* (Y24) PRG0_PRU1_GPO9.GPIO0_72 */
+               >;
+       };
+};
+
+&wkup_pmx0 {
+       mcu_cpsw_pins_default: mcu-cpsw-pins-default {
+               pinctrl-single,pins = <
+                       J721E_WKUP_IOPAD(0x84, PIN_INPUT, 0) /* (B24) MCU_RGMII1_RD0 */
+                       J721E_WKUP_IOPAD(0x80, PIN_INPUT, 0) /* (A24) MCU_RGMII1_RD1 */
+                       J721E_WKUP_IOPAD(0x7c, PIN_INPUT, 0) /* (D24) MCU_RGMII1_RD2 */
+                       J721E_WKUP_IOPAD(0x78, PIN_INPUT, 0) /* (A25) MCU_RGMII1_RD3 */
+                       J721E_WKUP_IOPAD(0x74, PIN_INPUT, 0) /* (C24) MCU_RGMII1_RXC */
+                       J721E_WKUP_IOPAD(0x5c, PIN_INPUT, 0) /* (C25) MCU_RGMII1_RX_CTL */
+                       J721E_WKUP_IOPAD(0x6c, PIN_OUTPUT, 0) /* (B25) MCU_RGMII1_TD0 */
+                       J721E_WKUP_IOPAD(0x68, PIN_OUTPUT, 0) /* (A26) MCU_RGMII1_TD1 */
+                       J721E_WKUP_IOPAD(0x64, PIN_OUTPUT, 0) /* (A27) MCU_RGMII1_TD2 */
+                       J721E_WKUP_IOPAD(0x60, PIN_OUTPUT, 0) /* (A28) MCU_RGMII1_TD3 */
+                       J721E_WKUP_IOPAD(0x70, PIN_OUTPUT, 0) /* (B26) MCU_RGMII1_TXC */
+                       J721E_WKUP_IOPAD(0x58, PIN_OUTPUT, 0) /* (B27) MCU_RGMII1_TX_CTL */
+               >;
+       };
+
+       mcu_mdio_pins_default: mcu-mdio1-pins-default {
+               pinctrl-single,pins = <
+                       J721E_WKUP_IOPAD(0x8c, PIN_OUTPUT, 0) /* (F23) MCU_MDIO0_MDC */
+                       J721E_WKUP_IOPAD(0x88, PIN_INPUT, 0) /* (E23) MCU_MDIO0_MDIO */
+               >;
+       };
+
+       mcu_fss0_ospi0_pins_default: mcu-fss0-ospi0-pins-default {
+               pinctrl-single,pins = <
+                       J721E_WKUP_IOPAD(0x0, PIN_OUTPUT, 0) /* (E20) MCU_OSPI0_CLK */
+                       J721E_WKUP_IOPAD(0x2c, PIN_OUTPUT, 0) /* (F19) MCU_OSPI0_CSn0 */
+                       J721E_WKUP_IOPAD(0xc, PIN_INPUT, 0) /* (D20) MCU_OSPI0_D0 */
+                       J721E_WKUP_IOPAD(0x10, PIN_INPUT, 0) /* (G19) MCU_OSPI0_D1 */
+                       J721E_WKUP_IOPAD(0x14, PIN_INPUT, 0) /* (G20) MCU_OSPI0_D2 */
+                       J721E_WKUP_IOPAD(0x18, PIN_INPUT, 0) /* (F20) MCU_OSPI0_D3 */
+                       J721E_WKUP_IOPAD(0x1c, PIN_INPUT, 0) /* (F21) MCU_OSPI0_D4 */
+                       J721E_WKUP_IOPAD(0x20, PIN_INPUT, 0) /* (E21) MCU_OSPI0_D5 */
+                       J721E_WKUP_IOPAD(0x24, PIN_INPUT, 0) /* (B22) MCU_OSPI0_D6 */
+                       J721E_WKUP_IOPAD(0x28, PIN_INPUT, 0) /* (G21) MCU_OSPI0_D7 */
+                       J721E_WKUP_IOPAD(0x8, PIN_INPUT, 0) /* (D21) MCU_OSPI0_DQS */
+               >;
+       };
+
+       vdd_mmc1_en_pins_default: vdd-mmc1-en-pins-default {
+               pinctrl-single,pins = <
+                       J721E_WKUP_IOPAD(0xd0, PIN_OUTPUT, 7) /* (G27) WKUP_GPIO0_8 */
+               >;
+       };
+
+       vdd_sd_dv_alt_pins_default: vdd-sd-dv-alt-pins-default {
+               pinctrl-single,pins = <
+                       J721E_WKUP_IOPAD(0xd4, PIN_OUTPUT, 7) /* (G26) WKUP_GPIO0_9 */
+               >;
+       };
+
+       wkup_i2c0_pins_default: wkup-i2c0-pins-default {
+               pinctrl-single,pins = <
+                       J721E_WKUP_IOPAD(0xf8, PIN_INPUT_PULLUP, 0) /* (J25) WKUP_I2C0_SCL */
+                       J721E_WKUP_IOPAD(0xfc, PIN_INPUT_PULLUP, 0) /* (H24) WKUP_I2C0_SDA */
+               >;
+       };
+
+       /* Reset for M.2 M Key slot on PCIe1  */
+       mkey_reset_pins_default: mkey-reset-pns-pins-default {
+               pinctrl-single,pins = <
+                       J721E_WKUP_IOPAD(0xdc, PIN_INPUT, 7) /* (H27) WKUP_GPIO0_11 */
+               >;
+       };
+};
+
+&wkup_uart0 {
+       /* Wakeup UART is used by System firmware */
+       status = "reserved";
+};
+
+&main_uart0 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&main_uart0_pins_default>;
+       /* Shared with ATF on this platform */
+       power-domains = <&k3_pds 146 TI_SCI_PD_SHARED>;
+};
+
+&main_uart2 {
+       /* Brought out on RPi header */
+       status = "disabled";
+};
+
+&main_uart3 {
+       /* UART not brought out */
+       status = "disabled";
+};
+
+&main_uart5 {
+       /* UART not brought out */
+       status = "disabled";
+};
+
+&main_uart6 {
+       /* UART not brought out */
+       status = "disabled";
+};
+
+&main_uart7 {
+       /* UART not brought out */
+       status = "disabled";
+};
+
+&main_uart8 {
+       /* UART not brought out */
+       status = "disabled";
+};
+
+&main_uart9 {
+       /* Brought out on M.2 E Key */
+       status = "disabled";
+};
+
+&main_sdhci0 {
+       /* Unused */
+       status = "disabled";
+};
+
+&main_sdhci1 {
+       /* SD Card */
+       vmmc-supply = <&vdd_mmc1>;
+       vqmmc-supply = <&vdd_sd_dv_alt>;
+       pinctrl-names = "default";
+       pinctrl-0 = <&main_mmc1_pins_default>;
+       ti,driver-strength-ohm = <50>;
+       disable-wp;
+};
+
+&main_sdhci2 {
+       /* Unused */
+       status = "disabled";
+};
+
+&ospi0 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&mcu_fss0_ospi0_pins_default>;
+
+       flash@0 {
+               compatible = "jedec,spi-nor";
+               reg = <0x0>;
+               spi-tx-bus-width = <8>;
+               spi-rx-bus-width = <8>;
+               spi-max-frequency = <25000000>;
+               cdns,tshsl-ns = <60>;
+               cdns,tsd2d-ns = <60>;
+               cdns,tchsh-ns = <60>;
+               cdns,tslch-ns = <60>;
+               cdns,read-delay = <4>;
+               #address-cells = <1>;
+               #size-cells = <1>;
+       };
+};
+
+&ospi1 {
+       /* Unused */
+       status = "disabled";
+};
+
+&main_i2c0 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&main_i2c0_pins_default>;
+       clock-frequency = <400000>;
+
+       i2c-mux@71 {
+               compatible = "nxp,pca9543";
+               #address-cells = <1>;
+               #size-cells = <0>;
+               reg = <0x71>;
+
+               /* PCIe1 M.2 M Key I2C */
+               i2c@0 {
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       reg = <0>;
+               };
+
+               /* PCIe0 M.2 E Key I2C */
+               i2c@1 {
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       reg = <1>;
+               };
+       };
+};
+
+&main_i2c1 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&main_i2c1_pins_default>;
+       /* i2c1 is used for DVI DDC, so we need to use 100kHz */
+       clock-frequency = <100000>;
+};
+
+&main_i2c2 {
+       /* Unused */
+       status = "disabled";
+};
+
+&main_i2c3 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&main_i2c3_pins_default>;
+       clock-frequency = <400000>;
+
+       i2c-mux@70 {
+               compatible = "nxp,pca9543";
+               #address-cells = <1>;
+               #size-cells = <0>;
+               reg = <0x70>;
+
+               /* CSI0 I2C */
+               i2c@0 {
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       reg = <0>;
+               };
+
+               /* CSI1 I2C */
+               i2c@1 {
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       reg = <1>;
+               };
+       };
+};
+
+&main_i2c4 {
+       /* Unused */
+       status = "disabled";
+};
+
+&main_i2c5 {
+       /* Brought out on RPi Header */
+       status = "disabled";
+};
+
+&main_i2c6 {
+       /* Unused */
+       status = "disabled";
+};
+
+&main_gpio2 {
+       status = "disabled";
+};
+
+&main_gpio3 {
+       status = "disabled";
+};
+
+&main_gpio4 {
+       status = "disabled";
+};
+
+&main_gpio5 {
+       status = "disabled";
+};
+
+&main_gpio6 {
+       status = "disabled";
+};
+
+&main_gpio7 {
+       status = "disabled";
+};
+
+&wkup_gpio1 {
+       status = "disabled";
+};
+
+&main_r5fss0_core0{
+       firmware-name = "pdk-ipc/ipc_echo_test_mcu2_0_release_strip.xer5f";
+};
+
+&usb_serdes_mux {
+       idle-states = <1>, <1>; /* USB0 to SERDES3, USB1 to SERDES2 */
+};
+
+&serdes_ln_ctrl {
+       idle-states = <J721E_SERDES0_LANE0_PCIE0_LANE0>, <J721E_SERDES0_LANE1_IP4_UNUSED>,
+                     <J721E_SERDES1_LANE0_PCIE1_LANE0>, <J721E_SERDES1_LANE1_PCIE1_LANE1>,
+                     <J721E_SERDES2_LANE0_IP1_UNUSED>, <J721E_SERDES2_LANE1_USB3_1>,
+                     <J721E_SERDES3_LANE0_USB3_0_SWAP>, <J721E_SERDES3_LANE1_USB3_0>,
+                     <J721E_SERDES4_LANE0_EDP_LANE0>, <J721E_SERDES4_LANE1_EDP_LANE1>,
+                     <J721E_SERDES4_LANE2_EDP_LANE2>, <J721E_SERDES4_LANE3_EDP_LANE3>;
+};
+
+&serdes_wiz3 {
+       typec-dir-gpios = <&main_gpio1 3 GPIO_ACTIVE_HIGH>;
+       typec-dir-debounce-ms = <700>;  /* TUSB321, tCCB_DEFAULT 133 ms */
+};
+
+&serdes3 {
+       serdes3_usb_link: phy@0 {
+               reg = <0>;
+               cdns,num-lanes = <2>;
+               #phy-cells = <0>;
+               cdns,phy-type = <PHY_TYPE_USB3>;
+               resets = <&serdes_wiz3 1>, <&serdes_wiz3 2>;
+       };
+};
+
+&usbss0 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&main_usbss0_pins_default>;
+       ti,vbus-divider;
+};
+
+&usb0 {
+       dr_mode = "otg";
+       maximum-speed = "super-speed";
+       phys = <&serdes3_usb_link>;
+       phy-names = "cdns3,usb3-phy";
+};
+
+&serdes2 {
+       serdes2_usb_link: phy@1 {
+               reg = <1>;
+               cdns,num-lanes = <1>;
+               #phy-cells = <0>;
+               cdns,phy-type = <PHY_TYPE_USB3>;
+               resets = <&serdes_wiz2 2>;
+       };
+};
+
+&usbss1 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&main_usbss1_pins_default>;
+       ti,vbus-divider;
+};
+
+&usb1 {
+       dr_mode = "host";
+       maximum-speed = "super-speed";
+       phys = <&serdes2_usb_link>;
+       phy-names = "cdns3,usb3-phy";
+};
+
+&tscadc0 {
+       /* Unused */
+       status = "disabled";
+};
+
+&tscadc1 {
+       /* Unused */
+       status = "disabled";
+};
+
+&mcu_cpsw {
+       pinctrl-names = "default";
+       pinctrl-0 = <&mcu_cpsw_pins_default &mcu_mdio_pins_default>;
+};
+
+&davinci_mdio {
+       phy0: ethernet-phy@0 {
+               reg = <0>;
+               ti,rx-internal-delay = <DP83867_RGMIIDCTL_2_00_NS>;
+               ti,fifo-depth = <DP83867_PHYCR_FIFO_DEPTH_4_B_NIB>;
+       };
+};
+
+&cpsw_port1 {
+       phy-mode = "rgmii-rxid";
+       phy-handle = <&phy0>;
+};
+
+&dss {
+       pinctrl-names = "default";
+       pinctrl-0 = <&dss_vout0_pins_default>;
+
+       assigned-clocks = <&k3_clks 152 1>,     /* VP 1 pixel clock */
+                         <&k3_clks 152 4>,     /* VP 2 pixel clock */
+                         <&k3_clks 152 9>,     /* VP 3 pixel clock */
+                         <&k3_clks 152 13>;    /* VP 4 pixel clock */
+       assigned-clock-parents = <&k3_clks 152 2>,      /* PLL16_HSDIV0 */
+                                <&k3_clks 152 6>,      /* DPI0_EXT_CLKSEL_OUT0 */
+                                <&k3_clks 152 11>,     /* PLL18_HSDIV0 */
+                                <&k3_clks 152 18>;     /* DPI1_EXT_CLKSEL_OUT0 */
+};
+
+&mcasp0 {
+       /* Unused */
+       status = "disabled";
+};
+
+&mcasp1 {
+       /* Unused */
+       status = "disabled";
+};
+
+&mcasp2 {
+       /* Unused */
+       status = "disabled";
+};
+
+&mcasp3 {
+       /* Unused */
+       status = "disabled";
+};
+
+&mcasp4 {
+       /* Unused */
+       status = "disabled";
+};
+
+&mcasp5 {
+       /* Unused */
+       status = "disabled";
+};
+
+&mcasp6 {
+       /* Brought out on RPi header */
+       status = "disabled";
+};
+
+&mcasp7 {
+       /* Unused */
+       status = "disabled";
+};
+
+&mcasp8 {
+       /* Unused */
+       status = "disabled";
+};
+
+&mcasp9 {
+       /* Unused */
+       status = "disabled";
+};
+
+&mcasp10 {
+       /* Unused */
+       status = "disabled";
+};
+
+&mcasp11 {
+       /* Brought out on M.2 E Key */
+       status = "disabled";
+};
+
+&serdes0 {
+       serdes0_pcie_link: phy@0 {
+               reg = <0>;
+               cdns,num-lanes = <1>;
+               #phy-cells = <0>;
+               cdns,phy-type = <PHY_TYPE_PCIE>;
+               resets = <&serdes_wiz0 1>;
+       };
+};
+
+&serdes1 {
+       serdes1_pcie_link: phy@0 {
+               reg = <0>;
+               cdns,num-lanes = <2>;
+               #phy-cells = <0>;
+               cdns,phy-type = <PHY_TYPE_PCIE>;
+               resets = <&serdes_wiz1 1>, <&serdes_wiz1 2>;
+       };
+};
+
+&pcie0_rc {
+       pinctrl-names = "default";
+       pinctrl-0 = <&ekey_reset_pins_default>;
+       reset-gpios = <&main_gpio0 72 GPIO_ACTIVE_HIGH>;
+
+       phys = <&serdes0_pcie_link>;
+       phy-names = "pcie-phy";
+       num-lanes = <1>;
+};
+
+&pcie1_rc {
+       pinctrl-names = "default";
+       pinctrl-0 = <&mkey_reset_pins_default>;
+       reset-gpios = <&wkup_gpio0 11 GPIO_ACTIVE_HIGH>;
+
+       phys = <&serdes1_pcie_link>;
+       phy-names = "pcie-phy";
+       num-lanes = <2>;
+};
+
+&pcie2_rc {
+       /* Unused */
+       status = "disabled";
+};
+
+&pcie0_ep {
+       status = "disabled";
+       phys = <&serdes0_pcie_link>;
+       phy-names = "pcie-phy";
+       num-lanes = <1>;
+};
+
+&pcie1_ep {
+       status = "disabled";
+       phys = <&serdes1_pcie_link>;
+       phy-names = "pcie-phy";
+       num-lanes = <2>;
+};
+
+&pcie2_ep {
+       /* Unused */
+       status = "disabled";
+};
+
+&pcie3_rc {
+       /* Unused */
+       status = "disabled";
+};
+
+&pcie3_ep {
+       /* Unused */
+       status = "disabled";
+};
+
+&dss {
+       status = "disabled";
+};
+
+&icssg0_mdio {
+       status = "disabled";
+};
+
+&icssg1_mdio {
+       status = "disabled";
+};
+
+&ufs_wrapper {
+       status = "disabled";
+};
+
+&mailbox0_cluster0 {
+       interrupts = <436>;
+
+       mbox_mcu_r5fss0_core0: mbox-mcu-r5fss0-core0 {
+               ti,mbox-rx = <0 0 0>;
+               ti,mbox-tx = <1 0 0>;
+       };
+
+       mbox_mcu_r5fss0_core1: mbox-mcu-r5fss0-core1 {
+               ti,mbox-rx = <2 0 0>;
+               ti,mbox-tx = <3 0 0>;
+       };
+};
+
+&mailbox0_cluster1 {
+       interrupts = <432>;
+
+       mbox_main_r5fss0_core0: mbox-main-r5fss0-core0 {
+               ti,mbox-rx = <0 0 0>;
+               ti,mbox-tx = <1 0 0>;
+       };
+
+       mbox_main_r5fss0_core1: mbox-main-r5fss0-core1 {
+               ti,mbox-rx = <2 0 0>;
+               ti,mbox-tx = <3 0 0>;
+       };
+};
+
+&mailbox0_cluster2 {
+       interrupts = <428>;
+
+       mbox_main_r5fss1_core0: mbox-main-r5fss1-core0 {
+               ti,mbox-rx = <0 0 0>;
+               ti,mbox-tx = <1 0 0>;
+       };
+
+       mbox_main_r5fss1_core1: mbox-main-r5fss1-core1 {
+               ti,mbox-rx = <2 0 0>;
+               ti,mbox-tx = <3 0 0>;
+       };
+};
+
+&mailbox0_cluster3 {
+       interrupts = <424>;
+
+       mbox_c66_0: mbox-c66-0 {
+               ti,mbox-rx = <0 0 0>;
+               ti,mbox-tx = <1 0 0>;
+       };
+
+       mbox_c66_1: mbox-c66-1 {
+               ti,mbox-rx = <2 0 0>;
+               ti,mbox-tx = <3 0 0>;
+       };
+};
+
+&mailbox0_cluster4 {
+       interrupts = <420>;
+
+       mbox_c71_0: mbox-c71-0 {
+               ti,mbox-rx = <0 0 0>;
+               ti,mbox-tx = <1 0 0>;
+       };
+};
+
+&mailbox0_cluster5 {
+       status = "disabled";
+};
+
+&mailbox0_cluster6 {
+       status = "disabled";
+};
+
+&mailbox0_cluster7 {
+       status = "disabled";
+};
+
+&mailbox0_cluster8 {
+       status = "disabled";
+};
+
+&mailbox0_cluster9 {
+       status = "disabled";
+};
+
+&mailbox0_cluster10 {
+       status = "disabled";
+};
+
+&mailbox0_cluster11 {
+       status = "disabled";
+};
+
+&mcu_r5fss0_core0 {
+       mboxes = <&mailbox0_cluster0 &mbox_mcu_r5fss0_core0>;
+       memory-region = <&mcu_r5fss0_core0_dma_memory_region>,
+                       <&mcu_r5fss0_core0_memory_region>;
+};
+
+&mcu_r5fss0_core1 {
+       mboxes = <&mailbox0_cluster0 &mbox_mcu_r5fss0_core1>;
+       memory-region = <&mcu_r5fss0_core1_dma_memory_region>,
+                       <&mcu_r5fss0_core1_memory_region>;
+};
+
+&main_r5fss0_core0 {
+       mboxes = <&mailbox0_cluster1 &mbox_main_r5fss0_core0>;
+       memory-region = <&main_r5fss0_core0_dma_memory_region>,
+                       <&main_r5fss0_core0_memory_region>;
+};
+
+&main_r5fss0_core1 {
+       mboxes = <&mailbox0_cluster1 &mbox_main_r5fss0_core1>;
+       memory-region = <&main_r5fss0_core1_dma_memory_region>,
+                       <&main_r5fss0_core1_memory_region>;
+};
+
+&main_r5fss1_core0 {
+       mboxes = <&mailbox0_cluster2 &mbox_main_r5fss1_core0>;
+       memory-region = <&main_r5fss1_core0_dma_memory_region>,
+                       <&main_r5fss1_core0_memory_region>;
+};
+
+&main_r5fss1_core1 {
+       mboxes = <&mailbox0_cluster2 &mbox_main_r5fss1_core1>;
+       memory-region = <&main_r5fss1_core1_dma_memory_region>,
+                       <&main_r5fss1_core1_memory_region>;
+};
+
+&c66_0 {
+       mboxes = <&mailbox0_cluster3 &mbox_c66_0>;
+       memory-region = <&c66_0_dma_memory_region>,
+                       <&c66_0_memory_region>;
+};
+
+&c66_1 {
+       mboxes = <&mailbox0_cluster3 &mbox_c66_1>;
+       memory-region = <&c66_1_dma_memory_region>,
+                       <&c66_1_memory_region>;
+};
+
+&c71_0 {
+       mboxes = <&mailbox0_cluster4 &mbox_c71_0>;
+       memory-region = <&c71_0_dma_memory_region>,
+                       <&c71_0_memory_region>;
+};
index f0587fd..214359e 100644 (file)
@@ -31,6 +31,9 @@
                serial10 = &main_uart8;
                serial11 = &main_uart9;
                ethernet0 = &cpsw_port1;
+               mmc0 = &main_sdhci0;
+               mmc1 = &main_sdhci1;
+               mmc2 = &main_sdhci2;
        };
 
        chosen { };
index 8cd460d..7ccb466 100644 (file)
@@ -1,2 +1,3 @@
 # SPDX-License-Identifier: GPL-2.0
 dtb-$(CONFIG_ARCH_VISCONTI) += tmpv7708-rm-mbrc.dtb
+dtb-$(CONFIG_ARCH_VISCONTI) += tmpv7708-visrobo-vrb.dtb
index 29a4d9f..9375b0f 100644 (file)
@@ -76,3 +76,9 @@
 &pwm {
        status = "okay";
 };
+
+&pcie {
+       status = "okay";
+       clocks = <&extclk100mhz>, <&clk600mhz>, <&clk25mhz>;
+       clock-names = "ref", "core", "aux";
+};
diff --git a/arch/arm64/boot/dts/toshiba/tmpv7708-visrobo-vrb.dts b/arch/arm64/boot/dts/toshiba/tmpv7708-visrobo-vrb.dts
new file mode 100644 (file)
index 0000000..d081746
--- /dev/null
@@ -0,0 +1,61 @@
+// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
+/*
+ * Device Tree File for TMPV7708 VisROBO VRB board
+ *
+ * (C) Copyright 2020, 2021, Toshiba Corporation.
+ * (C) Copyright 2020, Nobuhiro Iwamatsu <nobuhiro1.iwamatsu@toshiba.co.jp>
+ */
+
+/dts-v1/;
+
+#include "tmpv7708-visrobo-vrc.dtsi"
+
+/ {
+       model = "Toshiba TMPV7708 VisROBO (VRB) board";
+       compatible = "toshiba,tmpv7708-visrobo-vrb", "toshiba,tmpv7708";
+
+       aliases {
+               serial0 = &uart0;
+               serial1 = &uart1;
+       };
+
+       chosen {
+               stdout-path = "serial0:115200n8";
+       };
+
+       /* 768MB memory */
+       memory@80000000 {
+               device_type = "memory";
+               reg = <0x0 0x80000000 0x0 0x30000000>;
+       };
+};
+
+&uart0 {
+       status = "okay";
+       clocks = <&uart_clk>;
+       clock-names = "apb_pclk";
+};
+
+&uart1 {
+       status = "okay";
+       clocks = <&uart_clk>;
+       clock-names = "apb_pclk";
+};
+
+&piether {
+       status = "okay";
+       phy-handle = <&phy0>;
+       phy-mode = "rgmii-id";
+       clocks = <&clk300mhz>, <&clk125mhz>;
+       clock-names = "stmmaceth", "phy_ref_clk";
+
+       mdio0 {
+               #address-cells = <1>;
+               #size-cells = <0>;
+               compatible = "snps,dwmac-mdio";
+               phy0: ethernet-phy@1 {
+                       device_type = "ethernet-phy";
+                       reg = <0x1>;
+               };
+       };
+};
diff --git a/arch/arm64/boot/dts/toshiba/tmpv7708-visrobo-vrc.dtsi b/arch/arm64/boot/dts/toshiba/tmpv7708-visrobo-vrc.dtsi
new file mode 100644 (file)
index 0000000..f0a93db
--- /dev/null
@@ -0,0 +1,44 @@
+// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
+/*
+ * Device Tree File for TMPV7708 VisROBO VRC SoM
+ *
+ * (C) Copyright 2020, 2021, Toshiba Corporation.
+ * (C) Copyright 2020, Nobuhiro Iwamatsu <nobuhiro1.iwamatsu@toshiba.co.jp>
+ */
+
+/dts-v1/;
+
+#include "tmpv7708.dtsi"
+#include <dt-bindings/gpio/gpio.h>
+
+&wdt {
+       status = "okay";
+       clocks = <&wdt_clk>;
+};
+
+&gpio {
+       status = "okay";
+};
+
+&spi0_pins {
+       groups = "spi0_grp", "spi0_cs0_grp";
+};
+
+&spi0 {
+       status = "okay";
+       clocks = <&clk300mhz>, <&clk150mhz>;
+       clock-names = "sspclk", "apb_pclk";
+
+       mmc-slot@0 {
+               compatible = "mmc-spi-slot";
+               reg = <0>;
+               gpios = <&gpio 15 GPIO_ACTIVE_LOW>;
+               voltage-ranges = <3200 3400>;
+               spi-max-frequency = <12000000>;
+       };
+};
+
+&i2c0 {
+       status = "okay";
+       clocks = <&clk150mhz>;
+};
index 4b4231f..01d7ee6 100644 (file)
                #clock-cells = <0>;
        };
 
+       clk25mhz: clk25mhz {
+               compatible = "fixed-clock";
+               #clock-cells = <0>;
+               clock-frequency = <25000000>;
+               clock-output-names = "clk25mhz";
+       };
+
        clk125mhz: clk125mhz {
                compatible = "fixed-clock";
                clock-frequency = <125000000>;
                clock-output-names = "clk125mhz";
        };
 
+       clk150mhz: clk150mhz {
+               compatible = "fixed-clock";
+               clock-frequency = <150000000>;
+               #clock-cells = <0>;
+               clock-output-names = "clk150mhz";
+       };
+
        clk300mhz: clk300mhz {
                compatible = "fixed-clock";
                clock-frequency = <300000000>;
                clock-output-names = "clk300mhz";
        };
 
+       clk600mhz: clk600mhz {
+               compatible = "fixed-clock";
+               #clock-cells = <0>;
+               clock-frequency = <600000000>;
+               clock-output-names = "clk600mhz";
+       };
+
+       extclk100mhz: extclk100mhz {
+               compatible = "fixed-clock";
+               #clock-cells = <0>;
+               clock-frequency = <100000000>;
+               clock-output-names = "extclk100mhz";
+       };
+
        wdt_clk: wdt-clk {
                compatible = "fixed-clock";
                clock-frequency = <150000000>;
                        #pwm-cells = <2>;
                        status = "disabled";
                };
+
+               pcie: pcie@28400000 {
+                       compatible = "toshiba,visconti-pcie";
+                       reg = <0x0 0x28400000 0x0 0x00400000>,
+                             <0x0 0x70000000 0x0 0x10000000>,
+                             <0x0 0x28050000 0x0 0x00010000>,
+                             <0x0 0x24200000 0x0 0x00002000>,
+                             <0x0 0x24162000 0x0 0x00001000>;
+                       reg-names  = "dbi", "config", "ulreg", "smu", "mpu";
+                       device_type = "pci";
+                       bus-range = <0x00 0xff>;
+                       num-lanes = <2>;
+                       num-viewport = <8>;
+
+                       #address-cells = <3>;
+                       #size-cells = <2>;
+                       #interrupt-cells = <1>;
+                       ranges = <0x81000000 0 0x40000000 0 0x40000000 0 0x00010000
+                                 0x82000000 0 0x50000000 0 0x50000000 0 0x20000000>;
+                       interrupts = <GIC_SPI 211 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 215 IRQ_TYPE_LEVEL_HIGH>;
+                       interrupt-names = "msi", "intr";
+                       interrupt-map-mask = <0 0 0 7>;
+                       interrupt-map =
+                               <0 0 0 1 &gic GIC_SPI 215 IRQ_TYPE_LEVEL_HIGH
+                                0 0 0 2 &gic GIC_SPI 215 IRQ_TYPE_LEVEL_HIGH
+                                0 0 0 3 &gic GIC_SPI 215 IRQ_TYPE_LEVEL_HIGH
+                                0 0 0 4 &gic GIC_SPI 215 IRQ_TYPE_LEVEL_HIGH>;
+                       max-link-speed = <2>;
+                       status = "disabled";
+               };
        };
 };
 
index 11fb4fd..4e15954 100644 (file)
@@ -12,7 +12,21 @@ dtb-$(CONFIG_ARCH_ZYNQMP) += zynqmp-zcu100-revC.dtb
 dtb-$(CONFIG_ARCH_ZYNQMP) += zynqmp-zcu102-revA.dtb
 dtb-$(CONFIG_ARCH_ZYNQMP) += zynqmp-zcu102-revB.dtb
 dtb-$(CONFIG_ARCH_ZYNQMP) += zynqmp-zcu102-rev1.0.dtb
+dtb-$(CONFIG_ARCH_ZYNQMP) += zynqmp-zcu102-rev1.1.dtb
 dtb-$(CONFIG_ARCH_ZYNQMP) += zynqmp-zcu104-revA.dtb
 dtb-$(CONFIG_ARCH_ZYNQMP) += zynqmp-zcu104-revC.dtb
 dtb-$(CONFIG_ARCH_ZYNQMP) += zynqmp-zcu106-revA.dtb
 dtb-$(CONFIG_ARCH_ZYNQMP) += zynqmp-zcu111-revA.dtb
+
+dtb-$(CONFIG_ARCH_ZYNQMP) += zynqmp-sm-k26-revA.dtb
+dtb-$(CONFIG_ARCH_ZYNQMP) += zynqmp-smk-k26-revA.dtb
+
+sm-k26-revA-sck-kv-g-revA-dtbs := zynqmp-sm-k26-revA.dtb zynqmp-sck-kv-g-revA.dtbo
+sm-k26-revA-sck-kv-g-revB-dtbs := zynqmp-sm-k26-revA.dtb zynqmp-sck-kv-g-revB.dtbo
+smk-k26-revA-sm-k26-revA-sck-kv-g-revA-dtbs := zynqmp-smk-k26-revA.dtb zynqmp-sck-kv-g-revA.dtbo
+smk-k26-revA-sm-k26-revA-sck-kv-g-revB-dtbs := zynqmp-smk-k26-revA.dtb zynqmp-sck-kv-g-revB.dtbo
+
+dtb-$(CONFIG_ARCH_ZYNQMP) += sm-k26-revA-sck-kv-g-revA.dtb
+dtb-$(CONFIG_ARCH_ZYNQMP) += sm-k26-revA-sck-kv-g-revB.dtb
+dtb-$(CONFIG_ARCH_ZYNQMP) += smk-k26-revA-sm-k26-revA-sck-kv-g-revA.dtb
+dtb-$(CONFIG_ARCH_ZYNQMP) += smk-k26-revA-sm-k26-revA-sck-kv-g-revB.dtb
index cf52952..1e0b1bc 100644 (file)
@@ -2,7 +2,7 @@
 /*
  * Clock specification for Xilinx ZynqMP
  *
- * (C) Copyright 2017 - 2019, Xilinx, Inc.
+ * (C) Copyright 2017 - 2021, Xilinx, Inc.
  *
  * Michal Simek <michal.simek@xilinx.com>
  */
        };
 };
 
+&zynqmp_firmware {
+       zynqmp_clk: clock-controller {
+               #clock-cells = <1>;
+               compatible = "xlnx,zynqmp-clk";
+               clocks = <&pss_ref_clk>, <&video_clk>, <&pss_alt_ref_clk>,
+                        <&aux_ref_clk>, <&gt_crx_ref_clk>;
+               clock-names = "pss_ref_clk", "video_clk", "pss_alt_ref_clk",
+                             "aux_ref_clk", "gt_crx_ref_clk";
+       };
+};
+
 &can0 {
        clocks = <&zynqmp_clk CAN0_REF>, <&zynqmp_clk LPD_LSBUS>;
 };
diff --git a/arch/arm64/boot/dts/xilinx/zynqmp-sck-kv-g-revA.dts b/arch/arm64/boot/dts/xilinx/zynqmp-sck-kv-g-revA.dts
new file mode 100644 (file)
index 0000000..b610e65
--- /dev/null
@@ -0,0 +1,315 @@
+// SPDX-License-Identifier: GPL-2.0
+/*
+ * dts file for KV260 revA Carrier Card
+ *
+ * (C) Copyright 2020 - 2021, Xilinx, Inc.
+ *
+ * SD level shifter:
+ * "A" â€“ A01 board un-modified (NXP)
+ * "Y" â€“ A01 board modified with legacy interposer (Nexperia)
+ * "Z" â€“ A01 board modified with Diode interposer
+ *
+ * Michal Simek <michal.simek@xilinx.com>
+ */
+
+#include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/net/ti-dp83867.h>
+#include <dt-bindings/phy/phy.h>
+#include <dt-bindings/pinctrl/pinctrl-zynqmp.h>
+
+/dts-v1/;
+/plugin/;
+
+&i2c1 { /* I2C_SCK C23/C24 - MIO from SOM */
+       #address-cells = <1>;
+       #size-cells = <0>;
+       pinctrl-names = "default", "gpio";
+       pinctrl-0 = <&pinctrl_i2c1_default>;
+       pinctrl-1 = <&pinctrl_i2c1_gpio>;
+       scl-gpios = <&gpio 24 GPIO_ACTIVE_HIGH>;
+       sda-gpios = <&gpio 25 GPIO_ACTIVE_HIGH>;
+
+       /* u14 - 0x40 - ina260 */
+       /* u27 - 0xe0 - STDP4320 DP/HDMI splitter */
+};
+
+&amba {
+       si5332_0: si5332_0 { /* u17 */
+               compatible = "fixed-clock";
+               #clock-cells = <0>;
+               clock-frequency = <125000000>;
+       };
+
+       si5332_1: si5332_1 { /* u17 */
+               compatible = "fixed-clock";
+               #clock-cells = <0>;
+               clock-frequency = <25000000>;
+       };
+
+       si5332_2: si5332_2 { /* u17 */
+               compatible = "fixed-clock";
+               #clock-cells = <0>;
+               clock-frequency = <48000000>;
+       };
+
+       si5332_3: si5332_3 { /* u17 */
+               compatible = "fixed-clock";
+               #clock-cells = <0>;
+               clock-frequency = <24000000>;
+       };
+
+       si5332_4: si5332_4 { /* u17 */
+               compatible = "fixed-clock";
+               #clock-cells = <0>;
+               clock-frequency = <26000000>;
+       };
+
+       si5332_5: si5332_5 { /* u17 */
+               compatible = "fixed-clock";
+               #clock-cells = <0>;
+               clock-frequency = <27000000>;
+       };
+};
+
+/* DP/USB 3.0 and SATA */
+&psgtr {
+       status = "okay";
+       /* pcie, usb3, sata */
+       clocks = <&si5332_5>, <&si5332_4>, <&si5332_0>;
+       clock-names = "ref0", "ref1", "ref2";
+};
+
+&sata {
+       status = "okay";
+       /* SATA OOB timing settings */
+       ceva,p0-cominit-params = /bits/ 8 <0x18 0x40 0x18 0x28>;
+       ceva,p0-comwake-params = /bits/ 8 <0x06 0x14 0x08 0x0E>;
+       ceva,p0-burst-params = /bits/ 8 <0x13 0x08 0x4A 0x06>;
+       ceva,p0-retry-params = /bits/ 16 <0x96A4 0x3FFC>;
+       ceva,p1-cominit-params = /bits/ 8 <0x18 0x40 0x18 0x28>;
+       ceva,p1-comwake-params = /bits/ 8 <0x06 0x14 0x08 0x0E>;
+       ceva,p1-burst-params = /bits/ 8 <0x13 0x08 0x4A 0x06>;
+       ceva,p1-retry-params = /bits/ 16 <0x96A4 0x3FFC>;
+       phy-names = "sata-phy";
+       phys = <&psgtr 3 PHY_TYPE_SATA 1 2>;
+};
+
+&zynqmp_dpsub {
+       status = "disabled";
+       phy-names = "dp-phy0", "dp-phy1";
+       phys = <&psgtr 1 PHY_TYPE_DP 0 0>, <&psgtr 0 PHY_TYPE_DP 1 0>;
+};
+
+&zynqmp_dpdma {
+       status = "okay";
+};
+
+&usb0 {
+       status = "okay";
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_usb0_default>;
+       phy-names = "usb3-phy";
+       phys = <&psgtr 2 PHY_TYPE_USB3 0 1>;
+       /* missing usb5744 - u43 */
+};
+
+&dwc3_0 {
+       status = "okay";
+       dr_mode = "host";
+       snps,usb3_lpm_capable;
+       maximum-speed = "super-speed";
+};
+
+&sdhci1 { /* on CC with tuned parameters */
+       status = "okay";
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_sdhci1_default>;
+       /*
+        * SD 3.0 requires level shifter and this property
+        * should be removed if the board has level shifter and
+        * need to work in UHS mode
+        */
+       no-1-8-v;
+       disable-wp;
+       xlnx,mio-bank = <1>;
+};
+
+&gem3 { /* required by spec */
+       status = "okay";
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_gem3_default>;
+       phy-handle = <&phy0>;
+       phy-mode = "rgmii-id";
+
+       mdio: mdio {
+               #address-cells = <1>;
+               #size-cells = <0>;
+               reset-gpios = <&gpio 38 GPIO_ACTIVE_LOW>;
+               reset-delay-us = <2>;
+
+               phy0: ethernet-phy@1 {
+                       #phy-cells = <1>;
+                       reg = <1>;
+                       ti,rx-internal-delay = <DP83867_RGMIIDCTL_2_25_NS>;
+                       ti,tx-internal-delay = <DP83867_RGMIIDCTL_2_75_NS>;
+                       ti,fifo-depth = <DP83867_PHYCR_FIFO_DEPTH_4_B_NIB>;
+                       ti,dp83867-rxctrl-strap-quirk;
+               };
+       };
+};
+
+&pinctrl0 { /* required by spec */
+       status = "okay";
+
+       pinctrl_uart1_default: uart1-default {
+               conf {
+                       groups = "uart1_9_grp";
+                       slew-rate = <SLEW_RATE_SLOW>;
+                       power-source = <IO_STANDARD_LVCMOS18>;
+                       drive-strength = <12>;
+               };
+
+               conf-rx {
+                       pins = "MIO37";
+                       bias-high-impedance;
+               };
+
+               conf-tx {
+                       pins = "MIO36";
+                       bias-disable;
+               };
+
+               mux {
+                       groups = "uart1_9_grp";
+                       function = "uart1";
+               };
+       };
+
+       pinctrl_i2c1_default: i2c1-default {
+               conf {
+                       groups = "i2c1_6_grp";
+                       bias-pull-up;
+                       slew-rate = <SLEW_RATE_SLOW>;
+                       power-source = <IO_STANDARD_LVCMOS18>;
+               };
+
+               mux {
+                       groups = "i2c1_6_grp";
+                       function = "i2c1";
+               };
+       };
+
+       pinctrl_i2c1_gpio: i2c1-gpio {
+               conf {
+                       groups = "gpio0_24_grp", "gpio0_25_grp";
+                       slew-rate = <SLEW_RATE_SLOW>;
+                       power-source = <IO_STANDARD_LVCMOS18>;
+               };
+
+               mux {
+                       groups = "gpio0_24_grp", "gpio0_25_grp";
+                       function = "gpio0";
+               };
+       };
+
+       pinctrl_gem3_default: gem3-default {
+               conf {
+                       groups = "ethernet3_0_grp";
+                       slew-rate = <SLEW_RATE_SLOW>;
+                       power-source = <IO_STANDARD_LVCMOS18>;
+               };
+
+               conf-rx {
+                       pins = "MIO70", "MIO72", "MIO74";
+                       bias-high-impedance;
+                       low-power-disable;
+               };
+
+               conf-bootstrap {
+                       pins = "MIO71", "MIO73", "MIO75";
+                       bias-disable;
+                       low-power-disable;
+               };
+
+               conf-tx {
+                       pins = "MIO64", "MIO65", "MIO66",
+                               "MIO67", "MIO68", "MIO69";
+                       bias-disable;
+                       low-power-enable;
+               };
+
+               conf-mdio {
+                       groups = "mdio3_0_grp";
+                       slew-rate = <SLEW_RATE_SLOW>;
+                       power-source = <IO_STANDARD_LVCMOS18>;
+                       bias-disable;
+               };
+
+               mux-mdio {
+                       function = "mdio3";
+                       groups = "mdio3_0_grp";
+               };
+
+               mux {
+                       function = "ethernet3";
+                       groups = "ethernet3_0_grp";
+               };
+       };
+
+       pinctrl_usb0_default: usb0-default {
+               conf {
+                       groups = "usb0_0_grp";
+                       slew-rate = <SLEW_RATE_SLOW>;
+                       power-source = <IO_STANDARD_LVCMOS18>;
+               };
+
+               conf-rx {
+                       pins = "MIO52", "MIO53", "MIO55";
+                       bias-high-impedance;
+               };
+
+               conf-tx {
+                       pins = "MIO54", "MIO56", "MIO57", "MIO58", "MIO59",
+                       "MIO60", "MIO61", "MIO62", "MIO63";
+                       bias-disable;
+               };
+
+               mux {
+                       groups = "usb0_0_grp";
+                       function = "usb0";
+               };
+       };
+
+       pinctrl_sdhci1_default: sdhci1-default {
+               conf {
+                       groups = "sdio1_0_grp";
+                       slew-rate = <SLEW_RATE_SLOW>;
+                       power-source = <IO_STANDARD_LVCMOS18>;
+                       bias-disable;
+               };
+
+               conf-cd {
+                       groups = "sdio1_cd_0_grp";
+                       bias-high-impedance;
+                       bias-pull-up;
+                       slew-rate = <SLEW_RATE_SLOW>;
+                       power-source = <IO_STANDARD_LVCMOS18>;
+               };
+
+               mux-cd {
+                       groups = "sdio1_cd_0_grp";
+                       function = "sdio1_cd";
+               };
+
+               mux {
+                       groups = "sdio1_0_grp";
+                       function = "sdio1";
+               };
+       };
+};
+
+&uart1 {
+       status = "okay";
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_uart1_default>;
+};
diff --git a/arch/arm64/boot/dts/xilinx/zynqmp-sck-kv-g-revB.dts b/arch/arm64/boot/dts/xilinx/zynqmp-sck-kv-g-revB.dts
new file mode 100644 (file)
index 0000000..a52dafb
--- /dev/null
@@ -0,0 +1,298 @@
+// SPDX-License-Identifier: GPL-2.0
+/*
+ * dts file for KV260 revA Carrier Card
+ *
+ * (C) Copyright 2020 - 2021, Xilinx, Inc.
+ *
+ * Michal Simek <michal.simek@xilinx.com>
+ */
+
+#include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/net/ti-dp83867.h>
+#include <dt-bindings/phy/phy.h>
+#include <dt-bindings/pinctrl/pinctrl-zynqmp.h>
+
+/dts-v1/;
+/plugin/;
+
+&i2c1 { /* I2C_SCK C23/C24 - MIO from SOM */
+       #address-cells = <1>;
+       #size-cells = <0>;
+       pinctrl-names = "default", "gpio";
+       pinctrl-0 = <&pinctrl_i2c1_default>;
+       pinctrl-1 = <&pinctrl_i2c1_gpio>;
+       scl-gpios = <&gpio 24 GPIO_ACTIVE_HIGH>;
+       sda-gpios = <&gpio 25 GPIO_ACTIVE_HIGH>;
+
+       /* u14 - 0x40 - ina260 */
+       /* u43 - 0x2d - usb5744 */
+       /* u27 - 0xe0 - STDP4320 DP/HDMI splitter */
+};
+
+&amba {
+       si5332_0: si5332_0 { /* u17 */
+               compatible = "fixed-clock";
+               #clock-cells = <0>;
+               clock-frequency = <125000000>;
+       };
+
+       si5332_1: si5332_1 { /* u17 */
+               compatible = "fixed-clock";
+               #clock-cells = <0>;
+               clock-frequency = <25000000>;
+       };
+
+       si5332_2: si5332_2 { /* u17 */
+               compatible = "fixed-clock";
+               #clock-cells = <0>;
+               clock-frequency = <48000000>;
+       };
+
+       si5332_3: si5332_3 { /* u17 */
+               compatible = "fixed-clock";
+               #clock-cells = <0>;
+               clock-frequency = <24000000>;
+       };
+
+       si5332_4: si5332_4 { /* u17 */
+               compatible = "fixed-clock";
+               #clock-cells = <0>;
+               clock-frequency = <26000000>;
+       };
+
+       si5332_5: si5332_5 { /* u17 */
+               compatible = "fixed-clock";
+               #clock-cells = <0>;
+               clock-frequency = <27000000>;
+       };
+};
+
+/* DP/USB 3.0 */
+&psgtr {
+       status = "okay";
+       /* pcie, usb3, sata */
+       clocks = <&si5332_5>, <&si5332_4>, <&si5332_0>;
+       clock-names = "ref0", "ref1", "ref2";
+};
+
+&zynqmp_dpsub {
+       status = "disabled";
+       phy-names = "dp-phy0", "dp-phy1";
+       phys = <&psgtr 1 PHY_TYPE_DP 0 0>, <&psgtr 0 PHY_TYPE_DP 1 0>;
+};
+
+&zynqmp_dpdma {
+       status = "okay";
+};
+
+&usb0 {
+       status = "okay";
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_usb0_default>;
+       phy-names = "usb3-phy";
+       phys = <&psgtr 2 PHY_TYPE_USB3 0 1>;
+};
+
+&dwc3_0 {
+       status = "okay";
+       dr_mode = "host";
+       snps,usb3_lpm_capable;
+       maximum-speed = "super-speed";
+};
+
+&sdhci1 { /* on CC with tuned parameters */
+       status = "okay";
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_sdhci1_default>;
+       /*
+        * SD 3.0 requires level shifter and this property
+        * should be removed if the board has level shifter and
+        * need to work in UHS mode
+        */
+       no-1-8-v;
+       disable-wp;
+       xlnx,mio-bank = <1>;
+       clk-phase-sd-hs = <126>, <60>;
+       clk-phase-uhs-sdr25 = <120>, <60>;
+       clk-phase-uhs-ddr50 = <126>, <48>;
+};
+
+&gem3 { /* required by spec */
+       status = "okay";
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_gem3_default>;
+       phy-handle = <&phy0>;
+       phy-mode = "rgmii-id";
+
+       mdio: mdio {
+               #address-cells = <1>;
+               #size-cells = <0>;
+               reset-gpios = <&gpio 38 GPIO_ACTIVE_LOW>;
+               reset-delay-us = <2>;
+
+               phy0: ethernet-phy@1 {
+                       #phy-cells = <1>;
+                       reg = <1>;
+                       ti,rx-internal-delay = <DP83867_RGMIIDCTL_2_25_NS>;
+                       ti,tx-internal-delay = <DP83867_RGMIIDCTL_2_75_NS>;
+                       ti,fifo-depth = <DP83867_PHYCR_FIFO_DEPTH_4_B_NIB>;
+                       ti,dp83867-rxctrl-strap-quirk;
+               };
+       };
+};
+
+&pinctrl0 { /* required by spec */
+       status = "okay";
+
+       pinctrl_uart1_default: uart1-default {
+               conf {
+                       groups = "uart1_9_grp";
+                       slew-rate = <SLEW_RATE_SLOW>;
+                       power-source = <IO_STANDARD_LVCMOS18>;
+                       drive-strength = <12>;
+               };
+
+               conf-rx {
+                       pins = "MIO37";
+                       bias-high-impedance;
+               };
+
+               conf-tx {
+                       pins = "MIO36";
+                       bias-disable;
+               };
+
+               mux {
+                       groups = "uart1_9_grp";
+                       function = "uart1";
+               };
+       };
+
+       pinctrl_i2c1_default: i2c1-default {
+               conf {
+                       groups = "i2c1_6_grp";
+                       bias-pull-up;
+                       slew-rate = <SLEW_RATE_SLOW>;
+                       power-source = <IO_STANDARD_LVCMOS18>;
+               };
+
+               mux {
+                       groups = "i2c1_6_grp";
+                       function = "i2c1";
+               };
+       };
+
+       pinctrl_i2c1_gpio: i2c1-gpio {
+               conf {
+                       groups = "gpio0_24_grp", "gpio0_25_grp";
+                       slew-rate = <SLEW_RATE_SLOW>;
+                       power-source = <IO_STANDARD_LVCMOS18>;
+               };
+
+               mux {
+                       groups = "gpio0_24_grp", "gpio0_25_grp";
+                       function = "gpio0";
+               };
+       };
+
+       pinctrl_gem3_default: gem3-default {
+               conf {
+                       groups = "ethernet3_0_grp";
+                       slew-rate = <SLEW_RATE_SLOW>;
+                       power-source = <IO_STANDARD_LVCMOS18>;
+               };
+
+               conf-rx {
+                       pins = "MIO70", "MIO72", "MIO74";
+                       bias-high-impedance;
+                       low-power-disable;
+               };
+
+               conf-bootstrap {
+                       pins = "MIO71", "MIO73", "MIO75";
+                       bias-disable;
+                       low-power-disable;
+               };
+
+               conf-tx {
+                       pins = "MIO64", "MIO65", "MIO66",
+                               "MIO67", "MIO68", "MIO69";
+                       bias-disable;
+                       low-power-enable;
+               };
+
+               conf-mdio {
+                       groups = "mdio3_0_grp";
+                       slew-rate = <SLEW_RATE_SLOW>;
+                       power-source = <IO_STANDARD_LVCMOS18>;
+                       bias-disable;
+               };
+
+               mux-mdio {
+                       function = "mdio3";
+                       groups = "mdio3_0_grp";
+               };
+
+               mux {
+                       function = "ethernet3";
+                       groups = "ethernet3_0_grp";
+               };
+       };
+
+       pinctrl_usb0_default: usb0-default {
+               conf {
+                       groups = "usb0_0_grp";
+                       slew-rate = <SLEW_RATE_SLOW>;
+                       power-source = <IO_STANDARD_LVCMOS18>;
+               };
+
+               conf-rx {
+                       pins = "MIO52", "MIO53", "MIO55";
+                       bias-high-impedance;
+               };
+
+               conf-tx {
+                       pins = "MIO54", "MIO56", "MIO57", "MIO58", "MIO59",
+                       "MIO60", "MIO61", "MIO62", "MIO63";
+                       bias-disable;
+               };
+
+               mux {
+                       groups = "usb0_0_grp";
+                       function = "usb0";
+               };
+       };
+
+       pinctrl_sdhci1_default: sdhci1-default {
+               conf {
+                       groups = "sdio1_0_grp";
+                       slew-rate = <SLEW_RATE_SLOW>;
+                       power-source = <IO_STANDARD_LVCMOS18>;
+                       bias-disable;
+               };
+
+               conf-cd {
+                       groups = "sdio1_cd_0_grp";
+                       bias-high-impedance;
+                       bias-pull-up;
+                       slew-rate = <SLEW_RATE_SLOW>;
+                       power-source = <IO_STANDARD_LVCMOS18>;
+               };
+
+               mux-cd {
+                       groups = "sdio1_cd_0_grp";
+                       function = "sdio1_cd";
+               };
+
+               mux {
+                       groups = "sdio1_0_grp";
+                       function = "sdio1";
+               };
+       };
+};
+
+&uart1 {
+       status = "okay";
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_uart1_default>;
+};
diff --git a/arch/arm64/boot/dts/xilinx/zynqmp-sm-k26-revA.dts b/arch/arm64/boot/dts/xilinx/zynqmp-sm-k26-revA.dts
new file mode 100644 (file)
index 0000000..550b389
--- /dev/null
@@ -0,0 +1,289 @@
+// SPDX-License-Identifier: GPL-2.0
+/*
+ * dts file for Xilinx ZynqMP SM-K26 rev1/B/A
+ *
+ * (C) Copyright 2020 - 2021, Xilinx, Inc.
+ *
+ * Michal Simek <michal.simek@xilinx.com>
+ */
+
+/dts-v1/;
+
+#include "zynqmp.dtsi"
+#include "zynqmp-clk-ccf.dtsi"
+#include <dt-bindings/input/input.h>
+#include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/phy/phy.h>
+
+/ {
+       model = "ZynqMP SM-K26 Rev1/B/A";
+       compatible = "xlnx,zynqmp-sm-k26-rev1", "xlnx,zynqmp-sm-k26-revB",
+                    "xlnx,zynqmp-sm-k26-revA", "xlnx,zynqmp-sm-k26",
+                    "xlnx,zynqmp";
+
+       aliases {
+               i2c0 = &i2c0;
+               i2c1 = &i2c1;
+               mmc0 = &sdhci0;
+               mmc1 = &sdhci1;
+               nvmem0 = &eeprom;
+               nvmem1 = &eeprom_cc;
+               rtc0 = &rtc;
+               serial0 = &uart0;
+               serial1 = &uart1;
+               serial2 = &dcc;
+               spi0 = &qspi;
+               spi1 = &spi0;
+               spi2 = &spi1;
+               usb0 = &usb0;
+               usb1 = &usb1;
+       };
+
+       chosen {
+               bootargs = "earlycon";
+               stdout-path = "serial1:115200n8";
+       };
+
+       memory@0 {
+               device_type = "memory"; /* 4GB */
+               reg = <0x0 0x0 0x0 0x80000000>, <0x8 0x00000000 0x0 0x80000000>;
+       };
+
+       gpio-keys {
+               compatible = "gpio-keys";
+               autorepeat;
+               fwuen {
+                       label = "fwuen";
+                       gpios = <&gpio 12 GPIO_ACTIVE_LOW>;
+               };
+       };
+
+       leds {
+               compatible = "gpio-leds";
+               ds35-led {
+                       label = "heartbeat";
+                       gpios = <&gpio 7 GPIO_ACTIVE_HIGH>;
+                       linux,default-trigger = "heartbeat";
+               };
+
+               ds36-led {
+                       label = "vbus_det";
+                       gpios = <&gpio 8 GPIO_ACTIVE_HIGH>;
+                       default-state = "on";
+               };
+       };
+};
+
+&uart1 { /* MIO36/MIO37 */
+       status = "okay";
+};
+
+&qspi { /* MIO 0-5 - U143 */
+       status = "okay";
+       flash@0 { /* MT25QU512A */
+               compatible = "mt25qu512a", "jedec,spi-nor"; /* 64MB */
+               #address-cells = <1>;
+               #size-cells = <1>;
+               reg = <0>;
+               spi-tx-bus-width = <1>;
+               spi-rx-bus-width = <4>;
+               spi-max-frequency = <40000000>; /* 40MHz */
+               partition@0 {
+                       label = "Image Selector";
+                       reg = <0x0 0x80000>; /* 512KB */
+                       read-only;
+                       lock;
+               };
+               partition@80000 {
+                       label = "Image Selector Golden";
+                       reg = <0x80000 0x80000>; /* 512KB */
+                       read-only;
+                       lock;
+               };
+               partition@100000 {
+                       label = "Persistent Register";
+                       reg = <0x100000 0x20000>; /* 128KB */
+               };
+               partition@120000 {
+                       label = "Persistent Register Backup";
+                       reg = <0x120000 0x20000>; /* 128KB */
+               };
+               partition@140000 {
+                       label = "Open_1";
+                       reg = <0x140000 0xC0000>; /* 768KB */
+               };
+               partition@200000 {
+                       label = "Image A (FSBL, PMU, ATF, U-Boot)";
+                       reg = <0x200000 0xD00000>; /* 13MB */
+               };
+               partition@f00000 {
+                       label = "ImgSel Image A Catch";
+                       reg = <0xF00000 0x80000>; /* 512KB */
+                       read-only;
+                       lock;
+               };
+               partition@f80000 {
+                       label = "Image B (FSBL, PMU, ATF, U-Boot)";
+                       reg = <0xF80000 0xD00000>; /* 13MB */
+               };
+               partition@1c80000 {
+                       label = "ImgSel Image B Catch";
+                       reg = <0x1C80000 0x80000>; /* 512KB */
+                       read-only;
+                       lock;
+               };
+               partition@1d00000 {
+                       label = "Open_2";
+                       reg = <0x1D00000 0x100000>; /* 1MB */
+               };
+               partition@1e00000 {
+                       label = "Recovery Image";
+                       reg = <0x1E00000 0x200000>; /* 2MB */
+                       read-only;
+                       lock;
+               };
+               partition@2000000 {
+                       label = "Recovery Image Backup";
+                       reg = <0x2000000 0x200000>; /* 2MB */
+                       read-only;
+                       lock;
+               };
+               partition@2200000 {
+                       label = "U-Boot storage variables";
+                       reg = <0x2200000 0x20000>; /* 128KB */
+               };
+               partition@2220000 {
+                       label = "U-Boot storage variables backup";
+                       reg = <0x2220000 0x20000>; /* 128KB */
+               };
+               partition@2240000 {
+                       label = "SHA256";
+                       reg = <0x2240000 0x10000>; /* 256B but 64KB sector */
+                       read-only;
+                       lock;
+               };
+               partition@2250000 {
+                       label = "User";
+                       reg = <0x2250000 0x1db0000>; /* 29.5 MB */
+               };
+       };
+};
+
+&sdhci0 { /* MIO13-23 - 16GB emmc MTFC16GAPALBH-IT - U133A */
+       status = "okay";
+       non-removable;
+       disable-wp;
+       bus-width = <8>;
+       xlnx,mio-bank = <0>;
+};
+
+&spi1 { /* MIO6, 9-11 */
+       status = "okay";
+       label = "TPM";
+       num-cs = <1>;
+       tpm@0 { /* slm9670 - U144 */
+               compatible = "infineon,slb9670", "tcg,tpm_tis-spi";
+               reg = <0>;
+               spi-max-frequency = <18500000>;
+       };
+};
+
+&i2c1 {
+       status = "okay";
+       clock-frequency = <400000>;
+       scl-gpios = <&gpio 24 GPIO_ACTIVE_HIGH>;
+       sda-gpios = <&gpio 25 GPIO_ACTIVE_HIGH>;
+
+       eeprom: eeprom@50 { /* u46 - also at address 0x58 */
+               compatible = "st,24c64", "atmel,24c64"; /* st m24c64 */
+               reg = <0x50>;
+               /* WP pin EE_WP_EN connected to slg7x644092@68 */
+       };
+
+       eeprom_cc: eeprom@51 { /* required by spec - also at address 0x59 */
+               compatible = "st,24c64", "atmel,24c64"; /* st m24c64 */
+               reg = <0x51>;
+       };
+
+       /* da9062@30 - u170 - also at address 0x31 */
+       /* da9131@33 - u167 */
+       da9131: pmic@33 {
+               compatible = "dlg,da9131";
+               reg = <0x33>;
+               regulators {
+                       da9131_buck1: buck1 {
+                               regulator-name = "da9131_buck1";
+                               regulator-boot-on;
+                               regulator-always-on;
+                       };
+                       da9131_buck2: buck2 {
+                               regulator-name = "da9131_buck2";
+                               regulator-boot-on;
+                               regulator-always-on;
+                       };
+               };
+       };
+
+       /* da9130@32 - u166 */
+       da9130: pmic@32 {
+               compatible = "dlg,da9130";
+               reg = <0x32>;
+               regulators {
+                       da9130_buck1: buck1 {
+                               regulator-name = "da9130_buck1";
+                               regulator-boot-on;
+                               regulator-always-on;
+                       };
+               };
+       };
+
+       /* slg7x644091@70 - u168 NOT accessible due to address conflict with stdp4320 */
+       /*
+        * stdp4320 - u27 FW has below two issues to be fixed in next board revision.
+        * Device acknowledging to addresses 0x5C, 0x5D, 0x70, 0x72, 0x76.
+        * Address conflict with slg7x644091@70 making both the devices NOT accessible.
+        * With the FW fix, stdp4320 should respond to address 0x73 only.
+        */
+       /* slg7x644092@68 - u169 */
+       /* Also connected via JA1C as C23/C24 */
+};
+
+&gpio {
+       status = "okay";
+       gpio-line-names = "QSPI_CLK", "QSPI_DQ1", "QSPI_DQ2", "QSPI_DQ3", "QSPI_DQ0", /* 0 - 4 */
+                         "QSPI_CS_B", "SPI_CLK", "LED1", "LED2", "SPI_CS_B", /* 5 - 9 */
+                         "SPI_MISO", "SPI_MOSI", "FWUEN", "EMMC_DAT0", "EMMC_DAT1", /* 10 - 14 */
+                         "EMMC_DAT2", "EMMC_DAT3", "EMMC_DAT4", "EMMC_DAT5", "EMMC_DAT6", /* 15 - 19 */
+                         "EMMC_DAT7", "EMMC_CMD", "EMMC_CLK", "EMMC_RST", "I2C1_SCL", /* 20 - 24 */
+                         "I2C1_SDA", "", "", "", "", /* 25 - 29 */
+                         "", "", "", "", "", /* 30 - 34 */
+                         "", "", "", "", "", /* 35 - 39 */
+                         "", "", "", "", "", /* 40 - 44 */
+                         "", "", "", "", "", /* 45 - 49 */
+                         "", "", "", "", "", /* 50 - 54 */
+                         "", "", "", "", "", /* 55 - 59 */
+                         "", "", "", "", "", /* 60 - 64 */
+                         "", "", "", "", "", /* 65 - 69 */
+                         "", "", "", "", "", /* 70 - 74 */
+                         "", "", "", /* 75 - 77, MIO end and EMIO start */
+                         "", "", /* 78 - 79 */
+                         "", "", "", "", "", /* 80 - 84 */
+                         "", "", "", "", "", /* 85 - 89 */
+                         "", "", "", "", "", /* 90 - 94 */
+                         "", "", "", "", "", /* 95 - 99 */
+                         "", "", "", "", "", /* 100 - 104 */
+                         "", "", "", "", "", /* 105 - 109 */
+                         "", "", "", "", "", /* 110 - 114 */
+                         "", "", "", "", "", /* 115 - 119 */
+                         "", "", "", "", "", /* 120 - 124 */
+                         "", "", "", "", "", /* 125 - 129 */
+                         "", "", "", "", "", /* 130 - 134 */
+                         "", "", "", "", "", /* 135 - 139 */
+                         "", "", "", "", "", /* 140 - 144 */
+                         "", "", "", "", "", /* 145 - 149 */
+                         "", "", "", "", "", /* 150 - 154 */
+                         "", "", "", "", "", /* 155 - 159 */
+                         "", "", "", "", "", /* 160 - 164 */
+                         "", "", "", "", "", /* 165 - 169 */
+                         "", "", "", ""; /* 170 - 174 */
+};
diff --git a/arch/arm64/boot/dts/xilinx/zynqmp-smk-k26-revA.dts b/arch/arm64/boot/dts/xilinx/zynqmp-smk-k26-revA.dts
new file mode 100644 (file)
index 0000000..c70966c
--- /dev/null
@@ -0,0 +1,21 @@
+// SPDX-License-Identifier: GPL-2.0
+/*
+ * dts file for Xilinx ZynqMP SMK-K26 rev1/B/A
+ *
+ * (C) Copyright 2020 - 2021, Xilinx, Inc.
+ *
+ * Michal Simek <michal.simek@xilinx.com>
+ */
+
+#include "zynqmp-sm-k26-revA.dts"
+
+/ {
+       model = "ZynqMP SMK-K26 Rev1/B/A";
+       compatible = "xlnx,zynqmp-smk-k26-rev1", "xlnx,zynqmp-smk-k26-revB",
+                    "xlnx,zynqmp-smk-k26-revA", "xlnx,zynqmp-smk-k26",
+                    "xlnx,zynqmp";
+};
+
+&sdhci0 {
+       status = "disabled";
+};
index 2e05fa4..f159852 100644 (file)
@@ -2,7 +2,7 @@
 /*
  * dts file for Xilinx ZynqMP ZC1232
  *
- * (C) Copyright 2017 - 2019, Xilinx, Inc.
+ * (C) Copyright 2017 - 2021, Xilinx, Inc.
  *
  * Michal Simek <michal.simek@xilinx.com>
  */
@@ -19,6 +19,7 @@
        aliases {
                serial0 = &uart0;
                serial1 = &dcc;
+               spi0 = &qspi;
        };
 
        chosen {
        status = "okay";
 };
 
+&qspi {
+       status = "okay";
+       flash@0 {
+               compatible = "m25p80", "jedec,spi-nor"; /* 32MB */
+               #address-cells = <1>;
+               #size-cells = <1>;
+               reg = <0x0>;
+               spi-tx-bus-width = <1>;
+               spi-rx-bus-width = <4>;
+               spi-max-frequency = <108000000>; /* Based on DC1 spec */
+       };
+};
+
 &sata {
        status = "okay";
        /* SATA OOB timing settings */
index 3d0aaa0..04efa16 100644 (file)
@@ -2,7 +2,7 @@
 /*
  * dts file for Xilinx ZynqMP ZC1254
  *
- * (C) Copyright 2015 - 2019, Xilinx, Inc.
+ * (C) Copyright 2015 - 2021, Xilinx, Inc.
  *
  * Michal Simek <michal.simek@xilinx.com>
  * Siva Durga Prasad Paladugu <sivadur@xilinx.com>
@@ -20,6 +20,7 @@
        aliases {
                serial0 = &uart0;
                serial1 = &dcc;
+               spi0 = &qspi;
        };
 
        chosen {
        status = "okay";
 };
 
+&qspi {
+       status = "okay";
+       flash@0 {
+               compatible = "m25p80", "jedec,spi-nor"; /* 32MB */
+               #address-cells = <1>;
+               #size-cells = <1>;
+               reg = <0x0>;
+               spi-tx-bus-width = <1>;
+               spi-rx-bus-width = <4>; /* FIXME also DUAL configuration possible */
+               spi-max-frequency = <108000000>; /* Based on DC1 spec */
+       };
+};
+
 &uart0 {
        status = "okay";
 };
index 66a9048..e971ba8 100644 (file)
@@ -2,7 +2,7 @@
 /*
  * dts file for Xilinx ZynqMP ZC1275
  *
- * (C) Copyright 2017 - 2019, Xilinx, Inc.
+ * (C) Copyright 2017 - 2021, Xilinx, Inc.
  *
  * Michal Simek <michal.simek@xilinx.com>
  * Siva Durga Prasad Paladugu <sivadur@xilinx.com>
@@ -20,6 +20,7 @@
        aliases {
                serial0 = &uart0;
                serial1 = &dcc;
+               spi0 = &qspi;
        };
 
        chosen {
        status = "okay";
 };
 
+&gpio {
+       status = "okay";
+};
+
+&qspi {
+       status = "okay";
+       flash@0 {
+               compatible = "m25p80", "jedec,spi-nor";
+               reg = <0x0>;
+               spi-tx-bus-width = <1>;
+               spi-rx-bus-width = <4>;
+               spi-max-frequency = <108000000>;
+       };
+};
+
 &uart0 {
        status = "okay";
 };
index 69f6e46..b05be25 100644 (file)
@@ -2,7 +2,7 @@
 /*
  * dts file for Xilinx ZynqMP zc1751-xm015-dc1
  *
- * (C) Copyright 2015 - 2019, Xilinx, Inc.
+ * (C) Copyright 2015 - 2021, Xilinx, Inc.
  *
  * Michal Simek <michal.simek@xilinx.com>
  */
@@ -11,7 +11,9 @@
 
 #include "zynqmp.dtsi"
 #include "zynqmp-clk-ccf.dtsi"
+#include <dt-bindings/phy/phy.h>
 #include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/pinctrl/pinctrl-zynqmp.h>
 
 / {
        model = "ZynqMP zc1751-xm015-dc1 RevA";
@@ -24,6 +26,8 @@
                mmc1 = &sdhci1;
                rtc0 = &rtc;
                serial0 = &uart0;
+               spi0 = &qspi;
+               usb0 = &usb0;
        };
 
        chosen {
                device_type = "memory";
                reg = <0x0 0x0 0x0 0x80000000>, <0x8 0x00000000 0x0 0x80000000>;
        };
+
+       clock_si5338_0: clk27 { /* u55 SI5338-GM */
+               compatible = "fixed-clock";
+               #clock-cells = <0>;
+               clock-frequency = <27000000>;
+       };
+
+       clock_si5338_2: clk26 {
+               compatible = "fixed-clock";
+               #clock-cells = <0>;
+               clock-frequency = <26000000>;
+       };
+
+       clock_si5338_3: clk150 {
+               compatible = "fixed-clock";
+               #clock-cells = <0>;
+               clock-frequency = <150000000>;
+       };
 };
 
 &fpd_dma_chan1 {
@@ -73,6 +95,8 @@
        status = "okay";
        phy-handle = <&phy0>;
        phy-mode = "rgmii-id";
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_gem3_default>;
        phy0: ethernet-phy@0 {
                reg = <0>;
        };
 
 &gpio {
        status = "okay";
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_gpio_default>;
 };
 
 
 &i2c1 {
        status = "okay";
        clock-frequency = <400000>;
+       pinctrl-names = "default", "gpio";
+       pinctrl-0 = <&pinctrl_i2c1_default>;
+       pinctrl-1 = <&pinctrl_i2c1_gpio>;
+       scl-gpios = <&gpio 36 GPIO_ACTIVE_HIGH>;
+       sda-gpios = <&gpio 37 GPIO_ACTIVE_HIGH>;
 
        eeprom: eeprom@55 {
                compatible = "atmel,24c64"; /* 24AA64 */
        };
 };
 
+&pinctrl0 {
+       status = "okay";
+       pinctrl_i2c1_default: i2c1-default {
+               mux {
+                       groups = "i2c1_9_grp";
+                       function = "i2c1";
+               };
+
+               conf {
+                       groups = "i2c1_9_grp";
+                       bias-pull-up;
+                       slew-rate = <SLEW_RATE_SLOW>;
+                       power-source = <IO_STANDARD_LVCMOS18>;
+               };
+       };
+
+       pinctrl_i2c1_gpio: i2c1-gpio {
+               mux {
+                       groups = "gpio0_36_grp", "gpio0_37_grp";
+                       function = "gpio0";
+               };
+
+               conf {
+                       groups = "gpio0_36_grp", "gpio0_37_grp";
+                       slew-rate = <SLEW_RATE_SLOW>;
+                       power-source = <IO_STANDARD_LVCMOS18>;
+               };
+       };
+
+       pinctrl_uart0_default: uart0-default {
+               mux {
+                       groups = "uart0_8_grp";
+                       function = "uart0";
+               };
+
+               conf {
+                       groups = "uart0_8_grp";
+                       slew-rate = <SLEW_RATE_SLOW>;
+                       power-source = <IO_STANDARD_LVCMOS18>;
+               };
+
+               conf-rx {
+                       pins = "MIO34";
+                       bias-high-impedance;
+               };
+
+               conf-tx {
+                       pins = "MIO35";
+                       bias-disable;
+               };
+       };
+
+       pinctrl_usb0_default: usb0-default {
+               mux {
+                       groups = "usb0_0_grp";
+                       function = "usb0";
+               };
+
+               conf {
+                       groups = "usb0_0_grp";
+                       slew-rate = <SLEW_RATE_SLOW>;
+                       power-source = <IO_STANDARD_LVCMOS18>;
+               };
+
+               conf-rx {
+                       pins = "MIO52", "MIO53", "MIO55";
+                       bias-high-impedance;
+               };
+
+               conf-tx {
+                       pins = "MIO54", "MIO56", "MIO57", "MIO58", "MIO59",
+                              "MIO60", "MIO61", "MIO62", "MIO63";
+                       bias-disable;
+               };
+       };
+
+       pinctrl_gem3_default: gem3-default {
+               mux {
+                       function = "ethernet3";
+                       groups = "ethernet3_0_grp";
+               };
+
+               conf {
+                       groups = "ethernet3_0_grp";
+                       slew-rate = <SLEW_RATE_SLOW>;
+                       power-source = <IO_STANDARD_LVCMOS18>;
+               };
+
+               conf-rx {
+                       pins = "MIO70", "MIO71", "MIO72", "MIO73", "MIO74",
+                                                                       "MIO75";
+                       bias-high-impedance;
+                       low-power-disable;
+               };
+
+               conf-tx {
+                       pins = "MIO64", "MIO65", "MIO66", "MIO67", "MIO68",
+                                                                       "MIO69";
+                       bias-disable;
+                       low-power-enable;
+               };
+
+               mux-mdio {
+                       function = "mdio3";
+                       groups = "mdio3_0_grp";
+               };
+
+               conf-mdio {
+                       groups = "mdio3_0_grp";
+                       slew-rate = <SLEW_RATE_SLOW>;
+                       power-source = <IO_STANDARD_LVCMOS18>;
+                       bias-disable;
+               };
+       };
+
+       pinctrl_sdhci0_default: sdhci0-default {
+               mux {
+                       groups = "sdio0_0_grp";
+                       function = "sdio0";
+               };
+
+               conf {
+                       groups = "sdio0_0_grp";
+                       slew-rate = <SLEW_RATE_SLOW>;
+                       power-source = <IO_STANDARD_LVCMOS18>;
+                       bias-disable;
+               };
+
+               mux-cd {
+                       groups = "sdio0_cd_0_grp";
+                       function = "sdio0_cd";
+               };
+
+               conf-cd {
+                       groups = "sdio0_cd_0_grp";
+                       bias-high-impedance;
+                       bias-pull-up;
+                       slew-rate = <SLEW_RATE_SLOW>;
+                       power-source = <IO_STANDARD_LVCMOS18>;
+               };
+
+               mux-wp {
+                       groups = "sdio0_wp_0_grp";
+                       function = "sdio0_wp";
+               };
+
+               conf-wp {
+                       groups = "sdio0_wp_0_grp";
+                       bias-high-impedance;
+                       bias-pull-up;
+                       slew-rate = <SLEW_RATE_SLOW>;
+                       power-source = <IO_STANDARD_LVCMOS18>;
+               };
+       };
+
+       pinctrl_sdhci1_default: sdhci1-default {
+               mux {
+                       groups = "sdio1_0_grp";
+                       function = "sdio1";
+               };
+
+               conf {
+                       groups = "sdio1_0_grp";
+                       slew-rate = <SLEW_RATE_SLOW>;
+                       power-source = <IO_STANDARD_LVCMOS18>;
+                       bias-disable;
+               };
+
+               mux-cd {
+                       groups = "sdio1_cd_0_grp";
+                       function = "sdio1_cd";
+               };
+
+               conf-cd {
+                       groups = "sdio1_cd_0_grp";
+                       bias-high-impedance;
+                       bias-pull-up;
+                       slew-rate = <SLEW_RATE_SLOW>;
+                       power-source = <IO_STANDARD_LVCMOS18>;
+               };
+
+               mux-wp {
+                       groups = "sdio1_wp_0_grp";
+                       function = "sdio1_wp";
+               };
+
+               conf-wp {
+                       groups = "sdio1_wp_0_grp";
+                       bias-high-impedance;
+                       bias-pull-up;
+                       slew-rate = <SLEW_RATE_SLOW>;
+                       power-source = <IO_STANDARD_LVCMOS18>;
+               };
+       };
+
+       pinctrl_gpio_default: gpio-default {
+               mux {
+                       function = "gpio0";
+                       groups = "gpio0_38_grp";
+               };
+
+               conf {
+                       groups = "gpio0_38_grp";
+                       bias-disable;
+                       slew-rate = <SLEW_RATE_SLOW>;
+                       power-source = <IO_STANDARD_LVCMOS18>;
+               };
+       };
+};
+
+&psgtr {
+       status = "okay";
+       /* dp, usb3, sata */
+       clocks = <&clock_si5338_0>, <&clock_si5338_2>, <&clock_si5338_3>;
+       clock-names = "ref1", "ref2", "ref3";
+};
+
+&qspi {
+       status = "okay";
+       flash@0 {
+               compatible = "m25p80", "jedec,spi-nor"; /* Micron MT25QU512ABB8ESF */
+               #address-cells = <1>;
+               #size-cells = <1>;
+               reg = <0x0>;
+               spi-tx-bus-width = <1>;
+               spi-rx-bus-width = <4>;
+               spi-max-frequency = <108000000>; /* Based on DC1 spec */
+       };
+};
+
 &rtc {
        status = "okay";
 };
        ceva,p1-comwake-params = /bits/ 8 <0x06 0x19 0x08 0x0E>;
        ceva,p1-burst-params = /bits/ 8 <0x13 0x08 0x4A 0x06>;
        ceva,p1-retry-params = /bits/ 16 <0x96A4 0x3FFC>;
+       phy-names = "sata-phy";
+       phys = <&psgtr 3 PHY_TYPE_SATA 1 3>;
 };
 
 /* eMMC */
 &sdhci0 {
        status = "okay";
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_sdhci0_default>;
        bus-width = <8>;
+       xlnx,mio-bank = <0>;
 };
 
 /* SD1 with level shifter */
 &sdhci1 {
        status = "okay";
+       /*
+        * This property should be removed for supporting UHS mode
+        */
+       no-1-8-v;
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_sdhci1_default>;
+       xlnx,mio-bank = <1>;
 };
 
 &uart0 {
        status = "okay";
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_uart0_default>;
 };
 
 /* ULPI SMSC USB3320 */
 &usb0 {
        status = "okay";
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_usb0_default>;
+       phy-names = "usb3-phy";
+       phys = <&psgtr 2 PHY_TYPE_USB3 0 2>;
+};
+
+&dwc3_0 {
+       status = "okay";
        dr_mode = "host";
+       snps,usb3_lpm_capable;
+       maximum-speed = "super-speed";
+};
+
+&zynqmp_dpdma {
+       status = "okay";
+};
+
+&zynqmp_dpsub {
+       status = "okay";
+       phy-names = "dp-phy0", "dp-phy1";
+       phys = <&psgtr 1 PHY_TYPE_DP 0 0>,
+              <&psgtr 0 PHY_TYPE_DP 1 1>;
 };
index 4a86efa..938b76b 100644 (file)
@@ -2,7 +2,7 @@
 /*
  * dts file for Xilinx ZynqMP zc1751-xm016-dc2
  *
- * (C) Copyright 2015 - 2019, Xilinx, Inc.
+ * (C) Copyright 2015 - 2021, Xilinx, Inc.
  *
  * Michal Simek <michal.simek@xilinx.com>
  */
 #include "zynqmp.dtsi"
 #include "zynqmp-clk-ccf.dtsi"
 #include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/pinctrl/pinctrl-zynqmp.h>
 
 / {
        model = "ZynqMP zc1751-xm016-dc2 RevA";
        compatible = "xlnx,zynqmp-zc1751", "xlnx,zynqmp";
 
        aliases {
-               can0 = &can0;
-               can1 = &can1;
                ethernet0 = &gem2;
                i2c0 = &i2c0;
                rtc0 = &rtc;
@@ -27,6 +26,7 @@
                serial1 = &uart1;
                spi0 = &spi0;
                spi1 = &spi1;
+               usb0 = &usb1;
        };
 
        chosen {
 
 &can0 {
        status = "okay";
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_can0_default>;
 };
 
 &can1 {
        status = "okay";
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_can1_default>;
 };
 
 &fpd_dma_chan1 {
@@ -84,6 +88,8 @@
        status = "okay";
        phy-handle = <&phy0>;
        phy-mode = "rgmii-id";
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_gem2_default>;
        phy0: ethernet-phy@5 {
                reg = <5>;
                ti,rx-internal-delay = <0x8>;
 &i2c0 {
        status = "okay";
        clock-frequency = <400000>;
+       pinctrl-names = "default", "gpio";
+       pinctrl-0 = <&pinctrl_i2c0_default>;
+       pinctrl-1 = <&pinctrl_i2c0_gpio>;
+       scl-gpios = <&gpio 6 GPIO_ACTIVE_HIGH>;
+       sda-gpios = <&gpio 7 GPIO_ACTIVE_HIGH>;
 
        tca6416_u26: gpio@20 {
                compatible = "ti,tca6416";
        };
 };
 
+&nand0 {
+       status = "okay";
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_nand0_default>;
+       arasan,has-mdma;
+
+       nand@0 {
+               reg = <0x0>;
+               #address-cells = <0x2>;
+               #size-cells = <0x1>;
+               nand-ecc-mode = "soft";
+               nand-ecc-algo = "bch";
+               nand-rb = <0>;
+               label = "main-storage-0";
+       };
+       nand@1 {
+               reg = <0x1>;
+               #address-cells = <0x2>;
+               #size-cells = <0x1>;
+               nand-ecc-mode = "soft";
+               nand-ecc-algo = "bch";
+               nand-rb = <0>;
+               label = "main-storage-1";
+       };
+};
+
+&pinctrl0 {
+       status = "okay";
+       pinctrl_can0_default: can0-default {
+               mux {
+                       function = "can0";
+                       groups = "can0_9_grp";
+               };
+
+               conf {
+                       groups = "can0_9_grp";
+                       slew-rate = <SLEW_RATE_SLOW>;
+                       power-source = <IO_STANDARD_LVCMOS18>;
+               };
+
+               conf-rx {
+                       pins = "MIO38";
+                       bias-high-impedance;
+               };
+
+               conf-tx {
+                       pins = "MIO39";
+                       bias-disable;
+               };
+       };
+
+       pinctrl_can1_default: can1-default {
+               mux {
+                       function = "can1";
+                       groups = "can1_8_grp";
+               };
+
+               conf {
+                       groups = "can1_8_grp";
+                       slew-rate = <SLEW_RATE_SLOW>;
+                       power-source = <IO_STANDARD_LVCMOS18>;
+               };
+
+               conf-rx {
+                       pins = "MIO33";
+                       bias-high-impedance;
+               };
+
+               conf-tx {
+                       pins = "MIO32";
+                       bias-disable;
+               };
+       };
+
+       pinctrl_i2c0_default: i2c0-default {
+               mux {
+                       groups = "i2c0_1_grp";
+                       function = "i2c0";
+               };
+
+               conf {
+                       groups = "i2c0_1_grp";
+                       bias-pull-up;
+                       slew-rate = <SLEW_RATE_SLOW>;
+                       power-source = <IO_STANDARD_LVCMOS18>;
+               };
+       };
+
+       pinctrl_i2c0_gpio: i2c0-gpio {
+               mux {
+                       groups = "gpio0_6_grp", "gpio0_7_grp";
+                       function = "gpio0";
+               };
+
+               conf {
+                       groups = "gpio0_6_grp", "gpio0_7_grp";
+                       slew-rate = <SLEW_RATE_SLOW>;
+                       power-source = <IO_STANDARD_LVCMOS18>;
+               };
+       };
+
+       pinctrl_uart0_default: uart0-default {
+               mux {
+                       groups = "uart0_10_grp";
+                       function = "uart0";
+               };
+
+               conf {
+                       groups = "uart0_10_grp";
+                       slew-rate = <SLEW_RATE_SLOW>;
+                       power-source = <IO_STANDARD_LVCMOS18>;
+               };
+
+               conf-rx {
+                       pins = "MIO42";
+                       bias-high-impedance;
+               };
+
+               conf-tx {
+                       pins = "MIO43";
+                       bias-disable;
+               };
+       };
+
+       pinctrl_uart1_default: uart1-default {
+               mux {
+                       groups = "uart1_10_grp";
+                       function = "uart1";
+               };
+
+               conf {
+                       groups = "uart1_10_grp";
+                       slew-rate = <SLEW_RATE_SLOW>;
+                       power-source = <IO_STANDARD_LVCMOS18>;
+               };
+
+               conf-rx {
+                       pins = "MIO41";
+                       bias-high-impedance;
+               };
+
+               conf-tx {
+                       pins = "MIO40";
+                       bias-disable;
+               };
+       };
+
+       pinctrl_usb1_default: usb1-default {
+               mux {
+                       groups = "usb1_0_grp";
+                       function = "usb1";
+               };
+
+               conf {
+                       groups = "usb1_0_grp";
+                       slew-rate = <SLEW_RATE_SLOW>;
+                       power-source = <IO_STANDARD_LVCMOS18>;
+               };
+
+               conf-rx {
+                       pins = "MIO64", "MIO65", "MIO67";
+                       bias-high-impedance;
+               };
+
+               conf-tx {
+                       pins = "MIO66", "MIO68", "MIO69", "MIO70", "MIO71",
+                              "MIO72", "MIO73", "MIO74", "MIO75";
+                       bias-disable;
+               };
+       };
+
+       pinctrl_gem2_default: gem2-default {
+               mux {
+                       function = "ethernet2";
+                       groups = "ethernet2_0_grp";
+               };
+
+               conf {
+                       groups = "ethernet2_0_grp";
+                       slew-rate = <SLEW_RATE_SLOW>;
+                       power-source = <IO_STANDARD_LVCMOS18>;
+               };
+
+               conf-rx {
+                       pins = "MIO58", "MIO59", "MIO60", "MIO61", "MIO62",
+                                                                       "MIO63";
+                       bias-high-impedance;
+                       low-power-disable;
+               };
+
+               conf-tx {
+                       pins = "MIO52", "MIO53", "MIO54", "MIO55", "MIO56",
+                                                                       "MIO57";
+                       bias-disable;
+                       low-power-enable;
+               };
+
+               mux-mdio {
+                       function = "mdio2";
+                       groups = "mdio2_0_grp";
+               };
+
+               conf-mdio {
+                       groups = "mdio2_0_grp";
+                       slew-rate = <SLEW_RATE_SLOW>;
+                       power-source = <IO_STANDARD_LVCMOS18>;
+                       bias-disable;
+               };
+       };
+
+       pinctrl_nand0_default: nand0-default {
+               mux {
+                       groups = "nand0_0_grp";
+                       function = "nand0";
+               };
+
+               conf {
+                       groups = "nand0_0_grp";
+                       bias-pull-up;
+               };
+
+               mux-ce {
+                       groups = "nand0_ce_0_grp";
+                       function = "nand0_ce";
+               };
+
+               conf-ce {
+                       groups = "nand0_ce_0_grp";
+                       bias-pull-up;
+               };
+
+               mux-rb {
+                       groups = "nand0_rb_0_grp";
+                       function = "nand0_rb";
+               };
+
+               conf-rb {
+                       groups = "nand0_rb_0_grp";
+                       bias-pull-up;
+               };
+
+               mux-dqs {
+                       groups = "nand0_dqs_0_grp";
+                       function = "nand0_dqs";
+               };
+
+               conf-dqs {
+                       groups = "nand0_dqs_0_grp";
+                       bias-pull-up;
+               };
+       };
+
+       pinctrl_spi0_default: spi0-default {
+               mux {
+                       groups = "spi0_0_grp";
+                       function = "spi0";
+               };
+
+               conf {
+                       groups = "spi0_0_grp";
+                       bias-disable;
+                       slew-rate = <SLEW_RATE_SLOW>;
+                       power-source = <IO_STANDARD_LVCMOS18>;
+               };
+
+               mux-cs {
+                       groups = "spi0_ss_0_grp", "spi0_ss_1_grp",
+                                                       "spi0_ss_2_grp";
+                       function = "spi0_ss";
+               };
+
+               conf-cs {
+                       groups = "spi0_ss_0_grp", "spi0_ss_1_grp",
+                                                       "spi0_ss_2_grp";
+                       bias-disable;
+               };
+       };
+
+       pinctrl_spi1_default: spi1-default {
+               mux {
+                       groups = "spi1_3_grp";
+                       function = "spi1";
+               };
+
+               conf {
+                       groups = "spi1_3_grp";
+                       bias-disable;
+                       slew-rate = <SLEW_RATE_SLOW>;
+                       power-source = <IO_STANDARD_LVCMOS18>;
+               };
+
+               mux-cs {
+                       groups = "spi1_ss_9_grp", "spi1_ss_10_grp",
+                                                       "spi1_ss_11_grp";
+                       function = "spi1_ss";
+               };
+
+               conf-cs {
+                       groups = "spi1_ss_9_grp", "spi1_ss_10_grp",
+                                                       "spi1_ss_11_grp";
+                       bias-disable;
+               };
+       };
+};
+
 &rtc {
        status = "okay";
 };
 &spi0 {
        status = "okay";
        num-cs = <1>;
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_spi0_default>;
 
        spi0_flash0: flash@0 {
                #address-cells = <1>;
                reg = <0>;
 
                partition@0 {
-                       label = "data";
+                       label = "spi0-data";
                        reg = <0x0 0x100000>;
                };
        };
 &spi1 {
        status = "okay";
        num-cs = <1>;
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_spi1_default>;
 
        spi1_flash0: flash@0 {
                #address-cells = <1>;
                reg = <0>;
 
                partition@0 {
-                       label = "data";
+                       label = "spi1-data";
                        reg = <0x0 0x84000>;
                };
        };
 /* ULPI SMSC USB3320 */
 &usb1 {
        status = "okay";
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_usb1_default>;
+};
+
+&dwc3_1 {
+       status = "okay";
        dr_mode = "host";
+       snps,usb3_lpm_capable;
+       maximum-speed = "super-speed";
 };
 
 &uart0 {
        status = "okay";
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_uart0_default>;
 };
 
 &uart1 {
        status = "okay";
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_uart1_default>;
 };
index 4ea6ef5..381cc68 100644 (file)
@@ -2,7 +2,7 @@
 /*
  * dts file for Xilinx ZynqMP zc1751-xm017-dc3
  *
- * (C) Copyright 2016 - 2019, Xilinx, Inc.
+ * (C) Copyright 2016 - 2021, Xilinx, Inc.
  *
  * Michal Simek <michal.simek@xilinx.com>
  */
@@ -11,6 +11,7 @@
 
 #include "zynqmp.dtsi"
 #include "zynqmp-clk-ccf.dtsi"
+#include <dt-bindings/phy/phy.h>
 
 / {
        model = "ZynqMP zc1751-xm017-dc3 RevA";
@@ -24,6 +25,8 @@
                rtc0 = &rtc;
                serial0 = &uart0;
                serial1 = &uart1;
+               usb0 = &usb0;
+               usb1 = &usb1;
        };
 
        chosen {
                device_type = "memory";
                reg = <0x0 0x0 0x0 0x80000000>, <0x8 0x00000000 0x0 0x80000000>;
        };
+
+       clock_si5338_2: clk26 {
+               compatible = "fixed-clock";
+               #clock-cells = <0>;
+               clock-frequency = <26000000>;
+       };
+
+       clock_si5338_3: clk125 {
+               compatible = "fixed-clock";
+               #clock-cells = <0>;
+               clock-frequency = <125000000>;
+       };
 };
 
 &fpd_dma_chan1 {
        clock-frequency = <400000>;
 };
 
+/* MT29F64G08AECDBJ4-6 */
+&nand0 {
+       status = "okay";
+       arasan,has-mdma;
+       num-cs = <2>;
+};
+
+&psgtr {
+       status = "okay";
+       /* usb3, sata */
+       clocks = <&clock_si5338_2>, <&clock_si5338_3>;
+       clock-names = "ref2", "ref3";
+};
+
 &rtc {
        status = "okay";
 };
        ceva,p1-comwake-params = /bits/ 8 <0x06 0x19 0x08 0x0E>;
        ceva,p1-burst-params = /bits/ 8 <0x13 0x08 0x4A 0x06>;
        ceva,p1-retry-params = /bits/ 16 <0x96A4 0x3FFC>;
+       phy-names = "sata-phy";
+       phys = <&psgtr 2 PHY_TYPE_SATA 0 3>;
 };
 
 &sdhci1 { /* emmc with some settings */
 
 &usb0 {
        status = "okay";
+       phy-names = "usb3-phy";
+       phys = <&psgtr 0 PHY_TYPE_USB3 0 2>;
+};
+
+&dwc3_0 {
+       status = "okay";
        dr_mode = "host";
+       snps,usb3_lpm_capable;
+       maximum-speed = "super-speed";
 };
 
 /* ULPI SMSC USB3320 */
 &usb1 {
        status = "okay";
+       phy-names = "usb3-phy";
+       phys = <&psgtr 3 PHY_TYPE_USB3 1 2>;
+};
+
+&dwc3_1 {
+       status = "okay";
        dr_mode = "host";
+       snps,usb3_lpm_capable;
+       maximum-speed = "super-speed";
 };
index 2366cd9..05a2b79 100644 (file)
@@ -2,7 +2,7 @@
 /*
  * dts file for Xilinx ZynqMP zc1751-xm018-dc4
  *
- * (C) Copyright 2015 - 2019, Xilinx, Inc.
+ * (C) Copyright 2015 - 2021, Xilinx, Inc.
  *
  * Michal Simek <michal.simek@xilinx.com>
  */
@@ -26,6 +26,7 @@
                rtc0 = &rtc;
                serial0 = &uart0;
                serial1 = &uart1;
+               spi0 = &qspi;
        };
 
        chosen {
        status = "okay";
 };
 
+&qspi {
+       status = "okay";
+       flash@0 {
+               compatible = "m25p80", "jedec,spi-nor"; /* 32MB */
+               #address-cells = <1>;
+               #size-cells = <1>;
+               reg = <0x0>;
+               spi-tx-bus-width = <1>;
+               spi-rx-bus-width = <4>; /* also DUAL configuration possible */
+               spi-max-frequency = <108000000>; /* Based on DC1 spec */
+       };
+};
+
 &rtc {
        status = "okay";
 };
 &watchdog0 {
        status = "okay";
 };
+
+&zynqmp_dpdma {
+       status = "okay";
+};
+
+&zynqmp_dpsub {
+       status = "okay";
+};
index 41934e3..ae2d03d 100644 (file)
@@ -2,7 +2,7 @@
 /*
  * dts file for Xilinx ZynqMP zc1751-xm019-dc5
  *
- * (C) Copyright 2015 - 2019, Xilinx, Inc.
+ * (C) Copyright 2015 - 2021, Xilinx, Inc.
  *
  * Siva Durga Prasad <siva.durga.paladugu@xilinx.com>
  * Michal Simek <michal.simek@xilinx.com>
@@ -13,6 +13,7 @@
 #include "zynqmp.dtsi"
 #include "zynqmp-clk-ccf.dtsi"
 #include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/pinctrl/pinctrl-zynqmp.h>
 
 / {
        model = "ZynqMP zc1751-xm019-dc5 RevA";
@@ -74,6 +75,8 @@
        status = "okay";
        phy-handle = <&phy0>;
        phy-mode = "rgmii-id";
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_gem1_default>;
        phy0: ethernet-phy@0 {
                reg = <0>;
        };
 
 &i2c0 {
        status = "okay";
+       pinctrl-names = "default", "gpio";
+       pinctrl-0 = <&pinctrl_i2c0_default>;
+       pinctrl-1 = <&pinctrl_i2c0_gpio>;
+       scl-gpios = <&gpio 74 GPIO_ACTIVE_HIGH>;
+       sda-gpios = <&gpio 75 GPIO_ACTIVE_HIGH>;
 };
 
 &i2c1 {
        status = "okay";
+       pinctrl-names = "default", "gpio";
+       pinctrl-0 = <&pinctrl_i2c1_default>;
+       pinctrl-1 = <&pinctrl_i2c1_gpio>;
+       scl-gpios = <&gpio 76 GPIO_ACTIVE_HIGH>;
+       sda-gpios = <&gpio 77 GPIO_ACTIVE_HIGH>;
+
+};
+
+&pinctrl0 {
+       status = "okay";
+       pinctrl_i2c0_default: i2c0-default {
+               mux {
+                       groups = "i2c0_18_grp";
+                       function = "i2c0";
+               };
+
+               conf {
+                       groups = "i2c0_18_grp";
+                       bias-pull-up;
+                       slew-rate = <SLEW_RATE_SLOW>;
+                       power-source = <IO_STANDARD_LVCMOS18>;
+               };
+       };
+
+       pinctrl_i2c0_gpio: i2c0-gpio {
+               mux {
+                       groups = "gpio0_74_grp", "gpio0_75_grp";
+                       function = "gpio0";
+               };
+
+               conf {
+                       groups = "gpio0_74_grp", "gpio0_75_grp";
+                       slew-rate = <SLEW_RATE_SLOW>;
+                       power-source = <IO_STANDARD_LVCMOS18>;
+               };
+       };
+
+       pinctrl_i2c1_default: i2c1-default {
+               mux {
+                       groups = "i2c1_19_grp";
+                       function = "i2c1";
+               };
+
+               conf {
+                       groups = "i2c1_19_grp";
+                       bias-pull-up;
+                       slew-rate = <SLEW_RATE_SLOW>;
+                       power-source = <IO_STANDARD_LVCMOS18>;
+               };
+       };
+
+       pinctrl_i2c1_gpio: i2c1-gpio {
+               mux {
+                       groups = "gpio0_76_grp", "gpio0_77_grp";
+                       function = "gpio0";
+               };
+
+               conf {
+                       groups = "gpio0_76_grp", "gpio0_77_grp";
+                       slew-rate = <SLEW_RATE_SLOW>;
+                       power-source = <IO_STANDARD_LVCMOS18>;
+               };
+       };
+
+       pinctrl_uart0_default: uart0-default {
+               mux {
+                       groups = "uart0_17_grp";
+                       function = "uart0";
+               };
+
+               conf {
+                       groups = "uart0_17_grp";
+                       slew-rate = <SLEW_RATE_SLOW>;
+                       power-source = <IO_STANDARD_LVCMOS18>;
+               };
+
+               conf-rx {
+                       pins = "MIO70";
+                       bias-high-impedance;
+               };
+
+               conf-tx {
+                       pins = "MIO71";
+                       bias-disable;
+               };
+       };
+
+       pinctrl_uart1_default: uart1-default {
+               mux {
+                       groups = "uart1_18_grp";
+                       function = "uart1";
+               };
+
+               conf {
+                       groups = "uart1_18_grp";
+                       slew-rate = <SLEW_RATE_SLOW>;
+                       power-source = <IO_STANDARD_LVCMOS18>;
+               };
+
+               conf-rx {
+                       pins = "MIO73";
+                       bias-high-impedance;
+               };
+
+               conf-tx {
+                       pins = "MIO72";
+                       bias-disable;
+               };
+       };
+
+       pinctrl_gem1_default: gem1-default {
+               mux {
+                       function = "ethernet1";
+                       groups = "ethernet1_0_grp";
+               };
+
+               conf {
+                       groups = "ethernet1_0_grp";
+                       slew-rate = <SLEW_RATE_SLOW>;
+                       power-source = <IO_STANDARD_LVCMOS18>;
+               };
+
+               conf-rx {
+                       pins = "MIO44", "MIO45", "MIO46", "MIO47", "MIO48",
+                                                                       "MIO49";
+                       bias-high-impedance;
+                       low-power-disable;
+               };
+
+               conf-tx {
+                       pins = "MIO38", "MIO39", "MIO40", "MIO41", "MIO42",
+                                                                       "MIO43";
+                       bias-disable;
+                       low-power-enable;
+               };
+
+               mux-mdio {
+                       function = "mdio1";
+                       groups = "mdio1_0_grp";
+               };
+
+               conf-mdio {
+                       groups = "mdio1_0_grp";
+                       slew-rate = <SLEW_RATE_SLOW>;
+                       power-source = <IO_STANDARD_LVCMOS18>;
+                       bias-disable;
+               };
+       };
+
+       pinctrl_sdhci0_default: sdhci0-default {
+               mux {
+                       groups = "sdio0_0_grp";
+                       function = "sdio0";
+               };
+
+               conf {
+                       groups = "sdio0_0_grp";
+                       slew-rate = <SLEW_RATE_SLOW>;
+                       power-source = <IO_STANDARD_LVCMOS18>;
+                       bias-disable;
+               };
+
+               mux-cd {
+                       groups = "sdio0_cd_0_grp";
+                       function = "sdio0_cd";
+               };
+
+               conf-cd {
+                       groups = "sdio0_cd_0_grp";
+                       bias-high-impedance;
+                       bias-pull-up;
+                       slew-rate = <SLEW_RATE_SLOW>;
+                       power-source = <IO_STANDARD_LVCMOS18>;
+               };
+
+               mux-wp {
+                       groups = "sdio0_wp_0_grp";
+                       function = "sdio0_wp";
+               };
+
+               conf-wp {
+                       groups = "sdio0_wp_0_grp";
+                       bias-high-impedance;
+                       bias-pull-up;
+                       slew-rate = <SLEW_RATE_SLOW>;
+                       power-source = <IO_STANDARD_LVCMOS18>;
+               };
+       };
+
+       pinctrl_watchdog0_default: watchdog0-default {
+               mux-clk {
+                       groups = "swdt0_clk_1_grp";
+                       function = "swdt0_clk";
+               };
+
+               conf-clk {
+                       groups = "swdt0_clk_1_grp";
+                       bias-pull-up;
+               };
+
+               mux-rst {
+                       groups = "swdt0_rst_1_grp";
+                       function = "swdt0_rst";
+               };
+
+               conf-rst {
+                       groups = "swdt0_rst_1_grp";
+                       bias-disable;
+                       slew-rate = <SLEW_RATE_SLOW>;
+               };
+       };
+
+       pinctrl_ttc0_default: ttc0-default {
+               mux-clk {
+                       groups = "ttc0_clk_0_grp";
+                       function = "ttc0_clk";
+               };
+
+               conf-clk {
+                       groups = "ttc0_clk_0_grp";
+                       bias-pull-up;
+               };
+
+               mux-wav {
+                       groups = "ttc0_wav_0_grp";
+                       function = "ttc0_wav";
+               };
+
+               conf-wav {
+                       groups = "ttc0_wav_0_grp";
+                       bias-disable;
+                       slew-rate = <SLEW_RATE_SLOW>;
+               };
+       };
+
+       pinctrl_ttc1_default: ttc1-default {
+               mux-clk {
+                       groups = "ttc1_clk_0_grp";
+                       function = "ttc1_clk";
+               };
+
+               conf-clk {
+                       groups = "ttc1_clk_0_grp";
+                       bias-pull-up;
+               };
+
+               mux-wav {
+                       groups = "ttc1_wav_0_grp";
+                       function = "ttc1_wav";
+               };
+
+               conf-wav {
+                       groups = "ttc1_wav_0_grp";
+                       bias-disable;
+                       slew-rate = <SLEW_RATE_SLOW>;
+               };
+       };
+
+       pinctrl_ttc2_default: ttc2-default {
+               mux-clk {
+                       groups = "ttc2_clk_0_grp";
+                       function = "ttc2_clk";
+               };
+
+               conf-clk {
+                       groups = "ttc2_clk_0_grp";
+                       bias-pull-up;
+               };
+
+               mux-wav {
+                       groups = "ttc2_wav_0_grp";
+                       function = "ttc2_wav";
+               };
+
+               conf-wav {
+                       groups = "ttc2_wav_0_grp";
+                       bias-disable;
+                       slew-rate = <SLEW_RATE_SLOW>;
+               };
+       };
+
+       pinctrl_ttc3_default: ttc3-default {
+               mux-clk {
+                       groups = "ttc3_clk_0_grp";
+                       function = "ttc3_clk";
+               };
+
+               conf-clk {
+                       groups = "ttc3_clk_0_grp";
+                       bias-pull-up;
+               };
+
+               mux-wav {
+                       groups = "ttc3_wav_0_grp";
+                       function = "ttc3_wav";
+               };
+
+               conf-wav {
+                       groups = "ttc3_wav_0_grp";
+                       bias-disable;
+                       slew-rate = <SLEW_RATE_SLOW>;
+               };
+       };
 };
 
 &sdhci0 {
        status = "okay";
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_sdhci0_default>;
        no-1-8-v;
+       xlnx,mio-bank = <0>;
 };
 
 &ttc0 {
        status = "okay";
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_ttc0_default>;
 };
 
 &ttc1 {
        status = "okay";
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_ttc1_default>;
 };
 
 &ttc2 {
        status = "okay";
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_ttc2_default>;
 };
 
 &ttc3 {
        status = "okay";
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_ttc3_default>;
 };
 
 &uart0 {
        status = "okay";
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_uart0_default>;
 };
 
 &uart1 {
        status = "okay";
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_uart1_default>;
 };
 
 &watchdog0 {
        status = "okay";
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_watchdog0_default>;
 };
index a53598c..f6aad41 100644 (file)
@@ -2,7 +2,7 @@
 /*
  * dts file for Xilinx ZynqMP ZCU100 revC
  *
- * (C) Copyright 2016 - 2019, Xilinx, Inc.
+ * (C) Copyright 2016 - 2021, Xilinx, Inc.
  *
  * Michal Simek <michal.simek@xilinx.com>
  * Nathalie Chan King Choy
@@ -15,6 +15,7 @@
 #include <dt-bindings/input/input.h>
 #include <dt-bindings/interrupt-controller/irq.h>
 #include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/pinctrl/pinctrl-zynqmp.h>
 #include <dt-bindings/phy/phy.h>
 
 / {
@@ -29,6 +30,8 @@
                serial2 = &dcc;
                spi0 = &spi0;
                spi1 = &spi1;
+               usb0 = &usb0;
+               usb1 = &usb1;
                mmc0 = &sdhci0;
                mmc1 = &sdhci1;
        };
                io-channels = <&u35 0>, <&u35 1>, <&u35 2>, <&u35 3>;
        };
 
-       si5335a_0: clk26 {
+       si5335_0: si5335_0 { /* clk0_usb - u23 */
                compatible = "fixed-clock";
                #clock-cells = <0>;
                clock-frequency = <26000000>;
        };
 
-       si5335a_1: clk27 {
+       si5335_1: si5335_1 { /* clk1_dp - u23 */
                compatible = "fixed-clock";
                #clock-cells = <0>;
                clock-frequency = <27000000>;
 
 &i2c1 {
        status = "okay";
+       pinctrl-names = "default", "gpio";
+       pinctrl-0 = <&pinctrl_i2c1_default>;
+       pinctrl-1 = <&pinctrl_i2c1_gpio>;
+       scl-gpios = <&gpio 4 GPIO_ACTIVE_HIGH>;
+       sda-gpios = <&gpio 5 GPIO_ACTIVE_HIGH>;
        clock-frequency = <100000>;
        i2c-mux@75 { /* u11 */
                compatible = "nxp,pca9548";
        };
 };
 
+&pinctrl0 {
+       status = "okay";
+       pinctrl_i2c1_default: i2c1-default {
+               mux {
+                       groups = "i2c1_1_grp";
+                       function = "i2c1";
+               };
+
+               conf {
+                       groups = "i2c1_1_grp";
+                       bias-pull-up;
+                       slew-rate = <SLEW_RATE_SLOW>;
+                       power-source = <IO_STANDARD_LVCMOS18>;
+               };
+       };
+
+       pinctrl_i2c1_gpio: i2c1-gpio {
+               mux {
+                       groups = "gpio0_4_grp", "gpio0_5_grp";
+                       function = "gpio0";
+               };
+
+               conf {
+                       groups = "gpio0_4_grp", "gpio0_5_grp";
+                       slew-rate = <SLEW_RATE_SLOW>;
+                       power-source = <IO_STANDARD_LVCMOS18>;
+               };
+       };
+
+       pinctrl_sdhci0_default: sdhci0-default {
+               mux {
+                       groups = "sdio0_3_grp";
+                       function = "sdio0";
+               };
+
+               conf {
+                       groups = "sdio0_3_grp";
+                       slew-rate = <SLEW_RATE_SLOW>;
+                       power-source = <IO_STANDARD_LVCMOS18>;
+                       bias-disable;
+               };
+
+               mux-cd {
+                       groups = "sdio0_cd_0_grp";
+                       function = "sdio0_cd";
+               };
+
+               conf-cd {
+                       groups = "sdio0_cd_0_grp";
+                       bias-high-impedance;
+                       bias-pull-up;
+                       slew-rate = <SLEW_RATE_SLOW>;
+                       power-source = <IO_STANDARD_LVCMOS18>;
+               };
+       };
+
+       pinctrl_sdhci1_default: sdhci1-default {
+               mux {
+                       groups = "sdio1_2_grp";
+                       function = "sdio1";
+               };
+
+               conf {
+                       groups = "sdio1_2_grp";
+                       slew-rate = <SLEW_RATE_SLOW>;
+                       power-source = <IO_STANDARD_LVCMOS18>;
+                       bias-disable;
+               };
+       };
+
+       pinctrl_spi0_default: spi0-default {
+               mux {
+                       groups = "spi0_3_grp";
+                       function = "spi0";
+               };
+
+               conf {
+                       groups = "spi0_3_grp";
+                       bias-disable;
+                       slew-rate = <SLEW_RATE_SLOW>;
+                       power-source = <IO_STANDARD_LVCMOS18>;
+               };
+
+               mux-cs {
+                       groups = "spi0_ss_9_grp";
+                       function = "spi0_ss";
+               };
+
+               conf-cs {
+                       groups = "spi0_ss_9_grp";
+                       bias-disable;
+               };
+
+       };
+
+       pinctrl_spi1_default: spi1-default {
+               mux {
+                       groups = "spi1_0_grp";
+                       function = "spi1";
+               };
+
+               conf {
+                       groups = "spi1_0_grp";
+                       bias-disable;
+                       slew-rate = <SLEW_RATE_SLOW>;
+                       power-source = <IO_STANDARD_LVCMOS18>;
+               };
+
+               mux-cs {
+                       groups = "spi1_ss_0_grp";
+                       function = "spi1_ss";
+               };
+
+               conf-cs {
+                       groups = "spi1_ss_0_grp";
+                       bias-disable;
+               };
+
+       };
+
+       pinctrl_uart0_default: uart0-default {
+               mux {
+                       groups = "uart0_0_grp";
+                       function = "uart0";
+               };
+
+               conf {
+                       groups = "uart0_0_grp";
+                       slew-rate = <SLEW_RATE_SLOW>;
+                       power-source = <IO_STANDARD_LVCMOS18>;
+               };
+
+               conf-rx {
+                       pins = "MIO3";
+                       bias-high-impedance;
+               };
+
+               conf-tx {
+                       pins = "MIO2";
+                       bias-disable;
+               };
+       };
+
+       pinctrl_uart1_default: uart1-default {
+               mux {
+                       groups = "uart1_0_grp";
+                       function = "uart1";
+               };
+
+               conf {
+                       groups = "uart1_0_grp";
+                       slew-rate = <SLEW_RATE_SLOW>;
+                       power-source = <IO_STANDARD_LVCMOS18>;
+               };
+
+               conf-rx {
+                       pins = "MIO1";
+                       bias-high-impedance;
+               };
+
+               conf-tx {
+                       pins = "MIO0";
+                       bias-disable;
+               };
+       };
+
+       pinctrl_usb0_default: usb0-default {
+               mux {
+                       groups = "usb0_0_grp";
+                       function = "usb0";
+               };
+
+               conf {
+                       groups = "usb0_0_grp";
+                       slew-rate = <SLEW_RATE_SLOW>;
+                       power-source = <IO_STANDARD_LVCMOS18>;
+               };
+
+               conf-rx {
+                       pins = "MIO52", "MIO53", "MIO55";
+                       bias-high-impedance;
+               };
+
+               conf-tx {
+                       pins = "MIO54", "MIO56", "MIO57", "MIO58", "MIO59",
+                              "MIO60", "MIO61", "MIO62", "MIO63";
+                       bias-disable;
+               };
+       };
+
+       pinctrl_usb1_default: usb1-default {
+               mux {
+                       groups = "usb1_0_grp";
+                       function = "usb1";
+               };
+
+               conf {
+                       groups = "usb1_0_grp";
+                       slew-rate = <SLEW_RATE_SLOW>;
+                       power-source = <IO_STANDARD_LVCMOS18>;
+               };
+
+               conf-rx {
+                       pins = "MIO64", "MIO65", "MIO67";
+                       bias-high-impedance;
+               };
+
+               conf-tx {
+                       pins = "MIO66", "MIO68", "MIO69", "MIO70", "MIO71",
+                              "MIO72", "MIO73", "MIO74", "MIO75";
+                       bias-disable;
+               };
+       };
+};
+
 &psgtr {
        status = "okay";
-       /* usb3, dps */
-       clocks = <&si5335a_0>, <&si5335a_1>;
+       /* usb3, dp */
+       clocks = <&si5335_0>, <&si5335_1>;
        clock-names = "ref0", "ref1";
 };
 
        status = "okay";
        no-1-8-v;
        disable-wp;
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_sdhci0_default>;
        xlnx,mio-bank = <0>;
 };
 
 &sdhci1 {
        status = "okay";
        bus-width = <0x4>;
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_sdhci1_default>;
        xlnx,mio-bank = <0>;
        non-removable;
        disable-wp;
        status = "okay";
        label = "LS-SPI0";
        num-cs = <1>;
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_spi0_default>;
 };
 
 &spi1 { /* High Speed connector */
        status = "okay";
        label = "HS-SPI1";
        num-cs = <1>;
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_spi1_default>;
 };
 
 &uart0 {
        status = "okay";
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_uart0_default>;
        bluetooth {
                compatible = "ti,wl1831-st";
                enable-gpios = <&gpio 8 GPIO_ACTIVE_HIGH>;
 
 &uart1 {
        status = "okay";
-
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_uart1_default>;
 };
 
 /* ULPI SMSC USB3320 */
 &usb0 {
        status = "okay";
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_usb0_default>;
+       phy-names = "usb3-phy";
+       phys = <&psgtr 2 PHY_TYPE_USB3 0 0>;
+};
+
+&dwc3_0 {
+       status = "okay";
        dr_mode = "peripheral";
+       maximum-speed = "super-speed";
 };
 
 /* ULPI SMSC USB3320 */
 &usb1 {
        status = "okay";
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_usb1_default>;
+       phy-names = "usb3-phy";
+       phys = <&psgtr 3 PHY_TYPE_USB3 1 0>;
+};
+
+&dwc3_1 {
+       status = "okay";
        dr_mode = "host";
+       maximum-speed = "super-speed";
 };
 
 &watchdog0 {
diff --git a/arch/arm64/boot/dts/xilinx/zynqmp-zcu102-rev1.1.dts b/arch/arm64/boot/dts/xilinx/zynqmp-zcu102-rev1.1.dts
new file mode 100644 (file)
index 0000000..b679839
--- /dev/null
@@ -0,0 +1,15 @@
+// SPDX-License-Identifier: GPL-2.0+
+/*
+ * dts file for Xilinx ZynqMP ZCU102 Rev1.1
+ *
+ * (C) Copyright 2016 - 2020, Xilinx, Inc.
+ *
+ * Michal Simek <michal.simek@xilinx.com>
+ */
+
+#include "zynqmp-zcu102-rev1.0.dts"
+
+/ {
+       model = "ZynqMP ZCU102 Rev1.1";
+       compatible = "xlnx,zynqmp-zcu102-rev1.1", "xlnx,zynqmp-zcu102", "xlnx,zynqmp";
+};
index eca6c2d..7b9a88b 100644 (file)
@@ -2,7 +2,7 @@
 /*
  * dts file for Xilinx ZynqMP ZCU102 RevA
  *
- * (C) Copyright 2015 - 2019, Xilinx, Inc.
+ * (C) Copyright 2015 - 2021, Xilinx, Inc.
  *
  * Michal Simek <michal.simek@xilinx.com>
  */
@@ -13,6 +13,7 @@
 #include "zynqmp-clk-ccf.dtsi"
 #include <dt-bindings/input/input.h>
 #include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/pinctrl/pinctrl-zynqmp.h>
 #include <dt-bindings/phy/phy.h>
 
 / {
                i2c0 = &i2c0;
                i2c1 = &i2c1;
                mmc0 = &sdhci1;
+               nvmem0 = &eeprom;
                rtc0 = &rtc;
                serial0 = &uart0;
                serial1 = &uart1;
                serial2 = &dcc;
+               spi0 = &qspi;
+               usb0 = &usb0;
        };
 
        chosen {
 
 &can1 {
        status = "okay";
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_can1_default>;
 };
 
 &dcc {
        status = "okay";
        phy-handle = <&phy0>;
        phy-mode = "rgmii-id";
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_gem3_default>;
        phy0: ethernet-phy@21 {
                reg = <21>;
                ti,rx-internal-delay = <0x8>;
                ti,tx-internal-delay = <0xa>;
                ti,fifo-depth = <0x1>;
                ti,dp83867-rxctrl-strap-quirk;
+               /* reset-gpios = <&tca6416_u97 6 GPIO_ACTIVE_LOW>; */
        };
 };
 
 &gpio {
        status = "okay";
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_gpio_default>;
 };
 
 &i2c0 {
        status = "okay";
        clock-frequency = <400000>;
+       pinctrl-names = "default", "gpio";
+       pinctrl-0 = <&pinctrl_i2c0_default>;
+       pinctrl-1 = <&pinctrl_i2c0_gpio>;
+       scl-gpios = <&gpio 14 GPIO_ACTIVE_HIGH>;
+       sda-gpios = <&gpio 15 GPIO_ACTIVE_HIGH>;
 
        tca6416_u97: gpio@20 {
                compatible = "ti,tca6416";
                                status = "disabled"; /* unreachable */
                                reg = <0x20>;
                        };
-
                        max20751@72 { /* u95 */
                                compatible = "maxim,max20751";
                                reg = <0x72>;
 &i2c1 {
        status = "okay";
        clock-frequency = <400000>;
+       pinctrl-names = "default", "gpio";
+       pinctrl-0 = <&pinctrl_i2c1_default>;
+       pinctrl-1 = <&pinctrl_i2c1_gpio>;
+       scl-gpios = <&gpio 16 GPIO_ACTIVE_HIGH>;
+       sda-gpios = <&gpio 17 GPIO_ACTIVE_HIGH>;
 
        /* PL i2c via PCA9306 - u45 */
        i2c-mux@74 { /* u34 */
        };
 };
 
+&pinctrl0 {
+       status = "okay";
+       pinctrl_i2c0_default: i2c0-default {
+               mux {
+                       groups = "i2c0_3_grp";
+                       function = "i2c0";
+               };
+
+               conf {
+                       groups = "i2c0_3_grp";
+                       bias-pull-up;
+                       slew-rate = <SLEW_RATE_SLOW>;
+                       power-source = <IO_STANDARD_LVCMOS18>;
+               };
+       };
+
+       pinctrl_i2c0_gpio: i2c0-gpio {
+               mux {
+                       groups = "gpio0_14_grp", "gpio0_15_grp";
+                       function = "gpio0";
+               };
+
+               conf {
+                       groups = "gpio0_14_grp", "gpio0_15_grp";
+                       slew-rate = <SLEW_RATE_SLOW>;
+                       power-source = <IO_STANDARD_LVCMOS18>;
+               };
+       };
+
+       pinctrl_i2c1_default: i2c1-default {
+               mux {
+                       groups = "i2c1_4_grp";
+                       function = "i2c1";
+               };
+
+               conf {
+                       groups = "i2c1_4_grp";
+                       bias-pull-up;
+                       slew-rate = <SLEW_RATE_SLOW>;
+                       power-source = <IO_STANDARD_LVCMOS18>;
+               };
+       };
+
+       pinctrl_i2c1_gpio: i2c1-gpio {
+               mux {
+                       groups = "gpio0_16_grp", "gpio0_17_grp";
+                       function = "gpio0";
+               };
+
+               conf {
+                       groups = "gpio0_16_grp", "gpio0_17_grp";
+                       slew-rate = <SLEW_RATE_SLOW>;
+                       power-source = <IO_STANDARD_LVCMOS18>;
+               };
+       };
+
+       pinctrl_uart0_default: uart0-default {
+               mux {
+                       groups = "uart0_4_grp";
+                       function = "uart0";
+               };
+
+               conf {
+                       groups = "uart0_4_grp";
+                       slew-rate = <SLEW_RATE_SLOW>;
+                       power-source = <IO_STANDARD_LVCMOS18>;
+               };
+
+               conf-rx {
+                       pins = "MIO18";
+                       bias-high-impedance;
+               };
+
+               conf-tx {
+                       pins = "MIO19";
+                       bias-disable;
+               };
+       };
+
+       pinctrl_uart1_default: uart1-default {
+               mux {
+                       groups = "uart1_5_grp";
+                       function = "uart1";
+               };
+
+               conf {
+                       groups = "uart1_5_grp";
+                       slew-rate = <SLEW_RATE_SLOW>;
+                       power-source = <IO_STANDARD_LVCMOS18>;
+               };
+
+               conf-rx {
+                       pins = "MIO21";
+                       bias-high-impedance;
+               };
+
+               conf-tx {
+                       pins = "MIO20";
+                       bias-disable;
+               };
+       };
+
+       pinctrl_usb0_default: usb0-default {
+               mux {
+                       groups = "usb0_0_grp";
+                       function = "usb0";
+               };
+
+               conf {
+                       groups = "usb0_0_grp";
+                       slew-rate = <SLEW_RATE_SLOW>;
+                       power-source = <IO_STANDARD_LVCMOS18>;
+               };
+
+               conf-rx {
+                       pins = "MIO52", "MIO53", "MIO55";
+                       bias-high-impedance;
+               };
+
+               conf-tx {
+                       pins = "MIO54", "MIO56", "MIO57", "MIO58", "MIO59",
+                              "MIO60", "MIO61", "MIO62", "MIO63";
+                       bias-disable;
+               };
+       };
+
+       pinctrl_gem3_default: gem3-default {
+               mux {
+                       function = "ethernet3";
+                       groups = "ethernet3_0_grp";
+               };
+
+               conf {
+                       groups = "ethernet3_0_grp";
+                       slew-rate = <SLEW_RATE_SLOW>;
+                       power-source = <IO_STANDARD_LVCMOS18>;
+               };
+
+               conf-rx {
+                       pins = "MIO70", "MIO71", "MIO72", "MIO73", "MIO74",
+                                                                       "MIO75";
+                       bias-high-impedance;
+                       low-power-disable;
+               };
+
+               conf-tx {
+                       pins = "MIO64", "MIO65", "MIO66", "MIO67", "MIO68",
+                                                                       "MIO69";
+                       bias-disable;
+                       low-power-enable;
+               };
+
+               mux-mdio {
+                       function = "mdio3";
+                       groups = "mdio3_0_grp";
+               };
+
+               conf-mdio {
+                       groups = "mdio3_0_grp";
+                       slew-rate = <SLEW_RATE_SLOW>;
+                       power-source = <IO_STANDARD_LVCMOS18>;
+                       bias-disable;
+               };
+       };
+
+       pinctrl_can1_default: can1-default {
+               mux {
+                       function = "can1";
+                       groups = "can1_6_grp";
+               };
+
+               conf {
+                       groups = "can1_6_grp";
+                       slew-rate = <SLEW_RATE_SLOW>;
+                       power-source = <IO_STANDARD_LVCMOS18>;
+               };
+
+               conf-rx {
+                       pins = "MIO25";
+                       bias-high-impedance;
+               };
+
+               conf-tx {
+                       pins = "MIO24";
+                       bias-disable;
+               };
+       };
+
+       pinctrl_sdhci1_default: sdhci1-default {
+               mux {
+                       groups = "sdio1_0_grp";
+                       function = "sdio1";
+               };
+
+               conf {
+                       groups = "sdio1_0_grp";
+                       slew-rate = <SLEW_RATE_SLOW>;
+                       power-source = <IO_STANDARD_LVCMOS18>;
+                       bias-disable;
+               };
+
+               mux-cd {
+                       groups = "sdio1_cd_0_grp";
+                       function = "sdio1_cd";
+               };
+
+               conf-cd {
+                       groups = "sdio1_cd_0_grp";
+                       bias-high-impedance;
+                       bias-pull-up;
+                       slew-rate = <SLEW_RATE_SLOW>;
+                       power-source = <IO_STANDARD_LVCMOS18>;
+               };
+
+               mux-wp {
+                       groups = "sdio1_wp_0_grp";
+                       function = "sdio1_wp";
+               };
+
+               conf-wp {
+                       groups = "sdio1_wp_0_grp";
+                       bias-high-impedance;
+                       bias-pull-up;
+                       slew-rate = <SLEW_RATE_SLOW>;
+                       power-source = <IO_STANDARD_LVCMOS18>;
+               };
+       };
+
+       pinctrl_gpio_default: gpio-default {
+               mux-sw {
+                       function = "gpio0";
+                       groups = "gpio0_22_grp", "gpio0_23_grp";
+               };
+
+               conf-sw {
+                       groups = "gpio0_22_grp", "gpio0_23_grp";
+                       slew-rate = <SLEW_RATE_SLOW>;
+                       power-source = <IO_STANDARD_LVCMOS18>;
+               };
+
+               mux-msp {
+                       function = "gpio0";
+                       groups = "gpio0_13_grp", "gpio0_38_grp";
+               };
+
+               conf-msp {
+                       groups = "gpio0_13_grp", "gpio0_38_grp";
+                       slew-rate = <SLEW_RATE_SLOW>;
+                       power-source = <IO_STANDARD_LVCMOS18>;
+               };
+
+               conf-pull-up {
+                       pins = "MIO22", "MIO23";
+                       bias-pull-up;
+               };
+
+               conf-pull-none {
+                       pins = "MIO13", "MIO38";
+                       bias-disable;
+               };
+       };
+};
+
 &pcie {
        status = "okay";
 };
        clock-names = "ref0", "ref1", "ref2", "ref3";
 };
 
+&qspi {
+       status = "okay";
+       flash@0 {
+               compatible = "m25p80", "jedec,spi-nor"; /* 16MB + 16MB */
+               #address-cells = <1>;
+               #size-cells = <1>;
+               reg = <0x0>;
+               spi-tx-bus-width = <1>;
+               spi-rx-bus-width = <4>; /* FIXME also DUAL configuration possible */
+               spi-max-frequency = <108000000>; /* Based on DC1 spec */
+       };
+};
+
 &rtc {
        status = "okay";
 };
 /* SD1 with level shifter */
 &sdhci1 {
        status = "okay";
+       /*
+        * 1.0 revision has level shifter and this property should be
+        * removed for supporting UHS mode
+        */
        no-1-8-v;
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_sdhci1_default>;
        xlnx,mio-bank = <1>;
 };
 
 &uart0 {
        status = "okay";
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_uart0_default>;
 };
 
 &uart1 {
        status = "okay";
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_uart1_default>;
 };
 
 /* ULPI SMSC USB3320 */
 &usb0 {
        status = "okay";
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_usb0_default>;
+       phy-names = "usb3-phy";
+       phys = <&psgtr 2 PHY_TYPE_USB3 0 2>;
+};
+
+&dwc3_0 {
+       status = "okay";
        dr_mode = "host";
+       snps,usb3_lpm_capable;
+       maximum-speed = "super-speed";
 };
 
 &watchdog0 {
index d9ad8a4..f7d718f 100644 (file)
@@ -2,7 +2,7 @@
 /*
  * dts file for Xilinx ZynqMP ZCU102 RevB
  *
- * (C) Copyright 2016 - 2018, Xilinx, Inc.
+ * (C) Copyright 2016 - 2021, Xilinx, Inc.
  *
  * Michal Simek <michal.simek@xilinx.com>
  */
@@ -22,6 +22,7 @@
                ti,tx-internal-delay = <0xa>;
                ti,fifo-depth = <0x1>;
                ti,dp83867-rxctrl-strap-quirk;
+               /* reset-gpios = <&tca6416_u97 6 GPIO_ACTIVE_LOW>; */
        };
        /* Cleanup from RevA */
        /delete-node/ ethernet-phy@21;
index 5637e1c..bd8f20f 100644 (file)
@@ -2,7 +2,7 @@
 /*
  * dts file for Xilinx ZynqMP ZCU104
  *
- * (C) Copyright 2017 - 2019, Xilinx, Inc.
+ * (C) Copyright 2017 - 2021, Xilinx, Inc.
  *
  * Michal Simek <michal.simek@xilinx.com>
  */
@@ -12,6 +12,7 @@
 #include "zynqmp.dtsi"
 #include "zynqmp-clk-ccf.dtsi"
 #include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/pinctrl/pinctrl-zynqmp.h>
 #include <dt-bindings/phy/phy.h>
 
 / {
                ethernet0 = &gem3;
                i2c0 = &i2c1;
                mmc0 = &sdhci1;
+               nvmem0 = &eeprom;
                rtc0 = &rtc;
                serial0 = &uart0;
                serial1 = &uart1;
                serial2 = &dcc;
+               spi0 = &qspi;
+               usb0 = &usb0;
        };
 
        chosen {
 
 &can1 {
        status = "okay";
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_can1_default>;
 };
 
 &dcc {
        status = "okay";
 };
 
+&fpd_dma_chan1 {
+       status = "okay";
+};
+
+&fpd_dma_chan2 {
+       status = "okay";
+};
+
+&fpd_dma_chan3 {
+       status = "okay";
+};
+
+&fpd_dma_chan4 {
+       status = "okay";
+};
+
+&fpd_dma_chan5 {
+       status = "okay";
+};
+
+&fpd_dma_chan6 {
+       status = "okay";
+};
+
+&fpd_dma_chan7 {
+       status = "okay";
+};
+
+&fpd_dma_chan8 {
+       status = "okay";
+};
+
 &gem3 {
        status = "okay";
        phy-handle = <&phy0>;
        phy-mode = "rgmii-id";
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_gem3_default>;
        phy0: ethernet-phy@c {
                reg = <0xc>;
                ti,rx-internal-delay = <0x8>;
 &i2c1 {
        status = "okay";
        clock-frequency = <400000>;
+       pinctrl-names = "default", "gpio";
+       pinctrl-0 = <&pinctrl_i2c1_default>;
+       pinctrl-1 = <&pinctrl_i2c1_gpio>;
+       scl-gpios = <&gpio 16 GPIO_ACTIVE_HIGH>;
+       sda-gpios = <&gpio 17 GPIO_ACTIVE_HIGH>;
 
        /* Another connection to this bus via PL i2c via PCA9306 - u45 */
        i2c-mux@74 { /* u34 */
                         * 512B - 768B address 0x56
                         * 768B - 1024B address 0x57
                         */
-                       eeprom@54 { /* u23 */
+                       eeprom: eeprom@54 { /* u23 */
                                compatible = "atmel,24c08";
                                reg = <0x54>;
                                #address-cells = <1>;
                        #address-cells = <1>;
                        #size-cells = <0>;
                        reg = <1>;
-                       clock_8t49n287: clock-generator@6c { /* 8T49N287 - u182 */
-                               reg = <0x6c>;
-                       };
+                       /* 8T49N287 - u182 */
                };
 
                i2c@2 {
                        #address-cells = <1>;
                        #size-cells = <0>;
                        reg = <2>;
-                       irps5401_43: irps54012@43 { /* IRPS5401 - u175 */
-                               reg = <0x43>;
+                       irps5401_43: irps5401@43 { /* IRPS5401 - u175 */
+                               compatible = "infineon,irps5401";
+                               reg = <0x43>; /* pmbus / i2c 0x13 */
                        };
-                       irps5401_4d: irps54012@4d { /* IRPS5401 - u180 */
-                               reg = <0x4d>;
+                       irps5401_44: irps5401@44 { /* IRPS5401 - u180 */
+                               compatible = "infineon,irps5401";
+                               reg = <0x44>; /* pmbus / i2c 0x14 */
                        };
                };
 
        };
 };
 
-&rtc {
+&pinctrl0 {
        status = "okay";
+
+       pinctrl_can1_default: can1-default {
+               mux {
+                       function = "can1";
+                       groups = "can1_6_grp";
+               };
+
+               conf {
+                       groups = "can1_6_grp";
+                       slew-rate = <SLEW_RATE_SLOW>;
+                       power-source = <IO_STANDARD_LVCMOS18>;
+                       drive-strength = <12>;
+               };
+
+               conf-rx {
+                       pins = "MIO25";
+                       bias-high-impedance;
+               };
+
+               conf-tx {
+                       pins = "MIO24";
+                       bias-disable;
+               };
+       };
+
+       pinctrl_i2c1_default: i2c1-default {
+               mux {
+                       groups = "i2c1_4_grp";
+                       function = "i2c1";
+               };
+
+               conf {
+                       groups = "i2c1_4_grp";
+                       bias-pull-up;
+                       slew-rate = <SLEW_RATE_SLOW>;
+                       power-source = <IO_STANDARD_LVCMOS18>;
+                       drive-strength = <12>;
+               };
+       };
+
+       pinctrl_i2c1_gpio: i2c1-gpio {
+               mux {
+                       groups = "gpio0_16_grp", "gpio0_17_grp";
+                       function = "gpio0";
+               };
+
+               conf {
+                       groups = "gpio0_16_grp", "gpio0_17_grp";
+                       slew-rate = <SLEW_RATE_SLOW>;
+                       power-source = <IO_STANDARD_LVCMOS18>;
+                       drive-strength = <12>;
+               };
+       };
+
+       pinctrl_gem3_default: gem3-default {
+               mux {
+                       function = "ethernet3";
+                       groups = "ethernet3_0_grp";
+               };
+
+               conf {
+                       groups = "ethernet3_0_grp";
+                       slew-rate = <SLEW_RATE_SLOW>;
+                       power-source = <IO_STANDARD_LVCMOS18>;
+                       drive-strength = <12>;
+               };
+
+               conf-rx {
+                       pins = "MIO70", "MIO71", "MIO72", "MIO73", "MIO74",
+                                                                       "MIO75";
+                       bias-high-impedance;
+                       low-power-disable;
+               };
+
+               conf-tx {
+                       pins = "MIO64", "MIO65", "MIO66", "MIO67", "MIO68",
+                                                                       "MIO69";
+                       bias-disable;
+                       low-power-enable;
+               };
+
+               mux-mdio {
+                       function = "mdio3";
+                       groups = "mdio3_0_grp";
+               };
+
+               conf-mdio {
+                       groups = "mdio3_0_grp";
+                       slew-rate = <SLEW_RATE_SLOW>;
+                       power-source = <IO_STANDARD_LVCMOS18>;
+                       bias-disable;
+               };
+       };
+
+       pinctrl_sdhci1_default: sdhci1-default {
+               mux {
+                       groups = "sdio1_0_grp";
+                       function = "sdio1";
+               };
+
+               conf {
+                       groups = "sdio1_0_grp";
+                       slew-rate = <SLEW_RATE_SLOW>;
+                       power-source = <IO_STANDARD_LVCMOS18>;
+                       bias-disable;
+                       drive-strength = <12>;
+               };
+
+               mux-cd {
+                       groups = "sdio1_cd_0_grp";
+                       function = "sdio1_cd";
+               };
+
+               conf-cd {
+                       groups = "sdio1_cd_0_grp";
+                       bias-high-impedance;
+                       bias-pull-up;
+                       slew-rate = <SLEW_RATE_SLOW>;
+                       power-source = <IO_STANDARD_LVCMOS18>;
+               };
+       };
+
+       pinctrl_uart0_default: uart0-default {
+               mux {
+                       groups = "uart0_4_grp";
+                       function = "uart0";
+               };
+
+               conf {
+                       groups = "uart0_4_grp";
+                       slew-rate = <SLEW_RATE_SLOW>;
+                       power-source = <IO_STANDARD_LVCMOS18>;
+                       drive-strength = <12>;
+               };
+
+               conf-rx {
+                       pins = "MIO18";
+                       bias-high-impedance;
+               };
+
+               conf-tx {
+                       pins = "MIO19";
+                       bias-disable;
+               };
+       };
+
+       pinctrl_uart1_default: uart1-default {
+               mux {
+                       groups = "uart1_5_grp";
+                       function = "uart1";
+               };
+
+               conf {
+                       groups = "uart1_5_grp";
+                       slew-rate = <SLEW_RATE_SLOW>;
+                       power-source = <IO_STANDARD_LVCMOS18>;
+                       drive-strength = <12>;
+               };
+
+               conf-rx {
+                       pins = "MIO21";
+                       bias-high-impedance;
+               };
+
+               conf-tx {
+                       pins = "MIO20";
+                       bias-disable;
+               };
+       };
+
+       pinctrl_usb0_default: usb0-default {
+               mux {
+                       groups = "usb0_0_grp";
+                       function = "usb0";
+               };
+
+               conf {
+                       groups = "usb0_0_grp";
+                       slew-rate = <SLEW_RATE_SLOW>;
+                       power-source = <IO_STANDARD_LVCMOS18>;
+                       drive-strength = <12>;
+               };
+
+               conf-rx {
+                       pins = "MIO52", "MIO53", "MIO55";
+                       bias-high-impedance;
+               };
+
+               conf-tx {
+                       pins = "MIO54", "MIO56", "MIO57", "MIO58", "MIO59",
+                              "MIO60", "MIO61", "MIO62", "MIO63";
+                       bias-disable;
+               };
+       };
 };
 
 &psgtr {
        clock-names = "ref1", "ref2", "ref3";
 };
 
+&qspi {
+       status = "okay";
+       flash@0 {
+               compatible = "m25p80", "jedec,spi-nor"; /* n25q512a 128MiB */
+               #address-cells = <1>;
+               #size-cells = <1>;
+               reg = <0x0>;
+               spi-tx-bus-width = <1>;
+               spi-rx-bus-width = <4>;
+               spi-max-frequency = <108000000>; /* Based on DC1 spec */
+       };
+};
+
+&rtc {
+       status = "okay";
+};
+
 &sata {
        status = "okay";
        /* SATA OOB timing settings */
 &sdhci1 {
        status = "okay";
        no-1-8-v;
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_sdhci1_default>;
        xlnx,mio-bank = <1>;
        disable-wp;
 };
 
 &uart0 {
        status = "okay";
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_uart0_default>;
 };
 
 &uart1 {
        status = "okay";
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_uart1_default>;
 };
 
 /* ULPI SMSC USB3320 */
 &usb0 {
        status = "okay";
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_usb0_default>;
+       phy-names = "usb3-phy";
+       phys = <&psgtr 2 PHY_TYPE_USB3 0 2>;
+};
+
+&dwc3_0 {
+       status = "okay";
        dr_mode = "host";
+       snps,usb3_lpm_capable;
+       maximum-speed = "super-speed";
 };
 
 &watchdog0 {
index 7f2e328..96feaad 100644 (file)
@@ -2,7 +2,7 @@
 /*
  * dts file for Xilinx ZynqMP ZCU104
  *
- * (C) Copyright 2017 - 2020, Xilinx, Inc.
+ * (C) Copyright 2017 - 2021, Xilinx, Inc.
  *
  * Michal Simek <michal.simek@xilinx.com>
  */
@@ -12,6 +12,7 @@
 #include "zynqmp.dtsi"
 #include "zynqmp-clk-ccf.dtsi"
 #include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/pinctrl/pinctrl-zynqmp.h>
 #include <dt-bindings/phy/phy.h>
 
 / {
                ethernet0 = &gem3;
                i2c0 = &i2c1;
                mmc0 = &sdhci1;
+               nvmem0 = &eeprom;
                rtc0 = &rtc;
                serial0 = &uart0;
                serial1 = &uart1;
                serial2 = &dcc;
+               spi0 = &qspi;
+               usb0 = &usb0;
        };
 
        chosen {
@@ -64,6 +68,8 @@
 
 &can1 {
        status = "okay";
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_can1_default>;
 };
 
 &dcc {
        status = "okay";
        phy-handle = <&phy0>;
        phy-mode = "rgmii-id";
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_gem3_default>;
        phy0: ethernet-phy@c {
                reg = <0xc>;
                ti,rx-internal-delay = <0x8>;
 &i2c1 {
        status = "okay";
        clock-frequency = <400000>;
+       pinctrl-names = "default", "gpio";
+       pinctrl-0 = <&pinctrl_i2c1_default>;
+       pinctrl-1 = <&pinctrl_i2c1_gpio>;
+       scl-gpios = <&gpio 16 GPIO_ACTIVE_HIGH>;
+       sda-gpios = <&gpio 17 GPIO_ACTIVE_HIGH>;
 
        tca6416_u97: gpio@20 {
                compatible = "ti,tca6416";
                        #address-cells = <1>;
                        #size-cells = <0>;
                        reg = <1>;
-                       clock_8t49n287: clock-generator@6c { /* 8T49N287 - u182 */
-                               reg = <0x6c>;
-                       };
+                       /* 8T49N287 - u182 */
                };
 
                i2c@2 {
        };
 };
 
+&pinctrl0 {
+       status = "okay";
+
+       pinctrl_can1_default: can1-default {
+               mux {
+                       function = "can1";
+                       groups = "can1_6_grp";
+               };
+
+               conf {
+                       groups = "can1_6_grp";
+                       slew-rate = <SLEW_RATE_SLOW>;
+                       power-source = <IO_STANDARD_LVCMOS18>;
+                       drive-strength = <12>;
+               };
+
+               conf-rx {
+                       pins = "MIO25";
+                       bias-high-impedance;
+               };
+
+               conf-tx {
+                       pins = "MIO24";
+                       bias-disable;
+               };
+       };
+
+       pinctrl_i2c1_default: i2c1-default {
+               mux {
+                       groups = "i2c1_4_grp";
+                       function = "i2c1";
+               };
+
+               conf {
+                       groups = "i2c1_4_grp";
+                       bias-pull-up;
+                       slew-rate = <SLEW_RATE_SLOW>;
+                       power-source = <IO_STANDARD_LVCMOS18>;
+                       drive-strength = <12>;
+               };
+       };
+
+       pinctrl_i2c1_gpio: i2c1-gpio {
+               mux {
+                       groups = "gpio0_16_grp", "gpio0_17_grp";
+                       function = "gpio0";
+               };
+
+               conf {
+                       groups = "gpio0_16_grp", "gpio0_17_grp";
+                       slew-rate = <SLEW_RATE_SLOW>;
+                       power-source = <IO_STANDARD_LVCMOS18>;
+                       drive-strength = <12>;
+               };
+       };
+
+       pinctrl_gem3_default: gem3-default {
+               mux {
+                       function = "ethernet3";
+                       groups = "ethernet3_0_grp";
+               };
+
+               conf {
+                       groups = "ethernet3_0_grp";
+                       slew-rate = <SLEW_RATE_SLOW>;
+                       power-source = <IO_STANDARD_LVCMOS18>;
+                       drive-strength = <12>;
+               };
+
+               conf-rx {
+                       pins = "MIO70", "MIO71", "MIO72", "MIO73", "MIO74",
+                                                                       "MIO75";
+                       bias-high-impedance;
+                       low-power-disable;
+               };
+
+               conf-tx {
+                       pins = "MIO64", "MIO65", "MIO66", "MIO67", "MIO68",
+                                                                       "MIO69";
+                       bias-disable;
+                       low-power-enable;
+               };
+
+               mux-mdio {
+                       function = "mdio3";
+                       groups = "mdio3_0_grp";
+               };
+
+               conf-mdio {
+                       groups = "mdio3_0_grp";
+                       slew-rate = <SLEW_RATE_SLOW>;
+                       power-source = <IO_STANDARD_LVCMOS18>;
+                       bias-disable;
+               };
+       };
+
+       pinctrl_sdhci1_default: sdhci1-default {
+               mux {
+                       groups = "sdio1_0_grp";
+                       function = "sdio1";
+               };
+
+               conf {
+                       groups = "sdio1_0_grp";
+                       slew-rate = <SLEW_RATE_SLOW>;
+                       power-source = <IO_STANDARD_LVCMOS18>;
+                       bias-disable;
+                       drive-strength = <12>;
+               };
+
+               mux-cd {
+                       groups = "sdio1_cd_0_grp";
+                       function = "sdio1_cd";
+               };
+
+               conf-cd {
+                       groups = "sdio1_cd_0_grp";
+                       bias-high-impedance;
+                       bias-pull-up;
+                       slew-rate = <SLEW_RATE_SLOW>;
+                       power-source = <IO_STANDARD_LVCMOS18>;
+               };
+       };
+
+       pinctrl_uart0_default: uart0-default {
+               mux {
+                       groups = "uart0_4_grp";
+                       function = "uart0";
+               };
+
+               conf {
+                       groups = "uart0_4_grp";
+                       slew-rate = <SLEW_RATE_SLOW>;
+                       power-source = <IO_STANDARD_LVCMOS18>;
+                       drive-strength = <12>;
+               };
+
+               conf-rx {
+                       pins = "MIO18";
+                       bias-high-impedance;
+               };
+
+               conf-tx {
+                       pins = "MIO19";
+                       bias-disable;
+               };
+       };
+
+       pinctrl_uart1_default: uart1-default {
+               mux {
+                       groups = "uart1_5_grp";
+                       function = "uart1";
+               };
+
+               conf {
+                       groups = "uart1_5_grp";
+                       slew-rate = <SLEW_RATE_SLOW>;
+                       power-source = <IO_STANDARD_LVCMOS18>;
+                       drive-strength = <12>;
+               };
+
+               conf-rx {
+                       pins = "MIO21";
+                       bias-high-impedance;
+               };
+
+               conf-tx {
+                       pins = "MIO20";
+                       bias-disable;
+               };
+       };
+
+       pinctrl_usb0_default: usb0-default {
+               mux {
+                       groups = "usb0_0_grp";
+                       function = "usb0";
+               };
+
+               conf {
+                       groups = "usb0_0_grp";
+                       slew-rate = <SLEW_RATE_SLOW>;
+                       power-source = <IO_STANDARD_LVCMOS18>;
+                       drive-strength = <12>;
+               };
+
+               conf-rx {
+                       pins = "MIO52", "MIO53", "MIO55";
+                       bias-high-impedance;
+               };
+
+               conf-tx {
+                       pins = "MIO54", "MIO56", "MIO57", "MIO58", "MIO59",
+                              "MIO60", "MIO61", "MIO62", "MIO63";
+                       bias-disable;
+               };
+       };
+};
+
+&psgtr {
+       status = "okay";
+       /* nc, sata, usb3, dp */
+       clocks = <&clock_8t49n287_5>, <&clock_8t49n287_2>, <&clock_8t49n287_3>;
+       clock-names = "ref1", "ref2", "ref3";
+};
+
 &qspi {
        status = "okay";
        flash@0 {
                #address-cells = <1>;
                #size-cells = <1>;
                reg = <0x0>;
+               spi-tx-bus-width = <1>;
+               spi-rx-bus-width = <4>;
+               spi-max-frequency = <108000000>; /* Based on DC1 spec */
        };
 };
 
        status = "okay";
 };
 
-&psgtr {
-       status = "okay";
-       /* nc, sata, usb3, dp */
-       clocks = <&clock_8t49n287_5>, <&clock_8t49n287_2>, <&clock_8t49n287_3>;
-       clock-names = "ref1", "ref2", "ref3";
-};
-
 &sata {
        status = "okay";
        /* SATA OOB timing settings */
 &sdhci1 {
        status = "okay";
        no-1-8-v;
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_sdhci1_default>;
        xlnx,mio-bank = <1>;
        disable-wp;
 };
 
 &uart0 {
        status = "okay";
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_uart0_default>;
 };
 
 &uart1 {
        status = "okay";
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_uart1_default>;
 };
 
 /* ULPI SMSC USB3320 */
 &usb0 {
        status = "okay";
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_usb0_default>;
+       phy-names = "usb3-phy";
+       phys = <&psgtr 2 PHY_TYPE_USB3 0 2>;
+};
+
+&dwc3_0 {
+       status = "okay";
        dr_mode = "host";
+       snps,usb3_lpm_capable;
+       maximum-speed = "super-speed";
 };
 
 &watchdog0 {
index eff7c64..20b7c75 100644 (file)
@@ -2,7 +2,7 @@
 /*
  * dts file for Xilinx ZynqMP ZCU106
  *
- * (C) Copyright 2016 - 2019, Xilinx, Inc.
+ * (C) Copyright 2016 - 2021, Xilinx, Inc.
  *
  * Michal Simek <michal.simek@xilinx.com>
  */
@@ -13,6 +13,7 @@
 #include "zynqmp-clk-ccf.dtsi"
 #include <dt-bindings/input/input.h>
 #include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/pinctrl/pinctrl-zynqmp.h>
 #include <dt-bindings/phy/phy.h>
 
 / {
                i2c0 = &i2c0;
                i2c1 = &i2c1;
                mmc0 = &sdhci1;
+               nvmem0 = &eeprom;
                rtc0 = &rtc;
                serial0 = &uart0;
                serial1 = &uart1;
                serial2 = &dcc;
+               spi0 = &qspi;
+               usb0 = &usb0;
        };
 
        chosen {
 
 &can1 {
        status = "okay";
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_can1_default>;
 };
 
 &dcc {
        status = "okay";
 };
 
-&zynqmp_dpdma {
-       status = "okay";
-};
-
-&zynqmp_dpsub {
-       status = "okay";
-       phy-names = "dp-phy0", "dp-phy1";
-       phys = <&psgtr 1 PHY_TYPE_DP 0 3>,
-              <&psgtr 0 PHY_TYPE_DP 1 3>;
-};
-
-/* fpd_dma clk 667MHz, lpd_dma 500MHz */
 &fpd_dma_chan1 {
        status = "okay";
 };
        status = "okay";
        phy-handle = <&phy0>;
        phy-mode = "rgmii-id";
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_gem3_default>;
        phy0: ethernet-phy@c {
                reg = <0xc>;
                ti,rx-internal-delay = <0x8>;
 
 &gpio {
        status = "okay";
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_gpio_default>;
 };
 
 &i2c0 {
        status = "okay";
        clock-frequency = <400000>;
+       pinctrl-names = "default", "gpio";
+       pinctrl-0 = <&pinctrl_i2c0_default>;
+       pinctrl-1 = <&pinctrl_i2c0_gpio>;
+       scl-gpios = <&gpio 14 GPIO_ACTIVE_HIGH>;
+       sda-gpios = <&gpio 15 GPIO_ACTIVE_HIGH>;
 
        tca6416_u97: gpio@20 {
                compatible = "ti,tca6416";
 &i2c1 {
        status = "okay";
        clock-frequency = <400000>;
+       pinctrl-names = "default", "gpio";
+       pinctrl-0 = <&pinctrl_i2c1_default>;
+       pinctrl-1 = <&pinctrl_i2c1_gpio>;
+       scl-gpios = <&gpio 16 GPIO_ACTIVE_HIGH>;
+       sda-gpios = <&gpio 17 GPIO_ACTIVE_HIGH>;
 
        /* PL i2c via PCA9306 - u45 */
        i2c-mux@74 { /* u34 */
        };
 };
 
+&pinctrl0 {
+       status = "okay";
+       pinctrl_i2c0_default: i2c0-default {
+               mux {
+                       groups = "i2c0_3_grp";
+                       function = "i2c0";
+               };
+
+               conf {
+                       groups = "i2c0_3_grp";
+                       bias-pull-up;
+                       slew-rate = <SLEW_RATE_SLOW>;
+                       power-source = <IO_STANDARD_LVCMOS18>;
+               };
+       };
+
+       pinctrl_i2c0_gpio: i2c0-gpio {
+               mux {
+                       groups = "gpio0_14_grp", "gpio0_15_grp";
+                       function = "gpio0";
+               };
+
+               conf {
+                       groups = "gpio0_14_grp", "gpio0_15_grp";
+                       slew-rate = <SLEW_RATE_SLOW>;
+                       power-source = <IO_STANDARD_LVCMOS18>;
+               };
+       };
+
+       pinctrl_i2c1_default: i2c1-default {
+               mux {
+                       groups = "i2c1_4_grp";
+                       function = "i2c1";
+               };
+
+               conf {
+                       groups = "i2c1_4_grp";
+                       bias-pull-up;
+                       slew-rate = <SLEW_RATE_SLOW>;
+                       power-source = <IO_STANDARD_LVCMOS18>;
+               };
+       };
+
+       pinctrl_i2c1_gpio: i2c1-gpio {
+               mux {
+                       groups = "gpio0_16_grp", "gpio0_17_grp";
+                       function = "gpio0";
+               };
+
+               conf {
+                       groups = "gpio0_16_grp", "gpio0_17_grp";
+                       slew-rate = <SLEW_RATE_SLOW>;
+                       power-source = <IO_STANDARD_LVCMOS18>;
+               };
+       };
+
+       pinctrl_uart0_default: uart0-default {
+               mux {
+                       groups = "uart0_4_grp";
+                       function = "uart0";
+               };
+
+               conf {
+                       groups = "uart0_4_grp";
+                       slew-rate = <SLEW_RATE_SLOW>;
+                       power-source = <IO_STANDARD_LVCMOS18>;
+               };
+
+               conf-rx {
+                       pins = "MIO18";
+                       bias-high-impedance;
+               };
+
+               conf-tx {
+                       pins = "MIO19";
+                       bias-disable;
+               };
+       };
+
+       pinctrl_uart1_default: uart1-default {
+               mux {
+                       groups = "uart1_5_grp";
+                       function = "uart1";
+               };
+
+               conf {
+                       groups = "uart1_5_grp";
+                       slew-rate = <SLEW_RATE_SLOW>;
+                       power-source = <IO_STANDARD_LVCMOS18>;
+               };
+
+               conf-rx {
+                       pins = "MIO21";
+                       bias-high-impedance;
+               };
+
+               conf-tx {
+                       pins = "MIO20";
+                       bias-disable;
+               };
+       };
+
+       pinctrl_usb0_default: usb0-default {
+               mux {
+                       groups = "usb0_0_grp";
+                       function = "usb0";
+               };
+
+               conf {
+                       groups = "usb0_0_grp";
+                       slew-rate = <SLEW_RATE_SLOW>;
+                       power-source = <IO_STANDARD_LVCMOS18>;
+               };
+
+               conf-rx {
+                       pins = "MIO52", "MIO53", "MIO55";
+                       bias-high-impedance;
+               };
+
+               conf-tx {
+                       pins = "MIO54", "MIO56", "MIO57", "MIO58", "MIO59",
+                              "MIO60", "MIO61", "MIO62", "MIO63";
+                       bias-disable;
+               };
+       };
+
+       pinctrl_gem3_default: gem3-default {
+               mux {
+                       function = "ethernet3";
+                       groups = "ethernet3_0_grp";
+               };
+
+               conf {
+                       groups = "ethernet3_0_grp";
+                       slew-rate = <SLEW_RATE_SLOW>;
+                       power-source = <IO_STANDARD_LVCMOS18>;
+               };
+
+               conf-rx {
+                       pins = "MIO70", "MIO71", "MIO72", "MIO73", "MIO74",
+                                                                       "MIO75";
+                       bias-high-impedance;
+                       low-power-disable;
+               };
+
+               conf-tx {
+                       pins = "MIO64", "MIO65", "MIO66", "MIO67", "MIO68",
+                                                                       "MIO69";
+                       bias-disable;
+                       low-power-enable;
+               };
+
+               mux-mdio {
+                       function = "mdio3";
+                       groups = "mdio3_0_grp";
+               };
+
+               conf-mdio {
+                       groups = "mdio3_0_grp";
+                       slew-rate = <SLEW_RATE_SLOW>;
+                       power-source = <IO_STANDARD_LVCMOS18>;
+                       bias-disable;
+               };
+       };
+
+       pinctrl_can1_default: can1-default {
+               mux {
+                       function = "can1";
+                       groups = "can1_6_grp";
+               };
+
+               conf {
+                       groups = "can1_6_grp";
+                       slew-rate = <SLEW_RATE_SLOW>;
+                       power-source = <IO_STANDARD_LVCMOS18>;
+               };
+
+               conf-rx {
+                       pins = "MIO25";
+                       bias-high-impedance;
+               };
+
+               conf-tx {
+                       pins = "MIO24";
+                       bias-disable;
+               };
+       };
+
+       pinctrl_sdhci1_default: sdhci1-default {
+               mux {
+                       groups = "sdio1_0_grp";
+                       function = "sdio1";
+               };
+
+               conf {
+                       groups = "sdio1_0_grp";
+                       slew-rate = <SLEW_RATE_SLOW>;
+                       power-source = <IO_STANDARD_LVCMOS18>;
+                       bias-disable;
+               };
+
+               mux-cd {
+                       groups = "sdio1_cd_0_grp";
+                       function = "sdio1_cd";
+               };
+
+               conf-cd {
+                       groups = "sdio1_cd_0_grp";
+                       bias-high-impedance;
+                       bias-pull-up;
+                       slew-rate = <SLEW_RATE_SLOW>;
+                       power-source = <IO_STANDARD_LVCMOS18>;
+               };
+
+               mux-wp {
+                       groups = "sdio1_wp_0_grp";
+                       function = "sdio1_wp";
+               };
+
+               conf-wp {
+                       groups = "sdio1_wp_0_grp";
+                       bias-high-impedance;
+                       bias-pull-up;
+                       slew-rate = <SLEW_RATE_SLOW>;
+                       power-source = <IO_STANDARD_LVCMOS18>;
+               };
+       };
+
+       pinctrl_gpio_default: gpio-default {
+               mux {
+                       function = "gpio0";
+                       groups = "gpio0_22_grp", "gpio0_23_grp";
+               };
+
+               conf {
+                       groups = "gpio0_22_grp", "gpio0_23_grp";
+                       slew-rate = <SLEW_RATE_SLOW>;
+                       power-source = <IO_STANDARD_LVCMOS18>;
+               };
+
+               mux-msp {
+                       function = "gpio0";
+                       groups = "gpio0_13_grp", "gpio0_38_grp";
+               };
+
+               conf-msp {
+                       groups = "gpio0_13_grp", "gpio0_38_grp";
+                       slew-rate = <SLEW_RATE_SLOW>;
+                       power-source = <IO_STANDARD_LVCMOS18>;
+               };
+
+               conf-pull-up {
+                       pins = "MIO22";
+                       bias-pull-up;
+               };
+
+               conf-pull-none {
+                       pins = "MIO13", "MIO23", "MIO38";
+                       bias-disable;
+               };
+       };
+};
+
 &psgtr {
        status = "okay";
        /* nc, sata, usb3, dp */
        clock-names = "ref1", "ref2", "ref3";
 };
 
+&qspi {
+       status = "okay";
+       flash@0 {
+               compatible = "m25p80", "jedec,spi-nor"; /* 16MB + 16MB */
+               #address-cells = <1>;
+               #size-cells = <1>;
+               reg = <0x0>;
+               spi-tx-bus-width = <1>;
+               spi-rx-bus-width = <4>; /* FIXME also DUAL configuration possible */
+               spi-max-frequency = <108000000>; /* Based on DC1 spec */
+       };
+};
+
 &rtc {
        status = "okay";
 };
 /* SD1 with level shifter */
 &sdhci1 {
        status = "okay";
+       /*
+        * This property should be removed for supporting UHS mode
+        */
        no-1-8-v;
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_sdhci1_default>;
        xlnx,mio-bank = <1>;
 };
 
 &uart0 {
        status = "okay";
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_uart0_default>;
 };
 
 &uart1 {
        status = "okay";
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_uart1_default>;
 };
 
 /* ULPI SMSC USB3320 */
 &usb0 {
        status = "okay";
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_usb0_default>;
+       phy-names = "usb3-phy";
+       phys = <&psgtr 2 PHY_TYPE_USB3 0 2>;
+};
+
+&dwc3_0 {
+       status = "okay";
        dr_mode = "host";
+       snps,usb3_lpm_capable;
+       maximum-speed = "super-speed";
 };
 
 &watchdog0 {
        status = "okay";
 };
+
+&zynqmp_dpdma {
+       status = "okay";
+};
+
+&zynqmp_dpsub {
+       status = "okay";
+       phy-names = "dp-phy0", "dp-phy1";
+       phys = <&psgtr 1 PHY_TYPE_DP 0 3>,
+              <&psgtr 0 PHY_TYPE_DP 1 3>;
+};
index d4b68f0..e36df6a 100644 (file)
@@ -2,7 +2,7 @@
 /*
  * dts file for Xilinx ZynqMP ZCU111
  *
- * (C) Copyright 2017 - 2019, Xilinx, Inc.
+ * (C) Copyright 2017 - 2021, Xilinx, Inc.
  *
  * Michal Simek <michal.simek@xilinx.com>
  */
@@ -13,6 +13,7 @@
 #include "zynqmp-clk-ccf.dtsi"
 #include <dt-bindings/input/input.h>
 #include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/pinctrl/pinctrl-zynqmp.h>
 #include <dt-bindings/phy/phy.h>
 
 / {
                i2c0 = &i2c0;
                i2c1 = &i2c1;
                mmc0 = &sdhci1;
+               nvmem0 = &eeprom;
                rtc0 = &rtc;
                serial0 = &uart0;
                serial1 = &dcc;
+               spi0 = &qspi;
+               usb0 = &usb0;
        };
 
        chosen {
        status = "okay";
        phy-handle = <&phy0>;
        phy-mode = "rgmii-id";
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_gem3_default>;
        phy0: ethernet-phy@c {
                reg = <0xc>;
                ti,rx-internal-delay = <0x8>;
 
 &gpio {
        status = "okay";
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_gpio_default>;
 };
 
 &i2c0 {
        status = "okay";
        clock-frequency = <400000>;
+       pinctrl-names = "default", "gpio";
+       pinctrl-0 = <&pinctrl_i2c0_default>;
+       pinctrl-1 = <&pinctrl_i2c0_gpio>;
+       scl-gpios = <&gpio 14 GPIO_ACTIVE_HIGH>;
+       sda-gpios = <&gpio 15 GPIO_ACTIVE_HIGH>;
 
        tca6416_u22: gpio@20 {
                compatible = "ti,tca6416";
                        #address-cells = <1>;
                        #size-cells = <0>;
                        reg = <2>;
-                       irps5401_43: irps54012@43 { /* IRPS5401 - u53 check these */
+                       irps5401_43: irps5401@43 { /* IRPS5401 - u53 check these */
+                               compatible = "infineon,irps5401";
                                reg = <0x43>;
                        };
-                       irps5401_44: irps54012@44 { /* IRPS5401 - u55 */
+                       irps5401_44: irps5401@44 { /* IRPS5401 - u55 */
+                               compatible = "infineon,irps5401";
                                reg = <0x44>;
                        };
-                       irps5401_45: irps54012@45 { /* IRPS5401 - u57 */
+                       irps5401_45: irps5401@45 { /* IRPS5401 - u57 */
+                               compatible = "infineon,irps5401";
                                reg = <0x45>;
                        };
                        /* u68 IR38064 +0 */
 &i2c1 {
        status = "okay";
        clock-frequency = <400000>;
+       pinctrl-names = "default", "gpio";
+       pinctrl-0 = <&pinctrl_i2c1_default>;
+       pinctrl-1 = <&pinctrl_i2c1_gpio>;
+       scl-gpios = <&gpio 16 GPIO_ACTIVE_HIGH>;
+       sda-gpios = <&gpio 17 GPIO_ACTIVE_HIGH>;
 
        i2c-mux@74 { /* u26 */
                compatible = "nxp,pca9548";
                        #address-cells = <1>;
                        #size-cells = <0>;
                        reg = <4>;
-                       si5382: clock-generator@69 { /* SI5382 - u48 */
-                               reg = <0x69>;
-                       };
+                       /* SI5382 - u48 */
                };
                i2c@5 {
                        #address-cells = <1>;
        };
 };
 
+&pinctrl0 {
+       status = "okay";
+       pinctrl_i2c0_default: i2c0-default {
+               mux {
+                       groups = "i2c0_3_grp";
+                       function = "i2c0";
+               };
+
+               conf {
+                       groups = "i2c0_3_grp";
+                       bias-pull-up;
+                       slew-rate = <SLEW_RATE_SLOW>;
+                       power-source = <IO_STANDARD_LVCMOS18>;
+               };
+       };
+
+       pinctrl_i2c0_gpio: i2c0-gpio {
+               mux {
+                       groups = "gpio0_14_grp", "gpio0_15_grp";
+                       function = "gpio0";
+               };
+
+               conf {
+                       groups = "gpio0_14_grp", "gpio0_15_grp";
+                       slew-rate = <SLEW_RATE_SLOW>;
+                       power-source = <IO_STANDARD_LVCMOS18>;
+               };
+       };
+
+       pinctrl_i2c1_default: i2c1-default {
+               mux {
+                       groups = "i2c1_4_grp";
+                       function = "i2c1";
+               };
+
+               conf {
+                       groups = "i2c1_4_grp";
+                       bias-pull-up;
+                       slew-rate = <SLEW_RATE_SLOW>;
+                       power-source = <IO_STANDARD_LVCMOS18>;
+               };
+       };
+
+       pinctrl_i2c1_gpio: i2c1-gpio {
+               mux {
+                       groups = "gpio0_16_grp", "gpio0_17_grp";
+                       function = "gpio0";
+               };
+
+               conf {
+                       groups = "gpio0_16_grp", "gpio0_17_grp";
+                       slew-rate = <SLEW_RATE_SLOW>;
+                       power-source = <IO_STANDARD_LVCMOS18>;
+               };
+       };
+
+       pinctrl_uart0_default: uart0-default {
+               mux {
+                       groups = "uart0_4_grp";
+                       function = "uart0";
+               };
+
+               conf {
+                       groups = "uart0_4_grp";
+                       slew-rate = <SLEW_RATE_SLOW>;
+                       power-source = <IO_STANDARD_LVCMOS18>;
+               };
+
+               conf-rx {
+                       pins = "MIO18";
+                       bias-high-impedance;
+               };
+
+               conf-tx {
+                       pins = "MIO19";
+                       bias-disable;
+               };
+       };
+
+       pinctrl_usb0_default: usb0-default {
+               mux {
+                       groups = "usb0_0_grp";
+                       function = "usb0";
+               };
+
+               conf {
+                       groups = "usb0_0_grp";
+                       slew-rate = <SLEW_RATE_SLOW>;
+                       power-source = <IO_STANDARD_LVCMOS18>;
+               };
+
+               conf-rx {
+                       pins = "MIO52", "MIO53", "MIO55";
+                       bias-high-impedance;
+               };
+
+               conf-tx {
+                       pins = "MIO54", "MIO56", "MIO57", "MIO58", "MIO59",
+                              "MIO60", "MIO61", "MIO62", "MIO63";
+                       bias-disable;
+               };
+       };
+
+       pinctrl_gem3_default: gem3-default {
+               mux {
+                       function = "ethernet3";
+                       groups = "ethernet3_0_grp";
+               };
+
+               conf {
+                       groups = "ethernet3_0_grp";
+                       slew-rate = <SLEW_RATE_SLOW>;
+                       power-source = <IO_STANDARD_LVCMOS18>;
+               };
+
+               conf-rx {
+                       pins = "MIO70", "MIO71", "MIO72", "MIO73", "MIO74",
+                                                                       "MIO75";
+                       bias-high-impedance;
+                       low-power-disable;
+               };
+
+               conf-tx {
+                       pins = "MIO64", "MIO65", "MIO66", "MIO67", "MIO68",
+                                                                       "MIO69";
+                       bias-disable;
+                       low-power-enable;
+               };
+
+               mux-mdio {
+                       function = "mdio3";
+                       groups = "mdio3_0_grp";
+               };
+
+               conf-mdio {
+                       groups = "mdio3_0_grp";
+                       slew-rate = <SLEW_RATE_SLOW>;
+                       power-source = <IO_STANDARD_LVCMOS18>;
+                       bias-disable;
+               };
+       };
+
+       pinctrl_sdhci1_default: sdhci1-default {
+               mux {
+                       groups = "sdio1_0_grp";
+                       function = "sdio1";
+               };
+
+               conf {
+                       groups = "sdio1_0_grp";
+                       slew-rate = <SLEW_RATE_SLOW>;
+                       power-source = <IO_STANDARD_LVCMOS18>;
+                       bias-disable;
+               };
+
+               mux-cd {
+                       groups = "sdio1_cd_0_grp";
+                       function = "sdio1_cd";
+               };
+
+               conf-cd {
+                       groups = "sdio1_cd_0_grp";
+                       bias-high-impedance;
+                       bias-pull-up;
+                       slew-rate = <SLEW_RATE_SLOW>;
+                       power-source = <IO_STANDARD_LVCMOS18>;
+               };
+       };
+
+       pinctrl_gpio_default: gpio-default {
+               mux {
+                       function = "gpio0";
+                       groups = "gpio0_22_grp", "gpio0_23_grp";
+               };
+
+               conf {
+                       groups = "gpio0_22_grp", "gpio0_23_grp";
+                       slew-rate = <SLEW_RATE_SLOW>;
+                       power-source = <IO_STANDARD_LVCMOS18>;
+               };
+
+               mux-msp {
+                       function = "gpio0";
+                       groups = "gpio0_13_grp", "gpio0_38_grp";
+               };
+
+               conf-msp {
+                       groups = "gpio0_13_grp", "gpio0_38_grp";
+                       slew-rate = <SLEW_RATE_SLOW>;
+                       power-source = <IO_STANDARD_LVCMOS18>;
+               };
+
+               conf-pull-up {
+                       pins = "MIO22";
+                       bias-pull-up;
+               };
+
+               conf-pull-none {
+                       pins = "MIO13", "MIO23", "MIO38";
+                       bias-disable;
+               };
+       };
+};
+
 &psgtr {
        status = "okay";
-       /* nc, sata, usb3, dp */
-       clocks = <&si5341 0 3>, <&si5341 0 2>, <&si5341 0 0>;
+       /* nc, dp, usb3, sata */
+       clocks = <&si5341 0 0>, <&si5341 0 2>, <&si5341 0 3>;
        clock-names = "ref1", "ref2", "ref3";
 };
 
+&qspi {
+       status = "okay";
+       flash@0 {
+               compatible = "m25p80", "jedec,spi-nor"; /* 16MB + 16MB */
+               #address-cells = <1>;
+               #size-cells = <1>;
+               reg = <0x0>;
+               spi-tx-bus-width = <1>;
+               spi-rx-bus-width = <4>; /* FIXME also DUAL configuration possible */
+               spi-max-frequency = <108000000>; /* Based on DC1 spec */
+       };
+};
+
 &rtc {
        status = "okay";
 };
        ceva,p1-burst-params = /bits/ 8 <0x13 0x08 0x4A 0x06>;
        ceva,p1-retry-params = /bits/ 16 <0x96A4 0x3FFC>;
        phy-names = "sata-phy";
-       phys = <&psgtr 3 PHY_TYPE_SATA 1 1>;
+       phys = <&psgtr 3 PHY_TYPE_SATA 1 3>;
 };
 
 /* SD1 with level shifter */
 &sdhci1 {
        status = "okay";
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_sdhci1_default>;
+       disable-wp;
+       /*
+        * This property should be removed for supporting UHS mode
+        */
        no-1-8-v;
        xlnx,mio-bank = <1>;
 };
 
 &uart0 {
        status = "okay";
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_uart0_default>;
 };
 
 /* ULPI SMSC USB3320 */
 &usb0 {
        status = "okay";
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_usb0_default>;
+       phy-names = "usb3-phy";
+       phys = <&psgtr 2 PHY_TYPE_USB3 0 2>;
+};
+
+&dwc3_0 {
+       status = "okay";
        dr_mode = "host";
+       snps,usb3_lpm_capable;
+       maximum-speed = "super-speed";
 };
 
 &zynqmp_dpdma {
index 28dccb8..74e6644 100644 (file)
@@ -2,7 +2,7 @@
 /*
  * dts file for Xilinx ZynqMP
  *
- * (C) Copyright 2014 - 2019, Xilinx, Inc.
+ * (C) Copyright 2014 - 2021, Xilinx, Inc.
  *
  * Michal Simek <michal.simek@xilinx.com>
  *
                                mbox-names = "tx", "rx";
                        };
 
-                       zynqmp_clk: clock-controller {
-                               #clock-cells = <1>;
-                               compatible = "xlnx,zynqmp-clk";
-                               clocks = <&pss_ref_clk>,
-                                        <&video_clk>,
-                                        <&pss_alt_ref_clk>,
-                                        <&aux_ref_clk>,
-                                        <&gt_crx_ref_clk>;
-                               clock-names = "pss_ref_clk",
-                                             "video_clk",
-                                             "pss_alt_ref_clk",
-                                             "aux_ref_clk",
-                                             "gt_crx_ref_clk";
-                       };
-
                        nvmem_firmware {
                                compatible = "xlnx,zynqmp-nvmem-fw";
                                #address-cells = <1>;
                                compatible = "xlnx,zynqmp-reset";
                                #reset-cells = <1>;
                        };
+
+                       pinctrl0: pinctrl {
+                               compatible = "xlnx,zynqmp-pinctrl";
+                               status = "disabled";
+                       };
                };
        };
 
 
                cci: cci@fd6e0000 {
                        compatible = "arm,cci-400";
+                       status = "disabled";
                        reg = <0x0 0xfd6e0000 0x0 0x9000>;
                        ranges = <0x0 0x0 0xfd6e0000 0x10000>;
                        #address-cells = <1>;
                                        <0x0 0x0 0x0 0x2 &pcie_intc 0x2>,
                                        <0x0 0x0 0x0 0x3 &pcie_intc 0x3>,
                                        <0x0 0x0 0x0 0x4 &pcie_intc 0x4>;
+                       #stream-id-cells = <1>;
+                       iommus = <&smmu 0x4d0>;
                        power-domains = <&zynqmp_firmware PD_PCIE>;
                        pcie_intc: legacy-interrupt-controller {
                                interrupt-controller;
                        interrupt-parent = <&gic>;
                        interrupts = <0 26 4>, <0 27 4>;
                        interrupt-names = "alarm", "sec";
-                       calibration = <0x8000>;
+                       calibration = <0x7FFF>;
                };
 
                sata: ahci@fd0c0000 {
                        interrupt-parent = <&gic>;
                        interrupts = <0 133 4>;
                        power-domains = <&zynqmp_firmware PD_SATA>;
+                       resets = <&zynqmp_reset ZYNQMP_RESET_SATA>;
                        #stream-id-cells = <4>;
                        iommus = <&smmu 0x4c0>, <&smmu 0x4c1>,
                                 <&smmu 0x4c2>, <&smmu 0x4c3>;
                };
 
                uart0: serial@ff000000 {
-                       compatible = "cdns,uart-r1p12", "xlnx,xuartps";
+                       compatible = "xlnx,zynqmp-uart", "cdns,uart-r1p12";
                        status = "disabled";
                        interrupt-parent = <&gic>;
                        interrupts = <0 21 4>;
                };
 
                uart1: serial@ff010000 {
-                       compatible = "cdns,uart-r1p12", "xlnx,xuartps";
+                       compatible = "xlnx,zynqmp-uart", "cdns,uart-r1p12";
                        status = "disabled";
                        interrupt-parent = <&gic>;
                        interrupts = <0 22 4>;
                        power-domains = <&zynqmp_firmware PD_UART_1>;
                };
 
-               usb0: usb@fe200000 {
-                       compatible = "snps,dwc3";
+               usb0: usb@ff9d0000 {
+                       #address-cells = <2>;
+                       #size-cells = <2>;
                        status = "disabled";
-                       interrupt-parent = <&gic>;
-                       interrupts = <0 65 4>;
-                       reg = <0x0 0xfe200000 0x0 0x40000>;
-                       clock-names = "clk_xin", "clk_ahb";
+                       compatible = "xlnx,zynqmp-dwc3";
+                       reg = <0x0 0xff9d0000 0x0 0x100>;
+                       clock-names = "bus_clk", "ref_clk";
                        power-domains = <&zynqmp_firmware PD_USB_0>;
+                       resets = <&zynqmp_reset ZYNQMP_RESET_USB0_CORERESET>,
+                                <&zynqmp_reset ZYNQMP_RESET_USB0_HIBERRESET>,
+                                <&zynqmp_reset ZYNQMP_RESET_USB0_APB>;
+                       reset-names = "usb_crst", "usb_hibrst", "usb_apbrst";
+                       ranges;
+
+                       dwc3_0: usb@fe200000 {
+                               compatible = "snps,dwc3";
+                               reg = <0x0 0xfe200000 0x0 0x40000>;
+                               interrupt-parent = <&gic>;
+                               interrupt-names = "dwc_usb3", "otg";
+                               interrupts = <0 65 4>, <0 69 4>;
+                               #stream-id-cells = <1>;
+                               iommus = <&smmu 0x860>;
+                               snps,quirk-frame-length-adjustment = <0x20>;
+                               /* dma-coherent; */
+                       };
                };
 
-               usb1: usb@fe300000 {
-                       compatible = "snps,dwc3";
+               usb1: usb@ff9e0000 {
+                       #address-cells = <2>;
+                       #size-cells = <2>;
                        status = "disabled";
-                       interrupt-parent = <&gic>;
-                       interrupts = <0 70 4>;
-                       reg = <0x0 0xfe300000 0x0 0x40000>;
-                       clock-names = "clk_xin", "clk_ahb";
+                       compatible = "xlnx,zynqmp-dwc3";
+                       reg = <0x0 0xff9e0000 0x0 0x100>;
+                       clock-names = "bus_clk", "ref_clk";
                        power-domains = <&zynqmp_firmware PD_USB_1>;
+                       resets = <&zynqmp_reset ZYNQMP_RESET_USB1_CORERESET>,
+                                <&zynqmp_reset ZYNQMP_RESET_USB1_HIBERRESET>,
+                                <&zynqmp_reset ZYNQMP_RESET_USB1_APB>;
+                       reset-names = "usb_crst", "usb_hibrst", "usb_apbrst";
+                       ranges;
+
+                       dwc3_1: usb@fe300000 {
+                               compatible = "snps,dwc3";
+                               reg = <0x0 0xfe300000 0x0 0x40000>;
+                               interrupt-parent = <&gic>;
+                               interrupt-names = "dwc_usb3", "otg";
+                               interrupts = <0 70 4>, <0 74 4>;
+                               #stream-id-cells = <1>;
+                               iommus = <&smmu 0x861>;
+                               snps,quirk-frame-length-adjustment = <0x20>;
+                               /* dma-coherent; */
+                       };
                };
 
                watchdog0: watchdog@fd4d0000 {
                        interrupt-parent = <&gic>;
                        interrupts = <0 113 1>;
                        reg = <0x0 0xfd4d0000 0x0 0x1000>;
-                       timeout-sec = <10>;
+                       timeout-sec = <60>;
+                       reset-on-timeout;
                };
 
                lpd_watchdog: watchdog@ff150000 {
index 796fbb0..3d208d6 100644 (file)
@@ -9,9 +9,9 @@
  * Based on sunxi_wdt.c
  */
 
-#include <dt-bindings/reset-controller/mt2712-resets.h>
-#include <dt-bindings/reset-controller/mt8183-resets.h>
-#include <dt-bindings/reset-controller/mt8192-resets.h>
+#include <dt-bindings/reset/mt2712-resets.h>
+#include <dt-bindings/reset/mt8183-resets.h>
+#include <dt-bindings/reset/mt8192-resets.h>
 #include <dt-bindings/reset/mt8195-resets.h>
 #include <linux/delay.h>
 #include <linux/err.h>
index fc9c2e1..648938f 100644 (file)
 #define IMX8MM_POWER_DOMAIN_DISPMIX    10
 #define IMX8MM_POWER_DOMAIN_MIPI       11
 
+#define IMX8MM_VPUBLK_PD_G1            0
+#define IMX8MM_VPUBLK_PD_G2            1
+#define IMX8MM_VPUBLK_PD_H1            2
+
+#define IMX8MM_DISPBLK_PD_CSI_BRIDGE   0
+#define IMX8MM_DISPBLK_PD_LCDIF                1
+#define IMX8MM_DISPBLK_PD_MIPI_DSI     2
+#define IMX8MM_DISPBLK_PD_MIPI_CSI     3
+
 #endif
index ba8636e..6a60c7c 100644 (file)
@@ -27,6 +27,8 @@
 #define MT8173_INFRA_GCE_FAXI_RST       40
 #define MT8173_INFRA_MMIOMMURST         47
 
+/* MMSYS resets */
+#define MT8173_MMSYS_SW0_RST_B_DISP_DSI0       25
 
 /*  PERICFG resets */
 #define MT8173_PERI_UART0_SW_RST        0
@@ -80,6 +80,9 @@
 
 #define MT8183_INFRACFG_SW_RST_NUM                             128
 
+/* MMSYS resets */
+#define MT8183_MMSYS_SW0_RST_B_DISP_DSI0                       25
+
 #define MT8183_TOPRGU_MM_SW_RST                                        1
 #define MT8183_TOPRGU_MFG_SW_RST                               2
 #define MT8183_TOPRGU_VENC_SW_RST                              3