Merge tag 'armsoc-dt' of git://git.kernel.org/pub/scm/linux/kernel/git/soc/soc
authorLinus Torvalds <torvalds@linux-foundation.org>
Thu, 5 Dec 2019 20:09:47 +0000 (12:09 -0800)
committerLinus Torvalds <torvalds@linux-foundation.org>
Thu, 5 Dec 2019 20:09:47 +0000 (12:09 -0800)
Pull ARM Device-tree updates from Olof Johansson:
 "As always, the bulk of updates.  Some of the news this cycle:

  New SoC descriptions:
   - Broadcom BCM2711
   - Amlogic Meson A1 and G12
   - Freescale S32V234
   - Marvell Armada AP807/AP807-quad and CP115
   - Realtek RTD1293 and RTD1296
   - Rockchip RK3308

  New boards and platforms:
   - Allwinner: NanoPi Duo2
   - Amlogic: Ugoos am6
   - Atmel at91: Overkiz Kizbox2/4
   - Broadcom: RPi4, Luxul XWC-2000
   - Marvell: New Espressobin flavor
   - NXP: i.MX8MN LPDDR4 EVK, i.MX8QXP Colibri, S32V234 EVB, Netronix
     E60K02 and Kobo Clara HD, Kontron N6311 and N6411, OPOS6UL and
     OPOS6ULDev
   - Renesas: Salvator-XS
   - Rockchip: Beelink A1 (rk3308), rk3308 eval boards, rk3399-roc-pc"

* tag 'armsoc-dt' of git://git.kernel.org/pub/scm/linux/kernel/git/soc/soc: (653 commits)
  ARM: dts: logicpd-torpedo: Disable USB Host
  arm: dts: mt6323: add keys, power-controller, rtc and codec
  arm64: dts: mt8183: add systimer0 device node
  dt-bindings: mediatek: update bindings for MT8183 systimer
  arm64: dts: rockchip: fix sdmmc detection on boot on rk3328-roc-cc
  arm64: dts: rockchip: Split rk3399-roc-pc for with and without mezzanine board.
  arm64: dts: rockchip: Add Beelink A1
  dt-bindings: ARM: rockchip: Add Beelink A1
  arm64: dts: rockchip: Add RK3328 audio pipelines
  arm64: dts: ti: k3-j721e-common-proc-board: Add USB ports
  arm64: dts: ti: k3-j721e-main: add USB controller nodes
  ARM: dts: aspeed-g6: Add timer description
  ARM: dts: aspeed: ast2600evb: Enable i2c buses
  ARM: dts: at91: add a dts and dtsi file for kizbox2 based boards
  dt-bindings: arm: at91: Document Kizbox2-2 board binding
  arm64: dts: meson-gx: fix i2c compatible
  arm64: dts: meson-gx: cec node should be disabled by default
  arm64: dts: meson-g12b-odroid-n2: add missing amlogic, s922x compatible
  arm64: dts: meson-gxm: fix gpu irq order
  arm64: dts: meson-g12a: fix gpu irq order
  ...

501 files changed:
Documentation/devicetree/bindings/arm/amlogic.yaml
Documentation/devicetree/bindings/arm/atmel-at91.yaml
Documentation/devicetree/bindings/arm/bcm/bcm2835.yaml [new file with mode: 0644]
Documentation/devicetree/bindings/arm/bcm/brcm,bcm2835.txt [deleted file]
Documentation/devicetree/bindings/arm/cpus.yaml
Documentation/devicetree/bindings/arm/fsl.yaml
Documentation/devicetree/bindings/arm/marvell/ap806-system-controller.txt [deleted file]
Documentation/devicetree/bindings/arm/marvell/ap80x-system-controller.txt [new file with mode: 0644]
Documentation/devicetree/bindings/arm/marvell/armada-7k-8k.txt [deleted file]
Documentation/devicetree/bindings/arm/marvell/armada-7k-8k.yaml [new file with mode: 0644]
Documentation/devicetree/bindings/arm/mrvl/mrvl.txt [deleted file]
Documentation/devicetree/bindings/arm/mrvl/mrvl.yaml [new file with mode: 0644]
Documentation/devicetree/bindings/arm/realtek.yaml
Documentation/devicetree/bindings/arm/renesas,prr.txt [deleted file]
Documentation/devicetree/bindings/arm/renesas,prr.yaml [new file with mode: 0644]
Documentation/devicetree/bindings/arm/renesas.yaml
Documentation/devicetree/bindings/arm/rockchip.yaml
Documentation/devicetree/bindings/arm/sunxi.yaml
Documentation/devicetree/bindings/arm/sunxi/sunxi-mbus.txt
Documentation/devicetree/bindings/clock/rockchip,px30-cru.txt
Documentation/devicetree/bindings/crypto/allwinner,sun8i-ce.yaml [new file with mode: 0644]
Documentation/devicetree/bindings/ddr/lpddr2-timings.txt [new file with mode: 0644]
Documentation/devicetree/bindings/ddr/lpddr2.txt [new file with mode: 0644]
Documentation/devicetree/bindings/ddr/lpddr3-timings.txt [new file with mode: 0644]
Documentation/devicetree/bindings/ddr/lpddr3.txt [new file with mode: 0644]
Documentation/devicetree/bindings/display/bridge/anx6345.yaml [new file with mode: 0644]
Documentation/devicetree/bindings/gpu/arm,mali-midgard.yaml
Documentation/devicetree/bindings/interrupt-controller/mrvl,intc.txt
Documentation/devicetree/bindings/lpddr2/lpddr2-timings.txt [deleted file]
Documentation/devicetree/bindings/lpddr2/lpddr2.txt [deleted file]
Documentation/devicetree/bindings/memory-controllers/exynos5422-dmc.txt [new file with mode: 0644]
Documentation/devicetree/bindings/memory-controllers/nvidia,tegra124-mc.yaml [new file with mode: 0644]
Documentation/devicetree/bindings/memory-controllers/nvidia,tegra30-emc.yaml [new file with mode: 0644]
Documentation/devicetree/bindings/memory-controllers/nvidia,tegra30-mc.txt [deleted file]
Documentation/devicetree/bindings/memory-controllers/nvidia,tegra30-mc.yaml [new file with mode: 0644]
Documentation/devicetree/bindings/phy/phy-mmp3-usb.txt [new file with mode: 0644]
Documentation/devicetree/bindings/power/renesas,rcar-sysc.txt
Documentation/devicetree/bindings/regulator/nvidia,tegra-regulators-coupling.txt [new file with mode: 0644]
Documentation/devicetree/bindings/reset/renesas,rst.txt
Documentation/devicetree/bindings/soc/rockchip/grf.txt
Documentation/devicetree/bindings/timer/mediatek,mtk-timer.txt
Documentation/devicetree/bindings/timer/renesas,tmu.txt
Documentation/devicetree/bindings/vendor-prefixes.yaml
MAINTAINERS
arch/arm/boot/dts/Makefile
arch/arm/boot/dts/am335x-baltos.dtsi
arch/arm/boot/dts/am335x-bone-common.dtsi
arch/arm/boot/dts/am335x-boneblue.dts
arch/arm/boot/dts/am335x-chiliboard.dts
arch/arm/boot/dts/am335x-cm-t335.dts
arch/arm/boot/dts/am335x-evm.dts
arch/arm/boot/dts/am335x-evmsk.dts
arch/arm/boot/dts/am335x-guardian.dts
arch/arm/boot/dts/am335x-igep0033.dtsi
arch/arm/boot/dts/am335x-lxm.dts
arch/arm/boot/dts/am335x-moxa-uc-2100-common.dtsi
arch/arm/boot/dts/am335x-moxa-uc-8100-me-t.dts
arch/arm/boot/dts/am335x-netcan-plus-1xx.dts [new file with mode: 0644]
arch/arm/boot/dts/am335x-netcom-plus-2xx.dts [new file with mode: 0644]
arch/arm/boot/dts/am335x-netcom-plus-8xx.dts [new file with mode: 0644]
arch/arm/boot/dts/am335x-osd3358-sm-red.dts
arch/arm/boot/dts/am335x-pcm-953.dtsi
arch/arm/boot/dts/am335x-pdu001.dts
arch/arm/boot/dts/am335x-pepper.dts
arch/arm/boot/dts/am335x-pocketbeagle.dts
arch/arm/boot/dts/am335x-regor.dtsi
arch/arm/boot/dts/am335x-shc.dts
arch/arm/boot/dts/am335x-sl50.dts
arch/arm/boot/dts/am335x-wega.dtsi
arch/arm/boot/dts/am33xx-l4.dtsi
arch/arm/boot/dts/am33xx.dtsi
arch/arm/boot/dts/am3517.dtsi
arch/arm/boot/dts/am4372.dtsi
arch/arm/boot/dts/am437x-l4.dtsi
arch/arm/boot/dts/armada-38x.dtsi
arch/arm/boot/dts/armada-xp-98dx3236.dtsi
arch/arm/boot/dts/armada-xp-db-xc3-24g4xg.dts
arch/arm/boot/dts/armada-xp.dtsi
arch/arm/boot/dts/aspeed-ast2500-evb.dts
arch/arm/boot/dts/aspeed-ast2600-evb.dts
arch/arm/boot/dts/aspeed-bmc-arm-stardragon4800-rep2.dts
arch/arm/boot/dts/aspeed-bmc-facebook-cmm.dts
arch/arm/boot/dts/aspeed-bmc-facebook-minipack.dts
arch/arm/boot/dts/aspeed-bmc-facebook-tiogapass.dts
arch/arm/boot/dts/aspeed-bmc-facebook-yamp.dts
arch/arm/boot/dts/aspeed-bmc-ibm-rainier.dts [new file with mode: 0644]
arch/arm/boot/dts/aspeed-bmc-inspur-fp5280g2.dts
arch/arm/boot/dts/aspeed-bmc-inspur-on5263m5.dts
arch/arm/boot/dts/aspeed-bmc-intel-s2600wf.dts
arch/arm/boot/dts/aspeed-bmc-lenovo-hr630.dts
arch/arm/boot/dts/aspeed-bmc-lenovo-hr855xg2.dts
arch/arm/boot/dts/aspeed-bmc-opp-lanyang.dts
arch/arm/boot/dts/aspeed-bmc-opp-mihawk.dts
arch/arm/boot/dts/aspeed-bmc-opp-palmetto.dts
arch/arm/boot/dts/aspeed-bmc-opp-romulus.dts
arch/arm/boot/dts/aspeed-bmc-opp-swift.dts
arch/arm/boot/dts/aspeed-bmc-opp-tacoma.dts [new file with mode: 0644]
arch/arm/boot/dts/aspeed-bmc-opp-vesnin.dts
arch/arm/boot/dts/aspeed-bmc-opp-witherspoon.dts
arch/arm/boot/dts/aspeed-bmc-opp-zaius.dts
arch/arm/boot/dts/aspeed-bmc-portwell-neptune.dts
arch/arm/boot/dts/aspeed-g4.dtsi
arch/arm/boot/dts/aspeed-g5.dtsi
arch/arm/boot/dts/aspeed-g6-pinctrl.dtsi
arch/arm/boot/dts/aspeed-g6.dtsi
arch/arm/boot/dts/ast2500-facebook-netbmc-common.dtsi [new file with mode: 0644]
arch/arm/boot/dts/at91-kizbox2-2.dts [new file with mode: 0644]
arch/arm/boot/dts/at91-kizbox2-common.dtsi [new file with mode: 0644]
arch/arm/boot/dts/at91-kizbox2.dts [deleted file]
arch/arm/boot/dts/at91-kizbox3-hs.dts [new file with mode: 0644]
arch/arm/boot/dts/at91-kizbox3_common.dtsi [new file with mode: 0644]
arch/arm/boot/dts/at91-sama5d27_som1_ek.dts
arch/arm/boot/dts/at91-sama5d2_xplained.dts
arch/arm/boot/dts/at91-sama5d4_xplained.dts
arch/arm/boot/dts/atlas7-evb.dts
arch/arm/boot/dts/bcm-hr2.dtsi
arch/arm/boot/dts/bcm2711-rpi-4-b.dts [new file with mode: 0644]
arch/arm/boot/dts/bcm2711.dtsi [new file with mode: 0644]
arch/arm/boot/dts/bcm2835-common.dtsi [new file with mode: 0644]
arch/arm/boot/dts/bcm2835-rpi.dtsi
arch/arm/boot/dts/bcm2835.dtsi
arch/arm/boot/dts/bcm2836.dtsi
arch/arm/boot/dts/bcm2837.dtsi
arch/arm/boot/dts/bcm283x-rpi-usb-peripheral.dtsi [new file with mode: 0644]
arch/arm/boot/dts/bcm283x.dtsi
arch/arm/boot/dts/bcm47094-luxul-xwc-2000.dts [new file with mode: 0644]
arch/arm/boot/dts/dove.dtsi
arch/arm/boot/dts/dra7-l4.dtsi
arch/arm/boot/dts/dra7.dtsi
arch/arm/boot/dts/e60k02.dtsi [new file with mode: 0644]
arch/arm/boot/dts/emev2.dtsi
arch/arm/boot/dts/exynos3250.dtsi
arch/arm/boot/dts/exynos4.dtsi
arch/arm/boot/dts/exynos4210.dtsi
arch/arm/boot/dts/exynos4412.dtsi
arch/arm/boot/dts/exynos5.dtsi
arch/arm/boot/dts/exynos5250-arndale.dts
arch/arm/boot/dts/exynos5250.dtsi
arch/arm/boot/dts/exynos5260.dtsi
arch/arm/boot/dts/exynos5410.dtsi
arch/arm/boot/dts/exynos5420-peach-pit.dts
arch/arm/boot/dts/exynos5420.dtsi
arch/arm/boot/dts/exynos5422-odroid-core.dtsi
arch/arm/boot/dts/exynos5422-odroidxu3-lite.dts
arch/arm/boot/dts/exynos54xx.dtsi
arch/arm/boot/dts/exynos5800-peach-pi.dts
arch/arm/boot/dts/exynos5800.dtsi
arch/arm/boot/dts/imx27.dtsi
arch/arm/boot/dts/imx31.dtsi
arch/arm/boot/dts/imx51.dtsi
arch/arm/boot/dts/imx53-qsb-common.dtsi
arch/arm/boot/dts/imx53-usbarmory.dts
arch/arm/boot/dts/imx6dl-apf6dev.dts
arch/arm/boot/dts/imx6dl-colibri-eval-v3.dts
arch/arm/boot/dts/imx6dl-yapp4-common.dtsi
arch/arm/boot/dts/imx6dl-yapp4-hydra.dts
arch/arm/boot/dts/imx6dl.dtsi
arch/arm/boot/dts/imx6q-apalis-eval.dts
arch/arm/boot/dts/imx6q-apalis-ixora-v1.1.dts
arch/arm/boot/dts/imx6q-apalis-ixora.dts
arch/arm/boot/dts/imx6q-apf6dev.dts
arch/arm/boot/dts/imx6q-dhcom-pdk2.dts
arch/arm/boot/dts/imx6q-dhcom-som.dtsi
arch/arm/boot/dts/imx6q-gw54xx.dts
arch/arm/boot/dts/imx6q.dtsi
arch/arm/boot/dts/imx6qdl-apalis.dtsi
arch/arm/boot/dts/imx6qdl-apf6.dtsi
arch/arm/boot/dts/imx6qdl-apf6dev.dtsi
arch/arm/boot/dts/imx6qdl-colibri.dtsi
arch/arm/boot/dts/imx6qdl-gw551x.dtsi
arch/arm/boot/dts/imx6qdl-rex.dtsi
arch/arm/boot/dts/imx6qdl-udoo.dtsi
arch/arm/boot/dts/imx6qdl-wandboard.dtsi
arch/arm/boot/dts/imx6qdl-zii-rdu2.dtsi
arch/arm/boot/dts/imx6sl.dtsi
arch/arm/boot/dts/imx6sll-kobo-clarahd.dts [new file with mode: 0644]
arch/arm/boot/dts/imx6sll.dtsi
arch/arm/boot/dts/imx6sx.dtsi
arch/arm/boot/dts/imx6ul-14x14-evk.dtsi
arch/arm/boot/dts/imx6ul-imx6ull-opos6ul.dtsi [new file with mode: 0644]
arch/arm/boot/dts/imx6ul-imx6ull-opos6uldev.dtsi [new file with mode: 0644]
arch/arm/boot/dts/imx6ul-kontron-n6310-s.dts
arch/arm/boot/dts/imx6ul-kontron-n6310-som.dtsi
arch/arm/boot/dts/imx6ul-kontron-n6311-s.dts [new file with mode: 0644]
arch/arm/boot/dts/imx6ul-kontron-n6311-som.dtsi [new file with mode: 0644]
arch/arm/boot/dts/imx6ul-kontron-n6x1x-s.dtsi [new file with mode: 0644]
arch/arm/boot/dts/imx6ul-kontron-n6x1x-som-common.dtsi [new file with mode: 0644]
arch/arm/boot/dts/imx6ul-opos6ul.dtsi
arch/arm/boot/dts/imx6ul-opos6uldev.dts
arch/arm/boot/dts/imx6ul-phytec-phycore-som.dtsi
arch/arm/boot/dts/imx6ul.dtsi
arch/arm/boot/dts/imx6ull-colibri-eval-v3.dtsi
arch/arm/boot/dts/imx6ull-colibri-nonwifi.dtsi
arch/arm/boot/dts/imx6ull-colibri-wifi.dtsi
arch/arm/boot/dts/imx6ull-colibri.dtsi
arch/arm/boot/dts/imx6ull-kontron-n6411-s.dts [new file with mode: 0644]
arch/arm/boot/dts/imx6ull-kontron-n6411-som.dtsi [new file with mode: 0644]
arch/arm/boot/dts/imx6ull-opos6ul.dtsi [new file with mode: 0644]
arch/arm/boot/dts/imx6ull-opos6uldev.dts [new file with mode: 0644]
arch/arm/boot/dts/imx7-colibri-eval-v3.dtsi
arch/arm/boot/dts/imx7-colibri.dtsi
arch/arm/boot/dts/imx7d.dtsi
arch/arm/boot/dts/imx7s.dtsi
arch/arm/boot/dts/imx7ulp-evk.dts
arch/arm/boot/dts/imx7ulp.dtsi
arch/arm/boot/dts/keystone-clocks.dtsi
arch/arm/boot/dts/keystone-k2e-clocks.dtsi
arch/arm/boot/dts/keystone-k2e-netcp.dtsi
arch/arm/boot/dts/keystone-k2hk-netcp.dtsi
arch/arm/boot/dts/keystone-k2l-netcp.dtsi
arch/arm/boot/dts/kirkwood-synology.dtsi
arch/arm/boot/dts/logicpd-torpedo-37xx-devkit-28.dts
arch/arm/boot/dts/logicpd-torpedo-37xx-devkit.dts
arch/arm/boot/dts/logicpd-torpedo-baseboard.dtsi
arch/arm/boot/dts/logicpd-torpedo-som.dtsi
arch/arm/boot/dts/mmp3-dell-ariel.dts [new file with mode: 0644]
arch/arm/boot/dts/mmp3.dtsi [new file with mode: 0644]
arch/arm/boot/dts/motorola-mapphone-common.dtsi [new file with mode: 0644]
arch/arm/boot/dts/mt6323.dtsi
arch/arm/boot/dts/omap3-igep0020-rev-f.dts
arch/arm/boot/dts/omap3-igep0030-rev-g.dts
arch/arm/boot/dts/omap3-n900.dts
arch/arm/boot/dts/omap3.dtsi
arch/arm/boot/dts/omap34xx-omap36xx-clocks.dtsi
arch/arm/boot/dts/omap4-droid-bionic-xt875.dts [new file with mode: 0644]
arch/arm/boot/dts/omap4-droid4-xt894.dts
arch/arm/boot/dts/omap4-l4-abe.dtsi
arch/arm/boot/dts/omap4-l4.dtsi
arch/arm/boot/dts/omap4.dtsi
arch/arm/boot/dts/omap5-l4-abe.dtsi
arch/arm/boot/dts/omap5-l4.dtsi
arch/arm/boot/dts/omap5.dtsi
arch/arm/boot/dts/openbmc-flash-layout-128.dtsi [new file with mode: 0644]
arch/arm/boot/dts/qcom-ipq4019.dtsi
arch/arm/boot/dts/qcom-msm8974-fairphone-fp2.dts
arch/arm/boot/dts/qcom-msm8974.dtsi
arch/arm/boot/dts/qcom-pm8941.dtsi
arch/arm/boot/dts/r8a7790-lager.dts
arch/arm/boot/dts/r8a7793-gose.dts
arch/arm/boot/dts/rda8810pl.dtsi
arch/arm/boot/dts/rk3036.dtsi
arch/arm/boot/dts/rk3288-rock2-som.dtsi
arch/arm/boot/dts/rk3288-tinker.dtsi
arch/arm/boot/dts/rk3288-veyron-analog-audio.dtsi
arch/arm/boot/dts/rk3288-veyron-edp.dtsi
arch/arm/boot/dts/rk3288-veyron-jaq.dts
arch/arm/boot/dts/rk3288-veyron-mickey.dts
arch/arm/boot/dts/rk3288-veyron-minnie.dts
arch/arm/boot/dts/rk3288-veyron-tiger.dts
arch/arm/boot/dts/rk3288.dtsi
arch/arm/boot/dts/s3c6410-mini6410.dts
arch/arm/boot/dts/s3c6410-smdk6410.dts
arch/arm/boot/dts/sama5d2.dtsi
arch/arm/boot/dts/socfpga_arria10_socdk_qspi.dts
arch/arm/boot/dts/stm32429i-eval.dts
arch/arm/boot/dts/stm32746g-eval.dts
arch/arm/boot/dts/stm32f429-disco.dts
arch/arm/boot/dts/stm32f469-disco.dts
arch/arm/boot/dts/stm32f469.dtsi
arch/arm/boot/dts/stm32f746-disco.dts
arch/arm/boot/dts/stm32f769-disco.dts
arch/arm/boot/dts/stm32h743i-disco.dts
arch/arm/boot/dts/stm32h743i-eval.dts
arch/arm/boot/dts/stm32mp157-pinctrl.dtsi
arch/arm/boot/dts/stm32mp157a-avenger96.dts
arch/arm/boot/dts/stm32mp157a-dk1.dts
arch/arm/boot/dts/stm32mp157c-dk2.dts
arch/arm/boot/dts/stm32mp157c-ed1.dts
arch/arm/boot/dts/stm32mp157c-ev1.dts
arch/arm/boot/dts/stm32mp157c.dtsi
arch/arm/boot/dts/sun5i-a10s-olinuxino-micro.dts
arch/arm/boot/dts/sun6i-a31.dtsi
arch/arm/boot/dts/sun8i-a83t-tbs-a711.dts
arch/arm/boot/dts/sun8i-a83t.dtsi
arch/arm/boot/dts/sun8i-h3-nanopi-duo2.dts [new file with mode: 0644]
arch/arm/boot/dts/sun8i-h3.dtsi
arch/arm/boot/dts/sun8i-r40.dtsi
arch/arm/boot/dts/sun9i-a80.dtsi
arch/arm/boot/dts/sunxi-h3-h5.dtsi
arch/arm/boot/dts/tegra124-nyan-big-emc.dtsi
arch/arm/boot/dts/tegra124-venice2.dts
arch/arm/boot/dts/tegra124.dtsi
arch/arm/boot/dts/tegra20-cpu-opp-microvolt.dtsi [new file with mode: 0644]
arch/arm/boot/dts/tegra20-cpu-opp.dtsi [new file with mode: 0644]
arch/arm/boot/dts/tegra20-paz00.dts
arch/arm/boot/dts/tegra20-trimslice.dts
arch/arm/boot/dts/tegra20.dtsi
arch/arm/boot/dts/tegra30-apalis-v1.1.dtsi
arch/arm/boot/dts/tegra30-apalis.dtsi
arch/arm/boot/dts/tegra30-cardhu-a04.dts
arch/arm/boot/dts/tegra30-colibri.dtsi
arch/arm/boot/dts/tegra30-cpu-opp-microvolt.dtsi [new file with mode: 0644]
arch/arm/boot/dts/tegra30-cpu-opp.dtsi [new file with mode: 0644]
arch/arm/boot/dts/tegra30.dtsi
arch/arm/boot/dts/vf-colibri.dtsi
arch/arm/boot/dts/vf500-colibri.dtsi
arch/arm/boot/dts/vf610-bk4.dts
arch/arm/boot/dts/vf610-zii-scu4-aib.dts
arch/arm/configs/keystone_defconfig
arch/arm/mach-omap2/omap_hwmod_33xx_43xx_common_data.h
arch/arm/mach-omap2/omap_hwmod_33xx_43xx_interconnect_data.c
arch/arm/mach-omap2/omap_hwmod_33xx_43xx_ipblock_data.c
arch/arm/mach-omap2/omap_hwmod_33xx_data.c
arch/arm/mach-omap2/omap_hwmod_43xx_data.c
arch/arm/mach-omap2/omap_hwmod_44xx_data.c
arch/arm/mach-omap2/omap_hwmod_54xx_data.c
arch/arm/mach-omap2/omap_hwmod_7xx_data.c
arch/arm64/boot/dts/actions/s900-bubblegum-96.dts
arch/arm64/boot/dts/actions/s900.dtsi
arch/arm64/boot/dts/allwinner/sun50i-a64-orangepi-win.dts
arch/arm64/boot/dts/allwinner/sun50i-a64-sopine-baseboard.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-emlid-neutis-n5.dtsi
arch/arm64/boot/dts/allwinner/sun50i-h5.dtsi
arch/arm64/boot/dts/allwinner/sun50i-h6-beelink-gs1.dts
arch/arm64/boot/dts/allwinner/sun50i-h6-orangepi-3.dts
arch/arm64/boot/dts/allwinner/sun50i-h6-orangepi.dtsi
arch/arm64/boot/dts/allwinner/sun50i-h6-pine-h64.dts
arch/arm64/boot/dts/allwinner/sun50i-h6-tanix-tx6.dts
arch/arm64/boot/dts/allwinner/sun50i-h6.dtsi
arch/arm64/boot/dts/altera/socfpga_stratix10_socdk.dts
arch/arm64/boot/dts/amlogic/Makefile
arch/arm64/boot/dts/amlogic/meson-a1-ad401.dts [new file with mode: 0644]
arch/arm64/boot/dts/amlogic/meson-a1.dtsi [new file with mode: 0644]
arch/arm64/boot/dts/amlogic/meson-axg.dtsi
arch/arm64/boot/dts/amlogic/meson-g12-common.dtsi
arch/arm64/boot/dts/amlogic/meson-g12.dtsi [new file with mode: 0644]
arch/arm64/boot/dts/amlogic/meson-g12a-sei510.dts
arch/arm64/boot/dts/amlogic/meson-g12a-x96-max.dts
arch/arm64/boot/dts/amlogic/meson-g12a.dtsi
arch/arm64/boot/dts/amlogic/meson-g12b-odroid-n2.dts
arch/arm64/boot/dts/amlogic/meson-g12b-ugoos-am6.dts [new file with mode: 0644]
arch/arm64/boot/dts/amlogic/meson-g12b.dtsi
arch/arm64/boot/dts/amlogic/meson-gx-p23x-q20x.dtsi
arch/arm64/boot/dts/amlogic/meson-gx.dtsi
arch/arm64/boot/dts/amlogic/meson-gxbb-nanopi-k2.dts
arch/arm64/boot/dts/amlogic/meson-gxbb-nexbox-a95x.dts
arch/arm64/boot/dts/amlogic/meson-gxbb-odroidc2.dts
arch/arm64/boot/dts/amlogic/meson-gxbb-p20x.dtsi
arch/arm64/boot/dts/amlogic/meson-gxbb-vega-s95.dtsi
arch/arm64/boot/dts/amlogic/meson-gxbb-wetek.dtsi
arch/arm64/boot/dts/amlogic/meson-gxl-s805x-libretech-ac.dts
arch/arm64/boot/dts/amlogic/meson-gxl-s805x-p241.dts
arch/arm64/boot/dts/amlogic/meson-gxl-s905x-khadas-vim.dts
arch/arm64/boot/dts/amlogic/meson-gxl-s905x-libretech-cc.dts
arch/arm64/boot/dts/amlogic/meson-gxl-s905x-nexbox-a95x.dts
arch/arm64/boot/dts/amlogic/meson-gxl-s905x-p212.dtsi
arch/arm64/boot/dts/amlogic/meson-gxl.dtsi
arch/arm64/boot/dts/amlogic/meson-gxm-khadas-vim2.dts
arch/arm64/boot/dts/amlogic/meson-gxm-rbox-pro.dts
arch/arm64/boot/dts/amlogic/meson-gxm-vega-s96.dts
arch/arm64/boot/dts/amlogic/meson-gxm.dtsi
arch/arm64/boot/dts/amlogic/meson-khadas-vim3.dtsi
arch/arm64/boot/dts/amlogic/meson-sm1-sei610.dts
arch/arm64/boot/dts/amlogic/meson-sm1.dtsi
arch/arm64/boot/dts/arm/juno-base.dtsi
arch/arm64/boot/dts/broadcom/Makefile
arch/arm64/boot/dts/broadcom/bcm2711-rpi-4-b.dts [new file with mode: 0644]
arch/arm64/boot/dts/exynos/exynos5433.dtsi
arch/arm64/boot/dts/exynos/exynos7.dtsi
arch/arm64/boot/dts/freescale/Makefile
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-ls1046a-rdb.dts
arch/arm64/boot/dts/freescale/fsl-ls1088a-rdb.dts
arch/arm64/boot/dts/freescale/fsl-lx2160a.dtsi
arch/arm64/boot/dts/freescale/imx8mm-evk.dts
arch/arm64/boot/dts/freescale/imx8mm.dtsi
arch/arm64/boot/dts/freescale/imx8mn-ddr4-evk.dts
arch/arm64/boot/dts/freescale/imx8mn-evk.dts [new file with mode: 0644]
arch/arm64/boot/dts/freescale/imx8mn-evk.dtsi [new file with mode: 0644]
arch/arm64/boot/dts/freescale/imx8mn.dtsi
arch/arm64/boot/dts/freescale/imx8mq-evk.dts
arch/arm64/boot/dts/freescale/imx8mq-hummingboard-pulse.dts
arch/arm64/boot/dts/freescale/imx8mq-librem5-devkit.dts
arch/arm64/boot/dts/freescale/imx8mq-nitrogen.dts
arch/arm64/boot/dts/freescale/imx8mq-pico-pi.dts
arch/arm64/boot/dts/freescale/imx8mq-sr-som.dtsi
arch/arm64/boot/dts/freescale/imx8mq-zii-ultra.dtsi
arch/arm64/boot/dts/freescale/imx8mq.dtsi
arch/arm64/boot/dts/freescale/imx8qxp-ai_ml.dts
arch/arm64/boot/dts/freescale/imx8qxp-colibri-eval-v3.dts [new file with mode: 0644]
arch/arm64/boot/dts/freescale/imx8qxp-colibri-eval-v3.dtsi [new file with mode: 0644]
arch/arm64/boot/dts/freescale/imx8qxp-colibri.dtsi [new file with mode: 0644]
arch/arm64/boot/dts/freescale/imx8qxp-mek.dts
arch/arm64/boot/dts/freescale/imx8qxp.dtsi
arch/arm64/boot/dts/freescale/s32v234-evb.dts [new file with mode: 0644]
arch/arm64/boot/dts/freescale/s32v234.dtsi [new file with mode: 0644]
arch/arm64/boot/dts/hisilicon/hi6220.dtsi
arch/arm64/boot/dts/intel/socfpga_agilex.dtsi
arch/arm64/boot/dts/intel/socfpga_agilex_socdk.dts
arch/arm64/boot/dts/lg/lg1312.dtsi
arch/arm64/boot/dts/lg/lg1313.dtsi
arch/arm64/boot/dts/marvell/Makefile
arch/arm64/boot/dts/marvell/armada-3720-espressobin-emmc.dts [new file with mode: 0644]
arch/arm64/boot/dts/marvell/armada-3720-espressobin-v7-emmc.dts [new file with mode: 0644]
arch/arm64/boot/dts/marvell/armada-3720-espressobin-v7.dts [new file with mode: 0644]
arch/arm64/boot/dts/marvell/armada-3720-espressobin.dts
arch/arm64/boot/dts/marvell/armada-3720-espressobin.dtsi [new file with mode: 0644]
arch/arm64/boot/dts/marvell/armada-3720-turris-mox.dts
arch/arm64/boot/dts/marvell/armada-70x0.dtsi
arch/arm64/boot/dts/marvell/armada-8040-mcbin.dtsi
arch/arm64/boot/dts/marvell/armada-80x0.dtsi
arch/arm64/boot/dts/marvell/armada-ap806-dual.dtsi
arch/arm64/boot/dts/marvell/armada-ap806-quad.dtsi
arch/arm64/boot/dts/marvell/armada-ap806.dtsi
arch/arm64/boot/dts/marvell/armada-ap807-quad.dtsi [new file with mode: 0644]
arch/arm64/boot/dts/marvell/armada-ap807.dtsi [new file with mode: 0644]
arch/arm64/boot/dts/marvell/armada-ap80x.dtsi [new file with mode: 0644]
arch/arm64/boot/dts/marvell/armada-common.dtsi
arch/arm64/boot/dts/marvell/armada-cp110.dtsi
arch/arm64/boot/dts/marvell/armada-cp115.dtsi [new file with mode: 0644]
arch/arm64/boot/dts/marvell/armada-cp11x.dtsi [new file with mode: 0644]
arch/arm64/boot/dts/marvell/cn9130-db.dts [new file with mode: 0644]
arch/arm64/boot/dts/marvell/cn9130.dtsi [new file with mode: 0644]
arch/arm64/boot/dts/marvell/cn9131-db.dts [new file with mode: 0644]
arch/arm64/boot/dts/marvell/cn9132-db.dts [new file with mode: 0644]
arch/arm64/boot/dts/mediatek/mt8183.dtsi
arch/arm64/boot/dts/nvidia/tegra186-p2771-0000.dts
arch/arm64/boot/dts/nvidia/tegra186.dtsi
arch/arm64/boot/dts/nvidia/tegra194-p2888.dtsi
arch/arm64/boot/dts/nvidia/tegra194-p2972-0000.dts
arch/arm64/boot/dts/nvidia/tegra194.dtsi
arch/arm64/boot/dts/nvidia/tegra210-p2180.dtsi
arch/arm64/boot/dts/nvidia/tegra210-p2597.dtsi
arch/arm64/boot/dts/nvidia/tegra210-p3450-0000.dts
arch/arm64/boot/dts/nvidia/tegra210.dtsi
arch/arm64/boot/dts/qcom/apq8096-db820c.dtsi
arch/arm64/boot/dts/qcom/msm8916-longcheer-l8150.dts
arch/arm64/boot/dts/qcom/msm8916-samsung-a2015-common.dtsi
arch/arm64/boot/dts/qcom/msm8916-samsung-a5u-eur.dts
arch/arm64/boot/dts/qcom/msm8916.dtsi
arch/arm64/boot/dts/qcom/msm8996.dtsi
arch/arm64/boot/dts/qcom/msm8998-clamshell.dtsi
arch/arm64/boot/dts/qcom/msm8998-mtp.dtsi
arch/arm64/boot/dts/qcom/msm8998-pins.dtsi
arch/arm64/boot/dts/qcom/msm8998.dtsi
arch/arm64/boot/dts/qcom/qcs404.dtsi
arch/arm64/boot/dts/qcom/sdm845-cheza.dtsi
arch/arm64/boot/dts/qcom/sdm845-db845c.dts
arch/arm64/boot/dts/qcom/sdm845.dtsi
arch/arm64/boot/dts/qcom/sdm850-lenovo-yoga-c630.dts
arch/arm64/boot/dts/realtek/Makefile
arch/arm64/boot/dts/realtek/rtd1293-ds418j.dts [new file with mode: 0644]
arch/arm64/boot/dts/realtek/rtd1293.dtsi [new file with mode: 0644]
arch/arm64/boot/dts/realtek/rtd1295-zidoo-x9s.dts
arch/arm64/boot/dts/realtek/rtd1295.dtsi
arch/arm64/boot/dts/realtek/rtd1296-ds418.dts [new file with mode: 0644]
arch/arm64/boot/dts/realtek/rtd1296.dtsi [new file with mode: 0644]
arch/arm64/boot/dts/realtek/rtd129x.dtsi
arch/arm64/boot/dts/renesas/Makefile
arch/arm64/boot/dts/renesas/hihope-common.dtsi
arch/arm64/boot/dts/renesas/hihope-rzg2-ex.dtsi
arch/arm64/boot/dts/renesas/r8a774a1-hihope-rzg2m-ex.dts
arch/arm64/boot/dts/renesas/r8a774a1-hihope-rzg2m.dts
arch/arm64/boot/dts/renesas/r8a774a1.dtsi
arch/arm64/boot/dts/renesas/r8a774b1-hihope-rzg2n-ex.dts [new file with mode: 0644]
arch/arm64/boot/dts/renesas/r8a774b1-hihope-rzg2n.dts [new file with mode: 0644]
arch/arm64/boot/dts/renesas/r8a774b1.dtsi [new file with mode: 0644]
arch/arm64/boot/dts/renesas/r8a774c0.dtsi
arch/arm64/boot/dts/renesas/r8a7795-es1.dtsi
arch/arm64/boot/dts/renesas/r8a7795.dtsi
arch/arm64/boot/dts/renesas/r8a7796.dtsi
arch/arm64/boot/dts/renesas/r8a77961-salvator-xs.dts [new file with mode: 0644]
arch/arm64/boot/dts/renesas/r8a77961.dtsi [new file with mode: 0644]
arch/arm64/boot/dts/renesas/r8a77965.dtsi
arch/arm64/boot/dts/renesas/r8a77970.dtsi
arch/arm64/boot/dts/renesas/r8a77980.dtsi
arch/arm64/boot/dts/renesas/r8a77990.dtsi
arch/arm64/boot/dts/renesas/r8a77995.dtsi
arch/arm64/boot/dts/renesas/rzg2-advantech-idk-1110wr-panel.dtsi [new file with mode: 0644]
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-evb.dts [new file with mode: 0644]
arch/arm64/boot/dts/rockchip/rk3308-roc-cc.dts [new file with mode: 0644]
arch/arm64/boot/dts/rockchip/rk3308.dtsi [new file with mode: 0644]
arch/arm64/boot/dts/rockchip/rk3328-a1.dts [new file with mode: 0644]
arch/arm64/boot/dts/rockchip/rk3328-roc-cc.dts
arch/arm64/boot/dts/rockchip/rk3328.dtsi
arch/arm64/boot/dts/rockchip/rk3399-gru-bob.dts
arch/arm64/boot/dts/rockchip/rk3399-gru-scarlet.dtsi
arch/arm64/boot/dts/rockchip/rk3399-nanopi4.dtsi
arch/arm64/boot/dts/rockchip/rk3399-puma.dtsi
arch/arm64/boot/dts/rockchip/rk3399-roc-pc-mezzanine.dts [new file with mode: 0644]
arch/arm64/boot/dts/rockchip/rk3399-roc-pc.dts
arch/arm64/boot/dts/rockchip/rk3399-roc-pc.dtsi [new file with mode: 0644]
arch/arm64/boot/dts/rockchip/rk3399-rock-pi-4.dts
arch/arm64/boot/dts/rockchip/rk3399-rockpro64.dts
arch/arm64/boot/dts/rockchip/rk3399.dtsi
arch/arm64/boot/dts/ti/k3-am65-main.dtsi
arch/arm64/boot/dts/ti/k3-am654-base-board.dts
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.dtsi
arch/arm64/boot/dts/xilinx/zynqmp.dtsi
drivers/soc/qcom/qcom_aoss.c
include/dt-bindings/pinctrl/rockchip.h
include/dt-bindings/reset/realtek,rtd1295.h [new file with mode: 0644]

index 99015ce..c6a4433 100644 (file)
@@ -94,7 +94,7 @@ properties:
               - amlogic,p212
               - hwacom,amazetv
               - khadas,vim
-              - libretech,cc
+              - libretech,aml-s905x-cc
               - nexbox,a95x
           - const: amlogic,s905x
           - const: amlogic,meson-gxl
@@ -147,6 +147,7 @@ properties:
           - enum:
               - hardkernel,odroid-n2
               - khadas,vim3
+              - ugoos,am6
           - const: amlogic,s922x
           - const: amlogic,g12b
 
@@ -156,4 +157,10 @@ properties:
               - seirobotics,sei610
               - khadas,vim3l
           - const: amlogic,sm1
+
+      - description: Boards with the Amlogic Meson A1 A113L SoC
+        items:
+          - enum:
+              - amlogic,ad401
+          - const: amlogic,a1
 ...
index 6e168ab..6dd8be4 100644 (file)
@@ -45,6 +45,13 @@ properties:
           - const: atmel,at91sam9x5
           - const: atmel,at91sam9
 
+      - description: Overkiz kizbox3 board
+        items:
+          - const: overkiz,kizbox3-hs
+          - const: atmel,sama5d27
+          - const: atmel,sama5d2
+          - const: atmel,sama5
+
       - items:
           - const: atmel,sama5d27
           - const: atmel,sama5d2
@@ -73,6 +80,13 @@ properties:
           - const: atmel,sama5d3
           - const: atmel,sama5
 
+      - description: Overkiz kizbox2 board with two heads
+        items:
+          - const: overkiz,kizbox2-2
+          - const: atmel,sama5d31
+          - const: atmel,sama5d3
+          - const: atmel,sama5
+
       - items:
           - enum:
               - atmel,sama5d31
diff --git a/Documentation/devicetree/bindings/arm/bcm/bcm2835.yaml b/Documentation/devicetree/bindings/arm/bcm/bcm2835.yaml
new file mode 100644 (file)
index 0000000..dd52e29
--- /dev/null
@@ -0,0 +1,54 @@
+# SPDX-License-Identifier: GPL-2.0
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/arm/bcm/bcm2835.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Broadcom BCM2711/BCM2835 Platforms Device Tree Bindings
+
+maintainers:
+  - Eric Anholt <eric@anholt.net>
+  - Stefan Wahren <wahrenst@gmx.net>
+
+properties:
+  $nodename:
+    const: '/'
+  compatible:
+    oneOf:
+      - description: BCM2711 based Boards
+        items:
+          - enum:
+              - raspberrypi,4-model-b
+          - const: brcm,bcm2711
+
+      - description: BCM2835 based Boards
+        items:
+          - enum:
+              - raspberrypi,model-a
+              - raspberrypi,model-a-plus
+              - raspberrypi,model-b
+              - raspberrypi,model-b-i2c0  # Raspberry Pi Model B (no P5)
+              - raspberrypi,model-b-rev2
+              - raspberrypi,model-b-plus
+              - raspberrypi,compute-module
+              - raspberrypi,model-zero
+              - raspberrypi,model-zero-w
+          - const: brcm,bcm2835
+
+      - description: BCM2836 based Boards
+        items:
+          - enum:
+              - raspberrypi,2-model-b
+          - const: brcm,bcm2836
+
+      - description: BCM2837 based Boards
+        items:
+          - enum:
+              - raspberrypi,3-model-a-plus
+              - raspberrypi,3-model-b
+              - raspberrypi,3-model-b-plus
+              - raspberrypi,3-compute-module
+              - raspberrypi,3-compute-module-lite
+          - const: brcm,bcm2837
+
+...
diff --git a/Documentation/devicetree/bindings/arm/bcm/brcm,bcm2835.txt b/Documentation/devicetree/bindings/arm/bcm/brcm,bcm2835.txt
deleted file mode 100644 (file)
index 245328f..0000000
+++ /dev/null
@@ -1,67 +0,0 @@
-Broadcom BCM2835 device tree bindings
--------------------------------------------
-
-Raspberry Pi Model A
-Required root node properties:
-compatible = "raspberrypi,model-a", "brcm,bcm2835";
-
-Raspberry Pi Model A+
-Required root node properties:
-compatible = "raspberrypi,model-a-plus", "brcm,bcm2835";
-
-Raspberry Pi Model B
-Required root node properties:
-compatible = "raspberrypi,model-b", "brcm,bcm2835";
-
-Raspberry Pi Model B (no P5)
-early model B with I2C0 rather than I2C1 routed to the expansion header
-Required root node properties:
-compatible = "raspberrypi,model-b-i2c0", "brcm,bcm2835";
-
-Raspberry Pi Model B rev2
-Required root node properties:
-compatible = "raspberrypi,model-b-rev2", "brcm,bcm2835";
-
-Raspberry Pi Model B+
-Required root node properties:
-compatible = "raspberrypi,model-b-plus", "brcm,bcm2835";
-
-Raspberry Pi 2 Model B
-Required root node properties:
-compatible = "raspberrypi,2-model-b", "brcm,bcm2836";
-
-Raspberry Pi 3 Model A+
-Required root node properties:
-compatible = "raspberrypi,3-model-a-plus", "brcm,bcm2837";
-
-Raspberry Pi 3 Model B
-Required root node properties:
-compatible = "raspberrypi,3-model-b", "brcm,bcm2837";
-
-Raspberry Pi 3 Model B+
-Required root node properties:
-compatible = "raspberrypi,3-model-b-plus", "brcm,bcm2837";
-
-Raspberry Pi Compute Module
-Required root node properties:
-compatible = "raspberrypi,compute-module", "brcm,bcm2835";
-
-Raspberry Pi Compute Module 3
-Required root node properties:
-compatible = "raspberrypi,3-compute-module", "brcm,bcm2837";
-
-Raspberry Pi Compute Module 3 Lite
-Required root node properties:
-compatible = "raspberrypi,3-compute-module-lite", "brcm,bcm2837";
-
-Raspberry Pi Zero
-Required root node properties:
-compatible = "raspberrypi,model-zero", "brcm,bcm2835";
-
-Raspberry Pi Zero W
-Required root node properties:
-compatible = "raspberrypi,model-zero-w", "brcm,bcm2835";
-
-Generic BCM2835 board
-Required root node properties:
-compatible = "brcm,bcm2835";
index cb30895..c23c24f 100644 (file)
@@ -189,6 +189,7 @@ properties:
               - marvell,armada-390-smp
               - marvell,armada-xp-smp
               - marvell,98dx3236-smp
+              - marvell,mmp3-smp
               - mediatek,mt6589-smp
               - mediatek,mt81xx-tz-smp
               - qcom,gcc-msm8660
index 1b4b4e6..f79683a 100644 (file)
@@ -38,12 +38,16 @@ properties:
       - description: i.MX27 Product Development Kit
         items:
           - enum:
+              - armadeus,imx27-apf27      # APF27 SoM
+              - armadeus,imx27-apf27dev   # APF27 SoM on APF27Dev board
               - fsl,imx27-pdk
           - const: fsl,imx27
 
       - description: i.MX28 based Boards
         items:
           - enum:
+              - armadeus,imx28-apf28      # APF28 SoM
+              - armadeus,imx28-apf28dev   # APF28 SoM on APF28Dev board
               - fsl,imx28-evk
               - i2se,duckbill
               - i2se,duckbill-2
@@ -87,7 +91,8 @@ properties:
       - description: i.MX51 Babbage Board
         items:
           - enum:
-              - armadeus,imx51-apf51
+              - armadeus,imx51-apf51    # APF51 SoM
+              - armadeus,imx51-apf51dev # APF51 SoM on APF51Dev board
               - fsl,imx51-babbage
               - technologic,imx51-ts4800
           - const: fsl,imx51
@@ -106,6 +111,8 @@ properties:
       - description: i.MX6Q based Boards
         items:
           - enum:
+              - armadeus,imx6q-apf6       # APF6 (Quad/Dual) SoM
+              - armadeus,imx6q-apf6dev    # APF6 (Quad/Dual) SoM on APF6Dev board
               - emtrion,emcon-mx6         # emCON-MX6D or emCON-MX6Q SoM
               - emtrion,emcon-mx6-avari   # emCON-MX6D or emCON-MX6Q SoM on Avari Base
               - fsl,imx6q-arm2
@@ -114,6 +121,11 @@ properties:
               - fsl,imx6q-sabresd
               - technologic,imx6q-ts4900
               - technologic,imx6q-ts7970
+              - toradex,apalis_imx6q            # Apalis iMX6 Module
+              - toradex,apalis_imx6q-eval       # Apalis iMX6 Module on Apalis Evaluation Board
+              - toradex,apalis_imx6q-ixora      # Apalis iMX6 Module on Ixora
+              - toradex,apalis_imx6q-ixora-v1.1 # Apalis iMX6 Module on Ixora V1.1
+              - variscite,dt6customboard
           - const: fsl,imx6q
 
       - description: i.MX6QP based Boards
@@ -126,6 +138,8 @@ properties:
       - description: i.MX6DL based Boards
         items:
           - enum:
+              - armadeus,imx6dl-apf6      # APF6 (Solo) SoM
+              - armadeus,imx6dl-apf6dldev # APF6 (Solo) SoM on APF6Dev board
               - eckelmann,imx6dl-ci4x10
               - emtrion,emcon-mx6         # emCON-MX6S or emCON-MX6DL SoM
               - emtrion,emcon-mx6-avari   # emCON-MX6S or emCON-MX6DL SoM on Avari Base
@@ -133,6 +147,8 @@ properties:
               - fsl,imx6dl-sabresd        # i.MX6 DualLite SABRE Smart Device Board
               - technologic,imx6dl-ts4900
               - technologic,imx6dl-ts7970
+              - toradex,colibri_imx6dl          # Colibri iMX6 Module
+              - toradex,colibri_imx6dl-eval-v3  # Colibri iMX6 Module on Colibri Evaluation Board V3
               - ysoft,imx6dl-yapp4-draco  # i.MX6 DualLite Y Soft IOTA Draco board
               - ysoft,imx6dl-yapp4-hydra  # i.MX6 DualLite Y Soft IOTA Hydra board
               - ysoft,imx6dl-yapp4-ursa   # i.MX6 Solo Y Soft IOTA Ursa board
@@ -148,6 +164,7 @@ properties:
         items:
           - enum:
               - fsl,imx6sll-evk
+              - kobo,clarahd
           - const: fsl,imx6sll
 
       - description: i.MX6SX based Boards
@@ -160,8 +177,11 @@ properties:
       - description: i.MX6UL based Boards
         items:
           - enum:
+              - armadeus,imx6ul-opos6ul    # OPOS6UL (i.MX6UL) SoM
+              - armadeus,imx6ul-opos6uldev # OPOS6UL (i.MX6UL) SoM on OPOS6ULDev board
               - fsl,imx6ul-14x14-evk      # i.MX6 UltraLite 14x14 EVK Board
               - kontron,imx6ul-n6310-som  # Kontron N6310 SOM
+              - kontron,imx6ul-n6311-som  # Kontron N6311 SOM
           - const: fsl,imx6ul
 
       - description: Kontron N6310 S Board
@@ -170,6 +190,12 @@ properties:
           - const: kontron,imx6ul-n6310-som
           - const: fsl,imx6ul
 
+      - description: Kontron N6311 S Board
+        items:
+          - const: kontron,imx6ul-n6311-s
+          - const: kontron,imx6ul-n6311-som
+          - const: fsl,imx6ul
+
       - description: Kontron N6310 S 43 Board
         items:
           - const: kontron,imx6ul-n6310-s-43
@@ -180,7 +206,18 @@ properties:
       - description: i.MX6ULL based Boards
         items:
           - enum:
+              - armadeus,imx6ull-opos6ul    # OPOS6UL (i.MX6ULL) SoM
+              - armadeus,imx6ull-opos6uldev # OPOS6UL (i.MX6ULL) SoM on OPOS6ULDev board
               - fsl,imx6ull-14x14-evk     # i.MX6 UltraLiteLite 14x14 EVK Board
+              - kontron,imx6ull-n6411-som # Kontron N6411 SOM
+              - toradex,colibri-imx6ull-eval            # Colibri iMX6ULL Module on Colibri Evaluation Board
+              - toradex,colibri-imx6ull-wifi-eval       # Colibri iMX6ULL Wi-Fi / Bluetooth Module on Colibri Evaluation Board
+          - const: fsl,imx6ull
+
+      - description: Kontron N6411 S Board
+        items:
+          - const: kontron,imx6ull-n6411-s
+          - const: kontron,imx6ull-n6411-som
           - const: fsl,imx6ull
 
       - description: i.MX6ULZ based Boards
@@ -193,6 +230,8 @@ properties:
       - description: i.MX7S based Boards
         items:
           - enum:
+              - toradex,colibri-imx7s           # Colibri iMX7 Solo Module
+              - toradex,colibri-imx7s-eval-v3   # Colibri iMX7 Solo Module on Colibri Evaluation Board V3
               - tq,imx7s-mba7             # i.MX7S TQ MBa7 with TQMa7S SoM
           - const: fsl,imx7s
 
@@ -201,6 +240,10 @@ properties:
           - enum:
               - fsl,imx7d-sdb             # i.MX7 SabreSD Board
               - novtech,imx7d-meerkat96   # i.MX7 Meerkat96 Board
+              - toradex,colibri-imx7d                   # Colibri iMX7 Dual Module
+              - toradex,colibri-imx7d-emmc              # Colibri iMX7 Dual 1GB (eMMC) Module
+              - 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
               - tq,imx7d-mba7             # i.MX7D TQ MBa7 with TQMa7D SoM
               - zii,imx7d-rmu2            # ZII RMU2 Board
               - zii,imx7d-rpu2            # ZII RPU2 Board
@@ -233,6 +276,7 @@ properties:
         items:
           - enum:
               - fsl,imx8mn-ddr4-evk       # i.MX8MN DDR4 EVK Board
+              - fsl,imx8mn-evk            # i.MX8MN LPDDR4 EVK Board
           - const: fsl,imx8mn
 
       - description: i.MX8MQ based Boards
@@ -250,6 +294,8 @@ 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-eval-v3 # Colibri iMX8X Module on Colibri Evaluation Board V3
           - const: fsl,imx8qxp
 
       - description:
@@ -267,6 +313,10 @@ properties:
               - fsl,vf600
               - fsl,vf610
               - fsl,vf610m4
+              - toradex,vf500-colibri_vf50              # Colibri VF50 Module
+              - toradex,vf500-colibri_vf50-on-eval      # Colibri VF50 Module on Colibri Evaluation Board
+              - toradex,vf610-colibri_vf61              # Colibri VF61 Module
+              - toradex,vf610-colibri_vf61-on-eval      # Colibri VF61 Module on Colibri Evaluation Board
 
       - description: ZII's VF610 based Boards
         items:
@@ -335,4 +385,10 @@ properties:
               - fsl,ls2088a-rdb
           - const: fsl,ls2088a
 
+      - description: S32V234 based Boards
+        items:
+          - enum:
+              - fsl,s32v234-evb           # S32V234-EVB2 Customer Evaluation Board
+          - const: fsl,s32v234
+
 ...
diff --git a/Documentation/devicetree/bindings/arm/marvell/ap806-system-controller.txt b/Documentation/devicetree/bindings/arm/marvell/ap806-system-controller.txt
deleted file mode 100644 (file)
index 26410fb..0000000
+++ /dev/null
@@ -1,177 +0,0 @@
-Marvell Armada AP806 System Controller
-======================================
-
-The AP806 is one of the two core HW blocks of the Marvell Armada 7K/8K
-SoCs. It contains system controllers, which provide several registers
-giving access to numerous features: clocks, pin-muxing and many other
-SoC configuration items. This DT binding allows to describe these
-system controllers.
-
-For the top level node:
- - compatible: must be: "syscon", "simple-mfd";
- - reg: register area of the AP806 system controller
-
-SYSTEM CONTROLLER 0
-===================
-
-Clocks:
--------
-
-
-The Device Tree node representing the AP806/AP807 system controller
-provides a number of clocks:
-
- - 0: reference clock of CPU cluster 0
- - 1: reference clock of CPU cluster 1
- - 2: fixed PLL at 1200 Mhz
- - 3: MSS clock, derived from the fixed PLL
-
-Required properties:
-
- - compatible: must be one of:
-   * "marvell,ap806-clock"
-   * "marvell,ap807-clock"
- - #clock-cells: must be set to 1
-
-Pinctrl:
---------
-
-For common binding part and usage, refer to
-Documentation/devicetree/bindings/pinctrl/marvell,mvebu-pinctrl.txt.
-
-Required properties:
-- compatible must be "marvell,ap806-pinctrl",
-
-Available mpp pins/groups and functions:
-Note: brackets (x) are not part of the mpp name for marvell,function and given
-only for more detailed description in this document.
-
-name   pins    functions
-================================================================================
-mpp0   0       gpio, sdio(clk), spi0(clk)
-mpp1   1       gpio, sdio(cmd), spi0(miso)
-mpp2   2       gpio, sdio(d0), spi0(mosi)
-mpp3   3       gpio, sdio(d1), spi0(cs0n)
-mpp4   4       gpio, sdio(d2), i2c0(sda)
-mpp5   5       gpio, sdio(d3), i2c0(sdk)
-mpp6   6       gpio, sdio(ds)
-mpp7   7       gpio, sdio(d4), uart1(rxd)
-mpp8   8       gpio, sdio(d5), uart1(txd)
-mpp9   9       gpio, sdio(d6), spi0(cs1n)
-mpp10  10      gpio, sdio(d7)
-mpp11  11      gpio, uart0(txd)
-mpp12  12      gpio, sdio(pw_off), sdio(hw_rst)
-mpp13  13      gpio
-mpp14  14      gpio
-mpp15  15      gpio
-mpp16  16      gpio
-mpp17  17      gpio
-mpp18  18      gpio
-mpp19  19      gpio, uart0(rxd), sdio(pw_off)
-
-GPIO:
------
-For common binding part and usage, refer to
-Documentation/devicetree/bindings/gpio/gpio-mvebu.txt.
-
-Required properties:
-
-- compatible: "marvell,armada-8k-gpio"
-
-- offset: offset address inside the syscon block
-
-Example:
-ap_syscon: system-controller@6f4000 {
-       compatible = "syscon", "simple-mfd";
-       reg = <0x6f4000 0x1000>;
-
-       ap_clk: clock {
-               compatible = "marvell,ap806-clock";
-               #clock-cells = <1>;
-       };
-
-       ap_pinctrl: pinctrl {
-               compatible = "marvell,ap806-pinctrl";
-       };
-
-       ap_gpio: gpio {
-               compatible = "marvell,armada-8k-gpio";
-               offset = <0x1040>;
-               ngpios = <19>;
-               gpio-controller;
-               #gpio-cells = <2>;
-               gpio-ranges = <&ap_pinctrl 0 0 19>;
-       };
-};
-
-SYSTEM CONTROLLER 1
-===================
-
-Thermal:
---------
-
-For common binding part and usage, refer to
-Documentation/devicetree/bindings/thermal/thermal.txt
-
-The thermal IP can probe the temperature all around the processor. It
-may feature several channels, each of them wired to one sensor.
-
-It is possible to setup an overheat interrupt by giving at least one
-critical point to any subnode of the thermal-zone node.
-
-Required properties:
-- compatible: must be one of:
-  * marvell,armada-ap806-thermal
-- reg: register range associated with the thermal functions.
-
-Optional properties:
-- interrupts: overheat interrupt handle. Should point to line 18 of the
-  SEI irqchip. See interrupt-controller/interrupts.txt
-- #thermal-sensor-cells: shall be <1> when thermal-zones subnodes refer
-  to this IP and represents the channel ID. There is one sensor per
-  channel. O refers to the thermal IP internal channel, while positive
-  IDs refer to each CPU.
-
-Example:
-ap_syscon1: system-controller@6f8000 {
-       compatible = "syscon", "simple-mfd";
-       reg = <0x6f8000 0x1000>;
-
-       ap_thermal: thermal-sensor@80 {
-               compatible = "marvell,armada-ap806-thermal";
-               reg = <0x80 0x10>;
-               interrupt-parent = <&sei>;
-               interrupts = <18>;
-               #thermal-sensor-cells = <1>;
-       };
-};
-
-Cluster clocks:
----------------
-
-Device Tree Clock bindings for cluster clock of Marvell
-AP806/AP807. Each cluster contain up to 2 CPUs running at the same
-frequency.
-
-Required properties:
- - compatible: must be one of:
-   * "marvell,ap806-cpu-clock"
-   * "marvell,ap807-cpu-clock"
-- #clock-cells : should be set to 1.
-
-- clocks : shall be the input parent clock(s) phandle for the clock
-           (one per cluster)
-
-- reg: register range associated with the cluster clocks
-
-ap_syscon1: system-controller@6f8000 {
-       compatible = "marvell,armada-ap806-syscon1", "syscon", "simple-mfd";
-       reg = <0x6f8000 0x1000>;
-
-       cpu_clk: clock-cpu@278 {
-               compatible = "marvell,ap806-cpu-clock";
-               clocks = <&ap_clk 0>, <&ap_clk 1>;
-               #clock-cells = <1>;
-               reg = <0x278 0xa30>;
-       };
-};
diff --git a/Documentation/devicetree/bindings/arm/marvell/ap80x-system-controller.txt b/Documentation/devicetree/bindings/arm/marvell/ap80x-system-controller.txt
new file mode 100644 (file)
index 0000000..098d932
--- /dev/null
@@ -0,0 +1,177 @@
+Marvell Armada AP80x System Controller
+======================================
+
+The AP806/AP807 is one of the two core HW blocks of the Marvell Armada
+7K/8K/931x SoCs. It contains system controllers, which provide several
+registers giving access to numerous features: clocks, pin-muxing and
+many other SoC configuration items. This DT binding allows to describe
+these system controllers.
+
+For the top level node:
+ - compatible: must be: "syscon", "simple-mfd";
+ - reg: register area of the AP80x system controller
+
+SYSTEM CONTROLLER 0
+===================
+
+Clocks:
+-------
+
+
+The Device Tree node representing the AP806/AP807 system controller
+provides a number of clocks:
+
+ - 0: reference clock of CPU cluster 0
+ - 1: reference clock of CPU cluster 1
+ - 2: fixed PLL at 1200 Mhz
+ - 3: MSS clock, derived from the fixed PLL
+
+Required properties:
+
+ - compatible: must be one of:
+   * "marvell,ap806-clock"
+   * "marvell,ap807-clock"
+ - #clock-cells: must be set to 1
+
+Pinctrl:
+--------
+
+For common binding part and usage, refer to
+Documentation/devicetree/bindings/pinctrl/marvell,mvebu-pinctrl.txt.
+
+Required properties:
+- compatible must be "marvell,ap806-pinctrl",
+
+Available mpp pins/groups and functions:
+Note: brackets (x) are not part of the mpp name for marvell,function and given
+only for more detailed description in this document.
+
+name   pins    functions
+================================================================================
+mpp0   0       gpio, sdio(clk), spi0(clk)
+mpp1   1       gpio, sdio(cmd), spi0(miso)
+mpp2   2       gpio, sdio(d0), spi0(mosi)
+mpp3   3       gpio, sdio(d1), spi0(cs0n)
+mpp4   4       gpio, sdio(d2), i2c0(sda)
+mpp5   5       gpio, sdio(d3), i2c0(sdk)
+mpp6   6       gpio, sdio(ds)
+mpp7   7       gpio, sdio(d4), uart1(rxd)
+mpp8   8       gpio, sdio(d5), uart1(txd)
+mpp9   9       gpio, sdio(d6), spi0(cs1n)
+mpp10  10      gpio, sdio(d7)
+mpp11  11      gpio, uart0(txd)
+mpp12  12      gpio, sdio(pw_off), sdio(hw_rst)
+mpp13  13      gpio
+mpp14  14      gpio
+mpp15  15      gpio
+mpp16  16      gpio
+mpp17  17      gpio
+mpp18  18      gpio
+mpp19  19      gpio, uart0(rxd), sdio(pw_off)
+
+GPIO:
+-----
+For common binding part and usage, refer to
+Documentation/devicetree/bindings/gpio/gpio-mvebu.txt.
+
+Required properties:
+
+- compatible: "marvell,armada-8k-gpio"
+
+- offset: offset address inside the syscon block
+
+Example:
+ap_syscon: system-controller@6f4000 {
+       compatible = "syscon", "simple-mfd";
+       reg = <0x6f4000 0x1000>;
+
+       ap_clk: clock {
+               compatible = "marvell,ap806-clock";
+               #clock-cells = <1>;
+       };
+
+       ap_pinctrl: pinctrl {
+               compatible = "marvell,ap806-pinctrl";
+       };
+
+       ap_gpio: gpio {
+               compatible = "marvell,armada-8k-gpio";
+               offset = <0x1040>;
+               ngpios = <19>;
+               gpio-controller;
+               #gpio-cells = <2>;
+               gpio-ranges = <&ap_pinctrl 0 0 19>;
+       };
+};
+
+SYSTEM CONTROLLER 1
+===================
+
+Thermal:
+--------
+
+For common binding part and usage, refer to
+Documentation/devicetree/bindings/thermal/thermal.txt
+
+The thermal IP can probe the temperature all around the processor. It
+may feature several channels, each of them wired to one sensor.
+
+It is possible to setup an overheat interrupt by giving at least one
+critical point to any subnode of the thermal-zone node.
+
+Required properties:
+- compatible: must be one of:
+  * marvell,armada-ap806-thermal
+- reg: register range associated with the thermal functions.
+
+Optional properties:
+- interrupts: overheat interrupt handle. Should point to line 18 of the
+  SEI irqchip. See interrupt-controller/interrupts.txt
+- #thermal-sensor-cells: shall be <1> when thermal-zones subnodes refer
+  to this IP and represents the channel ID. There is one sensor per
+  channel. O refers to the thermal IP internal channel, while positive
+  IDs refer to each CPU.
+
+Example:
+ap_syscon1: system-controller@6f8000 {
+       compatible = "syscon", "simple-mfd";
+       reg = <0x6f8000 0x1000>;
+
+       ap_thermal: thermal-sensor@80 {
+               compatible = "marvell,armada-ap806-thermal";
+               reg = <0x80 0x10>;
+               interrupt-parent = <&sei>;
+               interrupts = <18>;
+               #thermal-sensor-cells = <1>;
+       };
+};
+
+Cluster clocks:
+---------------
+
+Device Tree Clock bindings for cluster clock of Marvell
+AP806/AP807. Each cluster contain up to 2 CPUs running at the same
+frequency.
+
+Required properties:
+ - compatible: must be one of:
+   * "marvell,ap806-cpu-clock"
+   * "marvell,ap807-cpu-clock"
+- #clock-cells : should be set to 1.
+
+- clocks : shall be the input parent clock(s) phandle for the clock
+           (one per cluster)
+
+- reg: register range associated with the cluster clocks
+
+ap_syscon1: system-controller@6f8000 {
+       compatible = "marvell,armada-ap806-syscon1", "syscon", "simple-mfd";
+       reg = <0x6f8000 0x1000>;
+
+       cpu_clk: clock-cpu@278 {
+               compatible = "marvell,ap806-cpu-clock";
+               clocks = <&ap_clk 0>, <&ap_clk 1>;
+               #clock-cells = <1>;
+               reg = <0x278 0xa30>;
+       };
+};
diff --git a/Documentation/devicetree/bindings/arm/marvell/armada-7k-8k.txt b/Documentation/devicetree/bindings/arm/marvell/armada-7k-8k.txt
deleted file mode 100644 (file)
index df98a9c..0000000
+++ /dev/null
@@ -1,24 +0,0 @@
-Marvell Armada 7K/8K Platforms Device Tree Bindings
----------------------------------------------------
-
-Boards using a SoC of the Marvell Armada 7K or 8K families must carry
-the following root node property:
-
- - compatible, with one of the following values:
-
-   - "marvell,armada7020", "marvell,armada-ap806-dual", "marvell,armada-ap806"
-      when the SoC being used is the Armada 7020
-
-   - "marvell,armada7040", "marvell,armada-ap806-quad", "marvell,armada-ap806"
-      when the SoC being used is the Armada 7040
-
-   - "marvell,armada8020", "marvell,armada-ap806-dual", "marvell,armada-ap806"
-      when the SoC being used is the Armada 8020
-
-   - "marvell,armada8040", "marvell,armada-ap806-quad", "marvell,armada-ap806"
-      when the SoC being used is the Armada 8040
-
-Example:
-
-compatible = "marvell,armada7040-db", "marvell,armada7040",
-             "marvell,armada-ap806-quad", "marvell,armada-ap806";
diff --git a/Documentation/devicetree/bindings/arm/marvell/armada-7k-8k.yaml b/Documentation/devicetree/bindings/arm/marvell/armada-7k-8k.yaml
new file mode 100644 (file)
index 0000000..a9828c5
--- /dev/null
@@ -0,0 +1,61 @@
+# SPDX-License-Identifier: (GPL-2.0+ OR X11)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/arm/marvell/armada-7k-8k.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Marvell Armada 7K/8K Platforms Device Tree Bindings
+
+maintainers:
+  - Gregory CLEMENT <gregory.clement@bootlin.com>
+
+properties:
+  $nodename:
+    const: '/'
+  compatible:
+    oneOf:
+
+      - description: Armada 7020 SoC
+        items:
+          - const: marvell,armada7020
+          - const: marvell,armada-ap806-dual
+          - const: marvell,armada-ap806
+
+      - description: Armada 7040 SoC
+        items:
+          - const: marvell,armada7040
+          - const: marvell,armada-ap806-quad
+          - const: marvell,armada-ap806
+
+      - description: Armada 8020 SoC
+        items:
+          - const: marvell,armada8020
+          - const: marvell,armada-ap806-dual
+          - const: marvell,armada-ap806
+
+      - description: Armada 8040 SoC
+        items:
+          - const: marvell,armada8040
+          - const: marvell,armada-ap806-quad
+          - const: marvell,armada-ap806
+
+      - description: Armada CN9130 SoC with no external CP
+        items:
+          - const: marvell,cn9130
+          - const: marvell,armada-ap807-quad
+          - const: marvell,armada-ap807
+
+      - description: Armada CN9131 SoC with one external CP
+        items:
+          - const: marvell,cn9131
+          - const: marvell,cn9130
+          - const: marvell,armada-ap807-quad
+          - const: marvell,armada-ap807
+
+      - description: Armada CN9132 SoC with two external CPs
+        items:
+          - const: marvell,cn9132
+          - const: marvell,cn9131
+          - const: marvell,cn9130
+          - const: marvell,armada-ap807-quad
+          - const: marvell,armada-ap807
diff --git a/Documentation/devicetree/bindings/arm/mrvl/mrvl.txt b/Documentation/devicetree/bindings/arm/mrvl/mrvl.txt
deleted file mode 100644 (file)
index 9516875..0000000
+++ /dev/null
@@ -1,14 +0,0 @@
-Marvell Platforms Device Tree Bindings
-----------------------------------------------------
-
-PXA168 Aspenite Board
-Required root node properties:
-       - compatible = "mrvl,pxa168-aspenite", "mrvl,pxa168";
-
-PXA910 DKB Board
-Required root node properties:
-       - compatible = "mrvl,pxa910-dkb";
-
-MMP2 Brownstone Board
-Required root node properties:
-       - compatible = "mrvl,mmp2-brownstone", "mrvl,mmp2";
diff --git a/Documentation/devicetree/bindings/arm/mrvl/mrvl.yaml b/Documentation/devicetree/bindings/arm/mrvl/mrvl.yaml
new file mode 100644 (file)
index 0000000..818dfe6
--- /dev/null
@@ -0,0 +1,35 @@
+# SPDX-License-Identifier: GPL-2.0
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/arm/mrvl/mrvl.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Marvell Platforms Device Tree Bindings
+
+maintainers:
+  - Lubomir Rintel <lkundrak@v3.sk>
+
+properties:
+  $nodename:
+    const: '/'
+  compatible:
+    oneOf:
+      - description: PXA168 Aspenite Board
+        items:
+          - enum:
+              - mrvl,pxa168-aspenite
+          - const: mrvl,pxa168
+      - description: PXA910 DKB Board
+        items:
+          - enum:
+              - mrvl,pxa910-dkb
+          - const: mrvl,pxa910
+      - description: MMP2 based boards
+        items:
+          - enum:
+              - mrvl,mmp2-brownstone
+          - const: mrvl,mmp2
+      - description: MMP3 based boards
+        items:
+          - const: mrvl,mmp3
+...
index 3528b61..ab59de1 100644 (file)
@@ -13,11 +13,24 @@ properties:
   $nodename:
     const: '/'
   compatible:
-    # RTD1295 SoC based boards
-    items:
-      - enum:
-          - mele,v9
-          - probox2,ava
-          - zidoo,x9s
-      - const: realtek,rtd1295
+    oneOf:
+      # RTD1293 SoC based boards
+      - items:
+          - enum:
+              - synology,ds418j # Synology DiskStation DS418j
+          - const: realtek,rtd1293
+
+      # RTD1295 SoC based boards
+      - items:
+          - enum:
+              - mele,v9 # MeLE V9
+              - probox2,ava # ProBox2 AVA
+              - zidoo,x9s # Zidoo X9S
+          - const: realtek,rtd1295
+
+      # RTD1296 SoC based boards
+      - items:
+          - enum:
+              - synology,ds418 # Synology DiskStation DS418
+          - const: realtek,rtd1296
 ...
diff --git a/Documentation/devicetree/bindings/arm/renesas,prr.txt b/Documentation/devicetree/bindings/arm/renesas,prr.txt
deleted file mode 100644 (file)
index 08e482e..0000000
+++ /dev/null
@@ -1,20 +0,0 @@
-Renesas Product Register
-
-Most Renesas ARM SoCs have a Product Register or Boundary Scan ID Register that
-allows to retrieve SoC product and revision information.  If present, a device
-node for this register should be added.
-
-Required properties:
-  - compatible: Must be one of:
-    "renesas,prr"
-    "renesas,bsid"
-  - reg: Base address and length of the register block.
-
-
-Examples
---------
-
-       prr: chipid@ff000044 {
-               compatible = "renesas,prr";
-               reg = <0 0xff000044 0 4>;
-       };
diff --git a/Documentation/devicetree/bindings/arm/renesas,prr.yaml b/Documentation/devicetree/bindings/arm/renesas,prr.yaml
new file mode 100644 (file)
index 0000000..7f8d17f
--- /dev/null
@@ -0,0 +1,35 @@
+# SPDX-License-Identifier: GPL-2.0
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/arm/renesas,prr.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Renesas Product Register
+
+maintainers:
+  - Geert Uytterhoeven <geert+renesas@glider.be>
+  - Magnus Damm <magnus.damm@gmail.com>
+
+description: |
+  Most Renesas ARM SoCs have a Product Register or Boundary Scan ID
+  Register that allows to retrieve SoC product and revision information.
+  If present, a device node for this register should be added.
+
+properties:
+  compatible:
+    enum:
+      - renesas,prr
+      - renesas,bsid
+  reg:
+    maxItems: 1
+
+required:
+  - compatible
+  - reg
+
+examples:
+  - |
+    prr: chipid@ff000044 {
+        compatible = "renesas,prr";
+        reg = <0 0xff000044 0 4>;
+    };
index 28eb458..9436124 100644 (file)
@@ -116,6 +116,18 @@ properties:
           - const: hoperun,hihope-rzg2m
           - const: renesas,r8a774a1
 
+      - description: RZ/G2N (R8A774B1)
+        items:
+          - enum:
+              - hoperun,hihope-rzg2n # HopeRun HiHope RZ/G2N platform
+          - const: renesas,r8a774b1
+
+      - items:
+          - enum:
+              - hoperun,hihope-rzg2-ex # HopeRun expansion board for HiHope RZ/G2 platforms
+          - const: hoperun,hihope-rzg2n
+          - const: renesas,r8a774b1
+
       - description: RZ/G2E (R8A774C0)
         items:
           - enum:
@@ -193,15 +205,23 @@ properties:
               - renesas,salvator-xs # Salvator-XS (Salvator-X 2nd version, RTP0RC7796SIPB0012S)
           - const: renesas,r8a7796
 
+      - description: R-Car M3-W+ (R8A77961)
+        items:
+          - enum:
+              - renesas,salvator-xs # Salvator-XS (Salvator-X 2nd version, RTP0RC7796SIPB0012SA5A)
+          - const: renesas,r8a77961
+
       - description: Kingfisher (SBEV-RCAR-KF-M03)
         items:
           - const: shimafuji,kingfisher
           - enum:
               - renesas,h3ulcb
               - renesas,m3ulcb
+              - renesas,m3nulcb
           - enum:
               - renesas,r8a7795
               - renesas,r8a7796
+              - renesas,r8a77965
 
       - description: R-Car M3-N (R8A77965)
         items:
index 9c7e703..d9847b3 100644 (file)
@@ -40,6 +40,11 @@ properties:
           - const: asus,rk3288-tinker-s
           - const: rockchip,rk3288
 
+      - description: Beelink A1
+        items:
+          - const: azw,beelink-a1
+          - const: rockchip,rk3328
+
       - description: bq Curie 2 tablet
         items:
           - const: mundoreader,bq-curie2
@@ -82,6 +87,11 @@ properties:
           - const: firefly,firefly-rk3399
           - const: rockchip,rk3399
 
+      - description: Firefly ROC-RK3308-CC
+        items:
+          - const: firefly,roc-rk3308-cc
+          - const: rockchip,rk3308
+
       - description: Firefly roc-rk3328-cc
         items:
           - const: firefly,roc-rk3328-cc
@@ -89,7 +99,9 @@ properties:
 
       - description: Firefly ROC-RK3399-PC
         items:
-          - const: firefly,roc-rk3399-pc
+          - enum:
+              - firefly,roc-rk3399-pc
+              - firefly,roc-rk3399-pc-mezzanine
           - const: rockchip,rk3399
 
       - description: FriendlyElec NanoPi4 series boards
@@ -464,6 +476,11 @@ properties:
               - rockchip,rk3288-evb-rk808
           - const: rockchip,rk3288
 
+      - description: Rockchip RK3308 Evaluation board
+        items:
+          - const: rockchip,rk3308-evb
+          - const: rockchip,rk3308
+
       - description: Rockchip RK3328 Evaluation board
         items:
           - const: rockchip,rk3328-evb
index 972b1e9..8a1e38a 100644 (file)
@@ -211,6 +211,11 @@ properties:
           - const: friendlyarm,nanopi-a64
           - const: allwinner,sun50i-a64
 
+      - description: FriendlyARM NanoPi Duo2
+        items:
+          - const: friendlyarm,nanopi-duo2
+          - const: allwinner,sun8i-h3
+
       - description: FriendlyARM NanoPi M1
         items:
           - const: friendlyarm,nanopi-m1
index 1464a47..2005bb4 100644 (file)
@@ -8,6 +8,7 @@ bus.
 Required properties:
  - compatible: Must be one of:
        - allwinner,sun5i-a13-mbus
+       - allwinner,sun8i-h3-mbus
  - reg: Offset and length of the register set for the controller
  - clocks: phandle to the clock driving the controller
  - dma-ranges: See section 2.3.9 of the DeviceTree Specification
index 39f0c1a..55e78cd 100644 (file)
@@ -10,6 +10,11 @@ Required Properties:
 - compatible: CRU should be "rockchip,px30-cru"
 - reg: physical base address of the controller and length of memory mapped
   region.
+- clocks: A list of phandle + clock-specifier pairs for the clocks listed
+          in clock-names
+- clock-names: Should contain the following:
+  - "xin24m" for both PMUCRU and CRU
+  - "gpll" for CRU (sourced from PMUCRU)
 - #clock-cells: should be 1.
 - #reset-cells: should be 1.
 
diff --git a/Documentation/devicetree/bindings/crypto/allwinner,sun8i-ce.yaml b/Documentation/devicetree/bindings/crypto/allwinner,sun8i-ce.yaml
new file mode 100644 (file)
index 0000000..2c459b8
--- /dev/null
@@ -0,0 +1,88 @@
+# SPDX-License-Identifier: GPL-2.0
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/crypto/allwinner,sun8i-ce.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Allwinner Crypto Engine driver
+
+maintainers:
+  - Corentin Labbe <clabbe.montjoie@gmail.com>
+
+properties:
+  compatible:
+    enum:
+      - allwinner,sun8i-h3-crypto
+      - allwinner,sun8i-r40-crypto
+      - allwinner,sun50i-a64-crypto
+      - allwinner,sun50i-h5-crypto
+      - allwinner,sun50i-h6-crypto
+
+  reg:
+    maxItems: 1
+
+  interrupts:
+    maxItems: 1
+
+  clocks:
+    items:
+      - description: Bus clock
+      - description: Module clock
+      - description: MBus clock
+    minItems: 2
+    maxItems: 3
+
+  clock-names:
+    items:
+      - const: bus
+      - const: mod
+      - const: ram
+    minItems: 2
+    maxItems: 3
+
+  resets:
+    maxItems: 1
+
+if:
+  properties:
+    compatible:
+      items:
+        const: allwinner,sun50i-h6-crypto
+then:
+  properties:
+      clocks:
+        minItems: 3
+      clock-names:
+        minItems: 3
+else:
+  properties:
+      clocks:
+        maxItems: 2
+      clock-names:
+        maxItems: 2
+
+required:
+  - compatible
+  - reg
+  - interrupts
+  - clocks
+  - clock-names
+  - resets
+
+additionalProperties: false
+
+examples:
+  - |
+    #include <dt-bindings/interrupt-controller/arm-gic.h>
+    #include <dt-bindings/clock/sun50i-a64-ccu.h>
+    #include <dt-bindings/reset/sun50i-a64-ccu.h>
+
+    crypto: crypto@1c15000 {
+      compatible = "allwinner,sun8i-h3-crypto";
+      reg = <0x01c15000 0x1000>;
+      interrupts = <GIC_SPI 94 IRQ_TYPE_LEVEL_HIGH>;
+      clocks = <&ccu CLK_BUS_CE>, <&ccu CLK_CE>;
+      clock-names = "bus", "mod";
+      resets = <&ccu RST_BUS_CE>;
+    };
+
diff --git a/Documentation/devicetree/bindings/ddr/lpddr2-timings.txt b/Documentation/devicetree/bindings/ddr/lpddr2-timings.txt
new file mode 100644 (file)
index 0000000..9ceb19e
--- /dev/null
@@ -0,0 +1,52 @@
+* AC timing parameters of LPDDR2(JESD209-2) memories for a given speed-bin
+
+Required properties:
+- compatible : Should be "jedec,lpddr2-timings"
+- min-freq : minimum DDR clock frequency for the speed-bin. Type is <u32>
+- max-freq : maximum DDR clock frequency for the speed-bin. Type is <u32>
+
+Optional properties:
+
+The following properties represent AC timing parameters from the memory
+data-sheet of the device for a given speed-bin. All these properties are
+of type <u32> and the default unit is ps (pico seconds). Parameters with
+a different unit have a suffix indicating the unit such as 'tRAS-max-ns'
+- tRCD
+- tWR
+- tRAS-min
+- tRRD
+- tWTR
+- tXP
+- tRTP
+- tDQSCK-max
+- tFAW
+- tZQCS
+- tZQinit
+- tRPab
+- tZQCL
+- tCKESR
+- tRAS-max-ns
+- tDQSCK-max-derated
+
+Example:
+
+timings_elpida_ECB240ABACN_400mhz: lpddr2-timings@0 {
+       compatible      = "jedec,lpddr2-timings";
+       min-freq        = <10000000>;
+       max-freq        = <400000000>;
+       tRPab           = <21000>;
+       tRCD            = <18000>;
+       tWR             = <15000>;
+       tRAS-min        = <42000>;
+       tRRD            = <10000>;
+       tWTR            = <7500>;
+       tXP             = <7500>;
+       tRTP            = <7500>;
+       tCKESR          = <15000>;
+       tDQSCK-max      = <5500>;
+       tFAW            = <50000>;
+       tZQCS           = <90000>;
+       tZQCL           = <360000>;
+       tZQinit         = <1000000>;
+       tRAS-max-ns     = <70000>;
+};
diff --git a/Documentation/devicetree/bindings/ddr/lpddr2.txt b/Documentation/devicetree/bindings/ddr/lpddr2.txt
new file mode 100644 (file)
index 0000000..ddd4012
--- /dev/null
@@ -0,0 +1,102 @@
+* LPDDR2 SDRAM memories compliant to JEDEC JESD209-2
+
+Required properties:
+- compatible : Should be one of - "jedec,lpddr2-nvm", "jedec,lpddr2-s2",
+  "jedec,lpddr2-s4"
+
+  "ti,jedec-lpddr2-s2" should be listed if the memory part is LPDDR2-S2 type
+
+  "ti,jedec-lpddr2-s4" should be listed if the memory part is LPDDR2-S4 type
+
+  "ti,jedec-lpddr2-nvm" should be listed if the memory part is LPDDR2-NVM type
+
+- density  : <u32> representing density in Mb (Mega bits)
+
+- io-width : <u32> representing bus width. Possible values are 8, 16, and 32
+
+Optional properties:
+
+The following optional properties represent the minimum value of some AC
+timing parameters of the DDR device in terms of number of clock cycles.
+These values shall be obtained from the device data-sheet.
+- tRRD-min-tck
+- tWTR-min-tck
+- tXP-min-tck
+- tRTP-min-tck
+- tCKE-min-tck
+- tRPab-min-tck
+- tRCD-min-tck
+- tWR-min-tck
+- tRASmin-min-tck
+- tCKESR-min-tck
+- tFAW-min-tck
+
+Child nodes:
+- The lpddr2 node may have one or more child nodes of type "lpddr2-timings".
+  "lpddr2-timings" provides AC timing parameters of the device for
+  a given speed-bin. The user may provide the timings for as many
+  speed-bins as is required. Please see Documentation/devicetree/
+  bindings/ddr/lpddr2-timings.txt for more information on "lpddr2-timings"
+
+Example:
+
+elpida_ECB240ABACN : lpddr2 {
+       compatible      = "Elpida,ECB240ABACN","jedec,lpddr2-s4";
+       density         = <2048>;
+       io-width        = <32>;
+
+       tRPab-min-tck   = <3>;
+       tRCD-min-tck    = <3>;
+       tWR-min-tck     = <3>;
+       tRASmin-min-tck = <3>;
+       tRRD-min-tck    = <2>;
+       tWTR-min-tck    = <2>;
+       tXP-min-tck     = <2>;
+       tRTP-min-tck    = <2>;
+       tCKE-min-tck    = <3>;
+       tCKESR-min-tck  = <3>;
+       tFAW-min-tck    = <8>;
+
+       timings_elpida_ECB240ABACN_400mhz: lpddr2-timings@0 {
+               compatible      = "jedec,lpddr2-timings";
+               min-freq        = <10000000>;
+               max-freq        = <400000000>;
+               tRPab           = <21000>;
+               tRCD            = <18000>;
+               tWR             = <15000>;
+               tRAS-min        = <42000>;
+               tRRD            = <10000>;
+               tWTR            = <7500>;
+               tXP             = <7500>;
+               tRTP            = <7500>;
+               tCKESR          = <15000>;
+               tDQSCK-max      = <5500>;
+               tFAW            = <50000>;
+               tZQCS           = <90000>;
+               tZQCL           = <360000>;
+               tZQinit         = <1000000>;
+               tRAS-max-ns     = <70000>;
+       };
+
+       timings_elpida_ECB240ABACN_200mhz: lpddr2-timings@1 {
+               compatible      = "jedec,lpddr2-timings";
+               min-freq        = <10000000>;
+               max-freq        = <200000000>;
+               tRPab           = <21000>;
+               tRCD            = <18000>;
+               tWR             = <15000>;
+               tRAS-min        = <42000>;
+               tRRD            = <10000>;
+               tWTR            = <10000>;
+               tXP             = <7500>;
+               tRTP            = <7500>;
+               tCKESR          = <15000>;
+               tDQSCK-max      = <5500>;
+               tFAW            = <50000>;
+               tZQCS           = <90000>;
+               tZQCL           = <360000>;
+               tZQinit         = <1000000>;
+               tRAS-max-ns     = <70000>;
+       };
+
+}
diff --git a/Documentation/devicetree/bindings/ddr/lpddr3-timings.txt b/Documentation/devicetree/bindings/ddr/lpddr3-timings.txt
new file mode 100644 (file)
index 0000000..84705e5
--- /dev/null
@@ -0,0 +1,58 @@
+* AC timing parameters of LPDDR3 memories for a given speed-bin.
+
+The structures are based on LPDDR2 and extended where needed.
+
+Required properties:
+- compatible : Should be "jedec,lpddr3-timings"
+- min-freq : minimum DDR clock frequency for the speed-bin. Type is <u32>
+- reg : maximum DDR clock frequency for the speed-bin. Type is <u32>
+
+Optional properties:
+
+The following properties represent AC timing parameters from the memory
+data-sheet of the device for a given speed-bin. All these properties are
+of type <u32> and the default unit is ps (pico seconds).
+- tRFC
+- tRRD
+- tRPab
+- tRPpb
+- tRCD
+- tRC
+- tRAS
+- tWTR
+- tWR
+- tRTP
+- tW2W-C2C
+- tR2R-C2C
+- tFAW
+- tXSR
+- tXP
+- tCKE
+- tCKESR
+- tMRD
+
+Example:
+
+timings_samsung_K3QF2F20DB_800mhz: lpddr3-timings@800000000 {
+       compatible      = "jedec,lpddr3-timings";
+       reg             = <800000000>; /* workaround: it shows max-freq */
+       min-freq        = <100000000>;
+       tRFC            = <65000>;
+       tRRD            = <6000>;
+       tRPab           = <12000>;
+       tRPpb           = <12000>;
+       tRCD            = <10000>;
+       tRC             = <33750>;
+       tRAS            = <23000>;
+       tWTR            = <3750>;
+       tWR             = <7500>;
+       tRTP            = <3750>;
+       tW2W-C2C        = <0>;
+       tR2R-C2C        = <0>;
+       tFAW            = <25000>;
+       tXSR            = <70000>;
+       tXP             = <3750>;
+       tCKE            = <3750>;
+       tCKESR          = <3750>;
+       tMRD            = <7000>;
+};
diff --git a/Documentation/devicetree/bindings/ddr/lpddr3.txt b/Documentation/devicetree/bindings/ddr/lpddr3.txt
new file mode 100644 (file)
index 0000000..a0eda35
--- /dev/null
@@ -0,0 +1,101 @@
+* LPDDR3 SDRAM memories compliant to JEDEC JESD209-3C
+
+Required properties:
+- compatible : Should be "<vendor>,<type>", and generic value "jedec,lpddr3".
+  Example "<vendor>,<type>" values:
+    "samsung,K3QF2F20DB"
+
+- density  : <u32> representing density in Mb (Mega bits)
+- io-width : <u32> representing bus width. Possible values are 8, 16, 32, 64
+- #address-cells: Must be set to 1
+- #size-cells: Must be set to 0
+
+Optional properties:
+
+The following optional properties represent the minimum value of some AC
+timing parameters of the DDR device in terms of number of clock cycles.
+These values shall be obtained from the device data-sheet.
+- tRFC-min-tck
+- tRRD-min-tck
+- tRPab-min-tck
+- tRPpb-min-tck
+- tRCD-min-tck
+- tRC-min-tck
+- tRAS-min-tck
+- tWTR-min-tck
+- tWR-min-tck
+- tRTP-min-tck
+- tW2W-C2C-min-tck
+- tR2R-C2C-min-tck
+- tWL-min-tck
+- tDQSCK-min-tck
+- tRL-min-tck
+- tFAW-min-tck
+- tXSR-min-tck
+- tXP-min-tck
+- tCKE-min-tck
+- tCKESR-min-tck
+- tMRD-min-tck
+
+Child nodes:
+- The lpddr3 node may have one or more child nodes of type "lpddr3-timings".
+  "lpddr3-timings" provides AC timing parameters of the device for
+  a given speed-bin. Please see Documentation/devicetree/
+  bindings/ddr/lpddr3-timings.txt for more information on "lpddr3-timings"
+
+Example:
+
+samsung_K3QF2F20DB: lpddr3 {
+       compatible      = "samsung,K3QF2F20DB", "jedec,lpddr3";
+       density         = <16384>;
+       io-width        = <32>;
+       #address-cells  = <1>;
+       #size-cells     = <0>;
+
+       tRFC-min-tck            = <17>;
+       tRRD-min-tck            = <2>;
+       tRPab-min-tck           = <2>;
+       tRPpb-min-tck           = <2>;
+       tRCD-min-tck            = <3>;
+       tRC-min-tck             = <6>;
+       tRAS-min-tck            = <5>;
+       tWTR-min-tck            = <2>;
+       tWR-min-tck             = <7>;
+       tRTP-min-tck            = <2>;
+       tW2W-C2C-min-tck        = <0>;
+       tR2R-C2C-min-tck        = <0>;
+       tWL-min-tck             = <8>;
+       tDQSCK-min-tck          = <5>;
+       tRL-min-tck             = <14>;
+       tFAW-min-tck            = <5>;
+       tXSR-min-tck            = <12>;
+       tXP-min-tck             = <2>;
+       tCKE-min-tck            = <2>;
+       tCKESR-min-tck          = <2>;
+       tMRD-min-tck            = <5>;
+
+       timings_samsung_K3QF2F20DB_800mhz: lpddr3-timings@800000000 {
+               compatible      = "jedec,lpddr3-timings";
+               /* workaround: 'reg' shows max-freq */
+               reg             = <800000000>;
+               min-freq        = <100000000>;
+               tRFC            = <65000>;
+               tRRD            = <6000>;
+               tRPab           = <12000>;
+               tRPpb           = <12000>;
+               tRCD            = <10000>;
+               tRC             = <33750>;
+               tRAS            = <23000>;
+               tWTR            = <3750>;
+               tWR             = <7500>;
+               tRTP            = <3750>;
+               tW2W-C2C        = <0>;
+               tR2R-C2C        = <0>;
+               tFAW            = <25000>;
+               tXSR            = <70000>;
+               tXP             = <3750>;
+               tCKE            = <3750>;
+               tCKESR          = <3750>;
+               tMRD            = <7000>;
+       };
+}
diff --git a/Documentation/devicetree/bindings/display/bridge/anx6345.yaml b/Documentation/devicetree/bindings/display/bridge/anx6345.yaml
new file mode 100644 (file)
index 0000000..6d72b3d
--- /dev/null
@@ -0,0 +1,102 @@
+# SPDX-License-Identifier: GPL-2.0
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/display/bridge/anx6345.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Analogix ANX6345 eDP Transmitter Device Tree Bindings
+
+maintainers:
+  - Torsten Duwe <duwe@lst.de>
+
+description: |
+  The ANX6345 is an ultra-low power Full-HD eDP transmitter designed for
+  portable devices.
+
+properties:
+  compatible:
+    const: analogix,anx6345
+
+  reg:
+    maxItems: 1
+    description: base I2C address of the device
+
+  reset-gpios:
+    maxItems: 1
+    description: GPIO connected to active low reset
+
+  dvdd12-supply:
+    maxItems: 1
+    description: Regulator for 1.2V digital core power.
+
+  dvdd25-supply:
+    maxItems: 1
+    description: Regulator for 2.5V digital core power.
+
+  ports:
+    type: object
+
+    properties:
+      port@0:
+        type: object
+        description: |
+          Video port for LVTTL input
+
+      port@1:
+        type: object
+        description: |
+          Video port for eDP output (panel or connector).
+          May be omitted if EDID works reliably.
+
+    required:
+      - port@0
+
+required:
+  - compatible
+  - reg
+  - reset-gpios
+  - dvdd12-supply
+  - dvdd25-supply
+  - ports
+
+additionalProperties: false
+
+examples:
+  - |
+    i2c0 {
+      #address-cells = <1>;
+      #size-cells = <0>;
+
+      anx6345: anx6345@38 {
+        compatible = "analogix,anx6345";
+        reg = <0x38>;
+        reset-gpios = <&pio42 1 /* GPIO_ACTIVE_LOW */>;
+        dvdd25-supply = <&reg_dldo2>;
+        dvdd12-supply = <&reg_fldo1>;
+
+        ports {
+          #address-cells = <1>;
+          #size-cells = <0>;
+
+          anx6345_in: port@0 {
+            #address-cells = <1>;
+            #size-cells = <0>;
+            reg = <0>;
+            anx6345_in_tcon0: endpoint@0 {
+              reg = <0>;
+              remote-endpoint = <&tcon0_out_anx6345>;
+            };
+          };
+
+          anx6345_out: port@1 {
+            #address-cells = <1>;
+            #size-cells = <0>;
+            reg = <1>;
+            anx6345_out_panel: endpoint@0 {
+              reg = <0>;
+              remote-endpoint = <&panel_in_edp>;
+            };
+          };
+        };
+      };
+    };
index c9bdf10..36f59b3 100644 (file)
@@ -31,6 +31,10 @@ properties:
              - amlogic,meson-gxm-mali
              - realtek,rtd1295-mali
           - const: arm,mali-t820
+      - items:
+          - enum:
+             - arm,juno-mali
+          - const: arm,mali-t624
       - items:
           - enum:
              - rockchip,rk3288-mali
@@ -41,7 +45,6 @@ properties:
              - rockchip,rk3399-mali
           - const: arm,mali-t860
 
-          # "arm,mali-t624"
           # "arm,mali-t830"
           # "arm,mali-t880"
 
index 608fee1..a0ed027 100644 (file)
@@ -1,13 +1,17 @@
 * Marvell MMP Interrupt controller
 
 Required properties:
-- compatible : Should be "mrvl,mmp-intc", "mrvl,mmp2-intc" or
-  "mrvl,mmp2-mux-intc"
+- compatible : Should be
+               "mrvl,mmp-intc" on Marvel MMP,
+               "mrvl,mmp2-intc" along with "mrvl,mmp2-mux-intc" on MMP2 or
+               "marvell,mmp3-intc" with "mrvl,mmp2-mux-intc" on MMP3
 - reg : Address and length of the register set of the interrupt controller.
   If the interrupt controller is intc, address and length means the range
-  of the whole interrupt controller. If the interrupt controller is mux-intc,
-  address and length means one register. Since address of mux-intc is in the
-  range of intc. mux-intc is secondary interrupt controller.
+  of the whole interrupt controller. The "marvell,mmp3-intc" controller
+  also has a secondary range for the second CPU core.  If the interrupt
+  controller is mux-intc, address and length means one register. Since
+  address of mux-intc is in the range of intc. mux-intc is secondary
+  interrupt controller.
 - reg-names : Name of the register set of the interrupt controller. It's
   only required in mux-intc interrupt controller.
 - interrupts : Should be the port interrupt shared by mux interrupts. It's
diff --git a/Documentation/devicetree/bindings/lpddr2/lpddr2-timings.txt b/Documentation/devicetree/bindings/lpddr2/lpddr2-timings.txt
deleted file mode 100644 (file)
index 9ceb19e..0000000
+++ /dev/null
@@ -1,52 +0,0 @@
-* AC timing parameters of LPDDR2(JESD209-2) memories for a given speed-bin
-
-Required properties:
-- compatible : Should be "jedec,lpddr2-timings"
-- min-freq : minimum DDR clock frequency for the speed-bin. Type is <u32>
-- max-freq : maximum DDR clock frequency for the speed-bin. Type is <u32>
-
-Optional properties:
-
-The following properties represent AC timing parameters from the memory
-data-sheet of the device for a given speed-bin. All these properties are
-of type <u32> and the default unit is ps (pico seconds). Parameters with
-a different unit have a suffix indicating the unit such as 'tRAS-max-ns'
-- tRCD
-- tWR
-- tRAS-min
-- tRRD
-- tWTR
-- tXP
-- tRTP
-- tDQSCK-max
-- tFAW
-- tZQCS
-- tZQinit
-- tRPab
-- tZQCL
-- tCKESR
-- tRAS-max-ns
-- tDQSCK-max-derated
-
-Example:
-
-timings_elpida_ECB240ABACN_400mhz: lpddr2-timings@0 {
-       compatible      = "jedec,lpddr2-timings";
-       min-freq        = <10000000>;
-       max-freq        = <400000000>;
-       tRPab           = <21000>;
-       tRCD            = <18000>;
-       tWR             = <15000>;
-       tRAS-min        = <42000>;
-       tRRD            = <10000>;
-       tWTR            = <7500>;
-       tXP             = <7500>;
-       tRTP            = <7500>;
-       tCKESR          = <15000>;
-       tDQSCK-max      = <5500>;
-       tFAW            = <50000>;
-       tZQCS           = <90000>;
-       tZQCL           = <360000>;
-       tZQinit         = <1000000>;
-       tRAS-max-ns     = <70000>;
-};
diff --git a/Documentation/devicetree/bindings/lpddr2/lpddr2.txt b/Documentation/devicetree/bindings/lpddr2/lpddr2.txt
deleted file mode 100644 (file)
index 58354a0..0000000
+++ /dev/null
@@ -1,102 +0,0 @@
-* LPDDR2 SDRAM memories compliant to JEDEC JESD209-2
-
-Required properties:
-- compatible : Should be one of - "jedec,lpddr2-nvm", "jedec,lpddr2-s2",
-  "jedec,lpddr2-s4"
-
-  "ti,jedec-lpddr2-s2" should be listed if the memory part is LPDDR2-S2 type
-
-  "ti,jedec-lpddr2-s4" should be listed if the memory part is LPDDR2-S4 type
-
-  "ti,jedec-lpddr2-nvm" should be listed if the memory part is LPDDR2-NVM type
-
-- density  : <u32> representing density in Mb (Mega bits)
-
-- io-width : <u32> representing bus width. Possible values are 8, 16, and 32
-
-Optional properties:
-
-The following optional properties represent the minimum value of some AC
-timing parameters of the DDR device in terms of number of clock cycles.
-These values shall be obtained from the device data-sheet.
-- tRRD-min-tck
-- tWTR-min-tck
-- tXP-min-tck
-- tRTP-min-tck
-- tCKE-min-tck
-- tRPab-min-tck
-- tRCD-min-tck
-- tWR-min-tck
-- tRASmin-min-tck
-- tCKESR-min-tck
-- tFAW-min-tck
-
-Child nodes:
-- The lpddr2 node may have one or more child nodes of type "lpddr2-timings".
-  "lpddr2-timings" provides AC timing parameters of the device for
-  a given speed-bin. The user may provide the timings for as many
-  speed-bins as is required. Please see Documentation/devicetree/
-  bindings/lpddr2/lpddr2-timings.txt for more information on "lpddr2-timings"
-
-Example:
-
-elpida_ECB240ABACN : lpddr2 {
-       compatible      = "Elpida,ECB240ABACN","jedec,lpddr2-s4";
-       density         = <2048>;
-       io-width        = <32>;
-
-       tRPab-min-tck   = <3>;
-       tRCD-min-tck    = <3>;
-       tWR-min-tck     = <3>;
-       tRASmin-min-tck = <3>;
-       tRRD-min-tck    = <2>;
-       tWTR-min-tck    = <2>;
-       tXP-min-tck     = <2>;
-       tRTP-min-tck    = <2>;
-       tCKE-min-tck    = <3>;
-       tCKESR-min-tck  = <3>;
-       tFAW-min-tck    = <8>;
-
-       timings_elpida_ECB240ABACN_400mhz: lpddr2-timings@0 {
-               compatible      = "jedec,lpddr2-timings";
-               min-freq        = <10000000>;
-               max-freq        = <400000000>;
-               tRPab           = <21000>;
-               tRCD            = <18000>;
-               tWR             = <15000>;
-               tRAS-min        = <42000>;
-               tRRD            = <10000>;
-               tWTR            = <7500>;
-               tXP             = <7500>;
-               tRTP            = <7500>;
-               tCKESR          = <15000>;
-               tDQSCK-max      = <5500>;
-               tFAW            = <50000>;
-               tZQCS           = <90000>;
-               tZQCL           = <360000>;
-               tZQinit         = <1000000>;
-               tRAS-max-ns     = <70000>;
-       };
-
-       timings_elpida_ECB240ABACN_200mhz: lpddr2-timings@1 {
-               compatible      = "jedec,lpddr2-timings";
-               min-freq        = <10000000>;
-               max-freq        = <200000000>;
-               tRPab           = <21000>;
-               tRCD            = <18000>;
-               tWR             = <15000>;
-               tRAS-min        = <42000>;
-               tRRD            = <10000>;
-               tWTR            = <10000>;
-               tXP             = <7500>;
-               tRTP            = <7500>;
-               tCKESR          = <15000>;
-               tDQSCK-max      = <5500>;
-               tFAW            = <50000>;
-               tZQCS           = <90000>;
-               tZQCL           = <360000>;
-               tZQinit         = <1000000>;
-               tRAS-max-ns     = <70000>;
-       };
-
-}
diff --git a/Documentation/devicetree/bindings/memory-controllers/exynos5422-dmc.txt b/Documentation/devicetree/bindings/memory-controllers/exynos5422-dmc.txt
new file mode 100644 (file)
index 0000000..02e4a1f
--- /dev/null
@@ -0,0 +1,84 @@
+* Exynos5422 frequency and voltage scaling for Dynamic Memory Controller device
+
+The Samsung Exynos5422 SoC has DMC (Dynamic Memory Controller) to which the DRAM
+memory chips are connected. The driver is to monitor the controller in runtime
+and switch frequency and voltage. To monitor the usage of the controller in
+runtime, the driver uses the PPMU (Platform Performance Monitoring Unit), which
+is able to measure the current load of the memory.
+When 'userspace' governor is used for the driver, an application is able to
+switch the DMC and memory frequency.
+
+Required properties for DMC device for Exynos5422:
+- compatible: Should be "samsung,exynos5422-dmc".
+- clocks : list of clock specifiers, must contain an entry for each
+  required entry in clock-names for CLK_FOUT_SPLL, CLK_MOUT_SCLK_SPLL,
+  CLK_FF_DOUT_SPLL2, CLK_FOUT_BPLL, CLK_MOUT_BPLL, CLK_SCLK_BPLL,
+  CLK_MOUT_MX_MSPLL_CCORE, CLK_MOUT_MX_MSPLL_CCORE_PHY, CLK_MOUT_MCLK_CDREX,
+- clock-names : should include "fout_spll", "mout_sclk_spll", "ff_dout_spll2",
+  "fout_bpll", "mout_bpll", "sclk_bpll", "mout_mx_mspll_ccore",
+  "mout_mclk_cdrex"  entries
+- devfreq-events : phandles for PPMU devices connected to this DMC.
+- vdd-supply : phandle for voltage regulator which is connected.
+- reg : registers of two CDREX controllers.
+- operating-points-v2 : phandle for OPPs described in v2 definition.
+- device-handle : phandle of the connected DRAM memory device. For more
+       information please refer to documentation file:
+       Documentation/devicetree/bindings/ddr/lpddr3.txt
+- devfreq-events : phandles of the PPMU events used by the controller.
+- samsung,syscon-clk : phandle of the clock register set used by the controller,
+       these registers are used for enabling a 'pause' feature and are not
+       exposed by clock framework but they must be used in a safe way.
+       The register offsets are in the driver code and specyfic for this SoC
+       type.
+
+Optional properties for DMC device for Exynos5422:
+- interrupt-parent : The parent interrupt controller.
+- interrupts : Contains the IRQ line numbers for the DMC internal performance
+  event counters in DREX0 and DREX1 channels. Align with specification of the
+  interrupt line(s) in the interrupt-parent controller.
+- interrupt-names : IRQ names "drex_0" and "drex_1", the order should be the
+  same as in the 'interrupts' list above.
+
+Example:
+
+       ppmu_dmc0_0: ppmu@10d00000 {
+               compatible = "samsung,exynos-ppmu";
+               reg = <0x10d00000 0x2000>;
+               clocks = <&clock CLK_PCLK_PPMU_DREX0_0>;
+               clock-names = "ppmu";
+               events {
+                       ppmu_event_dmc0_0: ppmu-event3-dmc0_0 {
+                               event-name = "ppmu-event3-dmc0_0";
+                       };
+               };
+       };
+
+       dmc: memory-controller@10c20000 {
+               compatible = "samsung,exynos5422-dmc";
+               reg = <0x10c20000 0x10000>, <0x10c30000 0x10000>;
+               clocks = <&clock CLK_FOUT_SPLL>,
+                        <&clock CLK_MOUT_SCLK_SPLL>,
+                        <&clock CLK_FF_DOUT_SPLL2>,
+                        <&clock CLK_FOUT_BPLL>,
+                        <&clock CLK_MOUT_BPLL>,
+                        <&clock CLK_SCLK_BPLL>,
+                        <&clock CLK_MOUT_MX_MSPLL_CCORE>,
+                        <&clock CLK_MOUT_MCLK_CDREX>;
+               clock-names = "fout_spll",
+                             "mout_sclk_spll",
+                             "ff_dout_spll2",
+                             "fout_bpll",
+                             "mout_bpll",
+                             "sclk_bpll",
+                             "mout_mx_mspll_ccore",
+                             "mout_mclk_cdrex";
+               operating-points-v2 = <&dmc_opp_table>;
+               devfreq-events = <&ppmu_event3_dmc0_0>, <&ppmu_event3_dmc0_1>,
+                                <&ppmu_event3_dmc1_0>, <&ppmu_event3_dmc1_1>;
+               device-handle = <&samsung_K3QF2F20DB>;
+               vdd-supply = <&buck1_reg>;
+               samsung,syscon-clk = <&clock>;
+               interrupt-parent = <&combiner>;
+               interrupts = <16 0>, <16 1>;
+               interrupt-names = "drex_0", "drex_1";
+       };
diff --git a/Documentation/devicetree/bindings/memory-controllers/nvidia,tegra124-mc.yaml b/Documentation/devicetree/bindings/memory-controllers/nvidia,tegra124-mc.yaml
new file mode 100644 (file)
index 0000000..30d9fb1
--- /dev/null
@@ -0,0 +1,152 @@
+# SPDX-License-Identifier: (GPL-2.0)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/memory-controllers/nvidia,tegra124-mc.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: NVIDIA Tegra124 SoC Memory Controller
+
+maintainers:
+  - Jon Hunter <jonathanh@nvidia.com>
+  - Thierry Reding <thierry.reding@gmail.com>
+
+description: |
+  Tegra124 SoC features a hybrid 2x32-bit / 1x64-bit memory controller.
+  These are interleaved to provide high performance with the load shared across
+  two memory channels. The Tegra124 Memory Controller handles memory requests
+  from internal clients and arbitrates among them to allocate memory bandwidth
+  for DDR3L and LPDDR3 SDRAMs.
+
+properties:
+  compatible:
+    const: nvidia,tegra124-mc
+
+  reg:
+    maxItems: 1
+
+  clocks:
+    maxItems: 1
+
+  clock-names:
+    items:
+      - const: mc
+
+  interrupts:
+    maxItems: 1
+
+  "#reset-cells":
+    const: 1
+
+  "#iommu-cells":
+    const: 1
+
+patternProperties:
+  "^emc-timings-[0-9]+$":
+    type: object
+    properties:
+      nvidia,ram-code:
+        $ref: /schemas/types.yaml#/definitions/uint32
+        description:
+          Value of RAM_CODE this timing set is used for.
+
+    patternProperties:
+      "^timing-[0-9]+$":
+        type: object
+        properties:
+          clock-frequency:
+            description:
+              Memory clock rate in Hz.
+            minimum: 1000000
+            maximum: 1066000000
+
+          nvidia,emem-configuration:
+            $ref: /schemas/types.yaml#/definitions/uint32-array
+            description: |
+              Values to be written to the EMEM register block. See section
+              "15.6.1 MC Registers" in the TRM.
+            items:
+              - description: MC_EMEM_ARB_CFG
+              - description: MC_EMEM_ARB_OUTSTANDING_REQ
+              - description: MC_EMEM_ARB_TIMING_RCD
+              - description: MC_EMEM_ARB_TIMING_RP
+              - description: MC_EMEM_ARB_TIMING_RC
+              - description: MC_EMEM_ARB_TIMING_RAS
+              - description: MC_EMEM_ARB_TIMING_FAW
+              - description: MC_EMEM_ARB_TIMING_RRD
+              - description: MC_EMEM_ARB_TIMING_RAP2PRE
+              - description: MC_EMEM_ARB_TIMING_WAP2PRE
+              - description: MC_EMEM_ARB_TIMING_R2R
+              - description: MC_EMEM_ARB_TIMING_W2W
+              - description: MC_EMEM_ARB_TIMING_R2W
+              - description: MC_EMEM_ARB_TIMING_W2R
+              - description: MC_EMEM_ARB_DA_TURNS
+              - description: MC_EMEM_ARB_DA_COVERS
+              - description: MC_EMEM_ARB_MISC0
+              - description: MC_EMEM_ARB_MISC1
+              - description: MC_EMEM_ARB_RING1_THROTTLE
+
+        required:
+          - clock-frequency
+          - nvidia,emem-configuration
+
+        additionalProperties: false
+
+    required:
+      - nvidia,ram-code
+
+    additionalProperties: false
+
+required:
+  - compatible
+  - reg
+  - interrupts
+  - clocks
+  - clock-names
+  - "#reset-cells"
+  - "#iommu-cells"
+
+additionalProperties: false
+
+examples:
+  - |
+    memory-controller@70019000 {
+        compatible = "nvidia,tegra124-mc";
+        reg = <0x0 0x70019000 0x0 0x1000>;
+        clocks = <&tegra_car 32>;
+        clock-names = "mc";
+
+        interrupts = <0 77 4>;
+
+        #iommu-cells = <1>;
+        #reset-cells = <1>;
+
+        emc-timings-3 {
+            nvidia,ram-code = <3>;
+
+            timing-12750000 {
+                clock-frequency = <12750000>;
+
+                nvidia,emem-configuration = <
+                    0x40040001 /* MC_EMEM_ARB_CFG */
+                    0x8000000a /* MC_EMEM_ARB_OUTSTANDING_REQ */
+                    0x00000001 /* MC_EMEM_ARB_TIMING_RCD */
+                    0x00000001 /* MC_EMEM_ARB_TIMING_RP */
+                    0x00000002 /* MC_EMEM_ARB_TIMING_RC */
+                    0x00000000 /* MC_EMEM_ARB_TIMING_RAS */
+                    0x00000002 /* MC_EMEM_ARB_TIMING_FAW */
+                    0x00000001 /* MC_EMEM_ARB_TIMING_RRD */
+                    0x00000002 /* MC_EMEM_ARB_TIMING_RAP2PRE */
+                    0x00000008 /* MC_EMEM_ARB_TIMING_WAP2PRE */
+                    0x00000003 /* MC_EMEM_ARB_TIMING_R2R */
+                    0x00000002 /* MC_EMEM_ARB_TIMING_W2W */
+                    0x00000003 /* MC_EMEM_ARB_TIMING_R2W */
+                    0x00000006 /* MC_EMEM_ARB_TIMING_W2R */
+                    0x06030203 /* MC_EMEM_ARB_DA_TURNS */
+                    0x000a0402 /* MC_EMEM_ARB_DA_COVERS */
+                    0x77e30303 /* MC_EMEM_ARB_MISC0 */
+                    0x70000f03 /* MC_EMEM_ARB_MISC1 */
+                    0x001f0000 /* MC_EMEM_ARB_RING1_THROTTLE */
+                >;
+            };
+        };
+    };
diff --git a/Documentation/devicetree/bindings/memory-controllers/nvidia,tegra30-emc.yaml b/Documentation/devicetree/bindings/memory-controllers/nvidia,tegra30-emc.yaml
new file mode 100644 (file)
index 0000000..7fe0ca1
--- /dev/null
@@ -0,0 +1,336 @@
+# SPDX-License-Identifier: (GPL-2.0)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/memory-controllers/nvidia,tegra30-emc.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: NVIDIA Tegra30 SoC External Memory Controller
+
+maintainers:
+  - Dmitry Osipenko <digetx@gmail.com>
+  - Jon Hunter <jonathanh@nvidia.com>
+  - Thierry Reding <thierry.reding@gmail.com>
+
+description: |
+  The EMC interfaces with the off-chip SDRAM to service the request stream
+  sent from Memory Controller. The EMC also has various performance-affecting
+  settings beyond the obvious SDRAM configuration parameters and initialization
+  settings. Tegra30 EMC supports multiple JEDEC standard protocols: LPDDR2,
+  LPDDR3, and DDR3.
+
+properties:
+  compatible:
+    const: nvidia,tegra30-emc
+
+  reg:
+    maxItems: 1
+
+  clocks:
+    maxItems: 1
+
+  interrupts:
+    maxItems: 1
+
+  nvidia,memory-controller:
+    $ref: /schemas/types.yaml#/definitions/phandle
+    description:
+      Phandle of the Memory Controller node.
+
+patternProperties:
+  "^emc-timings-[0-9]+$":
+    type: object
+    properties:
+      nvidia,ram-code:
+        $ref: /schemas/types.yaml#/definitions/uint32
+        description:
+          Value of RAM_CODE this timing set is used for.
+
+    patternProperties:
+      "^timing-[0-9]+$":
+        type: object
+        properties:
+          clock-frequency:
+            description:
+              Memory clock rate in Hz.
+            minimum: 1000000
+            maximum: 900000000
+
+          nvidia,emc-auto-cal-interval:
+            $ref: /schemas/types.yaml#/definitions/uint32
+            description:
+              Pad calibration interval in microseconds.
+            minimum: 0
+            maximum: 2097151
+
+          nvidia,emc-mode-1:
+            $ref: /schemas/types.yaml#/definitions/uint32
+            description:
+              Mode Register 1.
+
+          nvidia,emc-mode-2:
+            $ref: /schemas/types.yaml#/definitions/uint32
+            description:
+              Mode Register 2.
+
+          nvidia,emc-mode-reset:
+            $ref: /schemas/types.yaml#/definitions/uint32
+            description:
+              Mode Register 0.
+
+          nvidia,emc-zcal-cnt-long:
+            $ref: /schemas/types.yaml#/definitions/uint32
+            description:
+              Number of EMC clocks to wait before issuing any commands after
+              sending ZCAL_MRW_CMD.
+            minimum: 0
+            maximum: 1023
+
+          nvidia,emc-cfg-dyn-self-ref:
+            type: boolean
+            description:
+              Dynamic self-refresh enabled.
+
+          nvidia,emc-cfg-periodic-qrst:
+            type: boolean
+            description:
+              FBIO "read" FIFO periodic resetting enabled.
+
+          nvidia,emc-configuration:
+            $ref: /schemas/types.yaml#/definitions/uint32-array
+            description:
+              EMC timing characterization data. These are the registers
+              (see section "18.13.2 EMC Registers" in the TRM) whose values
+              need to be specified, according to the board documentation.
+            items:
+              - description: EMC_RC
+              - description: EMC_RFC
+              - description: EMC_RAS
+              - description: EMC_RP
+              - description: EMC_R2W
+              - description: EMC_W2R
+              - description: EMC_R2P
+              - description: EMC_W2P
+              - description: EMC_RD_RCD
+              - description: EMC_WR_RCD
+              - description: EMC_RRD
+              - description: EMC_REXT
+              - description: EMC_WEXT
+              - description: EMC_WDV
+              - description: EMC_QUSE
+              - description: EMC_QRST
+              - description: EMC_QSAFE
+              - description: EMC_RDV
+              - description: EMC_REFRESH
+              - description: EMC_BURST_REFRESH_NUM
+              - description: EMC_PRE_REFRESH_REQ_CNT
+              - description: EMC_PDEX2WR
+              - description: EMC_PDEX2RD
+              - description: EMC_PCHG2PDEN
+              - description: EMC_ACT2PDEN
+              - description: EMC_AR2PDEN
+              - description: EMC_RW2PDEN
+              - description: EMC_TXSR
+              - description: EMC_TXSRDLL
+              - description: EMC_TCKE
+              - description: EMC_TFAW
+              - description: EMC_TRPAB
+              - description: EMC_TCLKSTABLE
+              - description: EMC_TCLKSTOP
+              - description: EMC_TREFBW
+              - description: EMC_QUSE_EXTRA
+              - description: EMC_FBIO_CFG6
+              - description: EMC_ODT_WRITE
+              - description: EMC_ODT_READ
+              - description: EMC_FBIO_CFG5
+              - description: EMC_CFG_DIG_DLL
+              - description: EMC_CFG_DIG_DLL_PERIOD
+              - description: EMC_DLL_XFORM_DQS0
+              - description: EMC_DLL_XFORM_DQS1
+              - description: EMC_DLL_XFORM_DQS2
+              - description: EMC_DLL_XFORM_DQS3
+              - description: EMC_DLL_XFORM_DQS4
+              - description: EMC_DLL_XFORM_DQS5
+              - description: EMC_DLL_XFORM_DQS6
+              - description: EMC_DLL_XFORM_DQS7
+              - description: EMC_DLL_XFORM_QUSE0
+              - description: EMC_DLL_XFORM_QUSE1
+              - description: EMC_DLL_XFORM_QUSE2
+              - description: EMC_DLL_XFORM_QUSE3
+              - description: EMC_DLL_XFORM_QUSE4
+              - description: EMC_DLL_XFORM_QUSE5
+              - description: EMC_DLL_XFORM_QUSE6
+              - description: EMC_DLL_XFORM_QUSE7
+              - description: EMC_DLI_TRIM_TXDQS0
+              - description: EMC_DLI_TRIM_TXDQS1
+              - description: EMC_DLI_TRIM_TXDQS2
+              - description: EMC_DLI_TRIM_TXDQS3
+              - description: EMC_DLI_TRIM_TXDQS4
+              - description: EMC_DLI_TRIM_TXDQS5
+              - description: EMC_DLI_TRIM_TXDQS6
+              - description: EMC_DLI_TRIM_TXDQS7
+              - description: EMC_DLL_XFORM_DQ0
+              - description: EMC_DLL_XFORM_DQ1
+              - description: EMC_DLL_XFORM_DQ2
+              - description: EMC_DLL_XFORM_DQ3
+              - description: EMC_XM2CMDPADCTRL
+              - description: EMC_XM2DQSPADCTRL2
+              - description: EMC_XM2DQPADCTRL2
+              - description: EMC_XM2CLKPADCTRL
+              - description: EMC_XM2COMPPADCTRL
+              - description: EMC_XM2VTTGENPADCTRL
+              - description: EMC_XM2VTTGENPADCTRL2
+              - description: EMC_XM2QUSEPADCTRL
+              - description: EMC_XM2DQSPADCTRL3
+              - description: EMC_CTT_TERM_CTRL
+              - description: EMC_ZCAL_INTERVAL
+              - description: EMC_ZCAL_WAIT_CNT
+              - description: EMC_MRS_WAIT_CNT
+              - description: EMC_AUTO_CAL_CONFIG
+              - description: EMC_CTT
+              - description: EMC_CTT_DURATION
+              - description: EMC_DYN_SELF_REF_CONTROL
+              - description: EMC_FBIO_SPARE
+              - description: EMC_CFG_RSV
+
+        required:
+          - clock-frequency
+          - nvidia,emc-auto-cal-interval
+          - nvidia,emc-mode-1
+          - nvidia,emc-mode-2
+          - nvidia,emc-mode-reset
+          - nvidia,emc-zcal-cnt-long
+          - nvidia,emc-configuration
+
+        additionalProperties: false
+
+    required:
+      - nvidia,ram-code
+
+    additionalProperties: false
+
+required:
+  - compatible
+  - reg
+  - interrupts
+  - clocks
+  - nvidia,memory-controller
+
+additionalProperties: false
+
+examples:
+  - |
+    external-memory-controller@7000f400 {
+        compatible = "nvidia,tegra30-emc";
+        reg = <0x7000f400 0x400>;
+        interrupts = <0 78 4>;
+        clocks = <&tegra_car 57>;
+
+        nvidia,memory-controller = <&mc>;
+
+        emc-timings-1 {
+            nvidia,ram-code = <1>;
+
+            timing-667000000 {
+                clock-frequency = <667000000>;
+
+                nvidia,emc-auto-cal-interval = <0x001fffff>;
+                nvidia,emc-mode-1 = <0x80100002>;
+                nvidia,emc-mode-2 = <0x80200018>;
+                nvidia,emc-mode-reset = <0x80000b71>;
+                nvidia,emc-zcal-cnt-long = <0x00000040>;
+                nvidia,emc-cfg-periodic-qrst;
+
+                nvidia,emc-configuration = <
+                    0x00000020 /* EMC_RC */
+                    0x0000006a /* EMC_RFC */
+                    0x00000017 /* EMC_RAS */
+                    0x00000007 /* EMC_RP */
+                    0x00000005 /* EMC_R2W */
+                    0x0000000c /* EMC_W2R */
+                    0x00000003 /* EMC_R2P */
+                    0x00000011 /* EMC_W2P */
+                    0x00000007 /* EMC_RD_RCD */
+                    0x00000007 /* EMC_WR_RCD */
+                    0x00000002 /* EMC_RRD */
+                    0x00000001 /* EMC_REXT */
+                    0x00000000 /* EMC_WEXT */
+                    0x00000007 /* EMC_WDV */
+                    0x0000000a /* EMC_QUSE */
+                    0x00000009 /* EMC_QRST */
+                    0x0000000b /* EMC_QSAFE */
+                    0x00000011 /* EMC_RDV */
+                    0x00001412 /* EMC_REFRESH */
+                    0x00000000 /* EMC_BURST_REFRESH_NUM */
+                    0x00000504 /* EMC_PRE_REFRESH_REQ_CNT */
+                    0x00000002 /* EMC_PDEX2WR */
+                    0x0000000e /* EMC_PDEX2RD */
+                    0x00000001 /* EMC_PCHG2PDEN */
+                    0x00000000 /* EMC_ACT2PDEN */
+                    0x0000000c /* EMC_AR2PDEN */
+                    0x00000016 /* EMC_RW2PDEN */
+                    0x00000072 /* EMC_TXSR */
+                    0x00000200 /* EMC_TXSRDLL */
+                    0x00000005 /* EMC_TCKE */
+                    0x00000015 /* EMC_TFAW */
+                    0x00000000 /* EMC_TRPAB */
+                    0x00000006 /* EMC_TCLKSTABLE */
+                    0x00000007 /* EMC_TCLKSTOP */
+                    0x00001453 /* EMC_TREFBW */
+                    0x0000000b /* EMC_QUSE_EXTRA */
+                    0x00000006 /* EMC_FBIO_CFG6 */
+                    0x00000000 /* EMC_ODT_WRITE */
+                    0x00000000 /* EMC_ODT_READ */
+                    0x00005088 /* EMC_FBIO_CFG5 */
+                    0xf00b0191 /* EMC_CFG_DIG_DLL */
+                    0x00008000 /* EMC_CFG_DIG_DLL_PERIOD */
+                    0x00000008 /* EMC_DLL_XFORM_DQS0 */
+                    0x00000008 /* EMC_DLL_XFORM_DQS1 */
+                    0x00000008 /* EMC_DLL_XFORM_DQS2 */
+                    0x00000008 /* EMC_DLL_XFORM_DQS3 */
+                    0x0000000a /* EMC_DLL_XFORM_DQS4 */
+                    0x0000000a /* EMC_DLL_XFORM_DQS5 */
+                    0x0000000a /* EMC_DLL_XFORM_DQS6 */
+                    0x0000000a /* EMC_DLL_XFORM_DQS7 */
+                    0x00018000 /* EMC_DLL_XFORM_QUSE0 */
+                    0x00018000 /* EMC_DLL_XFORM_QUSE1 */
+                    0x00018000 /* EMC_DLL_XFORM_QUSE2 */
+                    0x00018000 /* EMC_DLL_XFORM_QUSE3 */
+                    0x00000000 /* EMC_DLL_XFORM_QUSE4 */
+                    0x00000000 /* EMC_DLL_XFORM_QUSE5 */
+                    0x00000000 /* EMC_DLL_XFORM_QUSE6 */
+                    0x00000000 /* EMC_DLL_XFORM_QUSE7 */
+                    0x00000000 /* EMC_DLI_TRIM_TXDQS0 */
+                    0x00000000 /* EMC_DLI_TRIM_TXDQS1 */
+                    0x00000000 /* EMC_DLI_TRIM_TXDQS2 */
+                    0x00000000 /* EMC_DLI_TRIM_TXDQS3 */
+                    0x00000000 /* EMC_DLI_TRIM_TXDQS4 */
+                    0x00000000 /* EMC_DLI_TRIM_TXDQS5 */
+                    0x00000000 /* EMC_DLI_TRIM_TXDQS6 */
+                    0x00000000 /* EMC_DLI_TRIM_TXDQS7 */
+                    0x0000000a /* EMC_DLL_XFORM_DQ0 */
+                    0x0000000a /* EMC_DLL_XFORM_DQ1 */
+                    0x0000000a /* EMC_DLL_XFORM_DQ2 */
+                    0x0000000a /* EMC_DLL_XFORM_DQ3 */
+                    0x000002a0 /* EMC_XM2CMDPADCTRL */
+                    0x0800013d /* EMC_XM2DQSPADCTRL2 */
+                    0x22220000 /* EMC_XM2DQPADCTRL2 */
+                    0x77fff884 /* EMC_XM2CLKPADCTRL */
+                    0x01f1f501 /* EMC_XM2COMPPADCTRL */
+                    0x07077404 /* EMC_XM2VTTGENPADCTRL */
+                    0x54000000 /* EMC_XM2VTTGENPADCTRL2 */
+                    0x080001e8 /* EMC_XM2QUSEPADCTRL */
+                    0x0c000021 /* EMC_XM2DQSPADCTRL3 */
+                    0x00000802 /* EMC_CTT_TERM_CTRL */
+                    0x00020000 /* EMC_ZCAL_INTERVAL */
+                    0x00000100 /* EMC_ZCAL_WAIT_CNT */
+                    0x0155000c /* EMC_MRS_WAIT_CNT */
+                    0xa0f10000 /* EMC_AUTO_CAL_CONFIG */
+                    0x00000000 /* EMC_CTT */
+                    0x00000000 /* EMC_CTT_DURATION */
+                    0x800028a5 /* EMC_DYN_SELF_REF_CONTROL */
+                    0xe8000000 /* EMC_FBIO_SPARE */
+                    0xff00ff49 /* EMC_CFG_RSV */
+                >;
+            };
+        };
+    };
diff --git a/Documentation/devicetree/bindings/memory-controllers/nvidia,tegra30-mc.txt b/Documentation/devicetree/bindings/memory-controllers/nvidia,tegra30-mc.txt
deleted file mode 100644 (file)
index a878b59..0000000
+++ /dev/null
@@ -1,123 +0,0 @@
-NVIDIA Tegra Memory Controller device tree bindings
-===================================================
-
-memory-controller node
-----------------------
-
-Required properties:
-- compatible: Should be "nvidia,tegra<chip>-mc"
-- reg: Physical base address and length of the controller's registers.
-- clocks: Must contain an entry for each entry in clock-names.
-  See ../clocks/clock-bindings.txt for details.
-- clock-names: Must include the following entries:
-  - mc: the module's clock input
-- interrupts: The interrupt outputs from the controller.
-- #reset-cells : Should be 1. This cell represents memory client module ID.
-  The assignments may be found in header file <dt-bindings/memory/tegra30-mc.h>
-  or in the TRM documentation.
-
-Required properties for Tegra30, Tegra114, Tegra124, Tegra132 and Tegra210:
-- #iommu-cells: Should be 1. The single cell of the IOMMU specifier defines
-  the SWGROUP of the master.
-
-This device implements an IOMMU that complies with the generic IOMMU binding.
-See ../iommu/iommu.txt for details.
-
-emc-timings subnode
--------------------
-
-The node should contain a "emc-timings" subnode for each supported RAM type (see field RAM_CODE in
-register PMC_STRAPPING_OPT_A).
-
-Required properties for "emc-timings" nodes :
-- nvidia,ram-code : Should contain the value of RAM_CODE this timing set is used for.
-
-timing subnode
---------------
-
-Each "emc-timings" node should contain a subnode for every supported EMC clock rate.
-
-Required properties for timing nodes :
-- clock-frequency : Should contain the memory clock rate in Hz.
-- nvidia,emem-configuration : Values to be written to the EMEM register block. For the Tegra124 SoC
-(see section "15.6.1 MC Registers" in the TRM), these are the registers whose values need to be
-specified, according to the board documentation:
-
-       MC_EMEM_ARB_CFG
-       MC_EMEM_ARB_OUTSTANDING_REQ
-       MC_EMEM_ARB_TIMING_RCD
-       MC_EMEM_ARB_TIMING_RP
-       MC_EMEM_ARB_TIMING_RC
-       MC_EMEM_ARB_TIMING_RAS
-       MC_EMEM_ARB_TIMING_FAW
-       MC_EMEM_ARB_TIMING_RRD
-       MC_EMEM_ARB_TIMING_RAP2PRE
-       MC_EMEM_ARB_TIMING_WAP2PRE
-       MC_EMEM_ARB_TIMING_R2R
-       MC_EMEM_ARB_TIMING_W2W
-       MC_EMEM_ARB_TIMING_R2W
-       MC_EMEM_ARB_TIMING_W2R
-       MC_EMEM_ARB_DA_TURNS
-       MC_EMEM_ARB_DA_COVERS
-       MC_EMEM_ARB_MISC0
-       MC_EMEM_ARB_MISC1
-       MC_EMEM_ARB_RING1_THROTTLE
-
-Example SoC include file:
-
-/ {
-       mc: memory-controller@70019000 {
-               compatible = "nvidia,tegra124-mc";
-               reg = <0x0 0x70019000 0x0 0x1000>;
-               clocks = <&tegra_car TEGRA124_CLK_MC>;
-               clock-names = "mc";
-
-               interrupts = <GIC_SPI 77 IRQ_TYPE_LEVEL_HIGH>;
-
-               #iommu-cells = <1>;
-               #reset-cells = <1>;
-       };
-
-       sdhci@700b0000 {
-               compatible = "nvidia,tegra124-sdhci";
-               ...
-               iommus = <&mc TEGRA_SWGROUP_SDMMC1A>;
-               resets = <&mc TEGRA124_MC_RESET_SDMMC1>;
-       };
-};
-
-Example board file:
-
-/ {
-       memory-controller@70019000 {
-               emc-timings-3 {
-                       nvidia,ram-code = <3>;
-
-                       timing-12750000 {
-                               clock-frequency = <12750000>;
-
-                               nvidia,emem-configuration = <
-                                       0x40040001 /* MC_EMEM_ARB_CFG */
-                                       0x8000000a /* MC_EMEM_ARB_OUTSTANDING_REQ */
-                                       0x00000001 /* MC_EMEM_ARB_TIMING_RCD */
-                                       0x00000001 /* MC_EMEM_ARB_TIMING_RP */
-                                       0x00000002 /* MC_EMEM_ARB_TIMING_RC */
-                                       0x00000000 /* MC_EMEM_ARB_TIMING_RAS */
-                                       0x00000002 /* MC_EMEM_ARB_TIMING_FAW */
-                                       0x00000001 /* MC_EMEM_ARB_TIMING_RRD */
-                                       0x00000002 /* MC_EMEM_ARB_TIMING_RAP2PRE */
-                                       0x00000008 /* MC_EMEM_ARB_TIMING_WAP2PRE */
-                                       0x00000003 /* MC_EMEM_ARB_TIMING_R2R */
-                                       0x00000002 /* MC_EMEM_ARB_TIMING_W2W */
-                                       0x00000003 /* MC_EMEM_ARB_TIMING_R2W */
-                                       0x00000006 /* MC_EMEM_ARB_TIMING_W2R */
-                                       0x06030203 /* MC_EMEM_ARB_DA_TURNS */
-                                       0x000a0402 /* MC_EMEM_ARB_DA_COVERS */
-                                       0x77e30303 /* MC_EMEM_ARB_MISC0 */
-                                       0x70000f03 /* MC_EMEM_ARB_MISC1 */
-                                       0x001f0000 /* MC_EMEM_ARB_RING1_THROTTLE */
-                               >;
-                       };
-               };
-       };
-};
diff --git a/Documentation/devicetree/bindings/memory-controllers/nvidia,tegra30-mc.yaml b/Documentation/devicetree/bindings/memory-controllers/nvidia,tegra30-mc.yaml
new file mode 100644 (file)
index 0000000..84fd57b
--- /dev/null
@@ -0,0 +1,167 @@
+# SPDX-License-Identifier: (GPL-2.0)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/memory-controllers/nvidia,tegra30-mc.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: NVIDIA Tegra30 SoC Memory Controller
+
+maintainers:
+  - Dmitry Osipenko <digetx@gmail.com>
+  - Jon Hunter <jonathanh@nvidia.com>
+  - Thierry Reding <thierry.reding@gmail.com>
+
+description: |
+  Tegra30 Memory Controller architecturally consists of the following parts:
+
+    Arbitration Domains, which can handle a single request or response per
+    clock from a group of clients. Typically, a system has a single Arbitration
+    Domain, but an implementation may divide the client space into multiple
+    Arbitration Domains to increase the effective system bandwidth.
+
+    Protocol Arbiter, which manage a related pool of memory devices. A system
+    may have a single Protocol Arbiter or multiple Protocol Arbiters.
+
+    Memory Crossbar, which routes request and responses between Arbitration
+    Domains and Protocol Arbiters. In the simplest version of the system, the
+    Memory Crossbar is just a pass through between a single Arbitration Domain
+    and a single Protocol Arbiter.
+
+    Global Resources, which include things like configuration registers which
+    are shared across the Memory Subsystem.
+
+  The Tegra30 Memory Controller handles memory requests from internal clients
+  and arbitrates among them to allocate memory bandwidth for DDR3L and LPDDR2
+  SDRAMs.
+
+properties:
+  compatible:
+    const: nvidia,tegra30-mc
+
+  reg:
+    maxItems: 1
+
+  clocks:
+    maxItems: 1
+
+  clock-names:
+    items:
+      - const: mc
+
+  interrupts:
+    maxItems: 1
+
+  "#reset-cells":
+    const: 1
+
+  "#iommu-cells":
+    const: 1
+
+patternProperties:
+  "^emc-timings-[0-9]+$":
+    type: object
+    properties:
+      nvidia,ram-code:
+        $ref: /schemas/types.yaml#/definitions/uint32
+        description:
+          Value of RAM_CODE this timing set is used for.
+
+    patternProperties:
+      "^timing-[0-9]+$":
+        type: object
+        properties:
+          clock-frequency:
+            description:
+              Memory clock rate in Hz.
+            minimum: 1000000
+            maximum: 900000000
+
+          nvidia,emem-configuration:
+            $ref: /schemas/types.yaml#/definitions/uint32-array
+            description: |
+              Values to be written to the EMEM register block. See section
+              "18.13.1 MC Registers" in the TRM.
+            items:
+              - description: MC_EMEM_ARB_CFG
+              - description: MC_EMEM_ARB_OUTSTANDING_REQ
+              - description: MC_EMEM_ARB_TIMING_RCD
+              - description: MC_EMEM_ARB_TIMING_RP
+              - description: MC_EMEM_ARB_TIMING_RC
+              - description: MC_EMEM_ARB_TIMING_RAS
+              - description: MC_EMEM_ARB_TIMING_FAW
+              - description: MC_EMEM_ARB_TIMING_RRD
+              - description: MC_EMEM_ARB_TIMING_RAP2PRE
+              - description: MC_EMEM_ARB_TIMING_WAP2PRE
+              - description: MC_EMEM_ARB_TIMING_R2R
+              - description: MC_EMEM_ARB_TIMING_W2W
+              - description: MC_EMEM_ARB_TIMING_R2W
+              - description: MC_EMEM_ARB_TIMING_W2R
+              - description: MC_EMEM_ARB_DA_TURNS
+              - description: MC_EMEM_ARB_DA_COVERS
+              - description: MC_EMEM_ARB_MISC0
+              - description: MC_EMEM_ARB_RING1_THROTTLE
+
+        required:
+          - clock-frequency
+          - nvidia,emem-configuration
+
+        additionalProperties: false
+
+    required:
+      - nvidia,ram-code
+
+    additionalProperties: false
+
+required:
+  - compatible
+  - reg
+  - interrupts
+  - clocks
+  - clock-names
+  - "#reset-cells"
+  - "#iommu-cells"
+
+additionalProperties: false
+
+examples:
+  - |
+    memory-controller@7000f000 {
+        compatible = "nvidia,tegra30-mc";
+        reg = <0x7000f000 0x400>;
+        clocks = <&tegra_car 32>;
+        clock-names = "mc";
+
+        interrupts = <0 77 4>;
+
+        #iommu-cells = <1>;
+        #reset-cells = <1>;
+
+        emc-timings-1 {
+            nvidia,ram-code = <1>;
+
+            timing-667000000 {
+                clock-frequency = <667000000>;
+
+                nvidia,emem-configuration = <
+                    0x0000000a /* MC_EMEM_ARB_CFG */
+                    0xc0000079 /* MC_EMEM_ARB_OUTSTANDING_REQ */
+                    0x00000003 /* MC_EMEM_ARB_TIMING_RCD */
+                    0x00000004 /* MC_EMEM_ARB_TIMING_RP */
+                    0x00000010 /* MC_EMEM_ARB_TIMING_RC */
+                    0x0000000b /* MC_EMEM_ARB_TIMING_RAS */
+                    0x0000000a /* MC_EMEM_ARB_TIMING_FAW */
+                    0x00000001 /* MC_EMEM_ARB_TIMING_RRD */
+                    0x00000003 /* MC_EMEM_ARB_TIMING_RAP2PRE */
+                    0x0000000b /* MC_EMEM_ARB_TIMING_WAP2PRE */
+                    0x00000002 /* MC_EMEM_ARB_TIMING_R2R */
+                    0x00000002 /* MC_EMEM_ARB_TIMING_W2W */
+                    0x00000004 /* MC_EMEM_ARB_TIMING_R2W */
+                    0x00000008 /* MC_EMEM_ARB_TIMING_W2R */
+                    0x08040202 /* MC_EMEM_ARB_DA_TURNS */
+                    0x00130b10 /* MC_EMEM_ARB_DA_COVERS */
+                    0x70ea1f11 /* MC_EMEM_ARB_MISC0 */
+                    0x001f0000 /* MC_EMEM_ARB_RING1_THROTTLE */
+                >;
+            };
+        };
+    };
diff --git a/Documentation/devicetree/bindings/phy/phy-mmp3-usb.txt b/Documentation/devicetree/bindings/phy/phy-mmp3-usb.txt
new file mode 100644 (file)
index 0000000..7183b91
--- /dev/null
@@ -0,0 +1,13 @@
+Marvell MMP3 USB PHY
+--------------------
+
+Required properties:
+- compatible: must be "marvell,mmp3-usb-phy"
+- #phy-cells: must be 0
+
+Example:
+       usb-phy: usb-phy@d4207000 {
+               compatible = "marvell,mmp3-usb-phy";
+               reg = <0xd4207000 0x40>;
+               #phy-cells = <0>;
+       };
index eae2a88..acb41fa 100644 (file)
@@ -12,6 +12,7 @@ Required properties:
       - "renesas,r8a7745-sysc" (RZ/G1E)
       - "renesas,r8a77470-sysc" (RZ/G1C)
       - "renesas,r8a774a1-sysc" (RZ/G2M)
+      - "renesas,r8a774b1-sysc" (RZ/G2N)
       - "renesas,r8a774c0-sysc" (RZ/G2E)
       - "renesas,r8a7779-sysc" (R-Car H1)
       - "renesas,r8a7790-sysc" (R-Car H2)
@@ -21,6 +22,7 @@ Required properties:
       - "renesas,r8a7794-sysc" (R-Car E2)
       - "renesas,r8a7795-sysc" (R-Car H3)
       - "renesas,r8a7796-sysc" (R-Car M3-W)
+      - "renesas,r8a77961-sysc" (R-Car M3-W+)
       - "renesas,r8a77965-sysc" (R-Car M3-N)
       - "renesas,r8a77970-sysc" (R-Car V3M)
       - "renesas,r8a77980-sysc" (R-Car V3H)
diff --git a/Documentation/devicetree/bindings/regulator/nvidia,tegra-regulators-coupling.txt b/Documentation/devicetree/bindings/regulator/nvidia,tegra-regulators-coupling.txt
new file mode 100644 (file)
index 0000000..4bf2dbf
--- /dev/null
@@ -0,0 +1,65 @@
+NVIDIA Tegra Regulators Coupling
+================================
+
+NVIDIA Tegra SoC's have a mandatory voltage-coupling between regulators.
+Thus on Tegra20 there are 3 coupled regulators and on NVIDIA Tegra30
+there are 2.
+
+Tegra20 voltage coupling
+------------------------
+
+On Tegra20 SoC's there are 3 coupled regulators: CORE, RTC and CPU.
+The CORE and RTC voltages shall be in a range of 170mV from each other
+and they both shall be higher than the CPU voltage by at least 120mV.
+
+Tegra30 voltage coupling
+------------------------
+
+On Tegra30 SoC's there are 2 coupled regulators: CORE and CPU. The CORE
+and CPU voltages shall be in a range of 300mV from each other and CORE
+voltage shall be higher than the CPU by N mV, where N depends on the CPU
+voltage.
+
+Required properties:
+- nvidia,tegra-core-regulator: Boolean property that designates regulator
+  as the "Core domain" voltage regulator.
+- nvidia,tegra-rtc-regulator: Boolean property that designates regulator
+  as the "RTC domain" voltage regulator.
+- nvidia,tegra-cpu-regulator: Boolean property that designates regulator
+  as the "CPU domain" voltage regulator.
+
+Example:
+
+       pmic {
+               regulators {
+                       core_vdd_reg: core {
+                               regulator-name = "vdd_core";
+                               regulator-min-microvolt = <950000>;
+                               regulator-max-microvolt = <1300000>;
+                               regulator-coupled-with = <&rtc_vdd_reg &cpu_vdd_reg>;
+                               regulator-coupled-max-spread = <170000 550000>;
+
+                               nvidia,tegra-core-regulator;
+                       };
+
+                       rtc_vdd_reg: rtc {
+                               regulator-name = "vdd_rtc";
+                               regulator-min-microvolt = <950000>;
+                               regulator-max-microvolt = <1300000>;
+                               regulator-coupled-with = <&core_vdd_reg &cpu_vdd_reg>;
+                               regulator-coupled-max-spread = <170000 550000>;
+
+                               nvidia,tegra-rtc-regulator;
+                       };
+
+                       cpu_vdd_reg: cpu {
+                               regulator-name = "vdd_cpu";
+                               regulator-min-microvolt = <750000>;
+                               regulator-max-microvolt = <1125000>;
+                               regulator-coupled-with = <&core_vdd_reg &rtc_vdd_reg>;
+                               regulator-coupled-max-spread = <550000 550000>;
+
+                               nvidia,tegra-cpu-regulator;
+                       };
+               };
+       };
index b03c48a..de7f06c 100644 (file)
@@ -20,6 +20,7 @@ Required properties:
                  - "renesas,r8a7745-rst" (RZ/G1E)
                  - "renesas,r8a77470-rst" (RZ/G1C)
                  - "renesas,r8a774a1-rst" (RZ/G2M)
+                 - "renesas,r8a774b1-rst" (RZ/G2N)
                  - "renesas,r8a774c0-rst" (RZ/G2E)
                  - "renesas,r8a7778-reset-wdt" (R-Car M1A)
                  - "renesas,r8a7779-reset-wdt" (R-Car H1)
@@ -30,6 +31,7 @@ Required properties:
                  - "renesas,r8a7794-rst" (R-Car E2)
                  - "renesas,r8a7795-rst" (R-Car H3)
                  - "renesas,r8a7796-rst" (R-Car M3-W)
+                 - "renesas,r8a77961-rst" (R-Car M3-W+)
                  - "renesas,r8a77965-rst" (R-Car M3-N)
                  - "renesas,r8a77970-rst" (R-Car V3M)
                  - "renesas,r8a77980-rst" (R-Car V3H)
index 46e27cd..f96511a 100644 (file)
@@ -10,6 +10,12 @@ From RK3368 SoCs, the GRF is divided into two sections,
 
 On RK3328 SoCs, the GRF adds a section for USB2PHYGRF,
 
+ON RK3308 SoC, the GRF is divided into four sections:
+- GRF, used for general non-secure system,
+- SGRF, used for general secure system,
+- DETECTGRF, used for audio codec system,
+- COREGRF, used for pvtm,
+
 Required Properties:
 
 - compatible: GRF should be one of the following:
@@ -19,19 +25,25 @@ Required Properties:
    - "rockchip,rk3188-grf", "syscon": for rk3188
    - "rockchip,rk3228-grf", "syscon": for rk3228
    - "rockchip,rk3288-grf", "syscon": for rk3288
+   - "rockchip,rk3308-grf", "syscon": for rk3308
    - "rockchip,rk3328-grf", "syscon": for rk3328
    - "rockchip,rk3368-grf", "syscon": for rk3368
    - "rockchip,rk3399-grf", "syscon": for rk3399
    - "rockchip,rv1108-grf", "syscon": for rv1108
+- compatible: DETECTGRF should be one of the following:
+   - "rockchip,rk3308-detect-grf", "syscon": for rk3308
+- compatilbe: COREGRF should be one of the following:
+   - "rockchip,rk3308-core-grf", "syscon": for rk3308
 - compatible: PMUGRF should be one of the following:
    - "rockchip,px30-pmugrf", "syscon": for px30
    - "rockchip,rk3368-pmugrf", "syscon": for rk3368
    - "rockchip,rk3399-pmugrf", "syscon": for rk3399
-- compatible: SGRF should be one of the following
+- compatible: SGRF should be one of the following:
    - "rockchip,rk3288-sgrf", "syscon": for rk3288
-- compatible: USB2PHYGRF should be one of the followings
+- compatible: USB2PHYGRF should be one of the following:
+   - "rockchip,px30-usb2phy-grf", "syscon": for px30
    - "rockchip,rk3328-usb2phy-grf", "syscon": for rk3328
-- compatible: USBGRF should be one of the following
+- compatible: USBGRF should be one of the following:
    - "rockchip,rv1108-usbgrf", "syscon": for rv1108
 - reg: physical base address of the controller and length of memory mapped
   region.
index 74c3ead..0d25648 100644 (file)
@@ -21,6 +21,7 @@ Required properties:
        * "mediatek,mt6577-timer" for MT6577 and all above compatible timers (GPT)
 
        For those SoCs that use SYST
+       * "mediatek,mt8183-timer" for MT8183 compatible timers (SYST)
        * "mediatek,mt7629-timer" for MT7629 compatible timers (SYST)
        * "mediatek,mt6765-timer" for MT6765 and all above compatible timers (SYST)
 
index 13ad074..9dff7e5 100644 (file)
@@ -10,6 +10,7 @@ Required Properties:
 
   - compatible: must contain one or more of the following:
     - "renesas,tmu-r8a7740" for the r8a7740 TMU
+    - "renesas,tmu-r8a774a1" for the r8a774A1 TMU
     - "renesas,tmu-r8a774c0" for the r8a774C0 TMU
     - "renesas,tmu-r8a7778" for the r8a7778 TMU
     - "renesas,tmu-r8a7779" for the r8a7779 TMU
index fd6fa07..6046f45 100644 (file)
@@ -707,6 +707,8 @@ patternProperties:
     description: Ortus Technology Co., Ltd.
   "^osddisplays,.*":
     description: OSD Displays
+  "^overkiz,.*":
+    description: Overkiz SAS
   "^ovti,.*":
     description: OmniVision Technologies
   "^oxsemi,.*":
@@ -990,6 +992,8 @@ patternProperties:
     description: Ubiquiti Networks
   "^udoo,.*":
     description: Udoo
+  "^ugoos,.*":
+    description: Ugoos Industrial Co., Ltd.
   "^uniwest,.*":
     description: United Western Technologies Corp (UniWest)
   "^upisemi,.*":
index df57e3e..3c6038b 100644 (file)
@@ -1934,7 +1934,7 @@ F:        arch/arm/boot/dts/dove*
 F:     arch/arm/boot/dts/orion5x*
 T:     git git://git.infradead.org/linux-mvebu.git
 
-ARM/Marvell Kirkwood and Armada 370, 375, 38x, 39x, XP, 3700, 7K/8K SOC support
+ARM/Marvell Kirkwood and Armada 370, 375, 38x, 39x, XP, 3700, 7K/8K, CN9130 SOC support
 M:     Jason Cooper <jason@lakedaemon.net>
 M:     Andrew Lunn <andrew@lunn.ch>
 M:     Gregory Clement <gregory.clement@bootlin.com>
@@ -1946,6 +1946,7 @@ F:        arch/arm/boot/dts/kirkwood*
 F:     arch/arm/configs/mvebu_*_defconfig
 F:     arch/arm/mach-mvebu/
 F:     arch/arm64/boot/dts/marvell/armada*
+F:     arch/arm64/boot/dts/marvell/cn913*
 F:     drivers/cpufreq/armada-37xx-cpufreq.c
 F:     drivers/cpufreq/armada-8k-cpufreq.c
 F:     drivers/cpufreq/mvebu-cpufreq.c
index b21b3a6..08011dc 100644 (file)
@@ -45,7 +45,8 @@ dtb-$(CONFIG_SOC_AT91SAM9) += \
        at91sam9x25ek.dtb \
        at91sam9x35ek.dtb
 dtb-$(CONFIG_SOC_SAM_V7) += \
-       at91-kizbox2.dtb \
+       at91-kizbox2-2.dtb \
+       at91-kizbox3-hs.dtb \
        at91-nattis-2-natte-2.dtb \
        at91-sama5d27_som1_ek.dtb \
        at91-sama5d2_ptc_ek.dtb \
@@ -83,6 +84,7 @@ dtb-$(CONFIG_ARCH_BCM2835) += \
        bcm2837-rpi-3-b.dtb \
        bcm2837-rpi-3-b-plus.dtb \
        bcm2837-rpi-cm3-io3.dtb \
+       bcm2711-rpi-4-b.dtb \
        bcm2835-rpi-zero.dtb \
        bcm2835-rpi-zero-w.dtb
 dtb-$(CONFIG_ARCH_BCM_5301X) += \
@@ -113,6 +115,7 @@ dtb-$(CONFIG_ARCH_BCM_5301X) += \
        bcm47094-luxul-abr-4500.dtb \
        bcm47094-luxul-xap-1610.dtb \
        bcm47094-luxul-xbr-4500.dtb \
+       bcm47094-luxul-xwc-2000.dtb \
        bcm47094-luxul-xwr-3100.dtb \
        bcm47094-luxul-xwr-3150-v1.dtb \
        bcm47094-netgear-r8500.dtb \
@@ -337,7 +340,8 @@ dtb-$(CONFIG_ARCH_MMP) += \
        pxa168-aspenite.dtb \
        pxa910-dkb.dtb \
        mmp2-brownstone.dtb \
-       mmp2-olpc-xo-1-75.dtb
+       mmp2-olpc-xo-1-75.dtb \
+       mmp3-dell-ariel.dtb
 dtb-$(CONFIG_ARCH_MPS2) += \
        mps2-an385.dtb \
        mps2-an399.dtb
@@ -552,7 +556,8 @@ dtb-$(CONFIG_SOC_IMX6SL) += \
        imx6sl-evk.dtb \
        imx6sl-warp.dtb
 dtb-$(CONFIG_SOC_IMX6SLL) += \
-       imx6sll-evk.dtb
+       imx6sll-evk.dtb \
+       imx6sll-kobo-clarahd.dtb
 dtb-$(CONFIG_SOC_IMX6SX) += \
        imx6sx-nitrogen6sx.dtb \
        imx6sx-sabreauto.dtb \
@@ -583,6 +588,7 @@ dtb-$(CONFIG_SOC_IMX6UL) += \
        imx6ull-14x14-evk.dtb \
        imx6ull-colibri-eval-v3.dtb \
        imx6ull-colibri-wifi-eval-v3.dtb \
+       imx6ull-opos6uldev.dtb \
        imx6ull-phytec-segin-ff-rdk-nand.dtb \
        imx6ull-phytec-segin-ff-rdk-emmc.dtb \
        imx6ull-phytec-segin-lc-rdk-nand.dtb \
@@ -753,6 +759,9 @@ dtb-$(CONFIG_SOC_AM33XX) += \
        am335x-moxa-uc-2101.dtb \
        am335x-moxa-uc-8100-me-t.dtb \
        am335x-nano.dtb \
+       am335x-netcan-plus-1xx.dtb \
+       am335x-netcom-plus-2xx.dtb \
+       am335x-netcom-plus-8xx.dtb \
        am335x-pdu001.dtb \
        am335x-pepper.dtb \
        am335x-phycore-rdk.dtb \
@@ -765,6 +774,7 @@ dtb-$(CONFIG_SOC_AM33XX) += \
        am335x-wega-rdk.dtb \
        am335x-osd3358-sm-red.dtb
 dtb-$(CONFIG_ARCH_OMAP4) += \
+       omap4-droid-bionic-xt875.dtb \
        omap4-droid4-xt894.dtb \
        omap4-duovero-parlor.dtb \
        omap4-kc1.dtb \
@@ -1105,6 +1115,7 @@ dtb-$(CONFIG_MACH_SUN8I) += \
        sun8i-h3-beelink-x2.dtb \
        sun8i-h3-libretech-all-h3-cc.dtb \
        sun8i-h3-mapleboard-mp130.dtb \
+       sun8i-h3-nanopi-duo2.dtb \
        sun8i-h3-nanopi-m1.dtb  \
        sun8i-h3-nanopi-m1-plus.dtb \
        sun8i-h3-nanopi-neo.dtb \
@@ -1288,6 +1299,7 @@ dtb-$(CONFIG_ARCH_ASPEED) += \
        aspeed-bmc-facebook-wedge40.dtb \
        aspeed-bmc-facebook-wedge100.dtb \
        aspeed-bmc-facebook-yamp.dtb \
+       aspeed-bmc-ibm-rainier.dtb \
        aspeed-bmc-intel-s2600wf.dtb \
        aspeed-bmc-inspur-fp5280g2.dtb \
        aspeed-bmc-lenovo-hr630.dtb \
@@ -1298,6 +1310,7 @@ dtb-$(CONFIG_ARCH_ASPEED) += \
        aspeed-bmc-opp-palmetto.dtb \
        aspeed-bmc-opp-romulus.dtb \
        aspeed-bmc-opp-swift.dtb \
+       aspeed-bmc-opp-tacoma.dtb \
        aspeed-bmc-opp-vesnin.dtb \
        aspeed-bmc-opp-witherspoon.dtb \
        aspeed-bmc-opp-zaius.dtb \
index ed235f2..05e7b5d 100644 (file)
        };
 };
 
-&usb {
-       status = "okay";
-};
-
-&usb_ctrl_mod {
-       status = "okay";
-};
-
-&cppi41dma  {
-       status = "okay";
-};
-
 #include "tps65910.dtsi"
 
 &tps {
index 89b4cf2..6c9187b 100644 (file)
        status = "okay";
 };
 
-&usb {
-       status = "okay";
-};
-
-&usb_ctrl_mod {
-       status = "okay";
-};
-
-&usb0_phy {
-       status = "okay";
-};
-
-&usb1_phy {
-       status = "okay";
-};
-
 &usb0 {
-       status = "okay";
        dr_mode = "peripheral";
        interrupts-extended = <&intc 18 &tps 0>;
        interrupt-names = "mc", "vbus";
 };
 
 &usb1 {
-       status = "okay";
        dr_mode = "host";
 };
 
-&cppi41dma  {
-       status = "okay";
-};
-
 &i2c0 {
        pinctrl-names = "default";
        pinctrl-0 = <&i2c0_pins>;
index 2f6652e..5811fb8 100644 (file)
        status = "okay";
 };
 
-&usb {
-       status = "okay";
-};
-
-&usb_ctrl_mod {
-       status = "okay";
-};
-
-&usb0_phy {
-       status = "okay";
-};
-
-&usb1_phy {
-       status = "okay";
-};
-
 &usb0 {
-       status = "okay";
        dr_mode = "peripheral";
        interrupts-extended = <&intc 18 &tps 0>;
        interrupt-names = "mc", "vbus";
 };
 
 &usb1 {
-       status = "okay";
        dr_mode = "host";
 };
 
-&cppi41dma  {
-       status = "okay";
-};
-
 &i2c0 {
        baseboard_eeprom: baseboard_eeprom@50 {
                compatible = "atmel,24c256";
index 8cd81dc..b14a275 100644 (file)
 };
 
 /* USB */
-&usb {
-       status = "okay";
-};
-
-&usb_ctrl_mod {
-       status = "okay";
-};
-
-&usb1_phy {
-       status = "okay";
-};
-
 &usb1 {
        pinctrl-names = "default";
        pinctrl-0 = <&usb1_drvvbus>;
-
-       status = "okay";
        dr_mode = "host";
 };
 
-&cppi41dma  {
-       status = "okay";
-};
-
 /* microSD */
 &mmc1 {
        pinctrl-names = "default";
index 1fe3b56..c6fe9db 100644 (file)
@@ -330,26 +330,6 @@ status = "okay";
        };
 };
 
-&usb {
-       status = "okay";
-};
-
-&usb_ctrl_mod {
-       status = "okay";
-};
-
-&usb0_phy {
-       status = "okay";
-};
-
-&usb0 {
-       status = "okay";
-};
-
-&cppi41dma  {
-       status = "okay";
-};
-
 &epwmss0 {
        status = "okay";
 
index a001457..6f0a6be 100644 (file)
        };
 };
 
-&usb {
-       status = "okay";
-};
-
-&usb_ctrl_mod {
-       status = "okay";
-};
-
-&usb0_phy {
-       status = "okay";
-};
-
-&usb1_phy {
-       status = "okay";
-};
-
-&usb0 {
-       status = "okay";
-};
-
 &usb1 {
-       status = "okay";
        dr_mode = "host";
 };
 
-&cppi41dma  {
-       status = "okay";
-};
-
 &i2c1 {
        pinctrl-names = "default";
        pinctrl-0 = <&i2c1_pins>;
index e28a5b8..a97f9df 100644 (file)
        };
 };
 
-&usb {
-       status = "okay";
-};
-
-&usb_ctrl_mod {
-       status = "okay";
-};
-
-&usb0_phy {
-       status = "okay";
-};
-
-&usb1_phy {
-       status = "okay";
-};
-
-&usb0 {
-       status = "okay";
-};
-
 &usb1 {
-       status = "okay";
        dr_mode = "host";
 };
 
-&cppi41dma  {
-       status = "okay";
-};
-
 &epwmss2 {
        status = "okay";
 
index c9611ea..81e0f63 100644 (file)
        };
 };
 
-&cppi41dma  {
-       status = "okay";
-};
-
 &elm {
        status = "okay";
 };
        status = "okay";
 };
 
-&usb {
-       status = "okay";
-};
-
-&usb_ctrl_mod {
-       status = "okay";
-};
-
 &usb0 {
        dr_mode = "peripheral";
-       status = "okay";
-};
-
-&usb0_phy {
-       status = "okay";
 };
 
 &usb1 {
        dr_mode = "host";
-       status = "okay";
-};
-
-&usb1_phy {
-       status = "okay";
 };
 
 &am33xx_pinmux {
index eabcc8b..c9f354f 100644 (file)
        pinctrl-0 = <&uart0_pins>;
 };
 
-&usb {
-       status = "okay";
-};
-
-&usb_ctrl_mod {
-       status = "okay";
-};
-
-&usb0_phy {
-       status = "okay";
-};
-
-&usb1_phy {
-       status = "okay";
-};
-
-&usb0 {
-       status = "okay";
-};
-
 &usb1 {
-       status = "okay";
        dr_mode = "host";
 };
 
-&cppi41dma  {
-       status = "okay";
-};
-
 #include "tps65910.dtsi"
 
 &tps {
index a8005e9..fef5828 100644 (file)
        status = "okay";
 };
 
-&usb {
-       status = "okay";
-};
-
-&usb_ctrl_mod {
-       status = "okay";
-};
-
-&usb0_phy {
-       status = "okay";
-};
-
-&usb1_phy {
-       status = "okay";
-};
-
 &usb0 {
-       status = "okay";
        dr_mode = "host";
 };
 
 &usb1 {
-       status = "okay";
        dr_mode = "host";
 };
 
-&cppi41dma  {
-       status = "okay";
-};
-
 &cpsw_emac0 {
        phy-handle = <&ethphy0>;
        phy-mode = "rmii";
index 671d4a5..6495a12 100644 (file)
        };
 };
 
-&usb {
-       status = "okay";
-};
-
-&usb_ctrl_mod {
-       status = "okay";
-};
-
-&usb0_phy {
-       status = "okay";
-};
-
 &usb0 {
-       status = "okay";
        dr_mode = "host";
 };
 
-&cppi41dma  {
-       status = "okay";
-};
-
 /* Power */
 &vbat {
        regulator-name = "vbat";
index 783d411..244df9c 100644 (file)
        };
 };
 
-&usb {
-       status = "okay";
-};
-
-&usb_ctrl_mod {
-       status = "okay";
-};
-
-&usb0_phy {
-       status = "okay";
-};
-
-&usb1_phy {
-       status = "okay";
-};
-
 &usb0 {
-       status = "okay";
        dr_mode = "host";
 };
 
 &usb1 {
-       status = "okay";
        dr_mode = "host";
 };
 
-&cppi41dma  {
-       status = "okay";
-};
-
 #include "tps65910.dtsi"
 
 &tps {
diff --git a/arch/arm/boot/dts/am335x-netcan-plus-1xx.dts b/arch/arm/boot/dts/am335x-netcan-plus-1xx.dts
new file mode 100644 (file)
index 0000000..1e4dbc8
--- /dev/null
@@ -0,0 +1,87 @@
+// SPDX-License-Identifier: GPL-2.0-only
+/*
+ * Copyright (C) 2012 Texas Instruments Incorporated - http://www.ti.com/
+ */
+
+/*
+ * VScom OnRISC
+ * http://www.vscom.de
+ */
+
+/dts-v1/;
+
+#include "am335x-baltos.dtsi"
+#include "am335x-baltos-leds.dtsi"
+
+/ {
+       model = "NetCAN";
+
+       leds {
+               pinctrl-names = "default";
+               pinctrl-0 = <&user_leds_s0>;
+
+               compatible = "gpio-leds";
+
+               led@1 {
+                       label = "can_data";
+                       linux,default-trigger = "netdev";
+                       gpios = <&gpio0 14 GPIO_ACTIVE_LOW>;
+                       default-state = "off";
+               };
+               led@2 {
+                       label = "can_error";
+                       gpios = <&gpio0 15 GPIO_ACTIVE_LOW>;
+                       default-state = "off";
+               };
+       };
+};
+
+&am33xx_pinmux {
+       user_leds_s0: user_leds_s0 {
+               pinctrl-single,pins = <
+                       AM33XX_PADCONF(AM335X_PIN_UART1_RXD, PIN_OUTPUT_PULLDOWN, MUX_MODE7)    /* CAN Data LED */
+                       AM33XX_PADCONF(AM335X_PIN_UART1_TXD, PIN_OUTPUT_PULLDOWN, MUX_MODE7)    /* CAN Error LED */
+               >;
+       };
+
+       dcan1_pins: pinmux_dcan1_pins {
+               pinctrl-single,pins = <
+                       AM33XX_PADCONF(AM335X_PIN_UART0_CTSN, PIN_OUTPUT, MUX_MODE2)    /* CAN TX */
+                       AM33XX_PADCONF(AM335X_PIN_UART0_RTSN, PIN_INPUT, MUX_MODE2)     /* CAN RX */
+               >;
+       };
+};
+
+&usb0_phy {
+       status = "okay";
+};
+
+&usb0 {
+       status = "okay";
+       dr_mode = "host";
+};
+
+&davinci_mdio {
+       phy0: ethernet-phy@0 {
+               reg = <1>;
+       };
+};
+
+&cpsw_emac0 {
+       phy-mode = "rmii";
+       dual_emac_res_vlan = <1>;
+       phy-handle = <&phy0>;
+};
+
+&cpsw_emac1 {
+       phy-mode = "rgmii-id";
+       dual_emac_res_vlan = <2>;
+       phy-handle = <&phy1>;
+};
+
+&dcan1 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&dcan1_pins>;
+
+       status = "okay";
+};
diff --git a/arch/arm/boot/dts/am335x-netcom-plus-2xx.dts b/arch/arm/boot/dts/am335x-netcom-plus-2xx.dts
new file mode 100644 (file)
index 0000000..9a6cd8e
--- /dev/null
@@ -0,0 +1,95 @@
+// SPDX-License-Identifier: GPL-2.0-only
+/*
+ * Copyright (C) 2012 Texas Instruments Incorporated - http://www.ti.com/
+ */
+
+/*
+ * VScom OnRISC
+ * http://www.vscom.de
+ */
+
+/dts-v1/;
+
+#include "am335x-baltos.dtsi"
+#include "am335x-baltos-leds.dtsi"
+
+/ {
+       model = "NetCom Plus";
+};
+
+&am33xx_pinmux {
+       uart1_pins: pinmux_uart1_pins {
+               pinctrl-single,pins = <
+                       AM33XX_PADCONF(AM335X_PIN_UART1_RXD, PIN_INPUT, MUX_MODE0)                      /* RX */
+                       AM33XX_PADCONF(AM335X_PIN_UART1_TXD, PIN_INPUT, MUX_MODE0)                      /* TX */
+                       AM33XX_PADCONF(AM335X_PIN_UART1_CTSN, PIN_INPUT_PULLDOWN, MUX_MODE0)            /* CTS */
+                       AM33XX_PADCONF(AM335X_PIN_UART1_RTSN, PIN_OUTPUT_PULLDOWN, MUX_MODE0)           /* RTS */
+                       AM33XX_PADCONF(AM335X_PIN_LCD_VSYNC, PIN_OUTPUT_PULLDOWN, MUX_MODE7)            /* DTR */
+                       AM33XX_PADCONF(AM335X_PIN_LCD_HSYNC, PIN_INPUT_PULLDOWN, MUX_MODE7)             /* DSR */
+                       AM33XX_PADCONF(AM335X_PIN_LCD_PCLK, PIN_INPUT_PULLDOWN, MUX_MODE7)              /* DCD */
+                       AM33XX_PADCONF(AM335X_PIN_LCD_AC_BIAS_EN, PIN_INPUT_PULLDOWN, MUX_MODE7)        /* RI */
+               >;
+       };
+
+       uart2_pins: pinmux_uart2_pins {
+               pinctrl-single,pins = <
+                       AM33XX_PADCONF(AM335X_PIN_SPI0_SCLK, PIN_INPUT, MUX_MODE1)              /* RX */
+                       AM33XX_PADCONF(AM335X_PIN_SPI0_D0, PIN_OUTPUT, MUX_MODE1)               /* TX */
+                       AM33XX_PADCONF(AM335X_PIN_I2C0_SDA, PIN_INPUT_PULLDOWN, MUX_MODE2)      /* CTS */
+                       AM33XX_PADCONF(AM335X_PIN_I2C0_SCL, PIN_OUTPUT_PULLDOWN, MUX_MODE2)     /* RTS */
+                       AM33XX_PADCONF(AM335X_PIN_GPMC_AD12, PIN_OUTPUT_PULLDOWN, MUX_MODE7)    /* DTR */
+                       AM33XX_PADCONF(AM335X_PIN_GPMC_AD13, PIN_INPUT_PULLDOWN, MUX_MODE7)     /* DSR */
+                       AM33XX_PADCONF(AM335X_PIN_GPMC_AD14, PIN_INPUT_PULLDOWN, MUX_MODE7)     /* DCD */
+                       AM33XX_PADCONF(AM335X_PIN_GPMC_AD15, PIN_INPUT_PULLDOWN, MUX_MODE7)     /* RI */
+               >;
+       };
+};
+
+&usb0_phy {
+       status = "okay";
+};
+
+&usb0 {
+       status = "okay";
+       dr_mode = "host";
+};
+
+&uart1 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&uart1_pins>;
+       dtr-gpios = <&gpio2 22 GPIO_ACTIVE_LOW>;
+       dsr-gpios = <&gpio2 23 GPIO_ACTIVE_LOW>;
+       dcd-gpios = <&gpio2 24 GPIO_ACTIVE_LOW>;
+       rng-gpios = <&gpio2 25 GPIO_ACTIVE_LOW>;
+
+       status = "okay";
+};
+
+&uart2 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&uart2_pins>;
+       dtr-gpios = <&gpio1 12 GPIO_ACTIVE_LOW>;
+       dsr-gpios = <&gpio1 13 GPIO_ACTIVE_LOW>;
+       dcd-gpios = <&gpio1 14 GPIO_ACTIVE_LOW>;
+       rng-gpios = <&gpio1 15 GPIO_ACTIVE_LOW>;
+
+       status = "okay";
+};
+
+&davinci_mdio {
+       phy0: ethernet-phy@0 {
+               reg = <1>;
+       };
+};
+
+&cpsw_emac0 {
+       phy-mode = "rmii";
+       dual_emac_res_vlan = <1>;
+       phy-handle = <&phy0>;
+};
+
+&cpsw_emac1 {
+       phy-mode = "rgmii-id";
+       dual_emac_res_vlan = <2>;
+       phy-handle = <&phy1>;
+};
diff --git a/arch/arm/boot/dts/am335x-netcom-plus-8xx.dts b/arch/arm/boot/dts/am335x-netcom-plus-8xx.dts
new file mode 100644 (file)
index 0000000..2298563
--- /dev/null
@@ -0,0 +1,115 @@
+// SPDX-License-Identifier: GPL-2.0-only
+/*
+ * Copyright (C) 2012 Texas Instruments Incorporated - http://www.ti.com/
+ */
+
+/*
+ * VScom OnRISC
+ * http://www.vscom.de
+ */
+
+/dts-v1/;
+
+#include "am335x-baltos.dtsi"
+
+/ {
+       model = "NetCom Plus";
+};
+
+&am33xx_pinmux {
+       pinctrl-names = "default";
+       pinctrl-0 = <&dip_switches>;
+
+       dip_switches: pinmux_dip_switches {
+               pinctrl-single,pins = <
+                       AM33XX_PADCONF(AM335X_PIN_GPMC_AD12, PIN_INPUT_PULLDOWN, MUX_MODE7)
+                       AM33XX_PADCONF(AM335X_PIN_GPMC_AD13, PIN_INPUT_PULLDOWN, MUX_MODE7)
+                       AM33XX_PADCONF(AM335X_PIN_GPMC_AD14, PIN_INPUT_PULLDOWN, MUX_MODE7)
+                       AM33XX_PADCONF(AM335X_PIN_GPMC_AD15, PIN_INPUT_PULLDOWN, MUX_MODE7)
+               >;
+       };
+
+       tca6416_pins: pinmux_tca6416_pins {
+               pinctrl-single,pins = <
+                       AM33XX_PADCONF(AM335X_PIN_XDMA_EVENT_INTR1, PIN_INPUT_PULLUP, MUX_MODE7)
+               >;
+       };
+
+       i2c2_pins: pinmux_i2c2_pins {
+               pinctrl-single,pins = <
+                       AM33XX_PADCONF(AM335X_PIN_UART1_CTSN, PIN_INPUT_PULLDOWN, MUX_MODE3)
+                       AM33XX_PADCONF(AM335X_PIN_UART1_RTSN, PIN_INPUT_PULLDOWN, MUX_MODE3)
+               >;
+       };
+};
+
+&usb0_phy {
+       status = "okay";
+};
+
+&usb1_phy {
+       status = "okay";
+};
+
+&usb0 {
+       status = "okay";
+       dr_mode = "host";
+};
+
+&usb1 {
+       status = "okay";
+       dr_mode = "host";
+};
+
+&i2c1 {
+       tca6416a: gpio@20 {
+               compatible = "ti,tca6416";
+               reg = <0x20>;
+               gpio-controller;
+               #gpio-cells = <2>;
+               interrupt-parent = <&gpio0>;
+               interrupts = <20 IRQ_TYPE_EDGE_RISING>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&tca6416_pins>;
+       };
+};
+
+&i2c2 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&i2c2_pins>;
+
+       status = "okay";
+       clock-frequency = <400000>;
+
+       tca6416b: gpio@20 {
+               compatible = "ti,tca6416";
+               reg = <0x20>;
+               gpio-controller;
+               #gpio-cells = <2>;
+       };
+
+       tca6416c: gpio@21 {
+               compatible = "ti,tca6416";
+               reg = <0x21>;
+               gpio-controller;
+               #gpio-cells = <2>;
+       };
+};
+
+&davinci_mdio {
+       phy0: ethernet-phy@0 {
+               reg = <1>;
+       };
+};
+
+&cpsw_emac0 {
+       phy-mode = "rmii";
+       dual_emac_res_vlan = <1>;
+       phy-handle = <&phy0>;
+};
+
+&cpsw_emac1 {
+       phy-mode = "rgmii-id";
+       dual_emac_res_vlan = <2>;
+       phy-handle = <&phy1>;
+};
index f47cc9f..1d29020 100644 (file)
        status = "okay";
 };
 
-&usb {
-       status = "okay";
-};
-
-&usb_ctrl_mod {
-       status = "okay";
-};
-
-&usb0_phy {
-       status = "okay";
-};
-
-&usb1_phy {
-       status = "okay";
-};
-
 &usb0 {
-       status = "okay";
        dr_mode = "peripheral";
        interrupts-extended = <&intc 18 &tps 0>;
        interrupt-names = "mc", "vbus";
 };
 
 &usb1 {
-       status = "okay";
        dr_mode = "host";
 };
 
-&cppi41dma  {
-       status = "okay";
-};
-
 &i2c2 {
        pinctrl-names = "default";
        pinctrl-0 = <&i2c2_pins>;
index 9bfa032..6c547c8 100644 (file)
 };
 
 /* USB */
-&cppi41dma {
-       status = "okay";
-};
-
-&usb_ctrl_mod {
-       status = "okay";
-};
-
-&usb {
-       status = "okay";
-};
-
-&usb0 {
-       status = "okay";
-};
-
-&usb0_phy {
-       status = "okay";
-};
-
 &usb1 {
-       status = "okay";
        dr_mode = "host";
 };
-
-&usb1_phy {
-       status = "okay";
-};
index 3141255..e4dcfa0 100644 (file)
        };
 };
 
-&usb {
-       status = "okay";
-};
-
-&usb_ctrl_mod {
-       status = "okay";
-};
-
-&usb0_phy {
-       status = "okay";
-};
-
-&usb1_phy {
-       status = "okay";
-};
-
-&usb0 {
-       status = "okay";
-};
-
-&usb1 {
-       status = "okay";
-};
-
-&cppi41dma  {
-       status = "okay";
-};
-
 /*
  * Disable soc's rtc as we have no VBAT for it. This makes the board
  * rtc (Microchip MCP79400) the default rtc device 'rtc0'.
index e7764ec..6d7608d 100644 (file)
 
 /* USB */
 &usb {
-       status = "okay";
-
        pinctrl-names = "default";
        pinctrl-0 = <&usb_pins>;
 };
 
-&usb_ctrl_mod {
-       status = "okay";
-};
-
-&usb0_phy {
-       status = "okay";
-};
-
-&usb1_phy {
-       status = "okay";
-};
-
 &usb0 {
-       status = "okay";
         dr_mode = "host";
 };
 
 &usb1 {
-       status = "okay";
         dr_mode = "host";
 };
 
-&cppi41dma {
-       status = "okay";
-};
-
 &am33xx_pinmux {
        usb_pins: pinmux_usb {
                pinctrl-single,pins = <
index ff4f919..4da7190 100644 (file)
        status = "okay";
 };
 
-&usb {
-       status = "okay";
-};
-
-&usb_ctrl_mod {
-       status = "okay";
-};
-
-&usb0_phy {
-       status = "okay";
-};
-
 &usb0 {
-       status = "okay";
        dr_mode = "otg";
 };
 
-&usb1_phy {
-       status = "okay";
-};
-
 &usb1 {
-       status = "okay";
        dr_mode = "host";
 };
-
-&cppi41dma  {
-       status = "okay";
-};
index 5aff02a..6fbf4ac 100644 (file)
        status = "okay";
        linux,rs485-enabled-at-boot-time;
 };
-
-/* USB */
-&cppi41dma {
-       status = "okay";
-};
-
-&usb_ctrl_mod {
-       status = "okay";
-};
-
-&usb {
-       status = "okay";
-};
-
-&usb0 {
-       status = "okay";
-};
-
-&usb0_phy {
-       status = "okay";
-};
index 5b03685..1eaa265 100644 (file)
        status = "okay";
 };
 
-&cppi41dma  {
-       status = "okay";
-};
-
 &davinci_mdio {
        pinctrl-names = "default", "sleep";
        pinctrl-0 = <&davinci_mdio_default>;
        status = "okay";
 };
 
-&usb {
-       status = "okay";
-};
-
-&usb_ctrl_mod {
-       status = "okay";
-};
-
-&usb1_phy {
-       status = "okay";
-};
-
 &usb1 {
-       status = "okay";
        dr_mode = "host";
 };
 
index 2f82095..f4684c8 100644 (file)
        status = "disabled";
 };
 
-&usb {
-       status = "okay";
-};
-
-&usb_ctrl_mod {
-       status = "okay";
-};
-
-&usb0_phy {
-       status = "okay";
-};
-
-&usb1_phy {
-       status = "okay";
-};
-
 &usb0 {
-       status = "okay";
        dr_mode = "otg";
 };
 
 &usb1 {
-       status = "okay";
        dr_mode = "host";
 };
 
-&cppi41dma  {
-       status = "okay";
-};
-
 &mmc1 {
        status = "okay";
        pinctrl-names = "default";
index 61fc4cd..1359bf8 100644 (file)
        status = "okay";
 };
 
-/* USB */
-&cppi41dma {
-       status = "okay";
-};
-
-&usb_ctrl_mod {
-       status = "okay";
-};
-
-&usb {
-       status = "okay";
-};
-
-&usb0 {
-       status = "okay";
-};
-
-&usb0_phy {
-       status = "okay";
-};
-
 &usb1 {
        dr_mode = "host";
-       status = "okay";
-};
-
-&usb1_phy {
-       status = "okay";
 };
index 7a9eb2b..3a8a205 100644 (file)
 
                gpio0_target: target-module@7000 {      /* 0x44e07000, ap 14 20.0 */
                        compatible = "ti,sysc-omap2", "ti,sysc";
-                       ti,hwmods = "gpio1";
                        reg = <0x7000 0x4>,
                              <0x7010 0x4>,
                              <0x7114 0x4>;
 
                target-module@9000 {                    /* 0x44e09000, ap 16 04.0 */
                        compatible = "ti,sysc-omap2", "ti,sysc";
-                       ti,hwmods = "uart1";
                        reg = <0x9050 0x4>,
                              <0x9054 0x4>,
                              <0x9058 0x4>;
 
                target-module@b000 {                    /* 0x44e0b000, ap 18 48.0 */
                        compatible = "ti,sysc-omap2", "ti,sysc";
-                       ti,hwmods = "i2c1";
                        reg = <0xb000 0x8>,
                              <0xb010 0x8>,
                              <0xb090 0x8>;
                                        };
                                };
 
+                               usb_ctrl_mod: control@620 {
+                                       compatible = "ti,am335x-usb-ctrl-module";
+                                       reg = <0x620 0x10>,
+                                             <0x648 0x4>;
+                                       reg-names = "phy_ctrl", "wakeup";
+                               };
+
                                wkup_m3_ipc: wkup_m3_ipc@1324 {
                                        compatible = "ti,am3352-wkup-m3-ipc";
                                        reg = <0x1324 0x24>;
 
                target-module@35000 {                   /* 0x44e35000, ap 29 50.0 */
                        compatible = "ti,sysc-omap2", "ti,sysc";
-                       ti,hwmods = "wd_timer2";
                        reg = <0x35000 0x4>,
                              <0x35010 0x4>,
                              <0x35014 0x4>;
 
                target-module@22000 {                   /* 0x48022000, ap 10 12.0 */
                        compatible = "ti,sysc-omap2", "ti,sysc";
-                       ti,hwmods = "uart2";
                        reg = <0x22050 0x4>,
                              <0x22054 0x4>,
                              <0x22058 0x4>;
 
                target-module@24000 {                   /* 0x48024000, ap 12 14.0 */
                        compatible = "ti,sysc-omap2", "ti,sysc";
-                       ti,hwmods = "uart3";
                        reg = <0x24050 0x4>,
                              <0x24054 0x4>,
                              <0x24058 0x4>;
 
                target-module@2a000 {                   /* 0x4802a000, ap 14 2a.0 */
                        compatible = "ti,sysc-omap2", "ti,sysc";
-                       ti,hwmods = "i2c2";
                        reg = <0x2a000 0x8>,
                              <0x2a010 0x8>,
                              <0x2a090 0x8>;
 
                target-module@38000 {                   /* 0x48038000, ap 16 02.0 */
                        compatible = "ti,sysc-omap4-simple", "ti,sysc";
-                       ti,hwmods = "mcasp0";
                        reg = <0x38000 0x4>,
                              <0x38004 0x4>;
                        reg-names = "rev", "sysc";
 
                target-module@3c000 {                   /* 0x4803c000, ap 20 32.0 */
                        compatible = "ti,sysc-omap4-simple", "ti,sysc";
-                       ti,hwmods = "mcasp1";
                        reg = <0x3c000 0x4>,
                              <0x3c004 0x4>;
                        reg-names = "rev", "sysc";
 
                target-module@4c000 {                   /* 0x4804c000, ap 32 36.0 */
                        compatible = "ti,sysc-omap2", "ti,sysc";
-                       ti,hwmods = "gpio2";
                        reg = <0x4c000 0x4>,
                              <0x4c010 0x4>,
                              <0x4c114 0x4>;
 
                target-module@60000 {                   /* 0x48060000, ap 36 0c.0 */
                        compatible = "ti,sysc-omap2", "ti,sysc";
-                       ti,hwmods = "mmc1";
                        reg = <0x602fc 0x4>,
                              <0x60110 0x4>,
                              <0x60114 0x4>;
 
                target-module@c8000 {                   /* 0x480c8000, ap 87 06.0 */
                        compatible = "ti,sysc-omap4", "ti,sysc";
-                       ti,hwmods = "mailbox";
                        reg = <0xc8000 0x4>,
                              <0xc8010 0x4>;
                        reg-names = "rev", "sysc";
 
                target-module@9c000 {                   /* 0x4819c000, ap 46 5a.0 */
                        compatible = "ti,sysc-omap2", "ti,sysc";
-                       ti,hwmods = "i2c3";
                        reg = <0x9c000 0x8>,
                              <0x9c010 0x8>,
                              <0x9c090 0x8>;
 
                target-module@a6000 {                   /* 0x481a6000, ap 48 16.0 */
                        compatible = "ti,sysc-omap2", "ti,sysc";
-                       ti,hwmods = "uart4";
                        reg = <0xa6050 0x4>,
                              <0xa6054 0x4>,
                              <0xa6058 0x4>;
 
                target-module@a8000 {                   /* 0x481a8000, ap 50 20.0 */
                        compatible = "ti,sysc-omap2", "ti,sysc";
-                       ti,hwmods = "uart5";
                        reg = <0xa8050 0x4>,
                              <0xa8054 0x4>,
                              <0xa8058 0x4>;
 
                target-module@aa000 {                   /* 0x481aa000, ap 52 1a.0 */
                        compatible = "ti,sysc-omap2", "ti,sysc";
-                       ti,hwmods = "uart6";
                        reg = <0xaa050 0x4>,
                              <0xaa054 0x4>,
                              <0xaa058 0x4>;
 
                target-module@ac000 {                   /* 0x481ac000, ap 54 38.0 */
                        compatible = "ti,sysc-omap2", "ti,sysc";
-                       ti,hwmods = "gpio3";
                        reg = <0xac000 0x4>,
                              <0xac010 0x4>,
                              <0xac114 0x4>;
 
                target-module@ae000 {                   /* 0x481ae000, ap 56 3a.0 */
                        compatible = "ti,sysc-omap2", "ti,sysc";
-                       ti,hwmods = "gpio4";
                        reg = <0xae000 0x4>,
                              <0xae010 0x4>,
                              <0xae114 0x4>;
 
                target-module@d8000 {                   /* 0x481d8000, ap 64 66.0 */
                        compatible = "ti,sysc-omap2", "ti,sysc";
-                       ti,hwmods = "mmc2";
                        reg = <0xd82fc 0x4>,
                              <0xd8110 0x4>,
                              <0xd8114 0x4>;
 
                target-module@10000 {                   /* 0x48310000, ap 76 4e.1 */
                        compatible = "ti,sysc-omap2", "ti,sysc";
-                       ti,hwmods = "rng";
                        reg = <0x11fe0 0x4>,
                              <0x11fe4 0x4>;
                        reg-names = "rev", "sysc";
index fb6b8aa..646f114 100644 (file)
 
                target-module@47810000 {
                        compatible = "ti,sysc-omap2", "ti,sysc";
-                       ti,hwmods = "mmc3";
                        reg = <0x478102fc 0x4>,
                              <0x47810110 0x4>,
                              <0x47810114 0x4>;
                        };
                };
 
-               usb: usb@47400000 {
-                       compatible = "ti,am33xx-usb";
-                       reg = <0x47400000 0x1000>;
-                       ranges;
+               usb: target-module@47400000 {
+                       compatible = "ti,sysc-omap4", "ti,sysc";
+                       reg = <0x47400000 0x4>,
+                             <0x47400010 0x4>;
+                       reg-names = "rev", "sysc";
+                       ti,sysc-mask = <(SYSC_OMAP4_FREEEMU |
+                                        SYSC_OMAP2_SOFTRESET)>;
+                       ti,sysc-midle = <SYSC_IDLE_FORCE>,
+                                       <SYSC_IDLE_NO>,
+                                       <SYSC_IDLE_SMART>;
+                       ti,sysc-sidle = <SYSC_IDLE_FORCE>,
+                                       <SYSC_IDLE_NO>,
+                                       <SYSC_IDLE_SMART>,
+                                       <SYSC_IDLE_SMART_WKUP>;
+                       clocks = <&l3s_clkctrl AM3_L3S_USB_OTG_HS_CLKCTRL 0>;
+                       clock-names = "fck";
                        #address-cells = <1>;
                        #size-cells = <1>;
-                       ti,hwmods = "usb_otg_hs";
-                       status = "disabled";
-
-                       usb_ctrl_mod: control@44e10620 {
-                               compatible = "ti,am335x-usb-ctrl-module";
-                               reg = <0x44e10620 0x10
-                                       0x44e10648 0x4>;
-                               reg-names = "phy_ctrl", "wakeup";
-                               status = "disabled";
-                       };
+                       ranges = <0x0 0x47400000 0x5000>;
 
-                       usb0_phy: usb-phy@47401300 {
+                       usb0_phy: usb-phy@1300 {
                                compatible = "ti,am335x-usb-phy";
-                               reg = <0x47401300 0x100>;
+                               reg = <0x1300 0x100>;
                                reg-names = "phy";
-                               status = "disabled";
                                ti,ctrl_mod = <&usb_ctrl_mod>;
                                #phy-cells = <0>;
                        };
 
-                       usb0: usb@47401000 {
+                       usb0: usb@1400 {
                                compatible = "ti,musb-am33xx";
-                               status = "disabled";
-                               reg = <0x47401400 0x400
-                                       0x47401000 0x200>;
+                               reg = <0x1400 0x400>,
+                                     <0x1000 0x200>;
                                reg-names = "mc", "control";
 
                                interrupts = <18>;
                                        "tx14", "tx15";
                        };
 
-                       usb1_phy: usb-phy@47401b00 {
+                       usb1_phy: usb-phy@1b00 {
                                compatible = "ti,am335x-usb-phy";
-                               reg = <0x47401b00 0x100>;
+                               reg = <0x1b00 0x100>;
                                reg-names = "phy";
-                               status = "disabled";
                                ti,ctrl_mod = <&usb_ctrl_mod>;
                                #phy-cells = <0>;
                        };
 
-                       usb1: usb@47401800 {
+                       usb1: usb@1800 {
                                compatible = "ti,musb-am33xx";
-                               status = "disabled";
-                               reg = <0x47401c00 0x400
-                                       0x47401800 0x200>;
+                               reg = <0x1c00 0x400>,
+                                     <0x1800 0x200>;
                                reg-names = "mc", "control";
                                interrupts = <19>;
                                interrupt-names = "mc";
                                        "tx14", "tx15";
                        };
 
-                       cppi41dma: dma-controller@47402000 {
+                       cppi41dma: dma-controller@2000 {
                                compatible = "ti,am3359-cppi41";
-                               reg =  <0x47400000 0x1000
-                                       0x47402000 0x1000
-                                       0x47403000 0x1000
-                                       0x47404000 0x4000>;
+                               reg =  <0x0000 0x1000>,
+                                      <0x2000 0x1000>,
+                                      <0x3000 0x1000>,
+                                      <0x4000 0x4000>;
                                reg-names = "glue", "controller", "scheduler", "queuemgr";
                                interrupts = <17>;
                                interrupt-names = "glue";
                                #dma-cells = <2>;
                                #dma-channels = <30>;
                                #dma-requests = <256>;
-                               status = "disabled";
                        };
                };
 
-               ocmcram: ocmcram@40300000 {
+               ocmcram: sram@40300000 {
                        compatible = "mmio-sram";
                        reg = <0x40300000 0x10000>; /* 64k */
                        ranges = <0x0 0x40300000 0x10000>;
                        #address-cells = <1>;
                        #size-cells = <1>;
 
-                       pm_sram_code: pm-sram-code@0 {
+                       pm_sram_code: pm-code-sram@0 {
                                compatible = "ti,sram";
                                reg = <0x0 0x1000>;
                                protect-exec;
                        };
 
-                       pm_sram_data: pm-sram-data@1000 {
+                       pm_sram_data: pm-data-sram@1000 {
                                compatible = "ti,sram";
                                reg = <0x1000 0x1000>;
                                pool;
 
 #include "am33xx-l4.dtsi"
 #include "am33xx-clocks.dtsi"
+
+&prcm {
+       prm_per: prm@c00 {
+               compatible = "ti,am3-prm-inst", "ti,omap-prm-inst";
+               reg = <0xc00 0x100>;
+               #reset-cells = <1>;
+       };
+
+       prm_wkup: prm@d00 {
+               compatible = "ti,am3-prm-inst", "ti,omap-prm-inst";
+               reg = <0xd00 0x100>;
+               #reset-cells = <1>;
+       };
+
+       prm_device: prm@f00 {
+               compatible = "ti,am3-prm-inst", "ti,omap-prm-inst";
+               reg = <0xf00 0x100>;
+               #reset-cells = <1>;
+       };
+
+       prm_gfx: prm@1100 {
+               compatible = "ti,am3-prm-inst", "ti,omap-prm-inst";
+               reg = <0x1100 0x100>;
+               #reset-cells = <1>;
+       };
+};
index 76f819f..125379e 100644 (file)
        };
 };
 
+/* Not currently working, probably needs at least different clocks */
+&rng_target {
+       status = "disabled";
+       /delete-property/ clocks;
+};
+
 /* Table Table 5-79 of the TRM shows 480ab000 is reserved */
 &usb_otg_hs {
        status = "disabled";
index 14bbc43..ca0aa3f 100644 (file)
 
                target-module@47810000 {
                        compatible = "ti,sysc-omap2", "ti,sysc";
-                       ti,hwmods = "mmc3";
                        reg = <0x478102fc 0x4>,
                              <0x47810110 0x4>,
                              <0x47810114 0x4>;
                        };
                };
 
-               ocmcram: ocmcram@40300000 {
+               ocmcram: sram@40300000 {
                        compatible = "mmio-sram";
                        reg = <0x40300000 0x40000>; /* 256k */
                        ranges = <0x0 0x40300000 0x40000>;
                        #address-cells = <1>;
                        #size-cells = <1>;
 
-                       pm_sram_code: pm-sram-code@0 {
+                       pm_sram_code: pm-code-sram@0 {
                                compatible = "ti,sram";
                                reg = <0x0 0x1000>;
                                protect-exec;
                        };
 
-                       pm_sram_data: pm-sram-data@1000 {
+                       pm_sram_data: pm-data-sram@1000 {
                                compatible = "ti,sram";
                                reg = <0x1000 0x1000>;
                                pool;
 
 #include "am437x-l4.dtsi"
 #include "am43xx-clocks.dtsi"
+
+&prcm {
+       prm_gfx: prm@400 {
+               compatible = "ti,am4-prm-inst", "ti,omap-prm-inst";
+               reg = <0x400 0x100>;
+               #reset-cells = <1>;
+       };
+
+       prm_per: prm@800 {
+               compatible = "ti,am4-prm-inst", "ti,omap-prm-inst";
+               reg = <0x800 0x100>;
+               #reset-cells = <1>;
+       };
+
+       prm_wkup: prm@2000 {
+               compatible = "ti,am4-prm-inst", "ti,omap-prm-inst";
+               reg = <0x2000 0x100>;
+               #reset-cells = <1>;
+       };
+
+       prm_device: prm@4000 {
+               compatible = "ti,am4-prm-inst", "ti,omap-prm-inst";
+               reg = <0x4000 0x100>;
+               #reset-cells = <1>;
+       };
+};
index 59770dd..0dd59ee 100644 (file)
 
                target-module@7000 {                    /* 0x44e07000, ap 14 20.0 */
                        compatible = "ti,sysc-omap2", "ti,sysc";
-                       ti,hwmods = "gpio1";
                        reg = <0x7000 0x4>,
                              <0x7010 0x4>,
                              <0x7114 0x4>;
 
                target-module@9000 {                    /* 0x44e09000, ap 16 04.0 */
                        compatible = "ti,sysc-omap2", "ti,sysc";
-                       ti,hwmods = "uart1";
                        reg = <0x9050 0x4>,
                              <0x9054 0x4>,
                              <0x9058 0x4>;
 
                target-module@b000 {                    /* 0x44e0b000, ap 18 48.0 */
                        compatible = "ti,sysc-omap2", "ti,sysc";
-                       ti,hwmods = "i2c1";
                        reg = <0xb000 0x8>,
                              <0xb010 0x8>,
                              <0xb090 0x8>;
 
                target-module@35000 {                   /* 0x44e35000, ap 28 50.0 */
                        compatible = "ti,sysc-omap2", "ti,sysc";
-                       ti,hwmods = "wd_timer2";
                        reg = <0x35000 0x4>,
                              <0x35010 0x4>,
                              <0x35014 0x4>;
 
                target-module@22000 {                   /* 0x48022000, ap 8 0a.0 */
                        compatible = "ti,sysc-omap2", "ti,sysc";
-                       ti,hwmods = "uart2";
                        reg = <0x22050 0x4>,
                              <0x22054 0x4>,
                              <0x22058 0x4>;
 
                target-module@24000 {                   /* 0x48024000, ap 10 1c.0 */
                        compatible = "ti,sysc-omap2", "ti,sysc";
-                       ti,hwmods = "uart3";
                        reg = <0x24050 0x4>,
                              <0x24054 0x4>,
                              <0x24058 0x4>;
 
                target-module@2a000 {                   /* 0x4802a000, ap 12 22.0 */
                        compatible = "ti,sysc-omap2", "ti,sysc";
-                       ti,hwmods = "i2c2";
                        reg = <0x2a000 0x8>,
                              <0x2a010 0x8>,
                              <0x2a090 0x8>;
 
                target-module@38000 {                   /* 0x48038000, ap 14 04.0 */
                        compatible = "ti,sysc-omap4-simple", "ti,sysc";
-                       ti,hwmods = "mcasp0";
                        reg = <0x38000 0x4>,
                              <0x38004 0x4>;
                        reg-names = "rev", "sysc";
 
                target-module@3c000 {                   /* 0x4803c000, ap 16 2a.0 */
                        compatible = "ti,sysc-omap4-simple", "ti,sysc";
-                       ti,hwmods = "mcasp1";
                        reg = <0x3c000 0x4>,
                              <0x3c004 0x4>;
                        reg-names = "rev", "sysc";
 
                target-module@4c000 {                   /* 0x4804c000, ap 28 36.0 */
                        compatible = "ti,sysc-omap2", "ti,sysc";
-                       ti,hwmods = "gpio2";
                        reg = <0x4c000 0x4>,
                              <0x4c010 0x4>,
                              <0x4c114 0x4>;
 
                target-module@60000 {                   /* 0x48060000, ap 30 14.0 */
                        compatible = "ti,sysc-omap2", "ti,sysc";
-                       ti,hwmods = "mmc1";
                        reg = <0x602fc 0x4>,
                              <0x60110 0x4>,
                              <0x60114 0x4>;
 
                target-module@c8000 {                   /* 0x480c8000, ap 73 06.0 */
                        compatible = "ti,sysc-omap4", "ti,sysc";
-                       ti,hwmods = "mailbox";
                        reg = <0xc8000 0x4>,
                              <0xc8010 0x4>;
                        reg-names = "rev", "sysc";
 
                target-module@9c000 {                   /* 0x4819c000, ap 38 52.0 */
                        compatible = "ti,sysc-omap2", "ti,sysc";
-                       ti,hwmods = "i2c3";
                        reg = <0x9c000 0x8>,
                              <0x9c010 0x8>,
                              <0x9c090 0x8>;
 
                target-module@a6000 {                   /* 0x481a6000, ap 40 16.0 */
                        compatible = "ti,sysc-omap2", "ti,sysc";
-                       ti,hwmods = "uart4";
                        reg = <0xa6050 0x4>,
                              <0xa6054 0x4>,
                              <0xa6058 0x4>;
 
                target-module@a8000 {                   /* 0x481a8000, ap 42 20.0 */
                        compatible = "ti,sysc-omap2", "ti,sysc";
-                       ti,hwmods = "uart5";
                        reg = <0xa8050 0x4>,
                              <0xa8054 0x4>,
                              <0xa8058 0x4>;
 
                target-module@aa000 {                   /* 0x481aa000, ap 44 12.0 */
                        compatible = "ti,sysc-omap2", "ti,sysc";
-                       ti,hwmods = "uart6";
                        reg = <0xaa050 0x4>,
                              <0xaa054 0x4>,
                              <0xaa058 0x4>;
 
                target-module@ac000 {                   /* 0x481ac000, ap 46 30.0 */
                        compatible = "ti,sysc-omap2", "ti,sysc";
-                       ti,hwmods = "gpio3";
                        reg = <0xac000 0x4>,
                              <0xac010 0x4>,
                              <0xac114 0x4>;
 
                target-module@ae000 {                   /* 0x481ae000, ap 48 32.0 */
                        compatible = "ti,sysc-omap2", "ti,sysc";
-                       ti,hwmods = "gpio4";
                        reg = <0xae000 0x4>,
                              <0xae010 0x4>,
                              <0xae114 0x4>;
 
                target-module@d8000 {                   /* 0x481d8000, ap 54 5e.0 */
                        compatible = "ti,sysc-omap2", "ti,sysc";
-                       ti,hwmods = "mmc2";
                        reg = <0xd82fc 0x4>,
                              <0xd8110 0x4>,
                              <0xd8114 0x4>;
 
                target-module@10000 {                   /* 0x48310000, ap 64 4e.1 */
                        compatible = "ti,sysc-omap2", "ti,sysc";
-                       ti,hwmods = "rng";
                        reg = <0x11fe0 0x4>,
                              <0x11fe4 0x4>;
                        reg-names = "rev", "sysc";
 
                target-module@20000 {                   /* 0x48320000, ap 82 34.0 */
                        compatible = "ti,sysc-omap2", "ti,sysc";
-                       ti,hwmods = "gpio5";
                        reg = <0x20000 0x4>,
                              <0x20010 0x4>,
                              <0x20114 0x4>;
 
                target-module@22000 {                   /* 0x48322000, ap 116 64.0 */
                        compatible = "ti,sysc-omap2", "ti,sysc";
-                       ti,hwmods = "gpio6";
                        reg = <0x22000 0x4>,
                              <0x22010 0x4>,
                              <0x22114 0x4>;
 
                target-module@47000 {                   /* 0x48347000, ap 110 70.0 */
                        compatible = "ti,sysc-omap2", "ti,sysc";
-                       ti,hwmods = "hdq1w";
                        reg = <0x47000 0x4>,
                              <0x47014 0x4>,
                              <0x47018 0x4>;
index 3f4bb44..e038abc 100644 (file)
                        #size-cells = <1>;
                        ranges = <0 MBUS_ID(0xf0, 0x01) 0 0x100000>;
 
+                       sdramc: sdramc@1400 {
+                               compatible = "marvell,armada-xp-sdram-controller";
+                               reg = <0x1400 0x500>;
+                       };
+
                        L2: cache-controller@8000 {
                                compatible = "arm,pl310-cache";
                                reg = <0x8000 0x1000>;
index 267d0c1..654648b 100644 (file)
@@ -90,7 +90,7 @@
                };
 
                internal-regs {
-                       sdramc@1400 {
+                       sdramc: sdramc@1400 {
                                compatible = "marvell,armada-xp-sdram-controller";
                                reg = <0x1400 0x500>;
                        };
index df04805..4ec0ae0 100644 (file)
        };
 };
 
+&L2 {
+       arm,parity-enable;
+       marvell,ecc-enable;
+};
+
 &devbus_bootcs {
        status = "okay";
 
index ee15c77..6c19984 100644 (file)
@@ -36,7 +36,7 @@
                };
 
                internal-regs {
-                       sdramc@1400 {
+                       sdramc: sdramc@1400 {
                                compatible = "marvell,armada-xp-sdram-controller";
                                reg = <0x1400 0x500>;
                        };
index c9d88c9..8bec21e 100644 (file)
@@ -40,6 +40,7 @@
                status = "okay";
                m25p,fast-read;
                label = "bmc";
+               spi-max-frequency = <50000000>;
 #include "openbmc-flash-layout.dtsi"
        };
 };
@@ -50,6 +51,7 @@
                status = "okay";
                m25p,fast-read;
                label = "pnor";
+               spi-max-frequency = <100000000>;
        };
 };
 
index 9870553..4afa866 100644 (file)
@@ -55,6 +55,9 @@
 
        phy-mode = "rgmii";
        phy-handle = <&ethphy1>;
+
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_rgmii2_default>;
 };
 
 &mac2 {
@@ -62,6 +65,9 @@
 
        phy-mode = "rgmii";
        phy-handle = <&ethphy2>;
+
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_rgmii3_default>;
 };
 
 &mac3 {
 
        phy-mode = "rgmii";
        phy-handle = <&ethphy3>;
+
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_rgmii4_default>;
 };
 
-&emmc {
+&emmc_controller {
        status = "okay";
 };
 
+&emmc {
+       non-removable;
+       bus-width = <4>;
+       max-frequency = <52000000>;
+};
+
 &rtc {
        status = "okay";
 };
+
+&fmc {
+       status = "okay";
+       flash@0 {
+               status = "okay";
+               m25p,fast-read;
+               label = "bmc";
+               spi-max-frequency = <50000000>;
+
+               partitions {
+                       compatible = "fixed-partitions";
+                       #address-cells = <1>;
+                       #size-cells = <1>;
+
+                       u-boot@0 {
+                               reg = <0x0 0xe0000>; // 896KB
+                               label = "u-boot";
+                       };
+
+                       u-boot-env@e0000 {
+                               reg = <0xe0000 0x20000>; // 128KB
+                               label = "u-boot-env";
+                       };
+
+                       kernel@100000 {
+                               reg = <0x100000 0x900000>; // 9MB
+                               label = "kernel";
+                       };
+
+                       rofs@a00000 {
+                               reg = <0xa00000 0x2000000>; // 32MB
+                               label = "rofs";
+                       };
+
+                       rwfs@6000000 {
+                               reg = <0x2a00000 0x1600000>; // 22MB
+                               label = "rwfs";
+                       };
+               };
+       };
+};
+
+&spi1 {
+       status = "okay";
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_spi1_default>;
+
+       flash@0 {
+               status = "okay";
+               m25p,fast-read;
+               label = "pnor";
+               spi-max-frequency = <100000000>;
+       };
+};
+
+&uart5 {
+       // Workaround for A0
+       compatible = "snps,dw-apb-uart";
+};
+
+&i2c0 {
+       status = "okay";
+
+       temp@2e {
+               compatible = "adi,adt7490";
+               reg = <0x2e>;
+       };
+};
+
+&i2c1 {
+       status = "okay";
+};
+
+&i2c2 {
+       status = "okay";
+};
+
+&i2c3 {
+       status = "okay";
+};
+
+&i2c4 {
+       status = "okay";
+};
+
+&i2c5 {
+       status = "okay";
+};
+
+&i2c6 {
+       status = "okay";
+};
+
+&i2c7 {
+       status = "okay";
+};
+
+&i2c8 {
+       status = "okay";
+};
+
+&i2c9 {
+       status = "okay";
+};
+
+&i2c12 {
+       status = "okay";
+};
+
+&i2c13 {
+       status = "okay";
+};
+
+&i2c14 {
+       status = "okay";
+};
+
+&i2c15 {
+       status = "okay";
+};
index 521afbe..2c29ac0 100644 (file)
@@ -92,6 +92,9 @@
        status = "okay";
        pinctrl-names = "default";
        pinctrl-0 = <&pinctrl_rmii2_default>;
+       clocks = <&syscon ASPEED_CLK_GATE_MAC2CLK>,
+                <&syscon ASPEED_CLK_MAC2RCLK>;
+       clock-names = "MACCLK", "RCLK";
        use-ncsi;
 };
 
index d519d30..016bbcb 100644 (file)
@@ -2,7 +2,7 @@
 // Copyright (c) 2018 Facebook Inc.
 /dts-v1/;
 
-#include "aspeed-g5.dtsi"
+#include "ast2500-facebook-netbmc-common.dtsi"
 
 / {
        model = "Facebook Backpack CMM BMC";
                bootargs = "console=ttyS1,9600n8 root=/dev/ram rw earlyprintk";
        };
 
-       memory@80000000 {
-               reg = <0x80000000 0x20000000>;
-       };
-
        ast-adc-hwmon {
                compatible = "iio-hwmon";
                io-channels = <&adc 0>, <&adc 1>, <&adc 2>, <&adc 3>,
        };
 };
 
-&pinctrl {
-       aspeed,external-nodes = <&gfx &lhc>;
-};
-
-/*
- * Update reset type to "system" (full chip) to fix warm reboot hang issue
- * when reset type is set to default ("soc", gated by reset mask registers).
- */
-&wdt1 {
-       status = "okay";
-       aspeed,reset-type = "system";
-};
-
-/*
- * wdt2 is not used by Backpack CMM.
- */
-&wdt2 {
-       status = "disabled";
-};
-
-&fmc {
-       status = "okay";
-       flash@0 {
-               status = "okay";
-               m25p,fast-read;
-               label = "bmc";
-#include "facebook-bmc-flash-layout.dtsi"
-       };
-};
-
 &uart1 {
-       status = "okay";
-       pinctrl-names = "default";
        pinctrl-0 = <&pinctrl_txd1_default
                     &pinctrl_rxd1_default
                     &pinctrl_ncts1_default
 };
 
 &uart3 {
-       status = "okay";
-       pinctrl-names = "default";
        pinctrl-0 = <&pinctrl_txd3_default
                     &pinctrl_rxd3_default
                     &pinctrl_ncts3_default
                     &pinctrl_rxd4_default>;
 };
 
-&uart5 {
-       status = "okay";
-};
-
-&mac1 {
-       status = "okay";
-       no-hw-checksum;
-       pinctrl-names = "default";
-       pinctrl-0 = <&pinctrl_rgmii2_default &pinctrl_mdio2_default>;
-};
-
 /*
  * I2C bus reserved for communication with COM-E.
  */
 &ehci1 {
        status = "okay";
 };
+
+&vhub {
+       status = "disabled";
+};
+
+&sdhci0 {
+       status = "okay";
+
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_sd1_default>;
+};
+
+&sdhci1 {
+       status = "disabled";
+};
index c054782..88ce4ff 100644 (file)
@@ -2,7 +2,7 @@
 // Copyright (c) 2018 Facebook Inc.
 /dts-v1/;
 
-#include "aspeed-g5.dtsi"
+#include "ast2500-facebook-netbmc-common.dtsi"
 
 / {
        model = "Facebook Minipack 100 BMC";
                stdout-path = &uart1;
                bootargs = "debug console=ttyS1,9600n8 root=/dev/ram rw";
        };
-
-       memory@80000000 {
-               reg = <0x80000000 0x20000000>;
-       };
 };
 
-&wdt1 {
+&wdt2 {
        status = "okay";
        aspeed,reset-type = "system";
 };
 
-&wdt2 {
-       status = "okay";
-       aspeed,reset-type = "system";
+/*
+ * Both firmware flashes are 64MB on Minipack BMC.
+ */
+&fmc_flash0 {
+       partitions {
+               data0@1c00000 {
+                       reg = <0x1c00000 0x2400000>;
+               };
+               flash0@0 {
+                       reg = <0x0 0x4000000>;
+               };
+       };
 };
 
-&fmc {
-       status = "okay";
-       flash@0 {
-               status = "okay";
-               m25p,fast-read;
-               label = "bmc";
-#include "facebook-bmc-flash-layout.dtsi"
+&fmc_flash1 {
+       partitions {
+               flash1@0 {
+                       reg = <0x0 0x4000000>;
+               };
        };
 };
 
 &uart1 {
-       status = "okay";
-       pinctrl-names = "default";
        pinctrl-0 = <&pinctrl_txd1_default
                     &pinctrl_rxd1_default
                     &pinctrl_ncts1_default
                     &pinctrl_rxd2_default>;
 };
 
-&uart3 {
-       status = "okay";
-       pinctrl-names = "default";
-       pinctrl-0 = <&pinctrl_txd3_default
-                    &pinctrl_rxd3_default>;
-};
-
 &uart4 {
        status = "okay";
        pinctrl-names = "default";
                     &pinctrl_rxd4_default>;
 };
 
-&uart5 {
-       status = "okay";
-};
-
-&mac1 {
-       status = "okay";
-       no-hw-checksum;
-       pinctrl-names = "default";
-       pinctrl-0 = <&pinctrl_rgmii2_default &pinctrl_mdio2_default>;
-};
-
 &i2c0 {
        status = "okay";
        bus-frequency = <400000>;
 &i2c13 {
        status = "okay";
 };
-
-&vhub {
-       status = "okay";
-};
index 682f729..5d7cbd9 100644 (file)
 
        pinctrl-names = "default";
        pinctrl-0 = <&pinctrl_rmii1_default>;
+       clocks = <&syscon ASPEED_CLK_GATE_MAC1CLK>,
+                <&syscon ASPEED_CLK_MAC1RCLK>;
+       clock-names = "MACCLK", "RCLK";
        use-ncsi;
 };
 
index 4e09a9c..5293359 100644 (file)
@@ -2,7 +2,7 @@
 // Copyright (c) 2018 Facebook Inc.
 /dts-v1/;
 
-#include "aspeed-g5.dtsi"
+#include "ast2500-facebook-netbmc-common.dtsi"
 
 / {
        model = "Facebook YAMP 100 BMC";
                stdout-path = &uart5;
                bootargs = "console=ttyS0,9600n8 root=/dev/ram rw";
        };
-
-       memory@80000000 {
-               reg = <0x80000000 0x20000000>;
-       };
-};
-
-&pinctrl {
-       aspeed,external-nodes = <&gfx &lhc>;
-};
-
-/*
- * Update reset type to "system" (full chip) to fix warm reboot hang issue
- * when reset type is set to default ("soc", gated by reset mask registers).
- */
-&wdt1 {
-       status = "okay";
-       aspeed,reset-type = "system";
-};
-
-/*
- * wdt2 is not used by Yamp.
- */
-&wdt2 {
-       status = "disabled";
-};
-
-&fmc {
-       status = "okay";
-       flash@0 {
-               status = "okay";
-               m25p,fast-read;
-               label = "bmc";
-#include "facebook-bmc-flash-layout.dtsi"
-       };
-};
-
-&uart1 {
-       status = "okay";
-       pinctrl-names = "default";
-       pinctrl-0 = <&pinctrl_txd1_default
-                    &pinctrl_rxd1_default>;
 };
 
 &uart2 {
                     &pinctrl_rxd2_default>;
 };
 
-&uart3 {
-       status = "okay";
-       pinctrl-names = "default";
-       pinctrl-0 = <&pinctrl_txd3_default
-                    &pinctrl_rxd3_default>;
-};
-
-&uart5 {
-       status = "okay";
-};
-
 &mac0 {
        status = "okay";
        use-ncsi;
        no-hw-checksum;
        pinctrl-names = "default";
        pinctrl-0 = <&pinctrl_rmii1_default>;
+       clocks = <&syscon ASPEED_CLK_GATE_MAC1CLK>,
+                <&syscon ASPEED_CLK_MAC1RCLK>;
+       clock-names = "MACCLK", "RCLK";
+};
+
+&mac1 {
+       status = "disabled";
 };
 
 &i2c0 {
 &i2c13 {
        status = "okay";
 };
-
-&vhub {
-       status = "okay";
-};
diff --git a/arch/arm/boot/dts/aspeed-bmc-ibm-rainier.dts b/arch/arm/boot/dts/aspeed-bmc-ibm-rainier.dts
new file mode 100644 (file)
index 0000000..c1c9cd3
--- /dev/null
@@ -0,0 +1,972 @@
+// SPDX-License-Identifier: GPL-2.0-or-later
+// Copyright 2019 IBM Corp.
+/dts-v1/;
+
+#include "aspeed-g6.dtsi"
+#include <dt-bindings/gpio/aspeed-gpio.h>
+
+/ {
+       model = "Rainier";
+       compatible = "ibm,rainier-bmc", "aspeed,ast2600";
+
+       aliases {
+               serial4 = &uart5;
+       };
+
+       chosen {
+               stdout-path = &uart5;
+               bootargs = "console=ttyS4,115200n8";
+       };
+
+       memory@80000000 {
+               device_type = "memory";
+               reg = <0x80000000 0x40000000>;
+       };
+
+       reserved-memory {
+               #address-cells = <1>;
+               #size-cells = <1>;
+               ranges;
+
+               flash_memory: region@B8000000 {
+                       no-map;
+                       reg = <0xB8000000 0x04000000>; /* 64M */
+               };
+       };
+
+       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)>;
+               };
+       };
+
+};
+
+&emmc_controller {
+       status = "okay";
+};
+
+&emmc {
+       status = "okay";
+};
+
+&ibt {
+       status = "okay";
+};
+
+&i2c0 {
+       status = "okay";
+
+       eeprom@51 {
+               compatible = "atmel,24c64";
+               reg = <0x51>;
+       };
+};
+
+&i2c1 {
+       status = "okay";
+};
+
+&i2c2 {
+       status = "okay";
+};
+
+&i2c3 {
+       status = "okay";
+
+       power-supply@68 {
+               compatible = "ibm,cffps2";
+               reg = <0x68>;
+       };
+
+       power-supply@69 {
+               compatible = "ibm,cffps2";
+               reg = <0x69>;
+       };
+
+       power-supply@6a {
+               compatible = "ibm,cffps2";
+               reg = <0x6a>;
+       };
+
+       power-supply@6b {
+               compatible = "ibm,cffps2";
+               reg = <0x6b>;
+       };
+};
+
+&i2c4 {
+       status = "okay";
+
+       tmp275@48 {
+               compatible = "ti,tmp275";
+               reg = <0x48>;
+       };
+
+       tmp275@49 {
+               compatible = "ti,tmp275";
+               reg = <0x49>;
+       };
+
+       tmp275@4a {
+               compatible = "ti,tmp275";
+               reg = <0x4a>;
+       };
+
+       eeprom@50 {
+               compatible = "atmel,24c64";
+               reg = <0x50>;
+       };
+
+       eeprom@51 {
+               compatible = "atmel,24c64";
+               reg = <0x51>;
+       };
+
+       eeprom@52 {
+               compatible = "atmel,24c64";
+               reg = <0x52>;
+       };
+};
+
+&i2c5 {
+       status = "okay";
+
+       tmp275@48 {
+               compatible = "ti,tmp275";
+               reg = <0x48>;
+       };
+
+       tmp275@49 {
+               compatible = "ti,tmp275";
+               reg = <0x49>;
+       };
+
+       eeprom@50 {
+               compatible = "atmel,24c64";
+               reg = <0x50>;
+       };
+
+       eeprom@51 {
+               compatible = "atmel,24c64";
+               reg = <0x51>;
+       };
+};
+
+&i2c6 {
+       status = "okay";
+
+       tmp275@48 {
+               compatible = "ti,tmp275";
+               reg = <0x48>;
+       };
+
+       tmp275@4a {
+               compatible = "ti,tmp275";
+               reg = <0x4a>;
+       };
+
+       tmp275@4b {
+               compatible = "ti,tmp275";
+               reg = <0x4b>;
+       };
+
+       eeprom@50 {
+               compatible = "atmel,24c64";
+               reg = <0x50>;
+       };
+
+       eeprom@51 {
+               compatible = "atmel,24c64";
+               reg = <0x51>;
+       };
+
+       eeprom@52 {
+               compatible = "atmel,24c64";
+               reg = <0x52>;
+       };
+
+       eeprom@53 {
+               compatible = "atmel,24c64";
+               reg = <0x53>;
+       };
+};
+
+&i2c7 {
+       status = "okay";
+
+       si7021-a20@20 {
+               compatible = "silabs,si7020";
+               reg = <0x20>;
+       };
+
+       tmp275@48 {
+               compatible = "ti,tmp275";
+               reg = <0x48>;
+       };
+
+       max31785@52 {
+               compatible = "maxim,max31785a";
+               reg = <0x52>;
+               #address-cells = <1>;
+               #size-cells = <0>;
+
+               fan@0 {
+                       compatible = "pmbus-fan";
+                       reg = <0>;
+                       tach-pulses = <2>;
+               };
+
+               fan@1 {
+                       compatible = "pmbus-fan";
+                       reg = <1>;
+                       tach-pulses = <2>;
+               };
+
+               fan@2 {
+                       compatible = "pmbus-fan";
+                       reg = <2>;
+                       tach-pulses = <2>;
+               };
+
+               fan@3 {
+                       compatible = "pmbus-fan";
+                       reg = <3>;
+                       tach-pulses = <2>;
+               };
+       };
+
+       pca0: pca9552@60 {
+               compatible = "nxp,pca9552";
+               reg = <0x60>;
+               #address-cells = <1>;
+               #size-cells = <0>;
+
+               gpio-controller;
+               #gpio-cells = <2>;
+
+               gpio@0 {
+                       reg = <0>;
+               };
+
+               gpio@1 {
+                       reg = <1>;
+               };
+
+               gpio@2 {
+                       reg = <2>;
+               };
+
+               gpio@3 {
+                       reg = <3>;
+               };
+
+               gpio@4 {
+                       reg = <4>;
+               };
+
+               gpio@5 {
+                       reg = <5>;
+               };
+
+               gpio@6 {
+                       reg = <6>;
+               };
+
+               gpio@7 {
+                       reg = <7>;
+               };
+
+               gpio@8 {
+                       reg = <8>;
+               };
+
+               gpio@9 {
+                       reg = <9>;
+               };
+
+               gpio@10 {
+                       reg = <10>;
+               };
+
+               gpio@11 {
+                       reg = <11>;
+               };
+
+               gpio@12 {
+                       reg = <12>;
+               };
+
+               gpio@13 {
+                       reg = <13>;
+               };
+
+               gpio@14 {
+                       reg = <14>;
+               };
+
+               gpio@15 {
+                       reg = <15>;
+               };
+       };
+
+       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@b {
+               compatible = "ti,ucd90160";
+               reg = <0x0b>;
+       };
+
+       ucd90320@c {
+               compatible = "ti,ucd90160";
+               reg = <0x0c>;
+       };
+
+       ucd90320@11 {
+               compatible = "ti,ucd90160";
+               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>;
+       };
+};
+
+&i2c9 {
+       status = "okay";
+
+       ir35221@42 {
+               compatible = "infineon,ir35221";
+               reg = <0x42>;
+       };
+
+       ir35221@43 {
+               compatible = "infineon,ir35221";
+               reg = <0x43>;
+       };
+
+       ir35221@44 {
+               compatible = "infineon,ir35221";
+               reg = <0x44>;
+       };
+
+       tmp423a@4c {
+               compatible = "ti,tmp423";
+               reg = <0x4c>;
+       };
+
+       tmp423b@4d {
+               compatible = "ti,tmp423";
+               reg = <0x4d>;
+       };
+
+       ir35221@72 {
+               compatible = "infineon,ir35221";
+               reg = <0x72>;
+       };
+
+       ir35221@73 {
+               compatible = "infineon,ir35221";
+               reg = <0x73>;
+       };
+
+       ir35221@74 {
+               compatible = "infineon,ir35221";
+               reg = <0x74>;
+       };
+
+       eeprom@50 {
+               compatible = "atmel,24c128";
+               reg = <0x50>;
+       };
+};
+
+&i2c10 {
+       status = "okay";
+
+       ir35221@42 {
+               compatible = "infineon,ir35221";
+               reg = <0x42>;
+       };
+
+       ir35221@43 {
+               compatible = "infineon,ir35221";
+               reg = <0x43>;
+       };
+
+       ir35221@44 {
+               compatible = "infineon,ir35221";
+               reg = <0x44>;
+       };
+
+       tmp423a@4c {
+               compatible = "ti,tmp423";
+               reg = <0x4c>;
+       };
+
+       tmp423b@4d {
+               compatible = "ti,tmp423";
+               reg = <0x4d>;
+       };
+
+       ir35221@72 {
+               compatible = "infineon,ir35221";
+               reg = <0x72>;
+       };
+
+       ir35221@73 {
+               compatible = "infineon,ir35221";
+               reg = <0x73>;
+       };
+
+       ir35221@74 {
+               compatible = "infineon,ir35221";
+               reg = <0x74>;
+       };
+
+       eeprom@50 {
+               compatible = "atmel,24c128";
+               reg = <0x50>;
+       };
+};
+
+&i2c11 {
+       status = "okay";
+
+       tmp275@48 {
+               compatible = "ti,tmp275";
+               reg = <0x48>;
+       };
+
+       tmp275@49 {
+               compatible = "ti,tmp275";
+               reg = <0x49>;
+       };
+
+       eeprom@50 {
+               compatible = "atmel,24c64";
+               reg = <0x50>;
+       };
+
+       eeprom@51 {
+               compatible = "atmel,24c64";
+               reg = <0x51>;
+       };
+};
+
+&i2c12 {
+       status = "okay";
+};
+
+&i2c13 {
+       status = "okay";
+};
+
+&i2c14 {
+       status = "okay";
+};
+
+&i2c15 {
+       status = "okay";
+};
+
+&i2c0 {
+       status = "okay";
+};
+
+&i2c1 {
+       status = "okay";
+};
+
+&i2c2 {
+       status = "okay";
+};
+
+&i2c3 {
+       status = "okay";
+
+       power-supply@68 {
+               compatible = "ibm,cffps2";
+               reg = <0x68>;
+       };
+
+       power-supply@69 {
+               compatible = "ibm,cffps2";
+               reg = <0x69>;
+       };
+
+       power-supply@6a {
+               compatible = "ibm,cffps2";
+               reg = <0x6a>;
+       };
+
+       power-supply@6b {
+               compatible = "ibm,cffps2";
+               reg = <0x6b>;
+       };
+};
+
+&i2c4 {
+       status = "okay";
+
+       tmp275@48 {
+               compatible = "ti,tmp275";
+               reg = <0x48>;
+       };
+
+       tmp275@49 {
+               compatible = "ti,tmp275";
+               reg = <0x49>;
+       };
+
+       tmp275@4a {
+               compatible = "ti,tmp275";
+               reg = <0x4a>;
+       };
+};
+
+&i2c5 {
+       status = "okay";
+
+       tmp275@48 {
+               compatible = "ti,tmp275";
+               reg = <0x48>;
+       };
+
+       tmp275@49 {
+               compatible = "ti,tmp275";
+               reg = <0x49>;
+       };
+};
+
+&i2c6 {
+       status = "okay";
+
+       tmp275@48 {
+               compatible = "ti,tmp275";
+               reg = <0x48>;
+       };
+
+       tmp275@4a {
+               compatible = "ti,tmp275";
+               reg = <0x4a>;
+       };
+
+       tmp275@4b {
+               compatible = "ti,tmp275";
+               reg = <0x4b>;
+       };
+};
+
+&i2c7 {
+       status = "okay";
+
+       si7021-a20@20 {
+               compatible = "silabs,si7020";
+               reg = <0x20>;
+       };
+
+       tmp275@48 {
+               compatible = "ti,tmp275";
+               reg = <0x48>;
+       };
+
+       max31785@52 {
+               compatible = "maxim,max31785a";
+               reg = <0x52>;
+               #address-cells = <1>;
+               #size-cells = <0>;
+
+               fan@0 {
+                       compatible = "pmbus-fan";
+                       reg = <0>;
+                       tach-pulses = <2>;
+               };
+
+               fan@1 {
+                       compatible = "pmbus-fan";
+                       reg = <1>;
+                       tach-pulses = <2>;
+               };
+
+               fan@2 {
+                       compatible = "pmbus-fan";
+                       reg = <2>;
+                       tach-pulses = <2>;
+               };
+
+               fan@3 {
+                       compatible = "pmbus-fan";
+                       reg = <3>;
+                       tach-pulses = <2>;
+               };
+       };
+
+       pca0: pca9552@60 {
+               compatible = "nxp,pca9552";
+               reg = <0x60>;
+               #address-cells = <1>;
+               #size-cells = <0>;
+
+               gpio-controller;
+               #gpio-cells = <2>;
+
+               gpio@0 {
+                       reg = <0>;
+               };
+
+               gpio@1 {
+                       reg = <1>;
+               };
+
+               gpio@2 {
+                       reg = <2>;
+               };
+
+               gpio@3 {
+                       reg = <3>;
+               };
+
+               gpio@4 {
+                       reg = <4>;
+               };
+
+               gpio@5 {
+                       reg = <5>;
+               };
+
+               gpio@6 {
+                       reg = <6>;
+               };
+
+               gpio@7 {
+                       reg = <7>;
+               };
+
+               gpio@8 {
+                       reg = <8>;
+               };
+
+               gpio@9 {
+                       reg = <9>;
+               };
+
+               gpio@10 {
+                       reg = <10>;
+               };
+
+               gpio@11 {
+                       reg = <11>;
+               };
+
+               gpio@12 {
+                       reg = <12>;
+               };
+
+               gpio@13 {
+                       reg = <13>;
+               };
+
+               gpio@14 {
+                       reg = <14>;
+               };
+
+               gpio@15 {
+                       reg = <15>;
+               };
+       };
+
+       dps: dps310@76 {
+               compatible = "infineon,dps310";
+               reg = <0x76>;
+               #io-channel-cells = <0>;
+       };
+};
+
+&i2c8 {
+       status = "okay";
+
+       ucd90320@b {
+               compatible = "ti,ucd90160";
+               reg = <0x0b>;
+       };
+
+       ucd90320@c {
+               compatible = "ti,ucd90160";
+               reg = <0x0c>;
+       };
+
+       ucd90320@11 {
+               compatible = "ti,ucd90160";
+               reg = <0x11>;
+       };
+
+       rtc@32 {
+               compatible = "epson,rx8900";
+               reg = <0x32>;
+       };
+
+       tmp275@48 {
+               compatible = "ti,tmp275";
+               reg = <0x48>;
+       };
+
+       tmp275@4a {
+               compatible = "ti,tmp275";
+               reg = <0x4a>;
+       };
+};
+
+&i2c9 {
+       status = "okay";
+
+       ir35221@42 {
+               compatible = "infineon,ir35221";
+               reg = <0x42>;
+       };
+
+       ir35221@43 {
+               compatible = "infineon,ir35221";
+               reg = <0x43>;
+       };
+
+       ir35221@44 {
+               compatible = "infineon,ir35221";
+               reg = <0x44>;
+       };
+
+       tmp423a@4c {
+               compatible = "ti,tmp423";
+               reg = <0x4c>;
+       };
+
+       tmp423b@4d {
+               compatible = "ti,tmp423";
+               reg = <0x4d>;
+       };
+
+       ir35221@72 {
+               compatible = "infineon,ir35221";
+               reg = <0x72>;
+       };
+
+       ir35221@73 {
+               compatible = "infineon,ir35221";
+               reg = <0x73>;
+       };
+
+       ir35221@74 {
+               compatible = "infineon,ir35221";
+               reg = <0x74>;
+       };
+};
+
+&i2c10 {
+       status = "okay";
+
+       ir35221@42 {
+               compatible = "infineon,ir35221";
+               reg = <0x42>;
+       };
+
+       ir35221@43 {
+               compatible = "infineon,ir35221";
+               reg = <0x43>;
+       };
+
+       ir35221@44 {
+               compatible = "infineon,ir35221";
+               reg = <0x44>;
+       };
+
+       tmp423a@4c {
+               compatible = "ti,tmp423";
+               reg = <0x4c>;
+       };
+
+       tmp423b@4d {
+               compatible = "ti,tmp423";
+               reg = <0x4d>;
+       };
+
+       ir35221@72 {
+               compatible = "infineon,ir35221";
+               reg = <0x72>;
+       };
+
+       ir35221@73 {
+               compatible = "infineon,ir35221";
+               reg = <0x73>;
+       };
+
+       ir35221@74 {
+               compatible = "infineon,ir35221";
+               reg = <0x74>;
+       };
+};
+
+&i2c11 {
+       status = "okay";
+
+       tmp275@48 {
+               compatible = "ti,tmp275";
+               reg = <0x48>;
+       };
+
+       tmp275@49 {
+               compatible = "ti,tmp275";
+               reg = <0x49>;
+       };
+};
+
+&i2c12 {
+       status = "okay";
+};
+
+&i2c13 {
+       status = "okay";
+
+       eeprom@50 {
+               compatible = "atmel,24c64";
+               reg = <0x50>;
+       };
+};
+
+&i2c14 {
+       status = "okay";
+
+       eeprom@50 {
+               compatible = "atmel,24c64";
+               reg = <0x50>;
+       };
+};
+
+&i2c15 {
+       status = "okay";
+
+       eeprom@50 {
+               compatible = "atmel,24c64";
+               reg = <0x50>;
+       };
+};
+
+&vuart1 {
+       status = "okay";
+};
+
+&lpc_ctrl {
+       status = "okay";
+       memory-region = <&flash_memory>;
+};
+
+&mac2 {
+       status = "okay";
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_rmii3_default>;
+       clocks = <&syscon ASPEED_CLK_GATE_MAC3CLK>,
+                <&syscon ASPEED_CLK_MAC3RCLK>;
+       clock-names = "MACCLK", "RCLK";
+       use-ncsi;
+};
+
+&mac3 {
+       status = "okay";
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_rmii4_default>;
+       clocks = <&syscon ASPEED_CLK_GATE_MAC4CLK>,
+                <&syscon ASPEED_CLK_MAC4RCLK>;
+       clock-names = "MACCLK", "RCLK";
+       use-ncsi;
+};
+
+&fmc {
+       status = "okay";
+       flash@0 {
+               status = "okay";
+               m25p,fast-read;
+               label = "bmc";
+               spi-max-frequency = <50000000>;
+#include "openbmc-flash-layout-128.dtsi"
+       };
+
+       flash@1 {
+               status = "okay";
+               m25p,fast-read;
+               label = "alt-bmc";
+               spi-max-frequency = <50000000>;
+       };
+};
+
+&spi1 {
+       status = "okay";
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_spi1_default>;
+
+       flash@0 {
+               status = "okay";
+               m25p,fast-read;
+               label = "pnor";
+               spi-max-frequency = <100000000>;
+       };
+};
index e9d714a..c17bb7f 100644 (file)
        };
 
        leds {
-           compatible = "gpio-leds";
+               compatible = "gpio-leds";
 
-           power {
-                   label = "power";
-                   /* TODO: dummy gpio */
-                   gpios = <&gpio ASPEED_GPIO(R, 1) GPIO_ACTIVE_LOW>;
-           };
+               power {
+                       label = "power";
+                       /* TODO: dummy gpio */
+                       gpios = <&gpio ASPEED_GPIO(R, 1) GPIO_ACTIVE_LOW>;
+               };
+
+               init-ok {
+                       label = "init-ok";
+                       gpios = <&gpio ASPEED_GPIO(B, 7) GPIO_ACTIVE_LOW>;
+               };
+
+               front-memory {
+                       label = "front-memory";
+                       gpios = <&gpio ASPEED_GPIO(F, 4) GPIO_ACTIVE_LOW>;
+               };
+
+               front-syshot {
+                       label = "front-syshot";
+                       gpios = <&gpio ASPEED_GPIO(I, 1) GPIO_ACTIVE_LOW>;
+               };
+
+               front-syshealth {
+                       label = "front-syshealth";
+                       gpios = <&gpio ASPEED_GPIO(I, 0) GPIO_ACTIVE_LOW>;
+               };
 
+               front-fan {
+                       label = "front-fan";
+                       gpios = <&gpio ASPEED_GPIO(H, 4) GPIO_ACTIVE_LOW>;
+               };
+
+               front-psu {
+                       label = "front-psu";
+                       gpios = <&gpio ASPEED_GPIO(B, 2) GPIO_ACTIVE_LOW>;
+               };
+
+               identify {
+                       label = "identify";
+                       gpios = <&gpio ASPEED_GPIO(Z, 7) GPIO_ACTIVE_LOW>;
+               };
        };
 
        iio-hwmon-battery {
        status = "okay";
        pinctrl-names = "default";
        pinctrl-0 = <&pinctrl_rmii1_default>;
+       clocks = <&syscon ASPEED_CLK_GATE_MAC1CLK>,
+                <&syscon ASPEED_CLK_MAC1RCLK>;
+       clock-names = "MACCLK", "RCLK";
        use-ncsi;
 };
 
        aspeed,external-nodes = <&gfx &lhc>;
 };
 
-&gpio {
-       pin_gpio_b7 {
-               gpio-hog;
-               gpios = <ASPEED_GPIO(B,7) GPIO_ACTIVE_LOW>;
-               output-high;
-               line-name = "BMC_INIT_OK";
-       };
-};
-
 &wdt1 {
        aspeed,reset-type = "none";
        aspeed,external-signal;
index 2337ee2..80c92e0 100644 (file)
@@ -77,6 +77,9 @@
 
        pinctrl-names = "default";
        pinctrl-0 = <&pinctrl_rmii1_default>;
+       clocks = <&syscon ASPEED_CLK_GATE_MAC1CLK>,
+                <&syscon ASPEED_CLK_MAC1RCLK>;
+       clock-names = "MACCLK", "RCLK";
        use-ncsi;
 };
 
index 22dade6..1deb30e 100644 (file)
@@ -69,6 +69,9 @@
 
        pinctrl-names = "default";
        pinctrl-0 = <&pinctrl_rmii1_default>;
+       clocks = <&syscon ASPEED_CLK_GATE_MAC1CLK>,
+                <&syscon ASPEED_CLK_MAC1RCLK>;
+       clock-names = "MACCLK", "RCLK";
        use-ncsi;
 };
 
index d3695a3..c29e5f4 100644 (file)
 
        pinctrl-names = "default";
        pinctrl-0 = <&pinctrl_rmii1_default>;
+       clocks = <&syscon ASPEED_CLK_GATE_MAC1CLK>,
+                <&syscon ASPEED_CLK_MAC1RCLK>;
+       clock-names = "MACCLK", "RCLK";
        use-ncsi;
 };
 
index 118eb8b..084c455 100644 (file)
        status = "okay";
        pinctrl-names = "default";
        pinctrl-0 = <&pinctrl_rmii1_default>;
+       clocks = <&syscon ASPEED_CLK_GATE_MAC1CLK>,
+                <&syscon ASPEED_CLK_MAC1RCLK>;
+       clock-names = "MACCLK", "RCLK";
        use-ncsi;
 };
 
index de95112..42b37a2 100644 (file)
 
        pinctrl-names = "default";
        pinctrl-0 = <&pinctrl_rmii1_default>;
+       clocks = <&syscon ASPEED_CLK_GATE_MAC1CLK>,
+                <&syscon ASPEED_CLK_MAC1RCLK>;
+       clock-names = "MACCLK", "RCLK";
        use-ncsi;
 };
 
index e55cc45..f7e935e 100644 (file)
 
        pinctrl-names = "default";
        pinctrl-0 = <&pinctrl_rmii1_default>;
+       clocks = <&syscon ASPEED_CLK_GATE_MAC1CLK>,
+                <&syscon ASPEED_CLK_MAC1RCLK>;
+       clock-names = "MACCLK", "RCLK";
        use-ncsi;
 };
 
index b0cb34c..eb4e93a 100644 (file)
@@ -87,6 +87,7 @@
                status = "okay";
                m25p,fast-read;
                label = "bmc";
+               spi-max-frequency = <50000000>;
 #include "openbmc-flash-layout.dtsi"
        };
 };
        flash@0 {
                status = "okay";
                m25p,fast-read;
+               spi-max-frequency = <50000000>;
                label = "pnor";
        };
 };
index 9628ecb..edfa44f 100644 (file)
                status = "okay";
                m25p,fast-read;
                label = "bmc";
+               spi-max-frequency = <50000000>;
 #include "openbmc-flash-layout.dtsi"
        };
 };
                status = "okay";
                m25p,fast-read;
                label = "pnor";
+               spi-max-frequency = <100000000>;
        };
 };
 
 
        pinctrl-names = "default";
        pinctrl-0 = <&pinctrl_rmii1_default>;
+       clocks = <&syscon ASPEED_CLK_GATE_MAC1CLK>,
+                <&syscon ASPEED_CLK_MAC1RCLK>;
+       clock-names = "MACCLK", "RCLK";
 };
 
 &i2c1 {
index f67fef1..b8fdd2a 100644 (file)
        pinctrl-names = "default";
        pinctrl-0 = <&pinctrl_rmii1_default>;
        use-ncsi;
+       clocks = <&syscon ASPEED_CLK_GATE_MAC1CLK>,
+                <&syscon ASPEED_CLK_MAC1RCLK>;
+       clock-names = "MACCLK", "RCLK";
 };
 
 &i2c2 {
diff --git a/arch/arm/boot/dts/aspeed-bmc-opp-tacoma.dts b/arch/arm/boot/dts/aspeed-bmc-opp-tacoma.dts
new file mode 100644 (file)
index 0000000..f02de4a
--- /dev/null
@@ -0,0 +1,1195 @@
+// SPDX-License-Identifier: GPL-2.0-or-later
+// Copyright 2019 IBM Corp.
+/dts-v1/;
+
+#include "aspeed-g6.dtsi"
+#include <dt-bindings/gpio/aspeed-gpio.h>
+#include <dt-bindings/leds/leds-pca955x.h>
+
+/ {
+       model = "Tacoma";
+       compatible = "ibm,tacoma-bmc", "aspeed,ast2600";
+
+       chosen {
+               stdout-path = &uart5;
+               bootargs = "console=ttyS4,115200n8";
+       };
+
+       memory@80000000 {
+               device_type = "memory";
+               reg = <0x80000000 0x40000000>;
+       };
+
+       reserved-memory {
+               #address-cells = <1>;
+               #size-cells = <1>;
+               ranges;
+
+               flash_memory: region@ba000000 {
+                       no-map;
+                       reg = <0xb8000000 0x4000000>; /* 64M */
+               };
+       };
+
+       gpio-keys {
+               compatible = "gpio-keys";
+
+               air-water {
+                       label = "air-water";
+                       gpios = <&gpio0 ASPEED_GPIO(Q, 7) GPIO_ACTIVE_LOW>;
+                       linux,code = <ASPEED_GPIO(Q, 7)>;
+               };
+
+               checkstop {
+                       label = "checkstop";
+                       gpios = <&gpio0 ASPEED_GPIO(E, 3) GPIO_ACTIVE_LOW>;
+                       linux,code = <ASPEED_GPIO(E, 3)>;
+               };
+
+               ps0-presence {
+                       label = "ps0-presence";
+                       gpios = <&gpio0 ASPEED_GPIO(H, 3) GPIO_ACTIVE_LOW>;
+                       linux,code = <ASPEED_GPIO(H, 3)>;
+               };
+
+               ps1-presence {
+                       label = "ps1-presence";
+                       gpios = <&gpio0 ASPEED_GPIO(E, 5) GPIO_ACTIVE_LOW>;
+                       linux,code = <ASPEED_GPIO(E, 5)>;
+               };
+       };
+
+       gpio-keys-polled {
+               compatible = "gpio-keys-polled";
+               #address-cells = <1>;
+               #size-cells = <0>;
+               poll-interval = <1000>;
+
+               fan0-presence {
+                       label = "fan0-presence";
+                       gpios = <&pca0 4 GPIO_ACTIVE_LOW>;
+                       linux,code = <4>;
+               };
+
+               fan1-presence {
+                       label = "fan1-presence";
+                       gpios = <&pca0 5 GPIO_ACTIVE_LOW>;
+                       linux,code = <5>;
+               };
+
+               fan2-presence {
+                       label = "fan2-presence";
+                       gpios = <&pca0 6 GPIO_ACTIVE_LOW>;
+                       linux,code = <6>;
+               };
+
+               fan3-presence {
+                       label = "fan3-presence";
+                       gpios = <&pca0 7 GPIO_ACTIVE_LOW>;
+                       linux,code = <7>;
+               };
+       };
+};
+
+&fmc {
+       status = "okay";
+       flash@0 {
+               status = "okay";
+               m25p,fast-read;
+               label = "bmc";
+               spi-max-frequency = <50000000>;
+#include "openbmc-flash-layout-128.dtsi"
+       };
+
+       flash@1 {
+               status = "okay";
+               m25p,fast-read;
+               label = "alt-bmc";
+               spi-max-frequency = <50000000>;
+       };
+};
+
+&spi1 {
+       status = "okay";
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_spi1_default>;
+
+       flash@0 {
+               status = "okay";
+               m25p,fast-read;
+               label = "pnor";
+               spi-max-frequency = <100000000>;
+       };
+};
+
+&fmc {
+       status = "okay";
+       flash@0 {
+               status = "okay";
+               m25p,fast-read;
+               label = "bmc";
+               spi-max-frequency = <50000000>;
+#include "openbmc-flash-layout-128.dtsi"
+       };
+
+       flash@1 {
+               status = "okay";
+               m25p,fast-read;
+               label = "alt-bmc";
+               spi-max-frequency = <50000000>;
+       };
+};
+
+&spi1 {
+       status = "okay";
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_spi1_default>;
+
+       flash@0 {
+               status = "okay";
+               m25p,fast-read;
+               label = "pnor";
+               spi-max-frequency = <100000000>;
+       };
+};
+
+&mac2 {
+       status = "okay";
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_rmii3_default>;
+       clocks = <&syscon ASPEED_CLK_GATE_MAC3CLK>,
+                <&syscon ASPEED_CLK_MAC3RCLK>;
+       clock-names = "MACCLK", "RCLK";
+       use-ncsi;
+};
+
+&emmc {
+       status = "okay";
+       #address-cells = <2>;
+       #size-cells = <0>;
+
+       cfam@0,0 {
+               reg = <0 0>;
+               #address-cells = <1>;
+               #size-cells = <1>;
+               chip-id = <0>;
+
+               scom@1000 {
+                       compatible = "ibm,fsi2pib";
+                       reg = <0x1000 0x400>;
+               };
+
+               i2c@1800 {
+                       compatible = "ibm,fsi-i2c-master";
+                       reg = <0x1800 0x400>;
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+
+                       cfam0_i2c0: i2c-bus@0 {
+                               reg = <0>;
+                       };
+
+                       cfam0_i2c1: i2c-bus@1 {
+                               reg = <1>;
+                       };
+
+                       cfam0_i2c2: i2c-bus@2 {
+                               reg = <2>;
+                       };
+
+                       cfam0_i2c3: i2c-bus@3 {
+                               reg = <3>;
+                       };
+
+                       cfam0_i2c4: i2c-bus@4 {
+                               reg = <4>;
+                       };
+
+                       cfam0_i2c5: i2c-bus@5 {
+                               reg = <5>;
+                       };
+
+                       cfam0_i2c6: i2c-bus@6 {
+                               reg = <6>;
+                       };
+
+                       cfam0_i2c7: i2c-bus@7 {
+                               reg = <7>;
+                       };
+
+                       cfam0_i2c8: i2c-bus@8 {
+                               reg = <8>;
+                       };
+
+                       cfam0_i2c9: i2c-bus@9 {
+                               reg = <9>;
+                       };
+
+                       cfam0_i2c10: i2c-bus@a {
+                               reg = <10>;
+                       };
+
+                       cfam0_i2c11: i2c-bus@b {
+                               reg = <11>;
+                       };
+
+                       cfam0_i2c12: i2c-bus@c {
+                               reg = <12>;
+                       };
+
+                       cfam0_i2c13: i2c-bus@d {
+                               reg = <13>;
+                       };
+
+                       cfam0_i2c14: i2c-bus@e {
+                               reg = <14>;
+                       };
+               };
+
+               sbefifo@2400 {
+                       compatible = "ibm,p9-sbefifo";
+                       reg = <0x2400 0x400>;
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+
+                       fsi_occ0: occ {
+                               compatible = "ibm,p9-occ";
+                       };
+               };
+
+               fsi_hub0: hub@3400 {
+                       compatible = "fsi-master-hub";
+                       reg = <0x3400 0x400>;
+                       #address-cells = <2>;
+                       #size-cells = <0>;
+
+                       no-scan-on-init;
+               };
+       };
+};
+
+&fsi_hub0 {
+       cfam@1,0 {
+               reg = <1 0>;
+               #address-cells = <1>;
+               #size-cells = <1>;
+               chip-id = <1>;
+
+               scom@1000 {
+                       compatible = "ibm,fsi2pib";
+                       reg = <0x1000 0x400>;
+               };
+
+               i2c@1800 {
+                       compatible = "ibm,fsi-i2c-master";
+                       reg = <0x1800 0x400>;
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+
+                       cfam1_i2c0: i2c-bus@0 {
+                               reg = <0>;
+                       };
+
+                       cfam1_i2c1: i2c-bus@1 {
+                               reg = <1>;
+                       };
+
+                       cfam1_i2c2: i2c-bus@2 {
+                               reg = <2>;
+                       };
+
+                       cfam1_i2c3: i2c-bus@3 {
+                               reg = <3>;
+                       };
+
+                       cfam1_i2c4: i2c-bus@4 {
+                               reg = <4>;
+                       };
+
+                       cfam1_i2c5: i2c-bus@5 {
+                               reg = <5>;
+                       };
+
+                       cfam1_i2c6: i2c-bus@6 {
+                               reg = <6>;
+                       };
+
+                       cfam1_i2c7: i2c-bus@7 {
+                               reg = <7>;
+                       };
+
+                       cfam1_i2c8: i2c-bus@8 {
+                               reg = <8>;
+                       };
+
+                       cfam1_i2c9: i2c-bus@9 {
+                               reg = <9>;
+                       };
+
+                       cfam1_i2c10: i2c-bus@a {
+                               reg = <10>;
+                       };
+
+                       cfam1_i2c11: i2c-bus@b {
+                               reg = <11>;
+                       };
+
+                       cfam1_i2c12: i2c-bus@c {
+                               reg = <12>;
+                       };
+
+                       cfam1_i2c13: i2c-bus@d {
+                               reg = <13>;
+                       };
+
+                       cfam1_i2c14: i2c-bus@e {
+                               reg = <14>;
+                       };
+               };
+
+               sbefifo@2400 {
+                       compatible = "ibm,p9-sbefifo";
+                       reg = <0x2400 0x400>;
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+
+                       fsi_occ1: occ {
+                               compatible = "ibm,p9-occ";
+                       };
+               };
+
+               fsi_hub1: hub@3400 {
+                       compatible = "fsi-master-hub";
+                       reg = <0x3400 0x400>;
+                       #address-cells = <2>;
+                       #size-cells = <0>;
+
+                       no-scan-on-init;
+               };
+       };
+};
+
+/* Legacy OCC numbering (to get rid of when userspace is fixed) */
+&fsi_occ0 {
+       reg = <1>;
+};
+
+&fsi_occ1 {
+       reg = <2>;
+};
+
+/ {
+       aliases {
+               i2c100 = &cfam0_i2c0;
+               i2c101 = &cfam0_i2c1;
+               i2c102 = &cfam0_i2c2;
+               i2c103 = &cfam0_i2c3;
+               i2c104 = &cfam0_i2c4;
+               i2c105 = &cfam0_i2c5;
+               i2c106 = &cfam0_i2c6;
+               i2c107 = &cfam0_i2c7;
+               i2c108 = &cfam0_i2c8;
+               i2c109 = &cfam0_i2c9;
+               i2c110 = &cfam0_i2c10;
+               i2c111 = &cfam0_i2c11;
+               i2c112 = &cfam0_i2c12;
+               i2c113 = &cfam0_i2c13;
+               i2c114 = &cfam0_i2c14;
+               i2c200 = &cfam1_i2c0;
+               i2c201 = &cfam1_i2c1;
+               i2c202 = &cfam1_i2c2;
+               i2c203 = &cfam1_i2c3;
+               i2c204 = &cfam1_i2c4;
+               i2c205 = &cfam1_i2c5;
+               i2c206 = &cfam1_i2c6;
+               i2c207 = &cfam1_i2c7;
+               i2c208 = &cfam1_i2c8;
+               i2c209 = &cfam1_i2c9;
+               i2c210 = &cfam1_i2c10;
+               i2c211 = &cfam1_i2c11;
+               i2c212 = &cfam1_i2c12;
+               i2c213 = &cfam1_i2c13;
+               i2c214 = &cfam1_i2c14;
+       };
+
+};
+
+&i2c0 {
+       status = "okay";
+};
+
+&i2c1 {
+       status = "okay";
+};
+
+&i2c2 {
+       status = "okay";
+};
+
+&i2c3 {
+       status = "okay";
+
+       bmp: bmp280@77 {
+               compatible = "bosch,bmp280";
+               reg = <0x77>;
+               #io-channel-cells = <1>;
+       };
+
+       max31785@52 {
+               compatible = "maxim,max31785a";
+               reg = <0x52>;
+               #address-cells = <1>;
+               #size-cells = <0>;
+
+               fan@0 {
+                       compatible = "pmbus-fan";
+                       reg = <0>;
+                       tach-pulses = <2>;
+                       maxim,fan-rotor-input = "tach";
+                       maxim,fan-pwm-freq = <25000>;
+                       maxim,fan-dual-tach;
+                       maxim,fan-no-watchdog;
+                       maxim,fan-no-fault-ramp;
+                       maxim,fan-ramp = <2>;
+                       maxim,fan-fault-pin-mon;
+               };
+
+               fan@1 {
+                       compatible = "pmbus-fan";
+                       reg = <1>;
+                       tach-pulses = <2>;
+                       maxim,fan-rotor-input = "tach";
+                       maxim,fan-pwm-freq = <25000>;
+                       maxim,fan-dual-tach;
+                       maxim,fan-no-watchdog;
+                       maxim,fan-no-fault-ramp;
+                       maxim,fan-ramp = <2>;
+                       maxim,fan-fault-pin-mon;
+               };
+
+               fan@2 {
+                       compatible = "pmbus-fan";
+                       reg = <2>;
+                       tach-pulses = <2>;
+                       maxim,fan-rotor-input = "tach";
+                       maxim,fan-pwm-freq = <25000>;
+                       maxim,fan-dual-tach;
+                       maxim,fan-no-watchdog;
+                       maxim,fan-no-fault-ramp;
+                       maxim,fan-ramp = <2>;
+                       maxim,fan-fault-pin-mon;
+               };
+
+               fan@3 {
+                       compatible = "pmbus-fan";
+                       reg = <3>;
+                       tach-pulses = <2>;
+                       maxim,fan-rotor-input = "tach";
+                       maxim,fan-pwm-freq = <25000>;
+                       maxim,fan-dual-tach;
+                       maxim,fan-no-watchdog;
+                       maxim,fan-no-fault-ramp;
+                       maxim,fan-ramp = <2>;
+                       maxim,fan-fault-pin-mon;
+               };
+       };
+
+       dps: dps310@76 {
+               compatible = "infineon,dps310";
+               reg = <0x76>;
+               #io-channel-cells = <0>;
+       };
+
+       pca0: pca9552@60 {
+               compatible = "nxp,pca9552";
+               reg = <0x60>;
+               #address-cells = <1>;
+               #size-cells = <0>;
+
+               gpio-controller;
+               #gpio-cells = <2>;
+
+               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>;
+               };
+       };
+
+       power-supply@68 {
+               compatible = "ibm,cffps1";
+               reg = <0x68>;
+       };
+
+       power-supply@69 {
+               compatible = "ibm,cffps1";
+               reg = <0x69>;
+       };
+};
+
+&i2c4 {
+       status = "okay";
+
+       tmp423a@4c {
+               compatible = "ti,tmp423";
+               reg = <0x4c>;
+       };
+
+       ir35221@70 {
+               compatible = "infineon,ir35221";
+               reg = <0x70>;
+       };
+
+       ir35221@71 {
+               compatible = "infineon,ir35221";
+               reg = <0x71>;
+       };
+};
+
+&i2c5 {
+       status = "okay";
+
+       tmp423a@4c {
+               compatible = "ti,tmp423";
+               reg = <0x4c>;
+       };
+
+       ir35221@70 {
+               compatible = "infineon,ir35221";
+               reg = <0x70>;
+       };
+
+       ir35221@71 {
+               compatible = "infineon,ir35221";
+               reg = <0x71>;
+       };
+};
+
+&i2c7 {
+       status = "okay";
+};
+
+&i2c9 {
+       status = "okay";
+
+       tmp275@4a {
+               compatible = "ti,tmp275";
+               reg = <0x4a>;
+       };
+};
+
+&i2c10 {
+       status = "okay";
+};
+
+&i2c11 {
+       status = "okay";
+
+       pca9552: pca9552@60 {
+               compatible = "nxp,pca9552";
+               reg = <0x60>;
+               #address-cells = <1>;
+               #size-cells = <0>;
+               gpio-controller;
+               #gpio-cells = <2>;
+
+               gpio-line-names = "PS_SMBUS_RESET_N", "APSS_RESET_N",
+                       "GPU0_TH_OVERT_N_BUFF", "GPU1_TH_OVERT_N_BUFF",
+                       "GPU2_TH_OVERT_N_BUFF", "GPU3_TH_OVERT_N_BUFF",
+                       "GPU4_TH_OVERT_N_BUFF", "GPU5_TH_OVERT_N_BUFF",
+                       "GPU0_PWR_GOOD_BUFF", "GPU1_PWR_GOOD_BUFF",
+                       "GPU2_PWR_GOOD_BUFF", "GPU3_PWR_GOOD_BUFF",
+                       "GPU4_PWR_GOOD_BUFF", "GPU5_PWR_GOOD_BUFF",
+                       "12V_BREAKER_FLT_N", "THROTTLE_UNLATCHED_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>;
+               };
+       };
+
+       rtc@32 {
+               compatible = "epson,rx8900";
+               reg = <0x32>;
+       };
+
+       eeprom@51 {
+               compatible = "atmel,24c64";
+               reg = <0x51>;
+       };
+
+       ucd90160@64 {
+               compatible = "ti,ucd90160";
+               reg = <0x64>;
+       };
+};
+
+&i2c12 {
+       status = "okay";
+};
+
+&i2c13 {
+       status = "okay";
+};
+
+&ibt {
+       status = "okay";
+};
+
+&uart1 {
+       status = "okay";
+       // Workaround for A0
+       compatible = "snps,dw-apb-uart";
+};
+
+&uart5 {
+       // Workaround for A0
+       compatible = "snps,dw-apb-uart";
+};
+
+&vuart1 {
+       status = "okay";
+};
+
+&lpc_ctrl {
+       status = "okay";
+       memory-region = <&flash_memory>;
+       flash = <&spi1>;
+};
+
+&wdt1 {
+       aspeed,reset-type = "none";
+       aspeed,external-signal;
+       aspeed,ext-push-pull;
+       aspeed,ext-active-high;
+
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_wdtrst1_default>;
+};
+
+&wdt2 {
+       status = "okay";
+};
+
+&i2c0 {
+       status = "okay";
+};
+
+&i2c1 {
+       status = "okay";
+};
+
+&i2c2 {
+       status = "okay";
+};
+
+&i2c3 {
+       status = "okay";
+
+       bmp: bmp280@77 {
+               compatible = "bosch,bmp280";
+               reg = <0x77>;
+               #io-channel-cells = <1>;
+       };
+
+       max31785@52 {
+               compatible = "maxim,max31785a";
+               reg = <0x52>;
+               #address-cells = <1>;
+               #size-cells = <0>;
+
+               fan@0 {
+                       compatible = "pmbus-fan";
+                       reg = <0>;
+                       tach-pulses = <2>;
+                       maxim,fan-rotor-input = "tach";
+                       maxim,fan-pwm-freq = <25000>;
+                       maxim,fan-dual-tach;
+                       maxim,fan-no-watchdog;
+                       maxim,fan-no-fault-ramp;
+                       maxim,fan-ramp = <2>;
+                       maxim,fan-fault-pin-mon;
+               };
+
+               fan@1 {
+                       compatible = "pmbus-fan";
+                       reg = <1>;
+                       tach-pulses = <2>;
+                       maxim,fan-rotor-input = "tach";
+                       maxim,fan-pwm-freq = <25000>;
+                       maxim,fan-dual-tach;
+                       maxim,fan-no-watchdog;
+                       maxim,fan-no-fault-ramp;
+                       maxim,fan-ramp = <2>;
+                       maxim,fan-fault-pin-mon;
+               };
+
+               fan@2 {
+                       compatible = "pmbus-fan";
+                       reg = <2>;
+                       tach-pulses = <2>;
+                       maxim,fan-rotor-input = "tach";
+                       maxim,fan-pwm-freq = <25000>;
+                       maxim,fan-dual-tach;
+                       maxim,fan-no-watchdog;
+                       maxim,fan-no-fault-ramp;
+                       maxim,fan-ramp = <2>;
+                       maxim,fan-fault-pin-mon;
+               };
+
+               fan@3 {
+                       compatible = "pmbus-fan";
+                       reg = <3>;
+                       tach-pulses = <2>;
+                       maxim,fan-rotor-input = "tach";
+                       maxim,fan-pwm-freq = <25000>;
+                       maxim,fan-dual-tach;
+                       maxim,fan-no-watchdog;
+                       maxim,fan-no-fault-ramp;
+                       maxim,fan-ramp = <2>;
+                       maxim,fan-fault-pin-mon;
+               };
+       };
+
+       dps: dps310@76 {
+               compatible = "infineon,dps310";
+               reg = <0x76>;
+               #io-channel-cells = <0>;
+       };
+
+       pca0: pca9552@60 {
+               compatible = "nxp,pca9552";
+               reg = <0x60>;
+               #address-cells = <1>;
+               #size-cells = <0>;
+
+               gpio-controller;
+               #gpio-cells = <2>;
+
+               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>;
+               };
+       };
+
+       power-supply@68 {
+               compatible = "ibm,cffps1";
+               reg = <0x68>;
+       };
+
+       power-supply@69 {
+               compatible = "ibm,cffps1";
+               reg = <0x69>;
+       };
+};
+
+&i2c4 {
+       status = "okay";
+
+       tmp423a@4c {
+               compatible = "ti,tmp423";
+               reg = <0x4c>;
+       };
+
+       ir35221@70 {
+               compatible = "infineon,ir35221";
+               reg = <0x70>;
+       };
+
+       ir35221@71 {
+               compatible = "infineon,ir35221";
+               reg = <0x71>;
+       };
+};
+
+&i2c5 {
+       status = "okay";
+
+       tmp423a@4c {
+               compatible = "ti,tmp423";
+               reg = <0x4c>;
+       };
+
+       ir35221@70 {
+               compatible = "infineon,ir35221";
+               reg = <0x70>;
+       };
+
+       ir35221@71 {
+               compatible = "infineon,ir35221";
+               reg = <0x71>;
+       };
+};
+
+&i2c7 {
+       status = "okay";
+};
+
+&i2c9 {
+       status = "okay";
+
+       tmp275@4a {
+               compatible = "ti,tmp275";
+               reg = <0x4a>;
+       };
+};
+
+&i2c10 {
+       status = "okay";
+};
+
+&i2c11 {
+       status = "okay";
+
+       pca9552: pca9552@60 {
+               compatible = "nxp,pca9552";
+               reg = <0x60>;
+               #address-cells = <1>;
+               #size-cells = <0>;
+               gpio-controller;
+               #gpio-cells = <2>;
+
+               gpio-line-names = "PS_SMBUS_RESET_N", "APSS_RESET_N",
+                       "GPU0_TH_OVERT_N_BUFF", "GPU1_TH_OVERT_N_BUFF",
+                       "GPU2_TH_OVERT_N_BUFF", "GPU3_TH_OVERT_N_BUFF",
+                       "GPU4_TH_OVERT_N_BUFF", "GPU5_TH_OVERT_N_BUFF",
+                       "GPU0_PWR_GOOD_BUFF", "GPU1_PWR_GOOD_BUFF",
+                       "GPU2_PWR_GOOD_BUFF", "GPU3_PWR_GOOD_BUFF",
+                       "GPU4_PWR_GOOD_BUFF", "GPU5_PWR_GOOD_BUFF",
+                       "12V_BREAKER_FLT_N", "THROTTLE_UNLATCHED_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>;
+               };
+       };
+
+       rtc@32 {
+               compatible = "epson,rx8900";
+               reg = <0x32>;
+       };
+
+       eeprom@51 {
+               compatible = "atmel,24c64";
+               reg = <0x51>;
+       };
+
+       ucd90160@64 {
+               compatible = "ti,ucd90160";
+               reg = <0x64>;
+       };
+};
+
+&i2c12 {
+       status = "okay";
+};
+
+&i2c13 {
+       status = "okay";
+};
+
+&pinctrl {
+       /* Hog these as no driver is probed for the entire LPC block */
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_lpc_default>,
+                   <&pinctrl_lsirq_default>;
+};
index a27c88d..affd2c8 100644 (file)
                        gpios = <&gpio ASPEED_GPIO(N, 1) GPIO_ACTIVE_LOW>;
                };
 
+               power_green {
+                       gpios = <&gpio ASPEED_GPIO(F, 1) GPIO_ACTIVE_LOW>;
+               };
+
                id_blue {
                        gpios = <&gpio ASPEED_GPIO(O, 0) GPIO_ACTIVE_LOW>;
                };
index 31ea34e..569dad9 100644 (file)
                status = "okay";
                label = "bmc";
                m25p,fast-read;
+               spi-max-frequency = <50000000>;
 
                partitions {
                        #address-cells = < 1 >;
                status = "okay";
                label = "alt-bmc";
                m25p,fast-read;
+               spi-max-frequency = <50000000>;
 
                partitions {
                        #address-cells = < 1 >;
                                label = "alt-obmc-ubi";
                        };
                };
-
        };
 };
 
                status = "okay";
                label = "pnor";
                m25p,fast-read;
+               spi-max-frequency = <100000000>;
        };
 };
 
        status = "okay";
        pinctrl-names = "default";
        pinctrl-0 = <&pinctrl_rmii1_default>;
+       clocks = <&syscon ASPEED_CLK_GATE_MAC1CLK>,
+                <&syscon ASPEED_CLK_MAC1RCLK>;
+       clock-names = "MACCLK", "RCLK";
        use-ncsi;
 };
 
index 3062437..bc60ec2 100644 (file)
                status = "okay";
                label = "bmc";
                m25p,fast-read;
+               spi-max-frequency = <50000000>;
 #include "openbmc-flash-layout.dtsi"
        };
 };
                status = "okay";
                label = "pnor";
                m25p,fast-read;
+               spi-max-frequency = <100000000>;
        };
 };
 
        status = "okay";
        pinctrl-names = "default";
        pinctrl-0 = <&pinctrl_rmii1_default>;
+       clocks = <&syscon ASPEED_CLK_GATE_MAC1CLK>,
+                <&syscon ASPEED_CLK_MAC1RCLK>;
+       clock-names = "MACCLK", "RCLK";
        use-ncsi;
 };
 
index 33d7045..4a1ca8f 100644 (file)
        pinctrl-names = "default";
        pinctrl-0 = <&pinctrl_rmii1_default
                     &pinctrl_mdio1_default>;
+       clocks = <&syscon ASPEED_CLK_GATE_MAC1CLK>,
+                <&syscon ASPEED_CLK_MAC1RCLK>;
+       clock-names = "MACCLK", "RCLK";
 };
 
 &mac1 {
        status = "okay";
        pinctrl-names = "default";
        pinctrl-0 = <&pinctrl_rmii2_default>;
+       clocks = <&syscon ASPEED_CLK_GATE_MAC2CLK>,
+                <&syscon ASPEED_CLK_MAC2RCLK>;
+       clock-names = "MACCLK", "RCLK";
        use-ncsi;
 };
 
index dffb595..46c0891 100644 (file)
@@ -65,6 +65,7 @@
                        flash@0 {
                                reg = < 0 >;
                                compatible = "jedec,spi-nor";
+                               spi-max-frequency = <50000000>;
                                status = "disabled";
                        };
                        flash@1 {
                        flash@0 {
                                reg = < 0 >;
                                compatible = "jedec,spi-nor";
+                               spi-max-frequency = <50000000>;
                                status = "disabled";
                        };
                };
                                #reset-cells = <1>;
 
                                pinctrl: pinctrl {
-                                       compatible = "aspeed,g4-pinctrl";
+                                       compatible = "aspeed,ast2400-pinctrl";
                                };
 
                                p2a: p2a-control {
index f56b8d1..a259c63 100644 (file)
                        flash@0 {
                                reg = < 0 >;
                                compatible = "jedec,spi-nor";
+                               spi-max-frequency = <50000000>;
                                status = "disabled";
                        };
                        flash@1 {
                                reg = < 1 >;
                                compatible = "jedec,spi-nor";
+                               spi-max-frequency = <50000000>;
                                status = "disabled";
                        };
                        flash@2 {
                                reg = < 2 >;
                                compatible = "jedec,spi-nor";
+                               spi-max-frequency = <50000000>;
                                status = "disabled";
                        };
                };
                        flash@0 {
                                reg = < 0 >;
                                compatible = "jedec,spi-nor";
+                               spi-max-frequency = <50000000>;
                                status = "disabled";
                        };
                        flash@1 {
                                reg = < 1 >;
                                compatible = "jedec,spi-nor";
+                               spi-max-frequency = <50000000>;
                                status = "disabled";
                        };
                };
                        flash@0 {
                                reg = < 0 >;
                                compatible = "jedec,spi-nor";
+                               spi-max-frequency = <50000000>;
                                status = "disabled";
                        };
                        flash@1 {
                                reg = < 1 >;
                                compatible = "jedec,spi-nor";
+                               spi-max-frequency = <50000000>;
                                status = "disabled";
                        };
                };
                                #reset-cells = <1>;
 
                                pinctrl: pinctrl {
-                                       compatible = "aspeed,g5-pinctrl";
+                                       compatible = "aspeed,ast2500-pinctrl";
                                        aspeed,external-nodes = <&gfx &lhc>;
 
                                };
                                #gpio-cells = <2>;
                                gpio-controller;
                                compatible = "aspeed,ast2500-gpio";
-                               reg = <0x1e780000 0x1000>;
+                               reg = <0x1e780000 0x200>;
                                interrupts = <20>;
                                gpio-ranges = <&pinctrl 0 0 232>;
                                clocks = <&syscon ASPEED_CLK_APB>;
                                #interrupt-cells = <2>;
                        };
 
+                       sgpio: sgpio@1e780200 {
+                               #gpio-cells = <2>;
+                               compatible = "aspeed,ast2500-sgpio";
+                               gpio-controller;
+                               interrupts = <40>;
+                               reg = <0x1e780200 0x0100>;
+                               clocks = <&syscon ASPEED_CLK_APB>;
+                               interrupt-controller;
+                               ngpios = <8>;
+                               bus-frequency = <12000000>;
+                               pinctrl-names = "default";
+                               pinctrl-0 = <&pinctrl_sgpm_default>;
+                               status = "disabled";
+                       };
+
                        rtc: rtc@1e781000 {
                                compatible = "aspeed,ast2500-rtc";
                                reg = <0x1e781000 0x18>;
index 5b8bf58..045ce66 100644 (file)
                groups = "SD2";
        };
 
-       pinctrl_sd3_default: sd3_default {
-               function = "SD3";
-               groups = "SD3";
-       };
-
        pinctrl_emmc_default: emmc_default {
-               function = "SD3";
-               groups = "EMMC";
+               function = "EMMC";
+               groups = "EMMCG4";
        };
 
        pinctrl_sgpm1_default: sgpm1_default {
index 3a1422f..5f6142d 100644 (file)
        interrupt-parent = <&gic>;
 
        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;
+               serial0 = &uart1;
+               serial1 = &uart2;
+               serial2 = &uart3;
+               serial3 = &uart4;
                serial4 = &uart5;
+               serial5 = &vuart1;
+               serial6 = &vuart2;
        };
 
 
                            <0x40466000 0x2000>;
                        };
 
+               fmc: spi@1e620000 {
+                       reg = < 0x1e620000 0xc4
+                               0x20000000 0x10000000 >;
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       compatible = "aspeed,ast2600-fmc";
+                       clocks = <&syscon ASPEED_CLK_AHB>;
+                       status = "disabled";
+                       interrupts = <GIC_SPI 39 IRQ_TYPE_LEVEL_HIGH>;
+                       flash@0 {
+                               reg = < 0 >;
+                               compatible = "jedec,spi-nor";
+                               spi-max-frequency = <50000000>;
+                               status = "disabled";
+                       };
+                       flash@1 {
+                               reg = < 1 >;
+                               compatible = "jedec,spi-nor";
+                               spi-max-frequency = <50000000>;
+                               status = "disabled";
+                       };
+                       flash@2 {
+                               reg = < 2 >;
+                               compatible = "jedec,spi-nor";
+                               spi-max-frequency = <50000000>;
+                               status = "disabled";
+                       };
+               };
+
+               spi1: spi@1e630000 {
+                       reg = < 0x1e630000 0xc4
+                               0x30000000 0x10000000 >;
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       compatible = "aspeed,ast2600-spi";
+                       clocks = <&syscon ASPEED_CLK_AHB>;
+                       status = "disabled";
+                       flash@0 {
+                               reg = < 0 >;
+                               compatible = "jedec,spi-nor";
+                               spi-max-frequency = <50000000>;
+                               status = "disabled";
+                       };
+                       flash@1 {
+                               reg = < 1 >;
+                               compatible = "jedec,spi-nor";
+                               spi-max-frequency = <50000000>;
+                               status = "disabled";
+                       };
+               };
+
+               spi2: spi@1e631000 {
+                       reg = < 0x1e631000 0xc4
+                               0x50000000 0x10000000 >;
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       compatible = "aspeed,ast2600-spi";
+                       clocks = <&syscon ASPEED_CLK_AHB>;
+                       status = "disabled";
+                       flash@0 {
+                               reg = < 0 >;
+                               compatible = "jedec,spi-nor";
+                               spi-max-frequency = <50000000>;
+                               status = "disabled";
+                       };
+                       flash@1 {
+                               reg = < 1 >;
+                               compatible = "jedec,spi-nor";
+                               spi-max-frequency = <50000000>;
+                               status = "disabled";
+                       };
+                       flash@2 {
+                               reg = < 2 >;
+                               compatible = "jedec,spi-nor";
+                               spi-max-frequency = <50000000>;
+                               status = "disabled";
+                       };
+
+                       fsim0: fsi@1e79b000 {
+                               compatible = "aspeed,ast2600-fsi-master", "fsi-master";
+                               reg = <0x1e79b000 0x94>;
+                               interrupts = <GIC_SPI 100 IRQ_TYPE_LEVEL_HIGH>;
+                               pinctrl-names = "default";
+                               pinctrl-0 = <&pinctrl_fsi1_default>;
+                               clocks = <&syscon ASPEED_CLK_GATE_FSICLK>;
+                               status = "disabled";
+                       };
+
+                       fsim1: fsi@1e79b100 {
+                               compatible = "aspeed,ast2600-fsi-master", "fsi-master";
+                               reg = <0x1e79b100 0x94>;
+                               interrupts = <GIC_SPI 101 IRQ_TYPE_LEVEL_HIGH>;
+                               pinctrl-names = "default";
+                               pinctrl-0 = <&pinctrl_fsi2_default>;
+                               clocks = <&syscon ASPEED_CLK_GATE_FSICLK>;
+                               status = "disabled";
+                       };
+               };
+
                mdio0: mdio@1e650000 {
                        compatible = "aspeed,ast2600-mdio";
                        reg = <0x1e650000 0x8>;
                        #address-cells = <1>;
                        #size-cells = <0>;
                        status = "disabled";
+                       pinctrl-names = "default";
+                       pinctrl-0 = <&pinctrl_mdio1_default>;
                };
 
                mdio1: mdio@1e650008 {
                        #address-cells = <1>;
                        #size-cells = <0>;
                        status = "disabled";
+                       pinctrl-names = "default";
+                       pinctrl-0 = <&pinctrl_mdio2_default>;
                };
 
                mdio2: mdio@1e650010 {
                        #address-cells = <1>;
                        #size-cells = <0>;
                        status = "disabled";
+                       pinctrl-names = "default";
+                       pinctrl-0 = <&pinctrl_mdio3_default>;
                };
 
                mdio3: mdio@1e650018 {
                        #address-cells = <1>;
                        #size-cells = <0>;
                        status = "disabled";
+                       pinctrl-names = "default";
+                       pinctrl-0 = <&pinctrl_mdio4_default>;
                };
 
                mac0: ftgmac@1e660000 {
                                quality = <100>;
                        };
 
+                       gpio0: gpio@1e780000 {
+                               #gpio-cells = <2>;
+                               gpio-controller;
+                               compatible = "aspeed,ast2600-gpio";
+                               reg = <0x1e780000 0x800>;
+                               interrupts = <GIC_SPI 40 IRQ_TYPE_LEVEL_HIGH>;
+                               gpio-ranges = <&pinctrl 0 0 208>;
+                               ngpios = <208>;
+                               clocks = <&syscon ASPEED_CLK_APB2>;
+                               interrupt-controller;
+                               #interrupt-cells = <2>;
+                       };
+
+                       gpio1: gpio@1e780800 {
+                               #gpio-cells = <2>;
+                               gpio-controller;
+                               compatible = "aspeed,ast2600-gpio";
+                               reg = <0x1e780800 0x800>;
+                               interrupts = <GIC_SPI 11 IRQ_TYPE_LEVEL_HIGH>;
+                               gpio-ranges = <&pinctrl 0 208 36>;
+                               ngpios = <36>;
+                               clocks = <&syscon ASPEED_CLK_APB1>;
+                               interrupt-controller;
+                               #interrupt-cells = <2>;
+                       };
+
                        rtc: rtc@1e781000 {
                                compatible = "aspeed,ast2600-rtc";
                                reg = <0x1e781000 0x18>;
                                status = "disabled";
                        };
 
+                       timer: timer@1e782000 {
+                               compatible = "aspeed,ast2600-timer";
+                               reg = <0x1e782000 0x90>;
+                               interrupts-extended = <&gic  GIC_SPI 16 IRQ_TYPE_LEVEL_HIGH>,
+                                               <&gic  GIC_SPI 17 IRQ_TYPE_LEVEL_HIGH>,
+                                               <&gic  GIC_SPI 18 IRQ_TYPE_LEVEL_HIGH>,
+                                               <&gic  GIC_SPI 19 IRQ_TYPE_LEVEL_HIGH>,
+                                               <&gic  GIC_SPI 20 IRQ_TYPE_LEVEL_HIGH>,
+                                               <&gic  GIC_SPI 21 IRQ_TYPE_LEVEL_HIGH>,
+                                               <&gic  GIC_SPI 22 IRQ_TYPE_LEVEL_HIGH>,
+                                               <&gic  GIC_SPI 23 IRQ_TYPE_LEVEL_HIGH>;
+                               clocks = <&syscon ASPEED_CLK_APB1>;
+                               clock-names = "PCLK";
+                        };
+
+                       uart1: serial@1e783000 {
+                               compatible = "ns16550a";
+                               reg = <0x1e783000 0x20>;
+                               reg-shift = <2>;
+                               reg-io-width = <4>;
+                               interrupts = <GIC_SPI 47 IRQ_TYPE_LEVEL_HIGH>;
+                               clocks = <&syscon ASPEED_CLK_GATE_UART1CLK>;
+                               resets = <&lpc_reset 4>;
+                               no-loopback-test;
+                               pinctrl-names = "default";
+                               pinctrl-0 = <&pinctrl_txd1_default &pinctrl_rxd1_default>;
+                               status = "disabled";
+                       };
+
                        uart5: serial@1e784000 {
                                compatible = "ns16550a";
                                reg = <0x1e784000 0x1000>;
                                status = "disabled";
                        };
 
+                       lpc: lpc@1e789000 {
+                               compatible = "aspeed,ast2600-lpc", "simple-mfd";
+                               reg = <0x1e789000 0x1000>;
+
+                               #address-cells = <1>;
+                               #size-cells = <1>;
+                               ranges = <0x0 0x1e789000 0x1000>;
+
+                               lpc_bmc: lpc-bmc@0 {
+                                       compatible = "aspeed,ast2600-lpc-bmc", "simple-mfd", "syscon";
+                                       reg = <0x0 0x80>;
+                                       reg-io-width = <4>;
+
+                                       #address-cells = <1>;
+                                       #size-cells = <1>;
+                                       ranges = <0x0 0x0 0x80>;
+
+                                       kcs1: kcs1@0 {
+                                               compatible = "aspeed,ast2600-kcs-bmc";
+                                               interrupts = <GIC_SPI 138 IRQ_TYPE_LEVEL_HIGH>;
+                                               kcs_chan = <1>;
+                                               status = "disabled";
+                                       };
+                                       kcs2: kcs2@0 {
+                                               compatible = "aspeed,ast2600-kcs-bmc";
+                                               interrupts = <GIC_SPI 139 IRQ_TYPE_LEVEL_HIGH>;
+                                               kcs_chan = <2>;
+                                               status = "disabled";
+                                       };
+                                       kcs3: kcs3@0 {
+                                               compatible = "aspeed,ast2600-kcs-bmc";
+                                               interrupts = <GIC_SPI 140 IRQ_TYPE_LEVEL_HIGH>;
+                                               kcs_chan = <3>;
+                                               status = "disabled";
+                                       };
+                               };
+
+                               lpc_host: lpc-host@80 {
+                                       compatible = "aspeed,ast2600-lpc-host", "simple-mfd", "syscon";
+                                       reg = <0x80 0x1e0>;
+                                       reg-io-width = <4>;
+
+                                       #address-cells = <1>;
+                                       #size-cells = <1>;
+                                       ranges = <0x0 0x80 0x1e0>;
+
+                                       kcs4: kcs4@0 {
+                                               compatible = "aspeed,ast2600-kcs-bmc";
+                                               interrupts = <GIC_SPI 141 IRQ_TYPE_LEVEL_HIGH>;
+                                               kcs_chan = <4>;
+                                               status = "disabled";
+                                       };
+
+                                       lpc_ctrl: lpc-ctrl@0 {
+                                               compatible = "aspeed,ast2600-lpc-ctrl";
+                                               reg = <0x0 0x80>;
+                                               clocks = <&syscon ASPEED_CLK_GATE_LCLK>;
+                                               status = "disabled";
+                                       };
+
+                                       lpc_snoop: lpc-snoop@0 {
+                                               compatible = "aspeed,ast2600-lpc-snoop";
+                                               reg = <0x0 0x80>;
+                                               interrupts = <GIC_SPI 144 IRQ_TYPE_LEVEL_HIGH>;
+                                               status = "disabled";
+                                       };
+
+                                       lhc: lhc@20 {
+                                               compatible = "aspeed,ast2600-lhc";
+                                               reg = <0x20 0x24 0x48 0x8>;
+                                       };
+
+                                       lpc_reset: reset-controller@18 {
+                                               compatible = "aspeed,ast2600-lpc-reset";
+                                               reg = <0x18 0x4>;
+                                               #reset-cells = <1>;
+                                       };
+
+                                       ibt: ibt@c0 {
+                                               compatible = "aspeed,ast2600-ibt-bmc";
+                                               reg = <0xc0 0x18>;
+                                               interrupts = <GIC_SPI 143 IRQ_TYPE_LEVEL_HIGH>;
+                                               status = "disabled";
+                                       };
+                               };
+                       };
+
                        sdc: sdc@1e740000 {
                                compatible = "aspeed,ast2600-sd-controller";
                                reg = <0x1e740000 0x100>;
                                };
                        };
 
-                       emmc: sdc@1e750000 {
+                       emmc_controller: sdc@1e750000 {
                                compatible = "aspeed,ast2600-sd-controller";
                                reg = <0x1e750000 0x100>;
                                #address-cells = <1>;
                                clocks = <&syscon ASPEED_CLK_GATE_EMMCCLK>;
                                status = "disabled";
 
-                               sdhci@1e750100 {
+                               emmc: sdhci@1e750100 {
                                        compatible = "aspeed,ast2600-sdhci";
                                        reg = <0x100 0x100>;
                                        sdhci,auto-cmd12;
                                        pinctrl-0 = <&pinctrl_emmc_default>;
                                };
                        };
+
+                       vuart1: serial@1e787000 {
+                               compatible = "aspeed,ast2500-vuart";
+                               reg = <0x1e787000 0x40>;
+                               reg-shift = <2>;
+                               interrupts = <GIC_SPI 147 IRQ_TYPE_LEVEL_HIGH>;
+                               clocks = <&syscon ASPEED_CLK_APB1>;
+                               no-loopback-test;
+                               status = "disabled";
+                       };
+
+                       vuart2: serial@1e788000 {
+                               compatible = "aspeed,ast2500-vuart";
+                               reg = <0x1e788000 0x40>;
+                               reg-shift = <2>;
+                               interrupts = <GIC_SPI 148 IRQ_TYPE_LEVEL_HIGH>;
+                               clocks = <&syscon ASPEED_CLK_APB1>;
+                               no-loopback-test;
+                               status = "disabled";
+                       };
+
+                       uart2: serial@1e78d000 {
+                               compatible = "ns16550a";
+                               reg = <0x1e78d000 0x20>;
+                               reg-shift = <2>;
+                               reg-io-width = <4>;
+                               interrupts = <GIC_SPI 48 IRQ_TYPE_LEVEL_HIGH>;
+                               clocks = <&syscon ASPEED_CLK_GATE_UART2CLK>;
+                               resets = <&lpc_reset 5>;
+                               no-loopback-test;
+                               pinctrl-names = "default";
+                               pinctrl-0 = <&pinctrl_txd2_default &pinctrl_rxd2_default>;
+                               status = "disabled";
+                       };
+
+                       uart3: serial@1e78e000 {
+                               compatible = "ns16550a";
+                               reg = <0x1e78e000 0x20>;
+                               reg-shift = <2>;
+                               reg-io-width = <4>;
+                               interrupts = <GIC_SPI 49 IRQ_TYPE_LEVEL_HIGH>;
+                               clocks = <&syscon ASPEED_CLK_GATE_UART3CLK>;
+                               resets = <&lpc_reset 6>;
+                               no-loopback-test;
+                               pinctrl-names = "default";
+                               pinctrl-0 = <&pinctrl_txd3_default &pinctrl_rxd3_default>;
+                               status = "disabled";
+                       };
+
+                       uart4: serial@1e78f000 {
+                               compatible = "ns16550a";
+                               reg = <0x1e78f000 0x20>;
+                               reg-shift = <2>;
+                               reg-io-width = <4>;
+                               interrupts = <GIC_SPI 50 IRQ_TYPE_LEVEL_HIGH>;
+                               clocks = <&syscon ASPEED_CLK_GATE_UART4CLK>;
+                               resets = <&lpc_reset 7>;
+                               no-loopback-test;
+                               pinctrl-names = "default";
+                               pinctrl-0 = <&pinctrl_txd4_default &pinctrl_rxd4_default>;
+                               status = "disabled";
+                       };
+
+                       i2c: bus@1e78a000 {
+                               compatible = "simple-bus";
+                               #address-cells = <1>;
+                               #size-cells = <1>;
+                               ranges = <0 0x1e78a000 0x1000>;
+                       };
+
                };
        };
 };
 
 #include "aspeed-g6-pinctrl.dtsi"
+
+&i2c {
+       i2c0: i2c-bus@80 {
+               #address-cells = <1>;
+               #size-cells = <0>;
+               #interrupt-cells = <1>;
+               reg = <0x80 0x80>;
+               compatible = "aspeed,ast2600-i2c-bus";
+               clocks = <&syscon ASPEED_CLK_APB2>;
+               resets = <&syscon ASPEED_RESET_I2C>;
+               interrupts = <GIC_SPI 110 IRQ_TYPE_LEVEL_HIGH>;
+               bus-frequency = <100000>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&pinctrl_i2c1_default>;
+               status = "disabled";
+       };
+
+       i2c1: i2c-bus@100 {
+               #address-cells = <1>;
+               #size-cells = <0>;
+               #interrupt-cells = <1>;
+               reg = <0x100 0x80>;
+               compatible = "aspeed,ast2600-i2c-bus";
+               clocks = <&syscon ASPEED_CLK_APB2>;
+               resets = <&syscon ASPEED_RESET_I2C>;
+               interrupts = <GIC_SPI 111 IRQ_TYPE_LEVEL_HIGH>;
+               bus-frequency = <100000>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&pinctrl_i2c2_default>;
+               status = "disabled";
+       };
+
+       i2c2: i2c-bus@180 {
+               #address-cells = <1>;
+               #size-cells = <0>;
+               #interrupt-cells = <1>;
+               reg = <0x180 0x80>;
+               compatible = "aspeed,ast2600-i2c-bus";
+               clocks = <&syscon ASPEED_CLK_APB2>;
+               resets = <&syscon ASPEED_RESET_I2C>;
+               interrupts = <GIC_SPI 112 IRQ_TYPE_LEVEL_HIGH>;
+               bus-frequency = <100000>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&pinctrl_i2c3_default>;
+               status = "disabled";
+       };
+
+       i2c3: i2c-bus@200 {
+               #address-cells = <1>;
+               #size-cells = <0>;
+               #interrupt-cells = <1>;
+               reg = <0x200 0x80>;
+               compatible = "aspeed,ast2600-i2c-bus";
+               clocks = <&syscon ASPEED_CLK_APB2>;
+               resets = <&syscon ASPEED_RESET_I2C>;
+               interrupts = <GIC_SPI 113 IRQ_TYPE_LEVEL_HIGH>;
+               bus-frequency = <100000>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&pinctrl_i2c4_default>;
+               status = "disabled";
+       };
+
+       i2c4: i2c-bus@280 {
+               #address-cells = <1>;
+               #size-cells = <0>;
+               #interrupt-cells = <1>;
+               reg = <0x280 0x80>;
+               compatible = "aspeed,ast2600-i2c-bus";
+               clocks = <&syscon ASPEED_CLK_APB2>;
+               resets = <&syscon ASPEED_RESET_I2C>;
+               interrupts = <GIC_SPI 114 IRQ_TYPE_LEVEL_HIGH>;
+               bus-frequency = <100000>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&pinctrl_i2c5_default>;
+               status = "disabled";
+       };
+
+       i2c5: i2c-bus@300 {
+               #address-cells = <1>;
+               #size-cells = <0>;
+               #interrupt-cells = <1>;
+               reg = <0x300 0x80>;
+               compatible = "aspeed,ast2600-i2c-bus";
+               clocks = <&syscon ASPEED_CLK_APB2>;
+               resets = <&syscon ASPEED_RESET_I2C>;
+               interrupts = <GIC_SPI 115 IRQ_TYPE_LEVEL_HIGH>;
+               bus-frequency = <100000>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&pinctrl_i2c6_default>;
+               status = "disabled";
+       };
+
+       i2c6: i2c-bus@380 {
+               #address-cells = <1>;
+               #size-cells = <0>;
+               #interrupt-cells = <1>;
+               reg = <0x380 0x80>;
+               compatible = "aspeed,ast2600-i2c-bus";
+               clocks = <&syscon ASPEED_CLK_APB2>;
+               resets = <&syscon ASPEED_RESET_I2C>;
+               interrupts = <GIC_SPI 116 IRQ_TYPE_LEVEL_HIGH>;
+               bus-frequency = <100000>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&pinctrl_i2c7_default>;
+               status = "disabled";
+       };
+
+       i2c7: i2c-bus@400 {
+               #address-cells = <1>;
+               #size-cells = <0>;
+               #interrupt-cells = <1>;
+               reg = <0x400 0x80>;
+               compatible = "aspeed,ast2600-i2c-bus";
+               clocks = <&syscon ASPEED_CLK_APB2>;
+               resets = <&syscon ASPEED_RESET_I2C>;
+               interrupts = <GIC_SPI 117 IRQ_TYPE_LEVEL_HIGH>;
+               bus-frequency = <100000>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&pinctrl_i2c8_default>;
+               status = "disabled";
+       };
+
+       i2c8: i2c-bus@480 {
+               #address-cells = <1>;
+               #size-cells = <0>;
+               #interrupt-cells = <1>;
+               reg = <0x480 0x80>;
+               compatible = "aspeed,ast2600-i2c-bus";
+               clocks = <&syscon ASPEED_CLK_APB2>;
+               resets = <&syscon ASPEED_RESET_I2C>;
+               interrupts = <GIC_SPI 118 IRQ_TYPE_LEVEL_HIGH>;
+               bus-frequency = <100000>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&pinctrl_i2c9_default>;
+               status = "disabled";
+       };
+
+       i2c9: i2c-bus@500 {
+               #address-cells = <1>;
+               #size-cells = <0>;
+               #interrupt-cells = <1>;
+               reg = <0x500 0x80>;
+               compatible = "aspeed,ast2600-i2c-bus";
+               clocks = <&syscon ASPEED_CLK_APB2>;
+               resets = <&syscon ASPEED_RESET_I2C>;
+               interrupts = <GIC_SPI 119 IRQ_TYPE_LEVEL_HIGH>;
+               bus-frequency = <100000>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&pinctrl_i2c10_default>;
+               status = "disabled";
+       };
+
+       i2c10: i2c-bus@580 {
+               #address-cells = <1>;
+               #size-cells = <0>;
+               #interrupt-cells = <1>;
+               reg = <0x580 0x80>;
+               compatible = "aspeed,ast2600-i2c-bus";
+               clocks = <&syscon ASPEED_CLK_APB2>;
+               resets = <&syscon ASPEED_RESET_I2C>;
+               interrupts = <GIC_SPI 120 IRQ_TYPE_LEVEL_HIGH>;
+               bus-frequency = <100000>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&pinctrl_i2c11_default>;
+               status = "disabled";
+       };
+
+       i2c11: i2c-bus@600 {
+               #address-cells = <1>;
+               #size-cells = <0>;
+               #interrupt-cells = <1>;
+               reg = <0x600 0x80>;
+               compatible = "aspeed,ast2600-i2c-bus";
+               clocks = <&syscon ASPEED_CLK_APB2>;
+               resets = <&syscon ASPEED_RESET_I2C>;
+               interrupts = <GIC_SPI 121 IRQ_TYPE_LEVEL_HIGH>;
+               bus-frequency = <100000>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&pinctrl_i2c12_default>;
+               status = "disabled";
+       };
+
+       i2c12: i2c-bus@680 {
+               #address-cells = <1>;
+               #size-cells = <0>;
+               #interrupt-cells = <1>;
+               reg = <0x680 0x80>;
+               compatible = "aspeed,ast2600-i2c-bus";
+               clocks = <&syscon ASPEED_CLK_APB2>;
+               resets = <&syscon ASPEED_RESET_I2C>;
+               interrupts = <GIC_SPI 122 IRQ_TYPE_LEVEL_HIGH>;
+               bus-frequency = <100000>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&pinctrl_i2c13_default>;
+               status = "disabled";
+       };
+
+       i2c13: i2c-bus@700 {
+               #address-cells = <1>;
+               #size-cells = <0>;
+               #interrupt-cells = <1>;
+               reg = <0x700 0x80>;
+               compatible = "aspeed,ast2600-i2c-bus";
+               clocks = <&syscon ASPEED_CLK_APB2>;
+               resets = <&syscon ASPEED_RESET_I2C>;
+               interrupts = <GIC_SPI 123 IRQ_TYPE_LEVEL_HIGH>;
+               bus-frequency = <100000>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&pinctrl_i2c14_default>;
+               status = "disabled";
+       };
+
+       i2c14: i2c-bus@780 {
+               #address-cells = <1>;
+               #size-cells = <0>;
+               #interrupt-cells = <1>;
+               reg = <0x780 0x80>;
+               compatible = "aspeed,ast2600-i2c-bus";
+               clocks = <&syscon ASPEED_CLK_APB2>;
+               resets = <&syscon ASPEED_RESET_I2C>;
+               interrupts = <GIC_SPI 124 IRQ_TYPE_LEVEL_HIGH>;
+               bus-frequency = <100000>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&pinctrl_i2c15_default>;
+               status = "disabled";
+       };
+
+       i2c15: i2c-bus@800 {
+               #address-cells = <1>;
+               #size-cells = <0>;
+               #interrupt-cells = <1>;
+               reg = <0x800 0x80>;
+               compatible = "aspeed,ast2600-i2c-bus";
+               clocks = <&syscon ASPEED_CLK_APB2>;
+               resets = <&syscon ASPEED_RESET_I2C>;
+               interrupts = <GIC_SPI 125 IRQ_TYPE_LEVEL_HIGH>;
+               bus-frequency = <100000>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&pinctrl_i2c16_default>;
+               status = "disabled";
+       };
+};
diff --git a/arch/arm/boot/dts/ast2500-facebook-netbmc-common.dtsi b/arch/arm/boot/dts/ast2500-facebook-netbmc-common.dtsi
new file mode 100644 (file)
index 0000000..7a395ba
--- /dev/null
@@ -0,0 +1,96 @@
+// SPDX-License-Identifier: GPL-2.0+
+// Copyright (c) 2019 Facebook Inc.
+
+#include "aspeed-g5.dtsi"
+
+/ {
+       memory@80000000 {
+               reg = <0x80000000 0x40000000>;
+       };
+};
+
+/*
+ * Update reset type to "system" (full chip) to fix warm reboot hang issue
+ * when reset type is set to default ("soc", gated by reset mask registers).
+ */
+&wdt1 {
+       status = "okay";
+       aspeed,reset-type = "system";
+};
+
+&wdt2 {
+       status = "disabled";
+};
+
+&uart1 {
+       status = "okay";
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_txd1_default
+                    &pinctrl_rxd1_default>;
+};
+
+&uart3 {
+       status = "okay";
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_txd3_default
+                    &pinctrl_rxd3_default>;
+};
+
+&uart5 {
+       status = "okay";
+};
+
+&fmc {
+       status = "okay";
+
+       fmc_flash0: flash@0 {
+               status = "okay";
+               m25p,fast-read;
+               label = "spi0.0";
+
+#include "facebook-bmc-flash-layout.dtsi"
+       };
+
+       fmc_flash1: flash@1 {
+               status = "okay";
+               m25p,fast-read;
+               label = "spi0.1";
+
+               partitions {
+                       compatible = "fixed-partitions";
+                       #address-cells = <1>;
+                       #size-cells = <1>;
+
+                       flash1@0 {
+                               reg = <0x0 0x2000000>;
+                               label = "flash1";
+                       };
+               };
+       };
+};
+
+&mac1 {
+       status = "okay";
+       no-hw-checksum;
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_rgmii2_default &pinctrl_mdio2_default>;
+};
+
+&rtc {
+       status = "okay";
+};
+
+&vhub {
+       status = "okay";
+};
+
+&sdmmc {
+       status = "okay";
+};
+
+&sdhci1 {
+       status = "okay";
+
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_sd2_default>;
+};
diff --git a/arch/arm/boot/dts/at91-kizbox2-2.dts b/arch/arm/boot/dts/at91-kizbox2-2.dts
new file mode 100644 (file)
index 0000000..cab8b35
--- /dev/null
@@ -0,0 +1,26 @@
+// SPDX-License-Identifier: GPL-2.0
+/*
+ * at91-kizbox2-2.dts - Device Tree file for the Kizbox2 with
+ * two head board
+ *
+ * Copyright (C) 2015 Overkiz SAS
+ *
+ * Authors: Antoine Aubert <a.aubert@overkiz.com>
+ *         KĂ©vin Raymond <k.raymond@overkiz.com>
+ */
+/dts-v1/;
+#include "at91-kizbox2-common.dtsi"
+
+/ {
+       model = "Overkiz Kizbox 2 with two heads";
+       compatible = "overkiz,kizbox2-2", "atmel,sama5d31",
+                    "atmel,sama5d3", "atmel,sama5";
+};
+
+&usart1 {
+       status = "okay";
+};
+
+&usart2 {
+       status = "okay";
+};
diff --git a/arch/arm/boot/dts/at91-kizbox2-common.dtsi b/arch/arm/boot/dts/at91-kizbox2-common.dtsi
new file mode 100644 (file)
index 0000000..af38253
--- /dev/null
@@ -0,0 +1,258 @@
+// SPDX-License-Identifier: GPL-2.0
+/*
+ * at91-kizbox2_common.dtsi - Device Tree Include file for
+ * Overkiz Kizbox 2 family SoC
+ *
+ * Copyright (C) 2014-2018 Overkiz SAS
+ *
+ * Authors: Antoine Aubert <a.aubert@overkiz.com>
+ *          GaĂ«l Portay <g.portay@overkiz.com>
+ *          KĂ©vin Raymond <k.raymond@overkiz.com>
+ */
+#include "sama5d31.dtsi"
+
+/ {
+       chosen {
+               bootargs = "ubi.mtd=ubi";
+               stdout-path = &dbgu;
+       };
+
+       memory {
+               reg = <0x20000000 0x10000000>;
+       };
+
+       clocks {
+               slow_xtal {
+                       clock-frequency = <32768>;
+               };
+
+               main_xtal {
+                       clock-frequency = <12000000>;
+               };
+       };
+
+       gpio_keys {
+               compatible = "gpio-keys";
+               #address-cells = <1>;
+               #size-cells = <0>;
+
+               prog {
+                       label = "PB_PROG";
+                       gpios = <&pioE 27 GPIO_ACTIVE_LOW>;
+                       linux,code = <0x102>;
+                       wakeup-source;
+               };
+
+               reset {
+                       label = "PB_RST";
+                       gpios = <&pioE 29 GPIO_ACTIVE_LOW>;
+                       linux,code = <0x100>;
+                       wakeup-source;
+               };
+
+               user {
+                       label = "PB_USER";
+                       gpios = <&pioE 31 GPIO_ACTIVE_HIGH>;
+                       linux,code = <0x101>;
+                       wakeup-source;
+               };
+       };
+
+       pwm_leds {
+               compatible = "pwm-leds";
+
+               blue {
+                       label = "pwm:blue:user";
+                       pwms = <&pwm0 2 10000000 0>;
+                       max-brightness = <255>;
+                       linux,default-trigger = "none";
+               };
+
+               green {
+                       label = "pwm:green:user";
+                       pwms = <&pwm0 1 10000000 0>;
+                       max-brightness = <255>;
+                       linux,default-trigger = "default-on";
+               };
+
+               red {
+                       label = "pwm:red:user";
+                       pwms = <&pwm0 0 10000000 0>;
+                       max-brightness = <255>;
+                       linux,default-trigger = "default-on";
+               };
+       };
+};
+
+&i2c1 {
+       status = "okay";
+
+       pmic: act8865@5b {
+               compatible = "active-semi,act8865";
+               reg = <0x5b>;
+               status = "okay";
+
+               regulators {
+                       vcc_1v8_reg: DCDC_REG1 {
+                               regulator-name = "VCC_1V8";
+                               regulator-min-microvolt = <1800000>;
+                               regulator-max-microvolt = <1800000>;
+                               regulator-always-on;
+                       };
+
+                       vcc_1v2_reg: DCDC_REG2 {
+                               regulator-name = "VCC_1V2";
+                               regulator-min-microvolt = <1200000>;
+                               regulator-max-microvolt = <1200000>;
+                               regulator-always-on;
+                       };
+
+                       vcc_3v3_reg: DCDC_REG3 {
+                               regulator-name = "VCC_3V3";
+                               regulator-min-microvolt = <3300000>;
+                               regulator-max-microvolt = <3300000>;
+                               regulator-always-on;
+                       };
+
+                       vddfuse_reg: LDO_REG1 {
+                               regulator-name = "FUSE_2V5";
+                               regulator-min-microvolt = <2500000>;
+                               regulator-max-microvolt = <2500000>;
+                       };
+
+                       vddana_reg: LDO_REG2 {
+                               regulator-name = "VDDANA";
+                               regulator-min-microvolt = <3300000>;
+                               regulator-max-microvolt = <3300000>;
+                               regulator-always-on;
+                       };
+
+                       vled_reg: LDO_REG3 {
+                               regulator-name = "VLED";
+                               regulator-min-microvolt = <3300000>;
+                               regulator-max-microvolt = <3300000>;
+                               regulator-always-on;
+                       };
+
+                       v3v8_rf_reg: LDO_REG4 {
+                               regulator-name = "V3V8_RF";
+                               regulator-min-microvolt = <3800000>;
+                               regulator-max-microvolt = <3800000>;
+                               regulator-always-on;
+                       };
+               };
+       };
+};
+
+&usart0 {
+       atmel,use-dma-rx;
+       atmel,use-dma-tx;
+       status = "disabled";
+};
+
+&usart1 {
+       atmel,use-dma-rx;
+       atmel,use-dma-tx;
+       status = "disabled";
+};
+
+&usart2 {
+       atmel,use-dma-rx;
+       atmel,use-dma-tx;
+       status = "disabled";
+};
+
+&pwm0 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_pwm0_pwmh0_1
+                    &pinctrl_pwm0_pwmh1_1
+                    &pinctrl_pwm0_pwmh2_0>;
+       status = "okay";
+};
+
+&adc0 {
+       atmel,adc-vref = <3333>;
+       status = "okay";
+};
+
+&macb1 {
+       phy-mode = "rmii";
+       status = "okay";
+};
+
+&dbgu {
+       status = "okay";
+};
+
+&watchdog {
+       status = "okay";
+};
+
+&ebi {
+       pinctrl-0 = <&pinctrl_ebi_nand_addr>;
+       pinctrl-names = "default";
+       status = "okay";
+};
+
+&nand_controller {
+       status = "okay";
+
+       nand@3 {
+               reg = <0x3 0x0 0x2>;
+               atmel,rb = <0>;
+               nand-bus-width = <8>;
+               nand-ecc-mode = "hw";
+               nand-ecc-strength = <4>;
+               nand-ecc-step-size = <512>;
+               nand-on-flash-bbt;
+               label = "atmel_nand";
+
+               partitions {
+                       compatible = "fixed-partitions";
+                       #address-cells = <1>;
+                       #size-cells = <1>;
+
+                       bootstrap@0 {
+                               label = "bootstrap";
+                               reg = <0x0 0x20000>;
+                       };
+
+                       ubi@20000 {
+                               label = "ubi";
+                               reg = <0x20000 0x7fe0000>;
+                       };
+               };
+       };
+};
+
+&usb1 {
+       status = "okay";
+};
+
+&usb2 {
+       status = "okay";
+};
+
+/* WMBUS (inverted with IO in the latest schematic) */
+&pinctrl_usart0 {
+       atmel,pins =
+               <AT91_PIOD 17 AT91_PERIPH_A AT91_PINCTRL_NONE
+                AT91_PIOD 18 AT91_PERIPH_A AT91_PINCTRL_PULL_UP
+                AT91_PIOE 2 AT91_PERIPH_GPIO AT91_PINCTRL_MULTI_DRIVE>;
+};
+
+/* RTS */
+&pinctrl_usart1 {
+       atmel,pins =
+               <AT91_PIOB 28 AT91_PERIPH_A AT91_PINCTRL_NONE
+                AT91_PIOB 29 AT91_PERIPH_A AT91_PINCTRL_PULL_UP
+                AT91_PIOE 7 AT91_PERIPH_GPIO AT91_PINCTRL_MULTI_DRIVE>;
+};
+
+/* IO (inverted with WMBUS in the latest schematic) */
+&pinctrl_usart2 {
+       atmel,pins =
+               <AT91_PIOE 25 AT91_PERIPH_B AT91_PINCTRL_NONE
+                AT91_PIOE 26 AT91_PERIPH_B AT91_PINCTRL_PULL_UP
+                AT91_PIOE 8 AT91_PERIPH_GPIO AT91_PINCTRL_MULTI_DRIVE>;
+};
diff --git a/arch/arm/boot/dts/at91-kizbox2.dts b/arch/arm/boot/dts/at91-kizbox2.dts
deleted file mode 100644 (file)
index 86d8218..0000000
+++ /dev/null
@@ -1,244 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0-or-later
-/*
- * at91-kizbox2.dts - Device Tree file for Overkiz Kizbox 2 board
- *
- * Copyright (C) 2014 GaĂ«l PORTAY <g.portay@overkiz.com>
- */
-/dts-v1/;
-#include "sama5d31.dtsi"
-#include <dt-bindings/pwm/pwm.h>
-
-/ {
-       model = "Overkiz Kizbox 2";
-       compatible = "overkiz,kizbox2", "atmel,sama5d31", "atmel,sama5d3", "atmel,sama5";
-
-       chosen {
-               bootargs = "ubi.mtd=ubi";
-               stdout-path = &dbgu;
-       };
-
-       memory {
-               reg = <0x20000000 0x10000000>;
-       };
-
-       clocks {
-               slow_xtal {
-                       clock-frequency = <32768>;
-               };
-
-               main_xtal {
-                       clock-frequency = <12000000>;
-               };
-       };
-
-       ahb {
-               apb {
-                       i2c1: i2c@f0018000 {
-                               status = "okay";
-
-                               pmic: act8865@5b {
-                                       compatible = "active-semi,act8865";
-                                       reg = <0x5b>;
-                                       status = "okay";
-
-                                       regulators {
-                                               vcc_1v8_reg: DCDC_REG1 {
-                                                       regulator-name = "VCC_1V8";
-                                                       regulator-min-microvolt = <1800000>;
-                                                       regulator-max-microvolt = <1800000>;
-                                                       regulator-always-on;
-                                               };
-
-                                               vcc_1v2_reg: DCDC_REG2 {
-                                                       regulator-name = "VCC_1V2";
-                                                       regulator-min-microvolt = <1200000>;
-                                                       regulator-max-microvolt = <1200000>;
-                                                       regulator-always-on;
-                                               };
-
-                                               vcc_3v3_reg: DCDC_REG3 {
-                                                       regulator-name = "VCC_3V3";
-                                                       regulator-min-microvolt = <3300000>;
-                                                       regulator-max-microvolt = <3300000>;
-                                                       regulator-always-on;
-                                               };
-
-                                               vddfuse_reg: LDO_REG1 {
-                                                       regulator-name = "FUSE_2V5";
-                                                       regulator-min-microvolt = <2500000>;
-                                                       regulator-max-microvolt = <2500000>;
-                                               };
-
-                                               vddana_reg: LDO_REG2 {
-                                                       regulator-name = "VDDANA";
-                                                       regulator-min-microvolt = <3300000>;
-                                                       regulator-max-microvolt = <3300000>;
-                                                       regulator-always-on;
-                                               };
-
-                                               vled_reg: LDO_REG3 {
-                                                       regulator-name = "VLED";
-                                                       regulator-min-microvolt = <3300000>;
-                                                       regulator-max-microvolt = <3300000>;
-                                                       regulator-always-on;
-                                               };
-
-                                               v3v8_rf_reg: LDO_REG4 {
-                                                       regulator-name = "V3V8_RF";
-                                                       regulator-min-microvolt = <3800000>;
-                                                       regulator-max-microvolt = <3800000>;
-                                                       regulator-always-on;
-                                               };
-                                       };
-                               };
-                       };
-
-                       tcb0: timer@f0010000 {
-                               timer@0 {
-                                       compatible = "atmel,tcb-timer";
-                                       reg = <0>;
-                               };
-
-                               timer@1 {
-                                       compatible = "atmel,tcb-timer";
-                                       reg = <1>;
-                               };
-                       };
-
-                       usart0: serial@f001c000 {
-                               status = "okay";
-                       };
-
-                       usart1: serial@f0020000 {
-                               status = "okay";
-                       };
-
-                       pwm0: pwm@f002c000 {
-                               pinctrl-names = "default";
-                               pinctrl-0 = <&pinctrl_pwm0_pwmh0_1
-                                            &pinctrl_pwm0_pwmh1_1
-                                            &pinctrl_pwm0_pwmh2_0>;
-                               status = "okay";
-                       };
-
-                       adc0: adc@f8018000 {
-                               atmel,adc-vref = <3333>;
-                               status = "okay";
-                       };
-
-                       usart2: serial@f8020000 {
-                               status = "okay";
-                       };
-
-                       macb1: ethernet@f802c000 {
-                               phy-mode = "rmii";
-                               status = "okay";
-                       };
-
-                       dbgu: serial@ffffee00 {
-                               status = "okay";
-                       };
-
-                       watchdog@fffffe40 {
-                               status = "okay";
-                       };
-               };
-
-               usb1: ohci@600000 {
-                       status = "okay";
-               };
-
-               usb2: ehci@700000 {
-                       status = "okay";
-               };
-
-               ebi: ebi@10000000 {
-                       pinctrl-0 = <&pinctrl_ebi_nand_addr>;
-                       pinctrl-names = "default";
-                       status = "okay";
-
-                       nand_controller: nand-controller {
-                               status = "okay";
-
-                               nand@3 {
-                                       reg = <0x3 0x0 0x2>;
-                                       atmel,rb = <0>;
-                                       nand-bus-width = <8>;
-                                       nand-ecc-mode = "hw";
-                                       nand-ecc-strength = <4>;
-                                       nand-ecc-step-size = <512>;
-                                       nand-on-flash-bbt;
-                                       label = "atmel_nand";
-
-                                       partitions {
-                                               compatible = "fixed-partitions";
-                                               #address-cells = <1>;
-                                               #size-cells = <1>;
-
-                                               bootstrap@0 {
-                                                       label = "bootstrap";
-                                                       reg = <0x0 0x20000>;
-                                               };
-
-                                               ubi@20000 {
-                                                       label = "ubi";
-                                                       reg = <0x20000 0x7fe0000>;
-                                               };
-                                       };
-                               };
-                       };
-               };
-       };
-
-       gpio_keys {
-               compatible = "gpio-keys";
-               #address-cells = <1>;
-               #size-cells = <0>;
-
-               prog {
-                       label = "PB_PROG";
-                       gpios = <&pioE 27 GPIO_ACTIVE_LOW>;
-                       linux,code = <0x102>;
-                       wakeup-source;
-               };
-
-               reset {
-                       label = "PB_RST";
-                       gpios = <&pioE 29 GPIO_ACTIVE_LOW>;
-                       linux,code = <0x100>;
-                       wakeup-source;
-               };
-
-               user {
-                       label = "PB_USER";
-                       gpios = <&pioE 31 GPIO_ACTIVE_HIGH>;
-                       linux,code = <0x101>;
-                       wakeup-source;
-               };
-       };
-
-       pwm_leds {
-               compatible = "pwm-leds";
-
-               blue {
-                       label = "pwm:blue:user";
-                       pwms = <&pwm0 2 10000000 0>;
-                       max-brightness = <255>;
-                       linux,default-trigger = "default-on";
-               };
-
-               green {
-                       label = "pwm:green:user";
-                       pwms = <&pwm0 1 10000000 0>;
-                       max-brightness = <255>;
-                       linux,default-trigger = "default-on";
-               };
-
-               red {
-                       label = "pwm:red:user";
-                       pwms = <&pwm0 0 10000000 0>;
-                       max-brightness = <255>;
-                       linux,default-trigger = "default-on";
-               };
-       };
-};
diff --git a/arch/arm/boot/dts/at91-kizbox3-hs.dts b/arch/arm/boot/dts/at91-kizbox3-hs.dts
new file mode 100644 (file)
index 0000000..8734e7f
--- /dev/null
@@ -0,0 +1,309 @@
+// SPDX-License-Identifier: GPL-2.0
+/*
+ * at91-kizbox3-hs.dts - Device Tree file for Overkiz KIZBOX3-HS board
+ *
+ * Copyright (C) 2018 Overkiz SAS
+ *
+ * Authors: Dorian Rocipon <d.rocipon@overkiz.com>
+ *          Kevin Carli <k.carli@overkiz.com>
+ *          Mickael Gardet <m.gardet@overkiz.com>
+ */
+/dts-v1/;
+#include "at91-kizbox3_common.dtsi"
+
+/ {
+       model = "Overkiz KIZBOX3-HS";
+       compatible = "overkiz,kizbox3-hs", "atmel,sama5d2", "atmel,sama5";
+
+       pwm_leds {
+               status = "okay";
+
+               red {
+                       status = "okay";
+               };
+
+               green {
+                       status = "okay";
+               };
+
+               blue {
+                       status = "okay";
+               };
+
+               white {
+                       status = "okay";
+               };
+       };
+
+       leds  {
+               compatible = "gpio-leds";
+               pinctrl-names = "default";
+               pinctrl-0 = <&pinctrl_led_red
+                            &pinctrl_led_white>;
+               status = "okay";
+
+               red {
+                       label = "pio:red:user";
+                       gpios = <&pioA PIN_PB1 GPIO_ACTIVE_HIGH>;
+                       default-state = "off";
+               };
+
+               white {
+                       label = "pio:white:user";
+                       gpios = <&pioA PIN_PB8 GPIO_ACTIVE_HIGH>;
+                       default-state = "off";
+               };
+       };
+
+       gpio_keys {
+               compatible = "gpio-keys";
+               pinctrl-names = "default" , "default", "default",
+                               "default", "default" ;
+               pinctrl-0 = <&pinctrl_key_gpio_default>;
+               pinctrl-1 = <&pinctrl_pio_rf &pinctrl_pio_wifi>;
+               pinctrl-2 = <&pinctrl_pio_io_boot
+                            &pinctrl_pio_io_reset
+                            &pinctrl_pio_io_test_radio>;
+               pinctrl-3 = <&pinctrl_pio_zbe_test_radio
+                            &pinctrl_pio_zbe_rst>;
+               pinctrl-4 = <&pinctrl_pio_input>;
+
+               SW1 {
+                       label = "SW1";
+                       gpios = <&pioA PIN_PA29 GPIO_ACTIVE_LOW>;
+                       linux,code = <0x101>;
+                       wakeup-source;
+               };
+
+               SW2 {
+                       label = "SW2";
+                       gpios = <&pioA PIN_PA18 GPIO_ACTIVE_LOW>;
+                       linux,code = <0x102>;
+                       wakeup-source;
+               };
+
+               SW3 {
+                       label = "SW3";
+                       gpios = <&pioA PIN_PA22 GPIO_ACTIVE_LOW>;
+                       linux,code = <0x103>;
+                       wakeup-source;
+               };
+
+               SW7 {
+                       label = "SW7";
+                       gpios = <&pioA PIN_PA26 GPIO_ACTIVE_LOW>;
+                       linux,code = <0x107>;
+                       wakeup-source;
+               };
+
+               SW8 {
+                       label = "SW8";
+                       gpios = <&pioA PIN_PA24 GPIO_ACTIVE_LOW>;
+                       linux,code = <0x108>;
+                       wakeup-source;
+               };
+       };
+
+       gpios {
+               compatible = "gpio";
+               status = "okay";
+
+               rf_on {
+                       label = "rf on";
+                       gpio = <&pioA PIN_PC19 GPIO_ACTIVE_HIGH>;
+                       output;
+                       init-low;
+               };
+
+               wifi_on {
+                       label = "wifi on";
+                       gpio = <&pioA PIN_PC20 GPIO_ACTIVE_HIGH>;
+                       output;
+                       init-low;
+               };
+
+               zbe_test_radio {
+                       label = "zbe test radio";
+                       gpio = <&pioA PIN_PB21 GPIO_ACTIVE_HIGH>;
+                       output;
+                       init-low;
+               };
+
+               zbe_rst {
+                       label = "zbe rst";
+                       gpio = <&pioA PIN_PB25 GPIO_ACTIVE_HIGH>;
+                       output;
+                       init-low;
+               };
+
+               io_reset {
+                       label = "io reset";
+                       gpio = <&pioA PIN_PB30 GPIO_ACTIVE_HIGH>;
+                       output;
+                       init-low;
+               };
+
+               io_test_radio {
+                       label = "io test radio";
+                       gpio = <&pioA PIN_PC9 GPIO_ACTIVE_HIGH>;
+                       output;
+                       init-low;
+               };
+
+               io_boot_0 {
+                       label = "io boot 0";
+                       gpio = <&pioA PIN_PC11 GPIO_ACTIVE_HIGH>;
+                       output;
+                       init-low;
+               };
+
+               io_boot_1 {
+                       label = "io boot 1";
+                       gpio = <&pioA PIN_PC17 GPIO_ACTIVE_HIGH>;
+                       output;
+                       init-low;
+               };
+
+               verbose_bootloader {
+                       label = "verbose bootloader";
+                       gpio = <&pioA PIN_PB11 GPIO_ACTIVE_HIGH>;
+                       input;
+               };
+
+                nail_bed_detection  {
+                       label = "nail bed detection";
+                       gpio = <&pioA PIN_PB12 GPIO_ACTIVE_HIGH>;
+                       input;
+               };
+
+                id_usba {
+                       label = "id usba";
+                       gpio = <&pioA PIN_PC0 GPIO_ACTIVE_LOW>;
+                       input;
+               };
+       };
+};
+
+&pioA {
+       pinctrl_key_gpio_default: key_gpio_default {
+               pinmux=  <PIN_PA22__GPIO>,
+               <PIN_PA24__GPIO>,
+               <PIN_PA26__GPIO>,
+               <PIN_PA29__GPIO>,
+               <PIN_PA18__GPIO>;
+               bias-disable;
+               };
+
+       pinctrl_gpio {
+               pinctrl_pio_rf: gpio_rf {
+                       pinmux = <PIN_PC19__GPIO>;
+                       bias-disable;
+               };
+               pinctrl_pio_wifi: gpio_wifi {
+                       pinmux = <PIN_PC20__GPIO>;
+                       bias-disable;
+               };
+               pinctrl_pio_io_boot: gpio_io_boot {
+                       pinmux =
+                       <PIN_PC11__GPIO>,
+                       <PIN_PC17__GPIO>;
+                       bias-disable;
+               };
+               pinctrl_pio_io_test_radio: gpio_io_test_radio {
+                       pinmux = <PIN_PC9__GPIO>;
+                       bias-disable;
+               };
+               pinctrl_pio_zbe_test_radio: gpio_zbe_test_radio {
+                       pinmux = <PIN_PB21__GPIO>;
+                       bias-disable;
+               };
+               pinctrl_pio_zbe_rst: gpio_zbe_rst {
+                       pinmux = <PIN_PB25__GPIO>;
+                       bias-disable;
+               };
+               /* stm32 reset must be open drain (internal pull up) */
+               pinctrl_pio_io_reset: gpio_io_reset {
+                       pinmux = <PIN_PB30__GPIO>;
+                       bias-disable;
+                       drive-open-drain = <1>;
+                       output-low;
+               };
+               pinctrl_pio_input: gpio_input {
+                       pinmux =
+                       <PIN_PB11__GPIO>,
+                       <PIN_PB12__GPIO>,
+                       <PIN_PC0__GPIO>;
+                       bias-disable;
+               };
+       };
+
+       pinctrl_leds {
+               pinctrl_led_red: led_red {
+                       pinmux = <PIN_PB1__GPIO>;
+                       bias-disable;
+               };
+               pinctrl_led_white: led_white {
+                       pinmux = <PIN_PB8__GPIO>;
+                       bias-disable;
+               };
+       };
+};
+
+&adc {
+       status = "okay";
+};
+
+&uart0 {
+       status = "okay";
+};
+
+&uart1 {
+       status = "okay";
+};
+
+&uart2 {
+       status = "okay";
+};
+
+&uart3 {
+       status = "okay";
+};
+
+&uart4 {
+       status = "okay";
+};
+
+&flx0 {
+       status = "okay";
+
+       uart5: serial@200  {
+                       status = "okay";
+       };
+};
+
+&flx3 {
+       status = "okay";
+       uart6: serial@200 {
+               status = "okay";
+       };
+};
+
+&flx4 {
+       status = "okay";
+
+       i2c2: i2c@600 {
+               status = "okay";
+       };
+};
+
+&usb0 {
+       status = "okay";
+};
+
+&usb1 {
+       status = "okay";
+};
+
+&usb2 {
+       status = "okay";
+};
diff --git a/arch/arm/boot/dts/at91-kizbox3_common.dtsi b/arch/arm/boot/dts/at91-kizbox3_common.dtsi
new file mode 100644 (file)
index 0000000..299e74d
--- /dev/null
@@ -0,0 +1,412 @@
+// SPDX-License-Identifier: GPL-2.0
+/*
+ * at91-kizbox3.dts - Device Tree Include file for Overkiz Kizbox 3
+ * family SoC boards
+ *
+ * Copyright (C) 2018 Overkiz SAS
+ *
+ * Authors: Dorian Rocipon <d.rocipon@overkiz.com>
+ *          Kevin Carli <k.carli@overkiz.com>
+ *          Mickael Gardet <m.gardet@overkiz.com>
+ */
+/dts-v1/;
+#include "sama5d2.dtsi"
+#include "sama5d2-pinfunc.h"
+#include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/mfd/atmel-flexcom.h>
+#include <dt-bindings/pinctrl/at91.h>
+#include <dt-bindings/pwm/pwm.h>
+
+/ {
+       model = "Overkiz Kizbox3";
+       compatible = "overkiz,kizbox3", "atmel,sama5d2", "atmel,sama5";
+
+       aliases {
+               serial0 = &uart0;
+               serial1 = &uart1;
+               serial2 = &uart2;
+               serial3 = &uart3;
+               serial4 = &uart4;
+               serial5 = &uart5;
+               serial6 = &uart6;
+       };
+
+       chosen {
+               bootargs = "ubi.mtd=ubi";
+               stdout-path = "serial1:115200n8";
+       };
+
+       clocks {
+               slow_xtal {
+                       clock-frequency = <32768>;
+               };
+
+               main_xtal {
+                       clock-frequency = <12000000>;
+               };
+       };
+
+       vdd_adc_vddana: supply_3v3_ana {
+               compatible = "regulator-fixed";
+               regulator-name = "adc-vddana";
+               regulator-min-microvolt = <3300000>;
+               regulator-max-microvolt = <3300000>;
+               regulator-always-on;
+       };
+
+       vdd_adc_vref: supply_3v3_ref {
+               compatible = "regulator-fixed";
+               regulator-name = "adc-vref";
+               regulator-min-microvolt = <3300000>;
+               regulator-max-microvolt = <3300000>;
+               regulator-always-on;
+       };
+
+       pwm_leds {
+               compatible = "pwm-leds";
+               pinctrl-names = "default";
+               pinctrl-0 = <&pinctrl_pwm0_pwm_h0
+                            &pinctrl_pwm0_pwm_h1
+                            &pinctrl_pwm0_pwm_h2
+                            &pinctrl_pwm0_pwm_h3>;
+               status = "disabled";
+
+               red {
+                       label = "pwm:red:user";
+                       pwms = <&pwm0 0 10000000 0>;
+                       max-brightness = <255>;
+                       linux,default-trigger = "default-on";
+                       status = "disabled";
+               };
+
+               green {
+                       label = "pwm:green:user";
+                       pwms = <&pwm0 1 10000000 0>;
+                       max-brightness = <255>;
+                       linux,default-trigger = "default-on";
+                       status = "disabled";
+               };
+
+               blue {
+                       label = "pwm:blue:user";
+                       pwms = <&pwm0 2 10000000 0>;
+                       max-brightness = <255>;
+                       status = "disabled";
+               };
+
+               white {
+                       label = "pwm:white:user";
+                       pwms = <&pwm0 3 10000000 0>;
+                       max-brightness = <255>;
+                       status = "disabled";
+               };
+       };
+};
+
+&ebi {
+       status = "okay";
+};
+
+&nand_controller {
+       status = "okay";
+
+       nand@3 {
+               pinctrl-0 = <&pinctrl_ebi_nand_addr>;
+               pinctrl-names = "default";
+               reg = <0x3 0x0 0x800000>;
+
+               atmel,rb = <0>;
+               nand-bus-width = <8>;
+               nand-ecc-mode = "hw";
+               nand-ecc-strength = <4>;
+               nand-ecc-step-size = <512>;
+               nand-on-flash-bbt;
+               label = "atmel_nand";
+
+               partitions {
+                       compatible = "fixed-partitions";
+                       #address-cells = <1>;
+                       #size-cells = <1>;
+
+                       bootstrap@0 {
+                               label = "bootstrap";
+                               reg = <0x0 0x20000>;
+                       };
+
+                       u-boot@20000 {
+                               label = "u-boot";
+                               reg = <0x20000 0x140000>;
+                       };
+
+                       u-boot-factory@160000 {
+                               label = "u-boot-factory";
+                               reg = <0x160000 0x140000>;
+                       };
+
+                       ubi@2A0000 {
+                               label = "ubi";
+                               reg = <0x2A0000 0x7D60000>;
+                       };
+               };
+
+       };
+};
+
+&rtc {
+       status = "okay";
+};
+
+&pioA {
+       pinctrl_ebi_nand_addr: ebi-addr-1 {
+               pinmux = <PIN_PA0__D0>,
+                       <PIN_PA1__D1>,
+                       <PIN_PA2__D2>,
+                       <PIN_PA3__D3>,
+                       <PIN_PA4__D4>,
+                       <PIN_PA5__D5>,
+                       <PIN_PA6__D6>,
+                       <PIN_PA7__D7>,
+                       <PIN_PA8__NWE_NANDWE>,
+                       <PIN_PA9__NCS3>,
+                       <PIN_PA10__A21_NANDALE>,
+                       <PIN_PA11__A22_NANDCLE>,
+                       <PIN_PA21__NANDRDY>;
+               bias-disable;
+       };
+
+       pinctrl_usart {
+               pinctrl_usart_0: usart0-0 {
+                       pinmux = < PIN_PB26__URXD0>, <PIN_PB27__UTXD0>;
+                       bias-disable;
+               };
+               pinctrl_usart_1: usart1-0 {
+                       pinmux = < PIN_PD2__URXD1>, <PIN_PD3__UTXD1>;
+                       bias-disable;
+               };
+               pinctrl_usart_2: usart2-0 {
+                       pinmux = < PIN_PD4__URXD2>, <PIN_PD5__UTXD2>;
+                       bias-disable;
+               };
+               pinctrl_usart_3: usart3-0 {
+                       pinmux = < PIN_PC12__URXD3>, <PIN_PC13__UTXD3>;
+                       bias-disable;
+               };
+               pinctrl_usart_4: usart4-0 {
+                       pinmux = < PIN_PB3__URXD4>, <PIN_PB4__UTXD4>;
+                       bias-disable;
+               };
+               pinctrl_flx0_default: flx0_usart_default {
+                       pinmux = <PIN_PB28__FLEXCOM0_IO0>, //TX
+                       <PIN_PB29__FLEXCOM0_IO1>; //RX
+                       bias-disable;
+               };
+               pinctrl_flx3_default: flx3_usart_default {
+                       pinmux = <PIN_PB22__FLEXCOM3_IO1>, //RX
+                       <PIN_PB23__FLEXCOM3_IO0>; //TX
+                       bias-disable;
+               };
+       };
+
+       pinctrl_flx4_default: flx4_i2c2_default {
+               pinmux = <PIN_PD12__FLEXCOM4_IO0>, //DATA
+               <PIN_PD13__FLEXCOM4_IO1>; //CLK
+               bias-disable;
+               drive-open-drain = <1>;
+       };
+
+       pinctrl_pwm0 {
+               pinctrl_pwm0_pwm_h0: pwm0_pwm_h0 {
+                       pinmux = <PIN_PA30__PWMH0>;
+                       bias-disable;
+               };
+               pinctrl_pwm0_pwm_h1: pwm0_pwmh1 {
+                       pinmux = <PIN_PB0__PWMH1>;
+                       bias-disable;
+               };
+               pinctrl_pwm0_pwm_h2: pwm0_pwm_h2 {
+                       pinmux = <PIN_PB5__PWMH2>;
+                       bias-disable;
+               };
+               pinctrl_pwm0_pwm_h3: pwm0_pwm_h3 {
+                       pinmux = <PIN_PB7__PWMH3>;
+                       bias-disable;
+               };
+       };
+
+       pinctrl_adc {
+               pinctrl_adc2: adc2 {
+                       pinmux = <PIN_PD21__GPIO>;
+                       bias-disable;
+               };
+               pinctrl_adc3: adc3 {
+                       pinmux = <PIN_PD22__GPIO>;
+                       bias-disable;
+               };
+               pinctrl_adc4: adc4 {
+                       pinmux = <PIN_PD23__GPIO>;
+                       bias-disable;
+               };
+               pinctrl_adc5: adc5 {
+                       pinmux = <PIN_PD24__GPIO>;
+                       bias-disable;
+               };
+       };
+};
+
+&uart0 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_usart_0>;
+       atmel,use-dma-rx;
+       atmel,use-dma-tx;
+       status = "disabled";
+};
+
+/* debug uart */
+&uart1 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_usart_1>;
+       atmel,use-dma-rx;
+       atmel,use-dma-tx;
+       status = "disabled";
+};
+
+&uart2 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_usart_2>;
+       atmel,use-dma-rx;
+       atmel,use-dma-tx;
+       status = "disabled";
+};
+
+&uart3 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_usart_3>;
+       atmel,use-dma-rx;
+       atmel,use-dma-tx;
+       status = "disabled";
+};
+
+&uart4 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_usart_4>;
+       atmel,use-dma-rx;
+       atmel,use-dma-tx;
+       status = "disabled";
+};
+
+&flx0 {
+       atmel,flexcom-mode = <ATMEL_FLEXCOM_MODE_USART>;
+       status = "disabled";
+
+       uart5: serial@200  {
+               compatible = "atmel,at91sam9260-usart";
+               reg = <0x200 0x400>;
+               interrupts = <19 IRQ_TYPE_LEVEL_HIGH 7>;
+               dmas = <&dma0
+                       (AT91_XDMAC_DT_MEM_IF(0) | AT91_XDMAC_DT_PER_IF(1)
+                       | AT91_XDMAC_DT_PERID(11))>,
+                      <&dma0
+                       (AT91_XDMAC_DT_MEM_IF(0) | AT91_XDMAC_DT_PER_IF(1)
+                       | AT91_XDMAC_DT_PERID(12))>;
+               dma-names = "tx", "rx";
+               clocks = <&pmc PMC_TYPE_PERIPHERAL 19>;
+               clock-names = "usart";
+               pinctrl-names = "default";
+               pinctrl-0 = <&pinctrl_flx0_default>;
+               atmel,fifo-size = <32>;
+               atmel,use-dma-rx;
+               atmel,use-dma-tx;
+               status = "disabled";
+       };
+};
+
+&flx3 {
+       atmel,flexcom-mode = <ATMEL_FLEXCOM_MODE_USART>;
+       status = "disabled";
+
+       uart6: serial@200 {
+               compatible = "atmel,at91sam9260-usart";
+               reg = <0x200 0x400>;
+               interrupts = <22 IRQ_TYPE_LEVEL_HIGH 7>;
+               dmas = <&dma0
+                       (AT91_XDMAC_DT_MEM_IF(0) | AT91_XDMAC_DT_PER_IF(1)
+                       | AT91_XDMAC_DT_PERID(17))>,
+                      <&dma0
+                       (AT91_XDMAC_DT_MEM_IF(0) | AT91_XDMAC_DT_PER_IF(1)
+                       | AT91_XDMAC_DT_PERID(18))>;
+               dma-names = "tx", "rx";
+               clocks = <&pmc PMC_TYPE_PERIPHERAL 22>;
+               clock-names = "usart";
+               pinctrl-names = "default";
+               pinctrl-0 = <&pinctrl_flx3_default>;
+               atmel,fifo-size = <32>;
+               atmel,use-dma-rx;
+               atmel,use-dma-tx;
+               status = "disabled";
+       };
+};
+
+&flx4 {
+       atmel,flexcom-mode = <ATMEL_FLEXCOM_MODE_TWI>;
+       status = "disabled";
+
+       i2c2: i2c@600 {
+               compatible = "atmel,sama5d2-i2c";
+               reg = <0x600 0x200>;
+               interrupts = <23 IRQ_TYPE_LEVEL_HIGH 7>;
+               dmas = <&dma0
+                       (AT91_XDMAC_DT_MEM_IF(0) | AT91_XDMAC_DT_PER_IF(1)
+                       | AT91_XDMAC_DT_PERID(19))>,
+                      <&dma0
+                       (AT91_XDMAC_DT_MEM_IF(0) | AT91_XDMAC_DT_PER_IF(1)
+                       | AT91_XDMAC_DT_PERID(20))>;
+               dma-names = "tx", "rx";
+               #address-cells = <1>;
+               #size-cells = <0>;
+               clocks = <&pmc PMC_TYPE_PERIPHERAL 23>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&pinctrl_flx4_default>;
+               atmel,fifo-size = <16>;
+               status = "disabled";
+       };
+};
+
+&pwm0 {
+       status = "okay";
+};
+
+&shutdown_controller {
+       atmel,shdwc-debouncer = <976>;
+       atmel,wakeup-rtc-timer;
+
+       input@0 {
+               reg = <0>;
+               atmel,wakeup-type = "low";
+       };
+};
+
+&watchdog {
+       status = "okay";
+};
+
+&adc {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_adc2
+                    &pinctrl_adc3
+                    &pinctrl_adc4
+                    &pinctrl_adc5>;
+
+       vddana-supply = <&vdd_adc_vddana>;
+       vref-supply = <&vdd_adc_vref>;
+       status = "disabled";
+};
+
+&securam {
+       export;
+
+       /* export overkiz u-boot mode/version and factory */
+       uboot@1400 {
+               reg = <0x1400 0x20>;
+               export;
+       };
+};
index 89f0c99..fca5716 100644 (file)
@@ -53,6 +53,7 @@
 
                sdmmc0: sdio-host@a0000000 {
                        bus-width = <8>;
+                       mmc-ddr-3_3v;
                        pinctrl-names = "default";
                        pinctrl-0 = <&pinctrl_sdmmc0_default>;
                        status = "okay";
index 808e399..9d0a7fb 100644 (file)
                                        pinctrl-names = "default";
                                        pinctrl-0 = <&pinctrl_flx4_default>;
                                        atmel,fifo-size = <16>;
+                                       i2c-analog-filter;
+                                       i2c-digital-filter;
+                                       i2c-digital-filter-width-ns = <35>;
                                        status = "okay";
                                };
                        };
                                dmas = <0>, <0>;
                                pinctrl-names = "default";
                                pinctrl-0 = <&pinctrl_i2c1_default>;
+                               i2c-analog-filter;
+                               i2c-digital-filter;
+                               i2c-digital-filter-width-ns = <35>;
                                status = "okay";
 
                                at24@54 {
index fdfc37d..924d949 100644 (file)
@@ -49,6 +49,7 @@
                        };
 
                        i2c0: i2c@f8014000 {
+                               i2c-digital-filter;
                                status = "okay";
                        };
 
index e0c0291..e051504 100644 (file)
                                label = "rearview key";
                                linux,code = <KEY_CAMERA>;
                                gpios = <&gpio_1 3 GPIO_ACTIVE_LOW>;
-                               debounce_interval = <100>;
+                               debounce-interval = <100>;
                        };
                };
 
index e4d4973..6142c67 100644 (file)
                        clock-frequency = <100000>;
                };
 
-               watchdog@39000 {
+               watchdog: watchdog@39000 {
                        compatible = "arm,sp805", "arm,primecell";
                        reg = <0x39000 0x1000>;
                        interrupts = <GIC_SPI 213 IRQ_TYPE_LEVEL_HIGH>;
diff --git a/arch/arm/boot/dts/bcm2711-rpi-4-b.dts b/arch/arm/boot/dts/bcm2711-rpi-4-b.dts
new file mode 100644 (file)
index 0000000..cccc1cc
--- /dev/null
@@ -0,0 +1,123 @@
+// SPDX-License-Identifier: GPL-2.0
+/dts-v1/;
+#include "bcm2711.dtsi"
+#include "bcm2835-rpi.dtsi"
+#include "bcm283x-rpi-usb-peripheral.dtsi"
+
+/ {
+       compatible = "raspberrypi,4-model-b", "brcm,bcm2711";
+       model = "Raspberry Pi 4 Model B";
+
+       chosen {
+               /* 8250 auxiliary UART instead of pl011 */
+               stdout-path = "serial1:115200n8";
+       };
+
+       /* Will be filled by the bootloader */
+       memory@0 {
+               device_type = "memory";
+               reg = <0 0 0>;
+       };
+
+       leds {
+               act {
+                       gpios = <&gpio 42 GPIO_ACTIVE_HIGH>;
+               };
+
+               pwr {
+                       label = "PWR";
+                       gpios = <&expgpio 2 GPIO_ACTIVE_LOW>;
+               };
+       };
+
+       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";
+               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";
+       };
+};
+
+&firmware {
+       expgpio: gpio {
+               compatible = "raspberrypi,firmware-gpio";
+               gpio-controller;
+               #gpio-cells = <2>;
+               gpio-line-names = "BT_ON",
+                                 "WL_ON",
+                                 "PWR_LED_OFF",
+                                 "GLOBAL_RESET",
+                                 "VDD_SD_IO_SEL",
+                                 "CAM_GPIO",
+                                 "",
+                                 "";
+               status = "okay";
+       };
+};
+
+&pwm1 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pwm1_0_gpio40 &pwm1_1_gpio41>;
+       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>;
+       broken-cd;
+       status = "okay";
+};
+
+/* uart0 communicates with the BT module */
+&uart0 {
+       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 */
+&uart1 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&uart1_gpio14>;
+       status = "okay";
+};
+
+&vchiq {
+       interrupts = <GIC_SPI 34 IRQ_TYPE_LEVEL_HIGH>;
+};
diff --git a/arch/arm/boot/dts/bcm2711.dtsi b/arch/arm/boot/dts/bcm2711.dtsi
new file mode 100644 (file)
index 0000000..ac83dac
--- /dev/null
@@ -0,0 +1,844 @@
+// SPDX-License-Identifier: GPL-2.0
+#include "bcm283x.dtsi"
+
+#include <dt-bindings/interrupt-controller/arm-gic.h>
+#include <dt-bindings/soc/bcm2835-pm.h>
+
+/ {
+       compatible = "brcm,bcm2711";
+
+       #address-cells = <2>;
+       #size-cells = <1>;
+
+       interrupt-parent = <&gicv2>;
+
+       soc {
+               /*
+                * Defined ranges:
+                *   Common BCM283x peripherals
+                *   BCM2711-specific peripherals
+                *   ARM-local peripherals
+                */
+               ranges = <0x7e000000  0x0 0xfe000000  0x01800000>,
+                        <0x7c000000  0x0 0xfc000000  0x02000000>,
+                        <0x40000000  0x0 0xff800000  0x00800000>;
+               /* Emulate a contiguous 30-bit address range for DMA */
+               dma-ranges = <0xc0000000  0x0 0x00000000  0x3c000000>;
+
+               /*
+                * This node is the provider for the enable-method for
+                * bringing up secondary cores.
+                */
+               local_intc: local_intc@40000000 {
+                       compatible = "brcm,bcm2836-l1-intc";
+                       reg = <0x40000000 0x100>;
+               };
+
+               gicv2: interrupt-controller@40041000 {
+                       interrupt-controller;
+                       #interrupt-cells = <3>;
+                       compatible = "arm,gic-400";
+                       reg =   <0x40041000 0x1000>,
+                               <0x40042000 0x2000>,
+                               <0x40044000 0x2000>,
+                               <0x40046000 0x2000>;
+                       interrupts = <GIC_PPI 9 (GIC_CPU_MASK_SIMPLE(4) |
+                                                IRQ_TYPE_LEVEL_HIGH)>;
+               };
+
+               dma: dma@7e007000 {
+                       compatible = "brcm,bcm2835-dma";
+                       reg = <0x7e007000 0xb00>;
+                       interrupts = <GIC_SPI 80 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 81 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 82 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 83 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 84 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 85 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 86 IRQ_TYPE_LEVEL_HIGH>,
+                                    /* DMA lite 7 - 10 */
+                                    <GIC_SPI 87 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 87 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 88 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 88 IRQ_TYPE_LEVEL_HIGH>;
+                       interrupt-names = "dma0",
+                                         "dma1",
+                                         "dma2",
+                                         "dma3",
+                                         "dma4",
+                                         "dma5",
+                                         "dma6",
+                                         "dma7",
+                                         "dma8",
+                                         "dma9",
+                                         "dma10";
+                       #dma-cells = <1>;
+                       brcm,dma-channel-mask = <0x07f5>;
+               };
+
+               pm: watchdog@7e100000 {
+                       compatible = "brcm,bcm2835-pm", "brcm,bcm2835-pm-wdt";
+                       #power-domain-cells = <1>;
+                       #reset-cells = <1>;
+                       reg = <0x7e100000 0x114>,
+                             <0x7e00a000 0x24>,
+                             <0x7ec11000 0x20>;
+                       clocks = <&clocks BCM2835_CLOCK_V3D>,
+                                <&clocks BCM2835_CLOCK_PERI_IMAGE>,
+                                <&clocks BCM2835_CLOCK_H264>,
+                                <&clocks BCM2835_CLOCK_ISP>;
+                       clock-names = "v3d", "peri_image", "h264", "isp";
+                       system-power-controller;
+               };
+
+               rng@7e104000 {
+                       interrupts = <GIC_SPI 125 IRQ_TYPE_LEVEL_HIGH>;
+
+                       /* RNG is incompatible with brcm,bcm2835-rng */
+                       status = "disabled";
+               };
+
+               uart2: serial@7e201400 {
+                       compatible = "arm,pl011", "arm,primecell";
+                       reg = <0x7e201400 0x200>;
+                       interrupts = <GIC_SPI 121 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&clocks BCM2835_CLOCK_UART>,
+                                <&clocks BCM2835_CLOCK_VPU>;
+                       clock-names = "uartclk", "apb_pclk";
+                       arm,primecell-periphid = <0x00241011>;
+                       status = "disabled";
+               };
+
+               uart3: serial@7e201600 {
+                       compatible = "arm,pl011", "arm,primecell";
+                       reg = <0x7e201600 0x200>;
+                       interrupts = <GIC_SPI 121 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&clocks BCM2835_CLOCK_UART>,
+                                <&clocks BCM2835_CLOCK_VPU>;
+                       clock-names = "uartclk", "apb_pclk";
+                       arm,primecell-periphid = <0x00241011>;
+                       status = "disabled";
+               };
+
+               uart4: serial@7e201800 {
+                       compatible = "arm,pl011", "arm,primecell";
+                       reg = <0x7e201800 0x200>;
+                       interrupts = <GIC_SPI 121 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&clocks BCM2835_CLOCK_UART>,
+                                <&clocks BCM2835_CLOCK_VPU>;
+                       clock-names = "uartclk", "apb_pclk";
+                       arm,primecell-periphid = <0x00241011>;
+                       status = "disabled";
+               };
+
+               uart5: serial@7e201a00 {
+                       compatible = "arm,pl011", "arm,primecell";
+                       reg = <0x7e201a00 0x200>;
+                       interrupts = <GIC_SPI 121 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&clocks BCM2835_CLOCK_UART>,
+                                <&clocks BCM2835_CLOCK_VPU>;
+                       clock-names = "uartclk", "apb_pclk";
+                       arm,primecell-periphid = <0x00241011>;
+                       status = "disabled";
+               };
+
+               spi3: spi@7e204600 {
+                       compatible = "brcm,bcm2835-spi";
+                       reg = <0x7e204600 0x0200>;
+                       interrupts = <GIC_SPI 118 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&clocks BCM2835_CLOCK_VPU>;
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       status = "disabled";
+               };
+
+               spi4: spi@7e204800 {
+                       compatible = "brcm,bcm2835-spi";
+                       reg = <0x7e204800 0x0200>;
+                       interrupts = <GIC_SPI 118 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&clocks BCM2835_CLOCK_VPU>;
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       status = "disabled";
+               };
+
+               spi5: spi@7e204a00 {
+                       compatible = "brcm,bcm2835-spi";
+                       reg = <0x7e204a00 0x0200>;
+                       interrupts = <GIC_SPI 118 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&clocks BCM2835_CLOCK_VPU>;
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       status = "disabled";
+               };
+
+               spi6: spi@7e204c00 {
+                       compatible = "brcm,bcm2835-spi";
+                       reg = <0x7e204c00 0x0200>;
+                       interrupts = <GIC_SPI 118 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&clocks BCM2835_CLOCK_VPU>;
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       status = "disabled";
+               };
+
+               i2c3: i2c@7e205600 {
+                       compatible = "brcm,bcm2711-i2c", "brcm,bcm2835-i2c";
+                       reg = <0x7e205600 0x200>;
+                       interrupts = <GIC_SPI 117 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&clocks BCM2835_CLOCK_VPU>;
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       status = "disabled";
+               };
+
+               i2c4: i2c@7e205800 {
+                       compatible = "brcm,bcm2711-i2c", "brcm,bcm2835-i2c";
+                       reg = <0x7e205800 0x200>;
+                       interrupts = <GIC_SPI 117 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&clocks BCM2835_CLOCK_VPU>;
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       status = "disabled";
+               };
+
+               i2c5: i2c@7e205a00 {
+                       compatible = "brcm,bcm2711-i2c", "brcm,bcm2835-i2c";
+                       reg = <0x7e205a00 0x200>;
+                       interrupts = <GIC_SPI 117 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&clocks BCM2835_CLOCK_VPU>;
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       status = "disabled";
+               };
+
+               i2c6: i2c@7e205c00 {
+                       compatible = "brcm,bcm2711-i2c", "brcm,bcm2835-i2c";
+                       reg = <0x7e205c00 0x200>;
+                       interrupts = <GIC_SPI 117 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&clocks BCM2835_CLOCK_VPU>;
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       status = "disabled";
+               };
+
+               pwm1: pwm@7e20c800 {
+                       compatible = "brcm,bcm2835-pwm";
+                       reg = <0x7e20c800 0x28>;
+                       clocks = <&clocks BCM2835_CLOCK_PWM>;
+                       assigned-clocks = <&clocks BCM2835_CLOCK_PWM>;
+                       assigned-clock-rates = <10000000>;
+                       #pwm-cells = <2>;
+                       status = "disabled";
+               };
+
+               emmc2: emmc2@7e340000 {
+                       compatible = "brcm,bcm2711-emmc2";
+                       reg = <0x7e340000 0x100>;
+                       interrupts = <GIC_SPI 126 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&clocks BCM2711_CLOCK_EMMC2>;
+                       status = "disabled";
+               };
+
+               hvs@7e400000 {
+                       interrupts = <GIC_SPI 97 IRQ_TYPE_LEVEL_HIGH>;
+               };
+       };
+
+       arm-pmu {
+               compatible = "arm,cortex-a72-pmu", "arm,armv8-pmuv3";
+               interrupts = <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>;
+               interrupt-affinity = <&cpu0>, <&cpu1>, <&cpu2>, <&cpu3>;
+       };
+
+       timer {
+               compatible = "arm,armv8-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)>;
+               /* This only applies to the ARMv7 stub */
+               arm,cpu-registers-not-fw-configured;
+       };
+
+       cpus: cpus {
+               #address-cells = <1>;
+               #size-cells = <0>;
+               enable-method = "brcm,bcm2836-smp"; // for ARM 32-bit
+
+               cpu0: cpu@0 {
+                       device_type = "cpu";
+                       compatible = "arm,cortex-a72";
+                       reg = <0>;
+                       enable-method = "spin-table";
+                       cpu-release-addr = <0x0 0x000000d8>;
+               };
+
+               cpu1: cpu@1 {
+                       device_type = "cpu";
+                       compatible = "arm,cortex-a72";
+                       reg = <1>;
+                       enable-method = "spin-table";
+                       cpu-release-addr = <0x0 0x000000e0>;
+               };
+
+               cpu2: cpu@2 {
+                       device_type = "cpu";
+                       compatible = "arm,cortex-a72";
+                       reg = <2>;
+                       enable-method = "spin-table";
+                       cpu-release-addr = <0x0 0x000000e8>;
+               };
+
+               cpu3: cpu@3 {
+                       device_type = "cpu";
+                       compatible = "arm,cortex-a72";
+                       reg = <3>;
+                       enable-method = "spin-table";
+                       cpu-release-addr = <0x0 0x000000f0>;
+               };
+       };
+};
+
+&clk_osc {
+       clock-frequency = <54000000>;
+};
+
+&clocks {
+       compatible = "brcm,bcm2711-cprman";
+};
+
+&cpu_thermal {
+       coefficients = <(-487) 410040>;
+};
+
+&dsi0 {
+       interrupts = <GIC_SPI 100 IRQ_TYPE_LEVEL_HIGH>;
+};
+
+&dsi1 {
+       interrupts = <GIC_SPI 108 IRQ_TYPE_LEVEL_HIGH>;
+};
+
+&gpio {
+       compatible = "brcm,bcm2711-gpio";
+       interrupts = <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>;
+
+       gpclk0_gpio49: gpclk0_gpio49 {
+               pin-gpclk {
+                       pins = "gpio49";
+                       function = "alt1";
+                       bias-disable;
+               };
+       };
+       gpclk1_gpio50: gpclk1_gpio50 {
+               pin-gpclk {
+                       pins = "gpio50";
+                       function = "alt1";
+                       bias-disable;
+               };
+       };
+       gpclk2_gpio51: gpclk2_gpio51 {
+               pin-gpclk {
+                       pins = "gpio51";
+                       function = "alt1";
+                       bias-disable;
+               };
+       };
+
+       i2c0_gpio46: i2c0_gpio46 {
+               pin-sda {
+                       function = "alt0";
+                       pins = "gpio46";
+                       bias-pull-up;
+               };
+               pin-scl {
+                       function = "alt0";
+                       pins = "gpio47";
+                       bias-disable;
+               };
+       };
+       i2c1_gpio46: i2c1_gpio46 {
+               pin-sda {
+                       function = "alt1";
+                       pins = "gpio46";
+                       bias-pull-up;
+               };
+               pin-scl {
+                       function = "alt1";
+                       pins = "gpio47";
+                       bias-disable;
+               };
+       };
+       i2c3_gpio2: i2c3_gpio2 {
+               pin-sda {
+                       function = "alt5";
+                       pins = "gpio2";
+                       bias-pull-up;
+               };
+               pin-scl {
+                       function = "alt5";
+                       pins = "gpio3";
+                       bias-disable;
+               };
+       };
+       i2c3_gpio4: i2c3_gpio4 {
+               pin-sda {
+                       function = "alt5";
+                       pins = "gpio4";
+                       bias-pull-up;
+               };
+               pin-scl {
+                       function = "alt5";
+                       pins = "gpio5";
+                       bias-disable;
+               };
+       };
+       i2c4_gpio6: i2c4_gpio6 {
+               pin-sda {
+                       function = "alt5";
+                       pins = "gpio6";
+                       bias-pull-up;
+               };
+               pin-scl {
+                       function = "alt5";
+                       pins = "gpio7";
+                       bias-disable;
+               };
+       };
+       i2c4_gpio8: i2c4_gpio8 {
+               pin-sda {
+                       function = "alt5";
+                       pins = "gpio8";
+                       bias-pull-up;
+               };
+               pin-scl {
+                       function = "alt5";
+                       pins = "gpio9";
+                       bias-disable;
+               };
+       };
+       i2c5_gpio10: i2c5_gpio10 {
+               pin-sda {
+                       function = "alt5";
+                       pins = "gpio10";
+                       bias-pull-up;
+               };
+               pin-scl {
+                       function = "alt5";
+                       pins = "gpio11";
+                       bias-disable;
+               };
+       };
+       i2c5_gpio12: i2c5_gpio12 {
+               pin-sda {
+                       function = "alt5";
+                       pins = "gpio12";
+                       bias-pull-up;
+               };
+               pin-scl {
+                       function = "alt5";
+                       pins = "gpio13";
+                       bias-disable;
+               };
+       };
+       i2c6_gpio0: i2c6_gpio0 {
+               pin-sda {
+                       function = "alt5";
+                       pins = "gpio0";
+                       bias-pull-up;
+               };
+               pin-scl {
+                       function = "alt5";
+                       pins = "gpio1";
+                       bias-disable;
+               };
+       };
+       i2c6_gpio22: i2c6_gpio22 {
+               pin-sda {
+                       function = "alt5";
+                       pins = "gpio22";
+                       bias-pull-up;
+               };
+               pin-scl {
+                       function = "alt5";
+                       pins = "gpio23";
+                       bias-disable;
+               };
+       };
+       i2c_slave_gpio8: i2c_slave_gpio8 {
+               pins-i2c-slave {
+                       pins = "gpio8",
+                              "gpio9",
+                              "gpio10",
+                              "gpio11";
+                       function = "alt3";
+               };
+       };
+
+       jtag_gpio48: jtag_gpio48 {
+               pins-jtag {
+                       pins = "gpio48",
+                              "gpio49",
+                              "gpio50",
+                              "gpio51",
+                              "gpio52",
+                              "gpio53";
+                       function = "alt4";
+               };
+       };
+
+       mii_gpio28: mii_gpio28 {
+               pins-mii {
+                       pins = "gpio28",
+                              "gpio29",
+                              "gpio30",
+                              "gpio31";
+                       function = "alt4";
+               };
+       };
+       mii_gpio36: mii_gpio36 {
+               pins-mii {
+                       pins = "gpio36",
+                              "gpio37",
+                              "gpio38",
+                              "gpio39";
+                       function = "alt5";
+               };
+       };
+
+       pcm_gpio50: pcm_gpio50 {
+               pins-pcm {
+                       pins = "gpio50",
+                              "gpio51",
+                              "gpio52",
+                              "gpio53";
+                       function = "alt2";
+               };
+       };
+
+       pwm0_0_gpio12: pwm0_0_gpio12 {
+               pin-pwm {
+                       pins = "gpio12";
+                       function = "alt0";
+                       bias-disable;
+               };
+       };
+       pwm0_0_gpio18: pwm0_0_gpio18 {
+               pin-pwm {
+                       pins = "gpio18";
+                       function = "alt5";
+                       bias-disable;
+               };
+       };
+       pwm1_0_gpio40: pwm1_0_gpio40 {
+               pin-pwm {
+                       pins = "gpio40";
+                       function = "alt0";
+                       bias-disable;
+               };
+       };
+       pwm0_1_gpio13: pwm0_1_gpio13 {
+               pin-pwm {
+                       pins = "gpio13";
+                       function = "alt0";
+                       bias-disable;
+               };
+       };
+       pwm0_1_gpio19: pwm0_1_gpio19 {
+               pin-pwm {
+                       pins = "gpio19";
+                       function = "alt5";
+                       bias-disable;
+               };
+       };
+       pwm1_1_gpio41: pwm1_1_gpio41 {
+               pin-pwm {
+                       pins = "gpio41";
+                       function = "alt0";
+                       bias-disable;
+               };
+       };
+       pwm0_1_gpio45: pwm0_1_gpio45 {
+               pin-pwm {
+                       pins = "gpio45";
+                       function = "alt0";
+                       bias-disable;
+               };
+       };
+       pwm0_0_gpio52: pwm0_0_gpio52 {
+               pin-pwm {
+                       pins = "gpio52";
+                       function = "alt1";
+                       bias-disable;
+               };
+       };
+       pwm0_1_gpio53: pwm0_1_gpio53 {
+               pin-pwm {
+                       pins = "gpio53";
+                       function = "alt1";
+                       bias-disable;
+               };
+       };
+
+       rgmii_gpio35: rgmii_gpio35 {
+               pin-start-stop {
+                       pins = "gpio35";
+                       function = "alt4";
+               };
+               pin-rx-ok {
+                       pins = "gpio36";
+                       function = "alt4";
+               };
+       };
+       rgmii_irq_gpio34: rgmii_irq_gpio34 {
+               pin-irq {
+                       pins = "gpio34";
+                       function = "alt5";
+               };
+       };
+       rgmii_irq_gpio39: rgmii_irq_gpio39 {
+               pin-irq {
+                       pins = "gpio39";
+                       function = "alt4";
+               };
+       };
+       rgmii_mdio_gpio28: rgmii_mdio_gpio28 {
+               pins-mdio {
+                       pins = "gpio28",
+                              "gpio29";
+                       function = "alt5";
+               };
+       };
+       rgmii_mdio_gpio37: rgmii_mdio_gpio37 {
+               pins-mdio {
+                       pins = "gpio37",
+                              "gpio38";
+                       function = "alt4";
+               };
+       };
+
+       spi0_gpio46: spi0_gpio46 {
+               pins-spi {
+                       pins = "gpio46",
+                              "gpio47",
+                              "gpio48",
+                              "gpio49";
+                       function = "alt2";
+               };
+       };
+       spi2_gpio46: spi2_gpio46 {
+               pins-spi {
+                       pins = "gpio46",
+                              "gpio47",
+                              "gpio48",
+                              "gpio49",
+                              "gpio50";
+                       function = "alt5";
+               };
+       };
+       spi3_gpio0: spi3_gpio0 {
+               pins-spi {
+                       pins = "gpio0",
+                              "gpio1",
+                              "gpio2",
+                              "gpio3";
+                       function = "alt3";
+               };
+       };
+       spi4_gpio4: spi4_gpio4 {
+               pins-spi {
+                       pins = "gpio4",
+                              "gpio5",
+                              "gpio6",
+                              "gpio7";
+                       function = "alt3";
+               };
+       };
+       spi5_gpio12: spi5_gpio12 {
+               pins-spi {
+                       pins = "gpio12",
+                              "gpio13",
+                              "gpio14",
+                              "gpio15";
+                       function = "alt3";
+               };
+       };
+       spi6_gpio18: spi6_gpio18 {
+               pins-spi {
+                       pins = "gpio18",
+                              "gpio19",
+                              "gpio20",
+                              "gpio21";
+                       function = "alt3";
+               };
+       };
+
+       uart2_gpio0: uart2_gpio0 {
+               pin-tx {
+                       pins = "gpio0";
+                       function = "alt4";
+                       bias-disable;
+               };
+               pin-rx {
+                       pins = "gpio1";
+                       function = "alt4";
+                       bias-pull-up;
+               };
+       };
+       uart2_ctsrts_gpio2: uart2_ctsrts_gpio2 {
+               pin-cts {
+                       pins = "gpio2";
+                       function = "alt4";
+                       bias-pull-up;
+               };
+               pin-rts {
+                       pins = "gpio3";
+                       function = "alt4";
+                       bias-disable;
+               };
+       };
+       uart3_gpio4: uart3_gpio4 {
+               pin-tx {
+                       pins = "gpio4";
+                       function = "alt4";
+                       bias-disable;
+               };
+               pin-rx {
+                       pins = "gpio5";
+                       function = "alt4";
+                       bias-pull-up;
+               };
+       };
+       uart3_ctsrts_gpio6: uart3_ctsrts_gpio6 {
+               pin-cts {
+                       pins = "gpio6";
+                       function = "alt4";
+                       bias-pull-up;
+               };
+               pin-rts {
+                       pins = "gpio7";
+                       function = "alt4";
+                       bias-disable;
+               };
+       };
+       uart4_gpio8: uart4_gpio8 {
+               pin-tx {
+                       pins = "gpio8";
+                       function = "alt4";
+                       bias-disable;
+               };
+               pin-rx {
+                       pins = "gpio9";
+                       function = "alt4";
+                       bias-pull-up;
+               };
+       };
+       uart4_ctsrts_gpio10: uart4_ctsrts_gpio10 {
+               pin-cts {
+                       pins = "gpio10";
+                       function = "alt4";
+                       bias-pull-up;
+               };
+               pin-rts {
+                       pins = "gpio11";
+                       function = "alt4";
+                       bias-disable;
+               };
+       };
+       uart5_gpio12: uart5_gpio12 {
+               pin-tx {
+                       pins = "gpio12";
+                       function = "alt4";
+                       bias-disable;
+               };
+               pin-rx {
+                       pins = "gpio13";
+                       function = "alt4";
+                       bias-pull-up;
+               };
+       };
+       uart5_ctsrts_gpio14: uart5_ctsrts_gpio14 {
+               pin-cts {
+                       pins = "gpio14";
+                       function = "alt4";
+                       bias-pull-up;
+               };
+               pin-rts {
+                       pins = "gpio15";
+                       function = "alt4";
+                       bias-disable;
+               };
+       };
+};
+
+&i2c0 {
+       compatible = "brcm,bcm2711-i2c", "brcm,bcm2835-i2c";
+       interrupts = <GIC_SPI 117 IRQ_TYPE_LEVEL_HIGH>;
+};
+
+&i2c1 {
+       compatible = "brcm,bcm2711-i2c", "brcm,bcm2835-i2c";
+       interrupts = <GIC_SPI 117 IRQ_TYPE_LEVEL_HIGH>;
+};
+
+&mailbox {
+       interrupts = <GIC_SPI 33 IRQ_TYPE_LEVEL_HIGH>;
+};
+
+&sdhci {
+       interrupts = <GIC_SPI 126 IRQ_TYPE_LEVEL_HIGH>;
+};
+
+&sdhost {
+       interrupts = <GIC_SPI 120 IRQ_TYPE_LEVEL_HIGH>;
+};
+
+&spi {
+       interrupts = <GIC_SPI 118 IRQ_TYPE_LEVEL_HIGH>;
+};
+
+&spi1 {
+       interrupts = <GIC_SPI 93 IRQ_TYPE_LEVEL_HIGH>;
+};
+
+&spi2 {
+       interrupts = <GIC_SPI 93 IRQ_TYPE_LEVEL_HIGH>;
+};
+
+&system_timer {
+       interrupts = <GIC_SPI 64 IRQ_TYPE_LEVEL_HIGH>,
+                    <GIC_SPI 65 IRQ_TYPE_LEVEL_HIGH>,
+                    <GIC_SPI 66 IRQ_TYPE_LEVEL_HIGH>,
+                    <GIC_SPI 67 IRQ_TYPE_LEVEL_HIGH>;
+};
+
+&txp {
+       interrupts = <GIC_SPI 75 IRQ_TYPE_LEVEL_HIGH>;
+};
+
+&uart0 {
+       interrupts = <GIC_SPI 121 IRQ_TYPE_LEVEL_HIGH>;
+};
+
+&uart1 {
+       interrupts = <GIC_SPI 93 IRQ_TYPE_LEVEL_HIGH>;
+};
+
+&usb {
+       interrupts = <GIC_SPI 73 IRQ_TYPE_LEVEL_HIGH>;
+};
+
+&vec {
+       interrupts = <GIC_SPI 123 IRQ_TYPE_LEVEL_HIGH>;
+};
diff --git a/arch/arm/boot/dts/bcm2835-common.dtsi b/arch/arm/boot/dts/bcm2835-common.dtsi
new file mode 100644 (file)
index 0000000..fe1ab40
--- /dev/null
@@ -0,0 +1,194 @@
+// SPDX-License-Identifier: GPL-2.0
+
+/* This include file covers the common peripherals and configuration between
+ * bcm2835, bcm2836 and bcm2837 implementations.
+ */
+
+/ {
+       interrupt-parent = <&intc>;
+
+       soc {
+               dma: dma@7e007000 {
+                       compatible = "brcm,bcm2835-dma";
+                       reg = <0x7e007000 0xf00>;
+                       interrupts = <1 16>,
+                                    <1 17>,
+                                    <1 18>,
+                                    <1 19>,
+                                    <1 20>,
+                                    <1 21>,
+                                    <1 22>,
+                                    <1 23>,
+                                    <1 24>,
+                                    <1 25>,
+                                    <1 26>,
+                                    /* dma channel 11-14 share one irq */
+                                    <1 27>,
+                                    <1 27>,
+                                    <1 27>,
+                                    <1 27>,
+                                    /* unused shared irq for all channels */
+                                    <1 28>;
+                       interrupt-names = "dma0",
+                                         "dma1",
+                                         "dma2",
+                                         "dma3",
+                                         "dma4",
+                                         "dma5",
+                                         "dma6",
+                                         "dma7",
+                                         "dma8",
+                                         "dma9",
+                                         "dma10",
+                                         "dma11",
+                                         "dma12",
+                                         "dma13",
+                                         "dma14",
+                                         "dma-shared-all";
+                       #dma-cells = <1>;
+                       brcm,dma-channel-mask = <0x7f35>;
+               };
+
+               intc: interrupt-controller@7e00b200 {
+                       compatible = "brcm,bcm2835-armctrl-ic";
+                       reg = <0x7e00b200 0x200>;
+                       interrupt-controller;
+                       #interrupt-cells = <2>;
+               };
+
+               pm: watchdog@7e100000 {
+                       compatible = "brcm,bcm2835-pm", "brcm,bcm2835-pm-wdt";
+                       #power-domain-cells = <1>;
+                       #reset-cells = <1>;
+                       reg = <0x7e100000 0x114>,
+                             <0x7e00a000 0x24>;
+                       clocks = <&clocks BCM2835_CLOCK_V3D>,
+                                <&clocks BCM2835_CLOCK_PERI_IMAGE>,
+                                <&clocks BCM2835_CLOCK_H264>,
+                                <&clocks BCM2835_CLOCK_ISP>;
+                       clock-names = "v3d", "peri_image", "h264", "isp";
+                       system-power-controller;
+               };
+
+               pixelvalve@7e206000 {
+                       compatible = "brcm,bcm2835-pixelvalve0";
+                       reg = <0x7e206000 0x100>;
+                       interrupts = <2 13>; /* pwa0 */
+               };
+
+               pixelvalve@7e207000 {
+                       compatible = "brcm,bcm2835-pixelvalve1";
+                       reg = <0x7e207000 0x100>;
+                       interrupts = <2 14>; /* pwa1 */
+               };
+
+               thermal: thermal@7e212000 {
+                       compatible = "brcm,bcm2835-thermal";
+                       reg = <0x7e212000 0x8>;
+                       clocks = <&clocks BCM2835_CLOCK_TSENS>;
+                       #thermal-sensor-cells = <0>;
+                       status = "disabled";
+               };
+
+               i2c2: i2c@7e805000 {
+                       compatible = "brcm,bcm2835-i2c";
+                       reg = <0x7e805000 0x1000>;
+                       interrupts = <2 21>;
+                       clocks = <&clocks BCM2835_CLOCK_VPU>;
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       status = "okay";
+               };
+
+               pixelvalve@7e807000 {
+                       compatible = "brcm,bcm2835-pixelvalve2";
+                       reg = <0x7e807000 0x100>;
+                       interrupts = <2 10>; /* pixelvalve */
+               };
+
+               hdmi: hdmi@7e902000 {
+                       compatible = "brcm,bcm2835-hdmi";
+                       reg = <0x7e902000 0x600>,
+                             <0x7e808000 0x100>;
+                       interrupts = <2 8>, <2 9>;
+                       ddc = <&i2c2>;
+                       clocks = <&clocks BCM2835_PLLH_PIX>,
+                                <&clocks BCM2835_CLOCK_HSM>;
+                       clock-names = "pixel", "hdmi";
+                       dmas = <&dma 17>;
+                       dma-names = "audio-rx";
+                       status = "disabled";
+               };
+
+               v3d: v3d@7ec00000 {
+                       compatible = "brcm,bcm2835-v3d";
+                       reg = <0x7ec00000 0x1000>;
+                       interrupts = <1 10>;
+                       power-domains = <&pm BCM2835_POWER_DOMAIN_GRAFX_V3D>;
+               };
+
+               vc4: gpu {
+                       compatible = "brcm,bcm2835-vc4";
+               };
+       };
+};
+
+&cpu_thermal {
+       thermal-sensors = <&thermal>;
+};
+
+&gpio {
+       i2c_slave_gpio18: i2c_slave_gpio18 {
+               brcm,pins = <18 19 20 21>;
+               brcm,function = <BCM2835_FSEL_ALT3>;
+       };
+
+       jtag_gpio4: jtag_gpio4 {
+               brcm,pins = <4 5 6 12 13>;
+               brcm,function = <BCM2835_FSEL_ALT5>;
+       };
+
+       pwm0_gpio12: pwm0_gpio12 {
+               brcm,pins = <12>;
+               brcm,function = <BCM2835_FSEL_ALT0>;
+       };
+       pwm0_gpio18: pwm0_gpio18 {
+               brcm,pins = <18>;
+               brcm,function = <BCM2835_FSEL_ALT5>;
+       };
+       pwm0_gpio40: pwm0_gpio40 {
+               brcm,pins = <40>;
+               brcm,function = <BCM2835_FSEL_ALT0>;
+       };
+       pwm1_gpio13: pwm1_gpio13 {
+               brcm,pins = <13>;
+               brcm,function = <BCM2835_FSEL_ALT0>;
+       };
+       pwm1_gpio19: pwm1_gpio19 {
+               brcm,pins = <19>;
+               brcm,function = <BCM2835_FSEL_ALT5>;
+       };
+       pwm1_gpio41: pwm1_gpio41 {
+               brcm,pins = <41>;
+               brcm,function = <BCM2835_FSEL_ALT0>;
+       };
+       pwm1_gpio45: pwm1_gpio45 {
+               brcm,pins = <45>;
+               brcm,function = <BCM2835_FSEL_ALT0>;
+       };
+};
+
+&i2s {
+       dmas = <&dma 2>, <&dma 3>;
+       dma-names = "tx", "rx";
+};
+
+&sdhost {
+       dmas = <&dma 13>;
+       dma-names = "rx-tx";
+};
+
+&spi {
+       dmas = <&dma 6>, <&dma 7>;
+       dma-names = "tx", "rx";
+};
index 6c6a7f6..394c8a7 100644 (file)
        clock-frequency = <100000>;
 };
 
-&i2c2 {
-       status = "okay";
-};
-
 &usb {
        power-domains = <&power RPI_POWER_DOMAIN_USB>;
 };
index a5c3824..53bf457 100644 (file)
@@ -1,5 +1,6 @@
 // SPDX-License-Identifier: GPL-2.0
 #include "bcm283x.dtsi"
+#include "bcm2835-common.dtsi"
 
 / {
        compatible = "brcm,bcm2835";
index c933e84..82d6c46 100644 (file)
@@ -1,5 +1,6 @@
 // SPDX-License-Identifier: GPL-2.0
 #include "bcm283x.dtsi"
+#include "bcm2835-common.dtsi"
 
 / {
        compatible = "brcm,bcm2836";
index beb6c50..9e95fee 100644 (file)
@@ -1,4 +1,5 @@
 #include "bcm283x.dtsi"
+#include "bcm2835-common.dtsi"
 
 / {
        compatible = "brcm,bcm2837";
diff --git a/arch/arm/boot/dts/bcm283x-rpi-usb-peripheral.dtsi b/arch/arm/boot/dts/bcm283x-rpi-usb-peripheral.dtsi
new file mode 100644 (file)
index 0000000..0ff0e9e
--- /dev/null
@@ -0,0 +1,7 @@
+// SPDX-License-Identifier: GPL-2.0
+&usb {
+       dr_mode = "peripheral";
+       g-rx-fifo-size = <256>;
+       g-np-tx-fifo-size = <32>;
+       g-tx-fifo-size = <256 256 512 512 512 768 768>;
+};
index 2d191fc..3caaa57 100644 (file)
@@ -18,7 +18,6 @@
 / {
        compatible = "brcm,bcm2835";
        model = "BCM2835";
-       interrupt-parent = <&intc>;
        #address-cells = <1>;
        #size-cells = <1>;
 
@@ -36,8 +35,6 @@
                        polling-delay-passive = <0>;
                        polling-delay = <1000>;
 
-                       thermal-sensors = <&thermal>;
-
                        trips {
                                cpu-crit {
                                        temperature     = <80000>;
@@ -56,7 +53,7 @@
                #address-cells = <1>;
                #size-cells = <1>;
 
-               timer@7e003000 {
+               system_timer: timer@7e003000 {
                        compatible = "brcm,bcm2835-system-timer";
                        reg = <0x7e003000 0x1000>;
                        interrupts = <1 0>, <1 1>, <1 2>, <1 3>;
                        clock-frequency = <1000000>;
                };
 
-               txp@7e004000 {
+               txp: txp@7e004000 {
                        compatible = "brcm,bcm2835-txp";
                        reg = <0x7e004000 0x20>;
                        interrupts = <1 11>;
                };
 
-               dma: dma@7e007000 {
-                       compatible = "brcm,bcm2835-dma";
-                       reg = <0x7e007000 0xf00>;
-                       interrupts = <1 16>,
-                                    <1 17>,
-                                    <1 18>,
-                                    <1 19>,
-                                    <1 20>,
-                                    <1 21>,
-                                    <1 22>,
-                                    <1 23>,
-                                    <1 24>,
-                                    <1 25>,
-                                    <1 26>,
-                                    /* dma channel 11-14 share one irq */
-                                    <1 27>,
-                                    <1 27>,
-                                    <1 27>,
-                                    <1 27>,
-                                    /* unused shared irq for all channels */
-                                    <1 28>;
-                       interrupt-names = "dma0",
-                                         "dma1",
-                                         "dma2",
-                                         "dma3",
-                                         "dma4",
-                                         "dma5",
-                                         "dma6",
-                                         "dma7",
-                                         "dma8",
-                                         "dma9",
-                                         "dma10",
-                                         "dma11",
-                                         "dma12",
-                                         "dma13",
-                                         "dma14",
-                                         "dma-shared-all";
-                       #dma-cells = <1>;
-                       brcm,dma-channel-mask = <0x7f35>;
-               };
-
-               intc: interrupt-controller@7e00b200 {
-                       compatible = "brcm,bcm2835-armctrl-ic";
-                       reg = <0x7e00b200 0x200>;
-                       interrupt-controller;
-                       #interrupt-cells = <2>;
-               };
-
-               pm: watchdog@7e100000 {
-                       compatible = "brcm,bcm2835-pm", "brcm,bcm2835-pm-wdt";
-                       #power-domain-cells = <1>;
-                       #reset-cells = <1>;
-                       reg = <0x7e100000 0x114>,
-                             <0x7e00a000 0x24>;
-                       clocks = <&clocks BCM2835_CLOCK_V3D>,
-                                <&clocks BCM2835_CLOCK_PERI_IMAGE>,
-                                <&clocks BCM2835_CLOCK_H264>,
-                                <&clocks BCM2835_CLOCK_ISP>;
-                       clock-names = "v3d", "peri_image", "h264", "isp";
-                       system-power-controller;
-               };
-
                clocks: cprman@7e101000 {
                        compatible = "brcm,bcm2835-cprman";
                        #clock-cells = <1>;
                        interrupt-controller;
                        #interrupt-cells = <2>;
 
-                       /* Defines pin muxing groups according to
-                        * BCM2835-ARM-Peripherals.pdf page 102.
+                       /* Defines common pin muxing groups
                         *
                         * While each pin can have its mux selected
                         * for various functions individually, some
                                brcm,pins = <44 45>;
                                brcm,function = <BCM2835_FSEL_ALT2>;
                        };
-                       i2c_slave_gpio18: i2c_slave_gpio18 {
-                               brcm,pins = <18 19 20 21>;
-                               brcm,function = <BCM2835_FSEL_ALT3>;
-                       };
 
-                       jtag_gpio4: jtag_gpio4 {
-                               brcm,pins = <4 5 6 12 13>;
-                               brcm,function = <BCM2835_FSEL_ALT5>;
-                       };
                        jtag_gpio22: jtag_gpio22 {
                                brcm,pins = <22 23 24 25 26 27>;
                                brcm,function = <BCM2835_FSEL_ALT4>;
                                brcm,function = <BCM2835_FSEL_ALT2>;
                        };
 
-                       pwm0_gpio12: pwm0_gpio12 {
-                               brcm,pins = <12>;
-                               brcm,function = <BCM2835_FSEL_ALT0>;
-                       };
-                       pwm0_gpio18: pwm0_gpio18 {
-                               brcm,pins = <18>;
-                               brcm,function = <BCM2835_FSEL_ALT5>;
-                       };
-                       pwm0_gpio40: pwm0_gpio40 {
-                               brcm,pins = <40>;
-                               brcm,function = <BCM2835_FSEL_ALT0>;
-                       };
-                       pwm1_gpio13: pwm1_gpio13 {
-                               brcm,pins = <13>;
-                               brcm,function = <BCM2835_FSEL_ALT0>;
-                       };
-                       pwm1_gpio19: pwm1_gpio19 {
-                               brcm,pins = <19>;
-                               brcm,function = <BCM2835_FSEL_ALT5>;
-                       };
-                       pwm1_gpio41: pwm1_gpio41 {
-                               brcm,pins = <41>;
-                               brcm,function = <BCM2835_FSEL_ALT0>;
-                       };
-                       pwm1_gpio45: pwm1_gpio45 {
-                               brcm,pins = <45>;
-                               brcm,function = <BCM2835_FSEL_ALT0>;
-                       };
-
                        sdhost_gpio48: sdhost_gpio48 {
                                brcm,pins = <48 49 50 51 52 53>;
                                brcm,function = <BCM2835_FSEL_ALT0>;
                };
 
                uart0: serial@7e201000 {
-                       compatible = "brcm,bcm2835-pl011", "arm,pl011", "arm,primecell";
+                       compatible = "arm,pl011", "arm,primecell";
                        reg = <0x7e201000 0x200>;
                        interrupts = <2 25>;
                        clocks = <&clocks BCM2835_CLOCK_UART>,
                        reg = <0x7e202000 0x100>;
                        interrupts = <2 24>;
                        clocks = <&clocks BCM2835_CLOCK_VPU>;
-                       dmas = <&dma 13>;
-                       dma-names = "rx-tx";
                        status = "disabled";
                };
 
                        compatible = "brcm,bcm2835-i2s";
                        reg = <0x7e203000 0x24>;
                        clocks = <&clocks BCM2835_CLOCK_PCM>;
-
-                       dmas = <&dma 2>,
-                              <&dma 3>;
-                       dma-names = "tx", "rx";
                        status = "disabled";
                };
 
                        reg = <0x7e204000 0x200>;
                        interrupts = <2 22>;
                        clocks = <&clocks BCM2835_CLOCK_VPU>;
-                       dmas = <&dma 6>, <&dma 7>;
-                       dma-names = "tx", "rx";
                        #address-cells = <1>;
                        #size-cells = <0>;
                        status = "disabled";
                        status = "disabled";
                };
 
-               pixelvalve@7e206000 {
-                       compatible = "brcm,bcm2835-pixelvalve0";
-                       reg = <0x7e206000 0x100>;
-                       interrupts = <2 13>; /* pwa0 */
-               };
-
-               pixelvalve@7e207000 {
-                       compatible = "brcm,bcm2835-pixelvalve1";
-                       reg = <0x7e207000 0x100>;
-                       interrupts = <2 14>; /* pwa1 */
-               };
-
                dpi: dpi@7e208000 {
                        compatible = "brcm,bcm2835-dpi";
                        reg = <0x7e208000 0x8c>;
 
                };
 
-               thermal: thermal@7e212000 {
-                       compatible = "brcm,bcm2835-thermal";
-                       reg = <0x7e212000 0x8>;
-                       clocks = <&clocks BCM2835_CLOCK_TSENS>;
-                       #thermal-sensor-cells = <0>;
-                       status = "disabled";
-               };
-
                aux: aux@7e215000 {
                        compatible = "brcm,bcm2835-aux";
                        #clock-cells = <1>;
                        status = "disabled";
                };
 
-               i2c2: i2c@7e805000 {
-                       compatible = "brcm,bcm2835-i2c";
-                       reg = <0x7e805000 0x1000>;
-                       interrupts = <2 21>;
-                       clocks = <&clocks BCM2835_CLOCK_VPU>;
-                       #address-cells = <1>;
-                       #size-cells = <0>;
-                       status = "disabled";
-               };
-
                vec: vec@7e806000 {
                        compatible = "brcm,bcm2835-vec";
                        reg = <0x7e806000 0x1000>;
                        status = "disabled";
                };
 
-               pixelvalve@7e807000 {
-                       compatible = "brcm,bcm2835-pixelvalve2";
-                       reg = <0x7e807000 0x100>;
-                       interrupts = <2 10>; /* pixelvalve */
-               };
-
-               hdmi: hdmi@7e902000 {
-                       compatible = "brcm,bcm2835-hdmi";
-                       reg = <0x7e902000 0x600>,
-                             <0x7e808000 0x100>;
-                       interrupts = <2 8>, <2 9>;
-                       ddc = <&i2c2>;
-                       clocks = <&clocks BCM2835_PLLH_PIX>,
-                                <&clocks BCM2835_CLOCK_HSM>;
-                       clock-names = "pixel", "hdmi";
-                       dmas = <&dma 17>;
-                       dma-names = "audio-rx";
-                       status = "disabled";
-               };
-
                usb: usb@7e980000 {
                        compatible = "brcm,bcm2835-usb";
                        reg = <0x7e980000 0x10000>;
                        phys = <&usbphy>;
                        phy-names = "usb2-phy";
                };
-
-               v3d: v3d@7ec00000 {
-                       compatible = "brcm,bcm2835-v3d";
-                       reg = <0x7ec00000 0x1000>;
-                       interrupts = <1 10>;
-                       power-domains = <&pm BCM2835_POWER_DOMAIN_GRAFX_V3D>;
-               };
-
-               vc4: gpu {
-                       compatible = "brcm,bcm2835-vc4";
-               };
        };
 
        clocks {
-               compatible = "simple-bus";
-               #address-cells = <1>;
-               #size-cells = <0>;
-
                /* The oscillator is the root of the clock tree. */
-               clk_osc: clock@3 {
+               clk_osc: clk-osc {
                        compatible = "fixed-clock";
-                       reg = <3>;
                        #clock-cells = <0>;
                        clock-output-names = "osc";
                        clock-frequency = <19200000>;
                };
 
-               clk_usb: clock@4 {
+               clk_usb: clk-usb {
                        compatible = "fixed-clock";
-                       reg = <4>;
                        #clock-cells = <0>;
                        clock-output-names = "otg";
                        clock-frequency = <480000000>;
diff --git a/arch/arm/boot/dts/bcm47094-luxul-xwc-2000.dts b/arch/arm/boot/dts/bcm47094-luxul-xwc-2000.dts
new file mode 100644 (file)
index 0000000..3343253
--- /dev/null
@@ -0,0 +1,53 @@
+// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
+/*
+ * Copyright 2019 Legrand AV Inc.
+ */
+
+/dts-v1/;
+
+#include "bcm47094.dtsi"
+#include "bcm5301x-nand-cs0-bch8.dtsi"
+
+/ {
+       compatible = "luxul,xwc-2000-v1", "brcm,bcm47094", "brcm,bcm4708";
+       model = "Luxul XWC-2000 V1";
+
+       chosen {
+               bootargs = "earlycon";
+       };
+
+       memory {
+               reg = <0x00000000 0x08000000
+                      0x88000000 0x18000000>;
+       };
+
+       leds {
+               compatible = "gpio-leds";
+
+               status  {
+                       label = "bcm53xx:green:status";
+                       gpios = <&chipcommon 18 GPIO_ACTIVE_LOW>;
+                       linux,default-trigger = "timer";
+               };
+       };
+
+       gpio-keys {
+               compatible = "gpio-keys";
+               #address-cells = <1>;
+               #size-cells = <0>;
+
+               restart {
+                       label = "Reset";
+                       linux,code = <KEY_RESTART>;
+                       gpios = <&chipcommon 19 GPIO_ACTIVE_LOW>;
+               };
+       };
+};
+
+&uart1 {
+       status = "okay";
+};
+
+&spi_nor {
+       status = "okay";
+};
index 2e8a397..3081b04 100644 (file)
                                status = "disabled";
                        };
 
-                       crypto_sram: sa-sram@ffffe000 {
+                       crypto_sram: sram@ffffe000 {
                                compatible = "mmio-sram";
                                reg = <0xffffe000 0x800>;
                                clocks = <&gate_clk 15>;
index 37e0487..bbf1c6d 100644 (file)
 
                target-module@f4000 {                   /* 0x4a0f4000, ap 23 04.0 */
                        compatible = "ti,sysc-omap4", "ti,sysc";
-                       ti,hwmods = "mailbox1";
                        reg = <0xf4000 0x4>,
                              <0xf4010 0x4>;
                        reg-names = "rev", "sysc";
 
                target-module@90000 {                   /* 0x48090000, ap 55 12.0 */
                        compatible = "ti,sysc-omap2", "ti,sysc";
-                       ti,hwmods = "rng";
                        reg = <0x91fe0 0x4>,
                              <0x91fe4 0x4>;
                        reg-names = "rev", "sysc";
 
                target-module@b2000 {                   /* 0x480b2000, ap 37 52.0 */
                        compatible = "ti,sysc-omap2", "ti,sysc";
-                       ti,hwmods = "hdq1w";
                        reg = <0xb2000 0x4>,
                              <0xb2014 0x4>,
                              <0xb2018 0x4>;
 
                target-module@2000 {                    /* 0x48802000, ap 95 7c.0 */
                        compatible = "ti,sysc-omap4", "ti,sysc";
-                       ti,hwmods = "mailbox13";
                        reg = <0x2000 0x4>,
                              <0x2010 0x4>;
                        reg-names = "rev", "sysc";
 
                target-module@3a000 {                   /* 0x4883a000, ap 33 3e.0 */
                        compatible = "ti,sysc-omap4", "ti,sysc";
-                       ti,hwmods = "mailbox2";
                        reg = <0x3a000 0x4>,
                              <0x3a010 0x4>;
                        reg-names = "rev", "sysc";
 
                target-module@3c000 {                   /* 0x4883c000, ap 35 3a.0 */
                        compatible = "ti,sysc-omap4", "ti,sysc";
-                       ti,hwmods = "mailbox3";
                        reg = <0x3c000 0x4>,
                              <0x3c010 0x4>;
                        reg-names = "rev", "sysc";
 
                target-module@3e000 {                   /* 0x4883e000, ap 37 46.0 */
                        compatible = "ti,sysc-omap4", "ti,sysc";
-                       ti,hwmods = "mailbox4";
                        reg = <0x3e000 0x4>,
                              <0x3e010 0x4>;
                        reg-names = "rev", "sysc";
 
                target-module@40000 {                   /* 0x48840000, ap 39 64.0 */
                        compatible = "ti,sysc-omap4", "ti,sysc";
-                       ti,hwmods = "mailbox5";
                        reg = <0x40000 0x4>,
                              <0x40010 0x4>;
                        reg-names = "rev", "sysc";
 
                target-module@42000 {                   /* 0x48842000, ap 41 4e.0 */
                        compatible = "ti,sysc-omap4", "ti,sysc";
-                       ti,hwmods = "mailbox6";
                        reg = <0x42000 0x4>,
                              <0x42010 0x4>;
                        reg-names = "rev", "sysc";
 
                target-module@44000 {                   /* 0x48844000, ap 43 42.0 */
                        compatible = "ti,sysc-omap4", "ti,sysc";
-                       ti,hwmods = "mailbox7";
                        reg = <0x44000 0x4>,
                              <0x44010 0x4>;
                        reg-names = "rev", "sysc";
 
                target-module@46000 {                   /* 0x48846000, ap 45 48.0 */
                        compatible = "ti,sysc-omap4", "ti,sysc";
-                       ti,hwmods = "mailbox8";
                        reg = <0x46000 0x4>,
                              <0x46010 0x4>;
                        reg-names = "rev", "sysc";
 
                target-module@5e000 {                   /* 0x4885e000, ap 69 6c.0 */
                        compatible = "ti,sysc-omap4", "ti,sysc";
-                       ti,hwmods = "mailbox9";
                        reg = <0x5e000 0x4>,
                              <0x5e010 0x4>;
                        reg-names = "rev", "sysc";
 
                target-module@60000 {                   /* 0x48860000, ap 71 4a.0 */
                        compatible = "ti,sysc-omap4", "ti,sysc";
-                       ti,hwmods = "mailbox10";
                        reg = <0x60000 0x4>,
                              <0x60010 0x4>;
                        reg-names = "rev", "sysc";
 
                target-module@62000 {                   /* 0x48862000, ap 73 74.0 */
                        compatible = "ti,sysc-omap4", "ti,sysc";
-                       ti,hwmods = "mailbox11";
                        reg = <0x62000 0x4>,
                              <0x62010 0x4>;
                        reg-names = "rev", "sysc";
 
                target-module@64000 {                   /* 0x48864000, ap 67 52.0 */
                        compatible = "ti,sysc-omap4", "ti,sysc";
-                       ti,hwmods = "mailbox12";
                        reg = <0x64000 0x4>,
                              <0x64010 0x4>;
                        reg-names = "rev", "sysc";
 
                target-module@4000 {                    /* 0x4ae14000, ap 7 28.0 */
                        compatible = "ti,sysc-omap2", "ti,sysc";
-                       ti,hwmods = "wd_timer2";
                        reg = <0x4000 0x4>,
                              <0x4010 0x4>,
                              <0x4014 0x4>;
index 953f0ff..73e5011 100644 (file)
 
 #include "dra7-l4.dtsi"
 #include "dra7xx-clocks.dtsi"
+
+&prm {
+       prm_dsp1: prm@400 {
+               compatible = "ti,dra7-prm-inst", "ti,omap-prm-inst";
+               reg = <0x400 0x100>;
+               #reset-cells = <1>;
+       };
+
+       prm_ipu: prm@500 {
+               compatible = "ti,dra7-prm-inst", "ti,omap-prm-inst";
+               reg = <0x500 0x100>;
+               #reset-cells = <1>;
+       };
+
+       prm_core: prm@700 {
+               compatible = "ti,dra7-prm-inst", "ti,omap-prm-inst";
+               reg = <0x700 0x100>;
+               #reset-cells = <1>;
+       };
+
+       prm_iva: prm@f00 {
+               compatible = "ti,dra7-prm-inst", "ti,omap-prm-inst";
+               reg = <0xf00 0x100>;
+       };
+
+       prm_dsp2: prm@1b00 {
+               compatible = "ti,dra7-prm-inst", "ti,omap-prm-inst";
+               reg = <0x1b00 0x40>;
+               #reset-cells = <1>;
+       };
+
+       prm_eve1: prm@1b40 {
+               compatible = "ti,dra7-prm-inst", "ti,omap-prm-inst";
+               reg = <0x1b40 0x40>;
+       };
+
+       prm_eve2: prm@1b80 {
+               compatible = "ti,dra7-prm-inst", "ti,omap-prm-inst";
+               reg = <0x1b80 0x40>;
+       };
+
+       prm_eve3: prm@1bc0 {
+               compatible = "ti,dra7-prm-inst", "ti,omap-prm-inst";
+               reg = <0x1bc0 0x40>;
+       };
+
+       prm_eve4: prm@1c00 {
+               compatible = "ti,dra7-prm-inst", "ti,omap-prm-inst";
+               reg = <0x1c00 0x60>;
+       };
+};
diff --git a/arch/arm/boot/dts/e60k02.dtsi b/arch/arm/boot/dts/e60k02.dtsi
new file mode 100644 (file)
index 0000000..6472b05
--- /dev/null
@@ -0,0 +1,306 @@
+// SPDX-License-Identifier: GPL-2.0
+/*
+ * Copyright 2019 Andreas Kemnade
+ * based on works
+ * Copyright 2016 Freescale Semiconductor, Inc.
+ * and
+ * Copyright (C) 2014 Ricoh Electronic Devices Co., Ltd
+ *
+ * Netronix E60K02 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>
+
+/ {
+
+       chosen {
+               stdout-path = &uart1;
+       };
+
+       gpio_keys: gpio-keys {
+               compatible = "gpio-keys";
+
+               power {
+                       label = "Power";
+                       gpios = <&gpio5 8 GPIO_ACTIVE_LOW>;
+                       linux,code = <KEY_POWER>;
+                       wakeup-source;
+               };
+
+               cover {
+                       label = "Cover";
+                       gpios = <&gpio5 12 GPIO_ACTIVE_LOW>;
+                       linux,code = <SW_LID>;
+                       linux,input-type = <EV_SW>;
+                       wakeup-source;
+               };
+       };
+
+       leds: leds {
+               compatible = "gpio-leds";
+
+               on {
+                       label = "e60k02:white:on";
+                       gpios = <&gpio5 7 GPIO_ACTIVE_LOW>;
+                       linux,default-trigger = "timer";
+               };
+       };
+
+       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>;
+               };
+       };
+};
+
+&i2c2 {
+       clock-frequency = <100000>;
+       status = "okay";
+
+       /* TODO: CYTTSP5 touch controller at 0x24 */
+
+       /* TODO: TPS65185 PMIC for E Ink at 0x68 */
+
+};
+
+&i2c3 {
+       clock-frequency = <100000>;
+       status = "okay";
+
+       ricoh619: pmic@32 {
+               compatible = "ricoh,rc5t619";
+               reg = <0x32>;
+               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>;
+                               };
+                       };
+
+                       /* IR_3V3 */
+                       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-always-on;
+                               regulator-boot-on;
+                       };
+
+                       /* ldo_1v8 */
+                       ldo8_reg: LDO8 {
+                               regulator-name = "LDO8";
+                               regulator-min-microvolt = <1800000>;
+                               regulator-max-microvolt = <1800000>;
+                               regulator-always-on;
+                               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;
+                       };
+
+                       ldortc2_reg: LDORTC2 {
+                               regulator-name = "LDORTC2";
+                               regulator-boot-on;
+                       };
+               };
+       };
+};
+
+&snvs_rtc {
+       /* we are using the rtc in the pmic, not disabled in imx6sll.dtsi */
+       status = "disabled";
+};
+
+&uart1 {
+       status = "okay";
+};
+
+&usdhc2 {
+       non-removable;
+       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 67d8601..96678dd 100644 (file)
                interrupt-controller;
                #interrupt-cells = <2>;
        };
+
        gpio1: gpio@e0050080 {
                compatible = "renesas,em-gio";
                reg = <0xe0050080 0x2c>, <0xe00500c0 0x20>;
                interrupt-controller;
                #interrupt-cells = <2>;
        };
+
        gpio2: gpio@e0050100 {
                compatible = "renesas,em-gio";
                reg = <0xe0050100 0x2c>, <0xe0050140 0x20>;
                interrupt-controller;
                #interrupt-cells = <2>;
        };
+
        gpio3: gpio@e0050180 {
                compatible = "renesas,em-gio";
                reg = <0xe0050180 0x2c>, <0xe00501c0 0x20>;
                interrupt-controller;
                #interrupt-cells = <2>;
        };
+
        gpio4: gpio@e0050200 {
                compatible = "renesas,em-gio";
                reg = <0xe0050200 0x2c>, <0xe0050240 0x20>;
index 7848184..b016b0b 100644 (file)
                #size-cells = <1>;
                ranges;
 
-               sysram@2020000 {
+               sram@2020000 {
                        compatible = "mmio-sram";
                        reg = <0x02020000 0x40000>;
                        #address-cells = <1>;
                                        (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_HIGH)>;
                };
 
-               mct@10050000 {
+               timer@10050000 {
                        compatible = "samsung,exynos4210-mct";
                        reg = <0x10050000 0x800>;
                        interrupts = <GIC_SPI 218 IRQ_TYPE_LEVEL_HIGH>,
                sysmmu_jpeg: sysmmu@11a60000 {
                        compatible = "samsung,exynos-sysmmu";
                        reg = <0x11a60000 0x1000>;
-                       interrupts = <GIC_SPI 156 IRQ_TYPE_LEVEL_HIGH>,
-                                    <GIC_SPI 161 IRQ_TYPE_LEVEL_HIGH>;
+                       interrupts = <GIC_SPI 156 IRQ_TYPE_LEVEL_HIGH>;
                        clock-names = "sysmmu", "master";
                        clocks = <&cmu CLK_SMMUJPEG>, <&cmu CLK_JPEG>;
                        power-domains = <&pd_cam>;
                sysmmu_fimd0: sysmmu@11e20000 {
                        compatible = "samsung,exynos-sysmmu";
                        reg = <0x11e20000 0x1000>;
-                       interrupts = <GIC_SPI 80 IRQ_TYPE_LEVEL_HIGH>,
-                                    <GIC_SPI 81 IRQ_TYPE_LEVEL_HIGH>;
+                       interrupts = <GIC_SPI 80 IRQ_TYPE_LEVEL_HIGH>;
                        clock-names = "sysmmu", "master";
                        clocks = <&cmu CLK_SMMUFIMD0>, <&cmu CLK_FIMD0>;
                        power-domains = <&pd_lcd0>;
                sysmmu_mfc: sysmmu@13620000 {
                        compatible = "samsung,exynos-sysmmu";
                        reg = <0x13620000 0x1000>;
-                       interrupts = <GIC_SPI 96 IRQ_TYPE_LEVEL_HIGH>,
-                                    <GIC_SPI 98 IRQ_TYPE_LEVEL_HIGH>;
+                       interrupts = <GIC_SPI 96 IRQ_TYPE_LEVEL_HIGH>;
                        clock-names = "sysmmu", "master";
                        clocks = <&cmu CLK_SMMUMFC_L>, <&cmu CLK_MFC>;
                        power-domains = <&pd_mfc>;
index 433f109..d2779a7 100644 (file)
                        syscon = <&pmu_system_controller>;
                };
 
-               pd_mfc: mfc-power-domain@10023c40 {
+               pd_mfc: power-domain@10023c40 {
                        compatible = "samsung,exynos4210-pd";
                        reg = <0x10023C40 0x20>;
                        #power-domain-cells = <0>;
                        label = "MFC";
                };
 
-               pd_g3d: g3d-power-domain@10023c60 {
+               pd_g3d: power-domain@10023c60 {
                        compatible = "samsung,exynos4210-pd";
                        reg = <0x10023C60 0x20>;
                        #power-domain-cells = <0>;
                        label = "G3D";
                };
 
-               pd_lcd0: lcd0-power-domain@10023c80 {
+               pd_lcd0: power-domain@10023c80 {
                        compatible = "samsung,exynos4210-pd";
                        reg = <0x10023C80 0x20>;
                        #power-domain-cells = <0>;
                        label = "LCD0";
                };
 
-               pd_tv: tv-power-domain@10023c20 {
+               pd_tv: power-domain@10023c20 {
                        compatible = "samsung,exynos4210-pd";
                        reg = <0x10023C20 0x20>;
                        #power-domain-cells = <0>;
                        label = "TV";
                };
 
-               pd_cam: cam-power-domain@10023c00 {
+               pd_cam: power-domain@10023c00 {
                        compatible = "samsung,exynos4210-pd";
                        reg = <0x10023C00 0x20>;
                        #power-domain-cells = <0>;
                        label = "CAM";
                };
 
-               pd_gps: gps-power-domain@10023ce0 {
+               pd_gps: power-domain@10023ce0 {
                        compatible = "samsung,exynos4210-pd";
                        reg = <0x10023CE0 0x20>;
                        #power-domain-cells = <0>;
                        label = "GPS";
                };
 
-               pd_gps_alive: gps-alive-power-domain@10023d00 {
+               pd_gps_alive: power-domain@10023d00 {
                        compatible = "samsung,exynos4210-pd";
                        reg = <0x10023D00 0x20>;
                        #power-domain-cells = <0>;
index f220716..554819a 100644 (file)
@@ -72,7 +72,7 @@
        };
 
        soc: soc {
-               sysram: sysram@2020000 {
+               sysram: sram@2020000 {
                        compatible = "mmio-sram";
                        reg = <0x02020000 0x20000>;
                        #address-cells = <1>;
@@ -90,7 +90,7 @@
                        };
                };
 
-               pd_lcd1: lcd1-power-domain@10023ca0 {
+               pd_lcd1: power-domain@10023ca0 {
                        compatible = "samsung,exynos4210-pd";
                        reg = <0x10023CA0 0x20>;
                        #power-domain-cells = <0>;
                        arm,data-latency = <2 2 1>;
                };
 
-               mct: mct@10050000 {
+               mct: timer@10050000 {
                        compatible = "samsung,exynos4210-mct";
                        reg = <0x10050000 0x800>;
-                       interrupt-parent = <&mct_map>;
-                       interrupts = <0>, <1>, <2>, <3>, <4>, <5>;
                        clocks = <&clock CLK_FIN_PLL>, <&clock CLK_MCT>;
                        clock-names = "fin_pll", "mct";
-
-                       mct_map: mct-map {
-                               #interrupt-cells = <1>;
-                               #address-cells = <0>;
-                               #size-cells = <0>;
-                               interrupt-map =
-                                       <0 &gic 0 57 IRQ_TYPE_LEVEL_HIGH>,
-                                       <1 &gic 0 69 IRQ_TYPE_LEVEL_HIGH>,
-                                       <2 &combiner 12 6>,
-                                       <3 &combiner 12 7>,
-                                       <4 &gic 0 42 IRQ_TYPE_LEVEL_HIGH>,
-                                       <5 &gic 0 48 IRQ_TYPE_LEVEL_HIGH>;
-                       };
+                       interrupts-extended = <&gic GIC_SPI 57 IRQ_TYPE_LEVEL_HIGH>,
+                                             <&gic GIC_SPI 69 IRQ_TYPE_LEVEL_HIGH>,
+                                             <&combiner 12 6>,
+                                             <&combiner 12 7>,
+                                             <&gic GIC_SPI 42 IRQ_TYPE_LEVEL_HIGH>,
+                                             <&gic GIC_SPI 48 IRQ_TYPE_LEVEL_HIGH>;
                };
 
                watchdog: watchdog@10060000 {
index d20db2d..5022aa5 100644 (file)
                        interrupts = <GIC_SPI 72 IRQ_TYPE_LEVEL_HIGH>;
                };
 
-               sysram@2020000 {
+               sram@2020000 {
                        compatible = "mmio-sram";
                        reg = <0x02020000 0x40000>;
                        #address-cells = <1>;
                        };
                };
 
-               pd_isp: isp-power-domain@10023ca0 {
+               pd_isp: power-domain@10023ca0 {
                        compatible = "samsung,exynos4210-pd";
                        reg = <0x10023CA0 0x20>;
                        #power-domain-cells = <0>;
                        clock-names = "aclk200", "aclk400_mcuisp";
                };
 
-               mct@10050000 {
+               timer@10050000 {
                        compatible = "samsung,exynos4412-mct";
                        reg = <0x10050000 0x800>;
-                       interrupt-parent = <&mct_map>;
-                       interrupts = <0>, <1>, <2>, <3>, <4>;
                        clocks = <&clock CLK_FIN_PLL>, <&clock CLK_MCT>;
                        clock-names = "fin_pll", "mct";
-
-                       mct_map: mct-map {
-                               #interrupt-cells = <1>;
-                               #address-cells = <0>;
-                               #size-cells = <0>;
-                               interrupt-map =
-                                       <0 &gic 0 57 IRQ_TYPE_LEVEL_HIGH>,
-                                       <1 &combiner 12 5>,
-                                       <2 &combiner 12 6>,
-                                       <3 &combiner 12 7>,
-                                       <4 &gic 1 12 IRQ_TYPE_LEVEL_HIGH>;
-                       };
+                       interrupts-extended = <&gic GIC_SPI 57 IRQ_TYPE_LEVEL_HIGH>,
+                                             <&combiner 12 5>,
+                                             <&combiner 12 6>,
+                                             <&combiner 12 7>,
+                                             <&gic GIC_PPI 12 IRQ_TYPE_LEVEL_HIGH>;
                };
 
                watchdog: watchdog@10060000 {
index 67f9b45..4801ca7 100644 (file)
@@ -35,8 +35,8 @@
                #size-cells = <1>;
                ranges;
 
-               chipid@10000000 {
-                       compatible = "samsung,exynos4210-chipid";
+               chipid: chipid@10000000 {
+                       compatible = "samsung,exynos4210-chipid", "syscon";
                        reg = <0x10000000 0x100>;
                };
 
index 6fcb78a..d6c85ef 100644 (file)
@@ -11,6 +11,7 @@
 #include <dt-bindings/interrupt-controller/irq.h>
 #include <dt-bindings/input/input.h>
 #include <dt-bindings/clock/samsung,s2mps11.h>
+#include <dt-bindings/sound/samsung-i2s.h>
 #include "exynos5250.dtsi"
 
 / {
                };
        };
 
+       sound {
+               compatible = "samsung,arndale-wm1811";
+               samsung,audio-cpu = <&i2s0>;
+               samsung,audio-codec = <&wm1811>;
+       };
+
        fixed-rate-clocks {
                xxti {
                        compatible = "samsung,clock-xxti";
        };
 };
 
+&clock {
+       assigned-clocks = <&clock CLK_FOUT_EPLL>;
+       assigned-clock-rates = <49152000>;
+};
+
+&clock_audss {
+       assigned-clocks = <&clock_audss EXYNOS_MOUT_AUDSS>;
+       assigned-clock-parents = <&clock CLK_FOUT_EPLL>;
+};
+
 &cpu0 {
        cpu0-supply = <&buck2_reg>;
 };
 &i2c_3 {
        status = "okay";
 
-       wm1811a@1a {
+       wm1811: codec@1a {
                compatible = "wlf,wm1811";
                reg = <0x1a>;
+               clocks = <&i2s0 CLK_I2S_CDCLK>;
+               clock-names = "MCLK1";
 
                AVDD2-supply = <&main_dc_reg>;
                CPVDD-supply = <&main_dc_reg>;
 };
 
 &i2s0 {
+       assigned-clocks = <&i2s0 CLK_I2S_RCLK_SRC>;
+       assigned-clock-parents = <&clock_audss EXYNOS_I2S_BUS>;
        status = "okay";
 };
 
+&i2s0_bus {
+       samsung,pin-drv = <EXYNOS4_PIN_DRV_LV2>;
+};
+
 &mali {
        mali-supply = <&buck4_reg>;
        status = "okay";
index fc966c1..e1f0215 100644 (file)
        };
 
        soc: soc {
-               sysram@2020000 {
+               sram@2020000 {
                        compatible = "mmio-sram";
                        reg = <0x02020000 0x30000>;
                        #address-cells = <1>;
                        power-domains = <&pd_mau>;
                };
 
-               mct@101c0000 {
+               timer@101c0000 {
                        compatible = "samsung,exynos4210-mct";
                        reg = <0x101C0000 0x800>;
-                       interrupt-controller;
-                       #interrupt-cells = <2>;
-                       interrupt-parent = <&mct_map>;
-                       interrupts = <0 0>, <1 0>, <2 0>, <3 0>,
-                                    <4 0>, <5 0>;
                        clocks = <&clock CLK_FIN_PLL>, <&clock CLK_MCT>;
                        clock-names = "fin_pll", "mct";
-
-                       mct_map: mct-map {
-                               #interrupt-cells = <2>;
-                               #address-cells = <0>;
-                               #size-cells = <0>;
-                               interrupt-map = <0x0 0 &combiner 23 3>,
-                                               <0x1 0 &combiner 23 4>,
-                                               <0x2 0 &combiner 25 2>,
-                                               <0x3 0 &combiner 25 3>,
-                                               <0x4 0 &gic 0 120 IRQ_TYPE_LEVEL_HIGH>,
-                                               <0x5 0 &gic 0 121 IRQ_TYPE_LEVEL_HIGH>;
-                       };
+                       interrupts-extended = <&combiner 23 3>,
+                                             <&combiner 23 4>,
+                                             <&combiner 25 2>,
+                                             <&combiner 25 3>,
+                                             <&gic GIC_SPI 120 IRQ_TYPE_LEVEL_HIGH>,
+                                             <&gic GIC_SPI 121 IRQ_TYPE_LEVEL_HIGH>;
                };
 
                pinctrl_0: pinctrl@11400000 {
                        compatible = "samsung,s5pv210-i2s";
                        status = "disabled";
                        reg = <0x03830000 0x100>;
-                       dmas = <&pdma0 10
-                               &pdma0 9
-                               &pdma0 8>;
+                       dmas = <&pdma0 10>,
+                               <&pdma0 9>,
+                               <&pdma0 8>;
                        dma-names = "tx", "rx", "tx-sec";
                        clocks = <&clock_audss EXYNOS_I2S_BUS>,
                                <&clock_audss EXYNOS_I2S_BUS>,
                        compatible = "samsung,s3c6410-i2s";
                        status = "disabled";
                        reg = <0x12D60000 0x100>;
-                       dmas = <&pdma1 12
-                               &pdma1 11>;
+                       dmas = <&pdma1 12>,
+                               <&pdma1 11>;
                        dma-names = "tx", "rx";
                        clocks = <&clock CLK_I2S1>, <&clock CLK_DIV_I2S1>;
                        clock-names = "iis", "i2s_opclk0";
                        compatible = "samsung,s3c6410-i2s";
                        status = "disabled";
                        reg = <0x12D70000 0x100>;
-                       dmas = <&pdma0 12
-                               &pdma0 11>;
+                       dmas = <&pdma0 12>,
+                               <&pdma0 11>;
                        dma-names = "tx", "rx";
                        clocks = <&clock CLK_I2S2>, <&clock CLK_DIV_I2S2>;
                        clock-names = "iis", "i2s_opclk0";
index 3581b57..b0811db 100644 (file)
                        reg = <0x10000000 0x100>;
                };
 
-               mct: mct@100b0000 {
+               mct: timer@100b0000 {
                        compatible = "samsung,exynos4210-mct";
                        reg = <0x100B0000 0x1000>;
                        clocks = <&fin_pll>, <&clock_peri PERI_CLK_MCT>;
index e6f78b1..a4b03d4 100644 (file)
                audi2s0: i2s@3830000 {
                        compatible = "samsung,exynos5420-i2s";
                        reg = <0x03830000 0x100>;
-                       dmas = <&pdma0 10
-                               &pdma0 9
-                               &pdma0 8>;
+                       dmas = <&pdma0 10>,
+                               <&pdma0 9>,
+                               <&pdma0 8>;
                        dma-names = "tx", "rx", "tx-sec";
                        clocks = <&clock_audss EXYNOS_I2S_BUS>,
                                <&clock_audss EXYNOS_I2S_BUS>,
index 9eb48ca..2bcbdf8 100644 (file)
        status = "okay";
 };
 
+&timer {
+       arm,cpu-registers-not-fw-configured;
+};
+
 &tmu_cpu0 {
        vtmu-supply = <&ldo10_reg>;
 };
index 7d51e0f..d39907a 100644 (file)
                };
 
                clock: clock-controller@10010000 {
-                       compatible = "samsung,exynos5420-clock";
+                       compatible = "samsung,exynos5420-clock", "syscon";
                        reg = <0x10010000 0x30000>;
                        #clock-cells = <1>;
                };
                        status = "disabled";
                };
 
+               dmc: memory-controller@10c20000 {
+                       compatible = "samsung,exynos5422-dmc";
+                       reg = <0x10c20000 0x10000>, <0x10c30000 0x10000>;
+                       interrupt-parent = <&combiner>;
+                       interrupts = <16 0>, <16 1>;
+                       interrupt-names = "drex_0", "drex_1";
+                       clocks = <&clock CLK_FOUT_SPLL>,
+                                <&clock CLK_MOUT_SCLK_SPLL>,
+                                <&clock CLK_FF_DOUT_SPLL2>,
+                                <&clock CLK_FOUT_BPLL>,
+                                <&clock CLK_MOUT_BPLL>,
+                                <&clock CLK_SCLK_BPLL>,
+                                <&clock CLK_MOUT_MX_MSPLL_CCORE>,
+                                <&clock CLK_MOUT_MCLK_CDREX>;
+                       clock-names = "fout_spll",
+                                     "mout_sclk_spll",
+                                     "ff_dout_spll2",
+                                     "fout_bpll",
+                                     "mout_bpll",
+                                     "sclk_bpll",
+                                     "mout_mx_mspll_ccore",
+                                     "mout_mclk_cdrex";
+                       samsung,syscon-clk = <&clock>;
+                       status = "disabled";
+               };
+
                nocp_mem0_0: nocp@10ca1000 {
                        compatible = "samsung,exynos5420-nocp";
                        reg = <0x10CA1000 0x200>;
                        status = "disabled";
                };
 
+               ppmu_dmc0_0: ppmu@10d00000 {
+                       compatible = "samsung,exynos-ppmu";
+                       reg = <0x10d00000 0x2000>;
+                       clocks = <&clock CLK_PCLK_PPMU_DREX0_0>;
+                       clock-names = "ppmu";
+                       events {
+                               ppmu_event3_dmc0_0: ppmu-event3-dmc0_0 {
+                                       event-name = "ppmu-event3-dmc0_0";
+                               };
+                       };
+               };
+
+               ppmu_dmc0_1: ppmu@10d10000 {
+                       compatible = "samsung,exynos-ppmu";
+                       reg = <0x10d10000 0x2000>;
+                       clocks = <&clock CLK_PCLK_PPMU_DREX0_1>;
+                       clock-names = "ppmu";
+                       events {
+                               ppmu_event3_dmc0_1: ppmu-event3-dmc0_1 {
+                                       event-name = "ppmu-event3-dmc0_1";
+                               };
+                       };
+               };
+
+               ppmu_dmc1_0: ppmu@10d60000 {
+                       compatible = "samsung,exynos-ppmu";
+                       reg = <0x10d60000 0x2000>;
+                       clocks = <&clock CLK_PCLK_PPMU_DREX1_0>;
+                       clock-names = "ppmu";
+                       events {
+                               ppmu_event3_dmc1_0: ppmu-event3-dmc1_0 {
+                                       event-name = "ppmu-event3-dmc1_0";
+                               };
+                       };
+               };
+
+               ppmu_dmc1_1: ppmu@10d70000 {
+                       compatible = "samsung,exynos-ppmu";
+                       reg = <0x10d70000 0x2000>;
+                       clocks = <&clock CLK_PCLK_PPMU_DREX1_1>;
+                       clock-names = "ppmu";
+                       events {
+                               ppmu_event3_dmc1_1: ppmu-event3-dmc1_1 {
+                                       event-name = "ppmu-event3-dmc1_1";
+                               };
+                       };
+               };
+
                gsc_pd: power-domain@10044000 {
                        compatible = "samsung,exynos4210-pd";
                        reg = <0x10044000 0x20>;
                i2s0: i2s@3830000 {
                        compatible = "samsung,exynos5420-i2s";
                        reg = <0x03830000 0x100>;
-                       dmas = <&adma 0
-                               &adma 2
-                               &adma 1>;
+                       dmas = <&adma 0>,
+                               <&adma 2>,
+                               <&adma 1>;
                        dma-names = "tx", "rx", "tx-sec";
                        clocks = <&clock_audss EXYNOS_I2S_BUS>,
                                <&clock_audss EXYNOS_I2S_BUS>,
                i2s1: i2s@12d60000 {
                        compatible = "samsung,exynos5420-i2s";
                        reg = <0x12D60000 0x100>;
-                       dmas = <&pdma1 12
-                               &pdma1 11>;
+                       dmas = <&pdma1 12>,
+                               <&pdma1 11>;
                        dma-names = "tx", "rx";
                        clocks = <&clock CLK_I2S1>, <&clock CLK_SCLK_I2S1>;
                        clock-names = "iis", "i2s_opclk0";
                i2s2: i2s@12d70000 {
                        compatible = "samsung,exynos5420-i2s";
                        reg = <0x12D70000 0x100>;
-                       dmas = <&pdma0 12
-                               &pdma0 11>;
+                       dmas = <&pdma0 12>,
+                               <&pdma0 11>;
                        dma-names = "tx", "rx";
                        clocks = <&clock CLK_I2S2>, <&clock CLK_SCLK_I2S2>;
                        clock-names = "iis", "i2s_opclk0";
index 829147e..059fa32 100644 (file)
                        clock-frequency = <24000000>;
                };
        };
+
+       dmc_opp_table: opp_table2 {
+               compatible = "operating-points-v2";
+
+               opp00 {
+                       opp-hz = /bits/ 64 <165000000>;
+                       opp-microvolt = <875000>;
+               };
+               opp01 {
+                       opp-hz = /bits/ 64 <206000000>;
+                       opp-microvolt = <875000>;
+               };
+               opp02 {
+                       opp-hz = /bits/ 64 <275000000>;
+                       opp-microvolt = <875000>;
+               };
+               opp03 {
+                       opp-hz = /bits/ 64 <413000000>;
+                       opp-microvolt = <887500>;
+               };
+               opp04 {
+                       opp-hz = /bits/ 64 <543000000>;
+                       opp-microvolt = <937500>;
+               };
+               opp05 {
+                       opp-hz = /bits/ 64 <633000000>;
+                       opp-microvolt = <1012500>;
+               };
+               opp06 {
+                       opp-hz = /bits/ 64 <728000000>;
+                       opp-microvolt = <1037500>;
+               };
+               opp07 {
+                       opp-hz = /bits/ 64 <825000000>;
+                       opp-microvolt = <1050000>;
+               };
+       };
+
+       samsung_K3QF2F20DB: lpddr3 {
+               compatible      = "samsung,K3QF2F20DB", "jedec,lpddr3";
+               density         = <16384>;
+               io-width        = <32>;
+               #address-cells  = <1>;
+               #size-cells     = <0>;
+
+               tRFC-min-tck            = <17>;
+               tRRD-min-tck            = <2>;
+               tRPab-min-tck           = <2>;
+               tRPpb-min-tck           = <2>;
+               tRCD-min-tck            = <3>;
+               tRC-min-tck             = <6>;
+               tRAS-min-tck            = <5>;
+               tWTR-min-tck            = <2>;
+               tWR-min-tck             = <7>;
+               tRTP-min-tck            = <2>;
+               tW2W-C2C-min-tck        = <0>;
+               tR2R-C2C-min-tck        = <0>;
+               tWL-min-tck             = <8>;
+               tDQSCK-min-tck          = <5>;
+               tRL-min-tck             = <14>;
+               tFAW-min-tck            = <5>;
+               tXSR-min-tck            = <12>;
+               tXP-min-tck             = <2>;
+               tCKE-min-tck            = <2>;
+               tCKESR-min-tck          = <2>;
+               tMRD-min-tck            = <5>;
+
+               timings_samsung_K3QF2F20DB_800mhz: lpddr3-timings@800000000 {
+                       compatible      = "jedec,lpddr3-timings";
+                       /* workaround: 'reg' shows max-freq */
+                       reg             = <800000000>;
+                       min-freq        = <100000000>;
+                       tRFC            = <65000>;
+                       tRRD            = <6000>;
+                       tRPab           = <12000>;
+                       tRPpb           = <12000>;
+                       tRCD            = <10000>;
+                       tRC             = <33750>;
+                       tRAS            = <23000>;
+                       tWTR            = <3750>;
+                       tWR             = <7500>;
+                       tRTP            = <3750>;
+                       tW2W-C2C        = <0>;
+                       tR2R-C2C        = <0>;
+                       tFAW            = <25000>;
+                       tXSR            = <70000>;
+                       tXP             = <3750>;
+                       tCKE            = <3750>;
+                       tCKESR          = <3750>;
+                       tMRD            = <7000>;
+               };
+       };
 };
 
 &adc {
        cpu-supply = <&buck2_reg>;
 };
 
+&dmc {
+       devfreq-events = <&ppmu_event3_dmc0_0>, <&ppmu_event3_dmc0_1>,
+                       <&ppmu_event3_dmc1_0>, <&ppmu_event3_dmc1_1>;
+       device-handle = <&samsung_K3QF2F20DB>;
+       operating-points-v2 = <&dmc_opp_table>;
+       vdd-supply = <&buck1_reg>;
+       status = "okay";
+};
+
 &hsi2c_4 {
        status = "okay";
 
        };
 };
 
+&ppmu_dmc0_0 {
+       status = "okay";
+};
+
+&ppmu_dmc0_1 {
+       status = "okay";
+};
+
+&ppmu_dmc1_0 {
+       status = "okay";
+};
+
+&ppmu_dmc1_1 {
+       status = "okay";
+};
+
 &tmu_cpu0 {
        vtmu-supply = <&ldo7_reg>;
 };
index c19b5a5..a31ca2e 100644 (file)
        status = "disabled";
 };
 
+&chipid {
+       samsung,asv-bin = <2>;
+};
+
 &pwm {
        /*
         * PWM 0 -- fan
index 9c3b63b..f78dee8 100644 (file)
                status = "disabled";
        };
 
+       timer: 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)>;
+               clock-frequency = <24000000>;
+       };
+
        soc: soc {
-               sysram@2020000 {
+               sram@2020000 {
                        compatible = "mmio-sram";
                        reg = <0x02020000 0x54000>;
                        #address-cells = <1>;
                        };
                };
 
-               mct: mct@101c0000 {
+               mct: timer@101c0000 {
                        compatible = "samsung,exynos4210-mct";
                        reg = <0x101c0000 0xb00>;
-                       interrupt-parent = <&mct_map>;
-                       interrupts = <0>, <1>, <2>, <3>, <4>, <5>, <6>, <7>,
-                                       <8>, <9>, <10>, <11>;
-
-                       mct_map: mct-map {
-                               #interrupt-cells = <1>;
-                               #address-cells = <0>;
-                               #size-cells = <0>;
-                               interrupt-map = <0 &combiner 23 3>,
-                                               <1 &combiner 23 4>,
-                                               <2 &combiner 25 2>,
-                                               <3 &combiner 25 3>,
-                                               <4 &gic 0 120 IRQ_TYPE_LEVEL_HIGH>,
-                                               <5 &gic 0 121 IRQ_TYPE_LEVEL_HIGH>,
-                                               <6 &gic 0 122 IRQ_TYPE_LEVEL_HIGH>,
-                                               <7 &gic 0 123 IRQ_TYPE_LEVEL_HIGH>,
-                                               <8 &gic 0 128 IRQ_TYPE_LEVEL_HIGH>,
-                                               <9 &gic 0 129 IRQ_TYPE_LEVEL_HIGH>,
-                                               <10 &gic 0 130 IRQ_TYPE_LEVEL_HIGH>,
-                                               <11 &gic 0 131 IRQ_TYPE_LEVEL_HIGH>;
-                       };
+                       interrupts-extended = <&combiner 23 3>,
+                                             <&combiner 23 4>,
+                                             <&combiner 25 2>,
+                                             <&combiner 25 3>,
+                                             <&gic GIC_SPI 120 IRQ_TYPE_LEVEL_HIGH>,
+                                             <&gic GIC_SPI 121 IRQ_TYPE_LEVEL_HIGH>,
+                                             <&gic GIC_SPI 122 IRQ_TYPE_LEVEL_HIGH>,
+                                             <&gic GIC_SPI 123 IRQ_TYPE_LEVEL_HIGH>,
+                                             <&gic GIC_SPI 128 IRQ_TYPE_LEVEL_HIGH>,
+                                             <&gic GIC_SPI 129 IRQ_TYPE_LEVEL_HIGH>,
+                                             <&gic GIC_SPI 130 IRQ_TYPE_LEVEL_HIGH>,
+                                             <&gic GIC_SPI 131 IRQ_TYPE_LEVEL_HIGH>;
                };
 
                watchdog: watchdog@101d0000 {
index 4398f2d..60ca3d6 100644 (file)
        status = "okay";
 };
 
+&timer {
+       arm,cpu-registers-not-fw-configured;
+};
+
 &tmu_cpu0 {
        vtmu-supply = <&ldo10_reg>;
 };
index de639ee..16177d8 100644 (file)
@@ -17,7 +17,7 @@
 };
 
 &clock {
-       compatible = "samsung,exynos5800-clock";
+       compatible = "samsung,exynos5800-clock", "syscon";
 };
 
 &cluster_a15_opp_table {
index 3652f55..f3464cf 100644 (file)
                        status = "disabled";
                };
 
-               iram: iram@ffff4c00 {
+               iram: sram@ffff4c00 {
                        compatible = "mmio-sram";
                        reg = <0xffff4c00 0xb400>;
                };
index d7f6fb7..6b62f07 100644 (file)
@@ -55,7 +55,7 @@
                interrupt-parent = <&avic>;
                ranges;
 
-               iram: iram@1fffc000 {
+               iram: sram@1fffc000 {
                        compatible = "mmio-sram";
                        reg = <0x1fffc000 0x4000>;
                        #address-cells = <1>;
index 0a4b9a5..dea86b9 100644 (file)
                interrupt-parent = <&tzic>;
                ranges;
 
-               iram: iram@1ffe0000 {
+               iram: sram@1ffe0000 {
                        compatible = "mmio-sram";
                        reg = <0x1ffe0000 0x20000>;
                };
index f00dda3..9b4efcd 100644 (file)
 
        display0: disp0 {
                compatible = "fsl,imx-parallel-display";
-               interface-pix-fmt = "rgb565";
                pinctrl-names = "default";
                pinctrl-0 = <&pinctrl_ipu_disp0>;
+
+               #address-cells = <1>;
+               #size-cells = <0>;
                status = "disabled";
-               display-timings {
-                       claawvga {
-                               native-mode;
-                               clock-frequency = <27000000>;
-                               hactive = <800>;
-                               vactive = <480>;
-                               hback-porch = <40>;
-                               hfront-porch = <60>;
-                               vback-porch = <10>;
-                               vfront-porch = <10>;
-                               hsync-len = <20>;
-                               vsync-len = <10>;
-                               hsync-active = <0>;
-                               vsync-active = <0>;
-                               de-active = <1>;
-                               pixelclk-active = <0>;
-                       };
-               };
 
-               port {
+               port@0 {
+                       reg = <0>;
+
                        display0_in: endpoint {
                                remote-endpoint = <&ipu_di0_disp0>;
                        };
                };
+
+               port@1 {
+                       reg = <1>;
+
+                       display_out: endpoint {
+                               remote-endpoint = <&panel_in>;
+                       };
+               };
        };
 
        gpio-keys {
                };
        };
 
+       panel {
+               compatible = "sii,43wvf1g";
+
+               port {
+                       panel_in: endpoint {
+                               remote-endpoint = <&display_out>;
+                       };
+               };
+       };
+
        regulators {
                compatible = "simple-bus";
                #address-cells = <1>;
index ee6263d..f34993a 100644 (file)
        };
 
        /*
-        * UART mode pin header configration
+        * UART mode pin header configuration
         * 3 - GPIO5[26], pull-down 100K
         * 4 - GPIO5[27], pull-down 100K
         * 5 - TX, pull-up 100K
index 6632e99..3dcce34 100644 (file)
@@ -1,49 +1,6 @@
-/*
- * Copyright 2015 Armadeus Systems
- *
- * 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.
- */
+// SPDX-License-Identifier: GPL-2.0+ OR MIT
+//
+// Copyright 2015 Armadeus Systems <support@armadeus.com>
 
 /dts-v1/;
 #include "imx6dl.dtsi"
index 9a5d6c9..cd07562 100644 (file)
 &i2c3 {
        status = "okay";
 
+       /*
+        * Touchscreen is using SODIMM 28/30, also used for PWM<B>, PWM<C>,
+        * aka pwm2, pwm3. so if you enable touchscreen, disable the pwms
+        */
+       touchscreen@4a {
+               compatible = "atmel,maxtouch";
+               pinctrl-names = "default";
+               pinctrl-0 = <&pinctrl_pcap_1>;
+               reg = <0x4a>;
+               interrupt-parent = <&gpio1>;
+               interrupts = <9 IRQ_TYPE_EDGE_FALLING>;         /* SODIMM 28 */
+               reset-gpios = <&gpio2 10 GPIO_ACTIVE_HIGH>;     /* SODIMM 30 */
+               status = "disabled";
+       };
+
        /* M41T0M6 real time clock on carrier board */
        rtc_i2c: rtc@68 {
                compatible = "st,m41t0";
        };
 };
 
+&iomuxc {
+       pinctrl-names = "default";
+       pinctrl-0 = <
+               &pinctrl_weim_gpio_1 &pinctrl_weim_gpio_2
+               &pinctrl_weim_gpio_3 &pinctrl_weim_gpio_4
+               &pinctrl_weim_gpio_5 &pinctrl_weim_gpio_6
+               &pinctrl_usbh_oc_1 &pinctrl_usbc_id_1
+       >;
+
+       pinctrl_pcap_1: pcap1grp {
+               fsl,pins = <
+                       MX6QDL_PAD_GPIO_9__GPIO1_IO09   0x1b0b0 /* SODIMM 28 */
+                       MX6QDL_PAD_SD4_DAT2__GPIO2_IO10 0x1b0b0 /* SODIMM 30 */
+               >;
+       };
+
+       pinctrl_mxt_ts: mxttsgrp {
+               fsl,pins = <
+                       MX6QDL_PAD_EIM_CS1__GPIO2_IO24  0x130b0 /* SODIMM 107 */
+                       MX6QDL_PAD_SD2_DAT1__GPIO1_IO14 0x130b0 /* SODIMM 106 */
+               >;
+       };
+};
+
 &ipu1_di0_disp0 {
        remote-endpoint = <&lcd_display_in>;
 };
index e8d800f..80ed5f1 100644 (file)
@@ -4,6 +4,7 @@
 
 #include <dt-bindings/gpio/gpio.h>
 #include <dt-bindings/interrupt-controller/irq.h>
+#include <dt-bindings/input/input.h>
 #include <dt-bindings/pwm/pwm.h>
 
 / {
        clock-frequency = <100000>;
        pinctrl-names = "default";
        pinctrl-0 = <&pinctrl_i2c3>;
-       status = "disabled";
+       status = "okay";
 
        oled: oled@3d {
                compatible = "solomon,ssd1305fb-i2c";
                vcc-supply = <&sw2_reg>;
                status = "disabled";
        };
+
+       touchkeys: keys@5a {
+               compatible = "fsl,mpr121-touchkey";
+               reg = <0x5a>;
+               vdd-supply = <&sw2_reg>;
+               autorepeat;
+               linux,keycodes = <KEY_1>, <KEY_2>, <KEY_3>, <KEY_4>, <KEY_5>,
+                               <KEY_6>, <KEY_7>, <KEY_8>, <KEY_9>,
+                               <KEY_BACKSPACE>, <KEY_0>, <KEY_ENTER>;
+               poll-interval = <50>;
+               status = "disabled";
+       };
 };
 
 &iomuxc {
                >;
        };
 
+       pinctrl_uart2: uart2grp {
+               fsl,pins = <
+                       MX6QDL_PAD_GPIO_7__UART2_TX_DATA        0x1b098
+                       MX6QDL_PAD_GPIO_8__UART2_RX_DATA        0x1b098
+               >;
+       };
+
        pinctrl_usbh1: usbh1grp {
                fsl,pins = <
                        MX6QDL_PAD_EIM_D30__USB_H1_OC   0x1b098
        status = "okay";
 };
 
+&uart2 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_uart2>;
+       status = "okay";
+};
+
 &usbh1 {
        pinctrl-names = "default";
        pinctrl-0 = <&pinctrl_usbh1>;
index f979270..6010d3d 100644 (file)
        status = "okay";
 };
 
-&i2c3 {
-       status = "okay";
-};
-
 &leds {
        status = "okay";
 };
        status = "okay";
 };
 
+&touchkeys {
+       status = "okay";
+};
+
 &usdhc3 {
        status = "okay";
 };
index 2ed1031..008312e 100644 (file)
@@ -64,6 +64,7 @@
                                396000  1175000
                        >;
                        clock-latency = <61036>; /* two CLK32 periods */
+                       #cooling-cells = <2>;
                        clocks = <&clks IMX6QDL_CLK_ARM>,
                                 <&clks IMX6QDL_CLK_PLL2_PFD2_396M>,
                                 <&clks IMX6QDL_CLK_STEP>,
index 0edd304..4665e15 100644 (file)
 &i2c1 {
        status = "okay";
 
+       /*
+        * Touchscreen is using SODIMM 28/30, also used for PWM<B>, PWM<C>,
+        * aka pwm2, pwm3. so if you enable touchscreen, disable the pwms
+        */
+       touchscreen@4a {
+               compatible = "atmel,maxtouch";
+               reg = <0x4a>;
+               interrupt-parent = <&gpio6>;
+               interrupts = <10 IRQ_TYPE_EDGE_FALLING>;
+               reset-gpios = <&gpio6 9 GPIO_ACTIVE_HIGH>; /* SODIMM 13 */
+               status = "disabled";
+       };
+
        pcie-switch@58 {
                compatible = "plx,pex8605";
                reg = <0x58>;
index b94bb68..a3fa04a 100644 (file)
 &i2c1 {
        status = "okay";
 
+       /*
+        * Touchscreen is using SODIMM 28/30, also used for PWM<B>, PWM<C>,
+        * aka pwm2, pwm3. so if you enable touchscreen, disable the pwms
+        */
+       touchscreen@4a {
+               compatible = "atmel,maxtouch";
+               reg = <0x4a>;
+               interrupt-parent = <&gpio6>;
+               interrupts = <10 IRQ_TYPE_EDGE_FALLING>;
+               reset-gpios = <&gpio6 9 GPIO_ACTIVE_HIGH>; /* SODIMM 13 */
+               status = "disabled";
+       };
+
        /* M41T0M6 real time clock on carrier board */
        rtc_i2c: rtc@68 {
                compatible = "st,m41t0";
index 302fd6a..5ba49d0 100644 (file)
 &i2c1 {
        status = "okay";
 
+       /*
+        * Touchscreen is using SODIMM 28/30, also used for PWM<B>, PWM<C>,
+        * aka pwm2, pwm3. so if you enable touchscreen, disable the pwms
+        */
+       touchscreen@4a {
+               compatible = "atmel,maxtouch";
+               reg = <0x4a>;
+               interrupt-parent = <&gpio6>;
+               interrupts = <10 IRQ_TYPE_EDGE_FALLING>;
+               reset-gpios = <&gpio6 9 GPIO_ACTIVE_HIGH>; /* SODIMM 13 */
+               status = "disabled";
+       };
+
        eeprom@50 {
                compatible = "atmel,24c02";
                reg = <0x50>;
index 07a36bb..664b0af 100644 (file)
@@ -1,49 +1,6 @@
-/*
- * Copyright 2015 Armadeus Systems
- *
- * 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.
- */
+// SPDX-License-Identifier: GPL-2.0+ OR MIT
+//
+// Copyright 2015 Armadeus Systems <support@armadeus.com>
 
 /dts-v1/;
 #include "imx6q.dtsi"
index 9c61e3b..5219553 100644 (file)
        status = "okay";
 };
 
+&can1 {
+       status = "okay";
+};
+
+&can2 {
+       status = "disabled";
+};
+
 &hdmi {
        ddc-i2c-bus = <&i2c2>;
        status = "okay";
index 387801d..845cfad 100644 (file)
 &can1 {
        pinctrl-names = "default";
        pinctrl-0 = <&pinctrl_flexcan1>;
-       status = "okay";
 };
 
 &can2 {
        pinctrl-names = "default";
        pinctrl-0 = <&pinctrl_flexcan2>;
-       status = "okay";
 };
 
 &ecspi1 {
index ecc3989..d5d4690 100644 (file)
        sound-digital {
                compatible = "simple-audio-card";
                simple-audio-card,name = "tda1997x-audio";
+               simple-audio-card,format = "i2s";
+               simple-audio-card,bitclock-master = <&sound_codec>;
+               simple-audio-card,frame-master = <&sound_codec>;
 
-               simple-audio-card,dai-link@0 {
-                       format = "i2s";
-
-                       cpu {
-                               sound-dai = <&ssi2>;
-                       };
+               sound_cpu: simple-audio-card,cpu {
+                       sound-dai = <&ssi2>;
+               };
 
-                       codec {
-                               bitclock-master;
-                               frame-master;
-                               sound-dai = <&hdmi_receiver>;
-                       };
+               sound_codec: simple-audio-card,codec {
+                       sound-dai = <&hdmi_receiver>;
                };
        };
 };
index d038f41..9d3be1c 100644 (file)
@@ -73,6 +73,7 @@
                                396000  1175000
                        >;
                        clock-latency = <61036>; /* two CLK32 periods */
+                       #cooling-cells = <2>;
                        clocks = <&clks IMX6QDL_CLK_ARM>,
                                 <&clks IMX6QDL_CLK_PLL2_PFD2_396M>,
                                 <&clks IMX6QDL_CLK_STEP>,
                                396000  1175000
                        >;
                        clock-latency = <61036>; /* two CLK32 periods */
+                       #cooling-cells = <2>;
                        clocks = <&clks IMX6QDL_CLK_ARM>,
                                 <&clks IMX6QDL_CLK_PLL2_PFD2_396M>,
                                 <&clks IMX6QDL_CLK_STEP>,
                                396000  1175000
                        >;
                        clock-latency = <61036>; /* two CLK32 periods */
+                       #cooling-cells = <2>;
                        clocks = <&clks IMX6QDL_CLK_ARM>,
                                 <&clks IMX6QDL_CLK_PLL2_PFD2_396M>,
                                 <&clks IMX6QDL_CLK_STEP>,
index 7c4ad54..ff1287e 100644 (file)
 };
 
 &can1 {
-       pinctrl-names = "default";
-       pinctrl-0 = <&pinctrl_flexcan1>;
+       pinctrl-names = "default", "sleep";
+       pinctrl-0 = <&pinctrl_flexcan1_default>;
+       pinctrl-1 = <&pinctrl_flexcan1_sleep>;
        status = "disabled";
 };
 
 &can2 {
-       pinctrl-names = "default";
-       pinctrl-0 = <&pinctrl_flexcan2>;
+       pinctrl-names = "default", "sleep";
+       pinctrl-0 = <&pinctrl_flexcan2_default>;
+       pinctrl-1 = <&pinctrl_flexcan2_sleep>;
        status = "disabled";
 };
 
 /* I2C1_SDA/SCL on MXM3 209/211 (e.g. RTC on carrier board) */
 &i2c1 {
        clock-frequency = <100000>;
-       pinctrl-names = "default";
+       pinctrl-names = "default", "gpio";
        pinctrl-0 = <&pinctrl_i2c1>;
+       pinctrl-1 = <&pinctrl_i2c1_gpio>;
+       scl-gpios = <&gpio5 27 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
+       sda-gpios = <&gpio5 26 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
        status = "disabled";
 };
 
  */
 &i2c2 {
        clock-frequency = <100000>;
-       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)>;
        status = "okay";
 
        pmic: pfuze100@8 {
  */
 &i2c3 {
        clock-frequency = <100000>;
-       pinctrl-names = "default", "recovery";
+       pinctrl-names = "default", "gpio";
        pinctrl-0 = <&pinctrl_i2c3>;
-       pinctrl-1 = <&pinctrl_i2c3_recovery>;
+       pinctrl-1 = <&pinctrl_i2c3_gpio>;
        scl-gpios = <&gpio3 17 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
        sda-gpios = <&gpio3 18 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
        status = "disabled";
                >;
        };
 
-       pinctrl_flexcan1: flexcan1grp {
+       pinctrl_flexcan1_default: flexcan1defgrp {
                fsl,pins = <
                        MX6QDL_PAD_GPIO_7__FLEXCAN1_TX 0x1b0b0
                        MX6QDL_PAD_GPIO_8__FLEXCAN1_RX 0x1b0b0
                >;
        };
 
-       pinctrl_flexcan2: flexcan2grp {
+       pinctrl_flexcan1_sleep: flexcan1slpgrp {
+               fsl,pins = <
+                       MX6QDL_PAD_GPIO_7__GPIO1_IO07 0x0
+                       MX6QDL_PAD_GPIO_8__GPIO1_IO08 0x0
+               >;
+       };
+
+       pinctrl_flexcan2_default: flexcan2defgrp {
                fsl,pins = <
                        MX6QDL_PAD_KEY_COL4__FLEXCAN2_TX 0x1b0b0
                        MX6QDL_PAD_KEY_ROW4__FLEXCAN2_RX 0x1b0b0
                >;
        };
+       pinctrl_flexcan2_sleep: flexcan2slpgrp {
+               fsl,pins = <
+                       MX6QDL_PAD_KEY_COL4__GPIO4_IO14 0x0
+                       MX6QDL_PAD_KEY_ROW4__GPIO4_IO15 0x0
+               >;
+       };
 
        pinctrl_gpio_bl_on: gpioblon {
                fsl,pins = <
                >;
        };
 
+       pinctrl_i2c1_gpio: i2c1gpiogrp {
+               fsl,pins = <
+                       MX6QDL_PAD_CSI0_DAT8__GPIO5_IO26 0x4001b8b1
+                       MX6QDL_PAD_CSI0_DAT9__GPIO5_IO27 0x4001b8b1
+               >;
+       };
+
        pinctrl_i2c2: i2c2grp {
                fsl,pins = <
                        MX6QDL_PAD_KEY_COL3__I2C2_SCL 0x4001b8b1
                >;
        };
 
+       pinctrl_i2c2_gpio: i2c2gpiogrp {
+               fsl,pins = <
+                       MX6QDL_PAD_KEY_COL3__GPIO4_IO12 0x4001b8b1
+                       MX6QDL_PAD_KEY_ROW3__GPIO4_IO13 0x4001b8b1
+               >;
+       };
+
        pinctrl_i2c3: i2c3grp {
                fsl,pins = <
                        MX6QDL_PAD_EIM_D17__I2C3_SCL 0x4001b8b1
                >;
        };
 
-       pinctrl_i2c3_recovery: i2c3recoverygrp {
+       pinctrl_i2c3_gpio: i2c3gpiogrp {
                fsl,pins = <
                        MX6QDL_PAD_EIM_D17__GPIO3_IO17 0x4001b8b1
                        MX6QDL_PAD_EIM_D18__GPIO3_IO18 0x4001b8b1
index 4738c3c..b78ed79 100644 (file)
@@ -1,66 +1,56 @@
-/*
- * Copyright 2015 Armadeus Systems
- *
- * 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.
- */
+// SPDX-License-Identifier: GPL-2.0+ OR MIT
+//
+// Copyright 2015 Armadeus Systems <support@armadeus.com>
 
 #include <dt-bindings/gpio/gpio.h>
 #include <dt-bindings/interrupt-controller/irq.h>
 
+/ {
+       reg_1p8v: regulator-1p8v {
+               compatible = "regulator-fixed";
+               regulator-name = "1P8V";
+               regulator-min-microvolt = <1800000>;
+               regulator-max-microvolt = <1800000>;
+               regulator-always-on;
+               vin-supply = <&reg_3p3v>;
+       };
+
+       usdhc1_pwrseq: usdhc1-pwrseq {
+               compatible = "mmc-pwrseq-simple";
+               reset-gpios = <&gpio2 8 GPIO_ACTIVE_LOW>;
+               post-power-on-delay-ms = <15>;
+               power-off-delay-us = <70>;
+       };
+};
+
 &fec {
        pinctrl-names = "default";
        pinctrl-0 = <&pinctrl_enet>;
        phy-mode = "rgmii-id";
        phy-reset-duration = <10>;
        phy-reset-gpios = <&gpio1 24 GPIO_ACTIVE_LOW>;
+       phy-handle = <&ethphy1>;
        status = "okay";
+
+       mdio {
+               #address-cells = <1>;
+               #size-cells = <0>;
+
+               ethphy1: ethernet-phy@1 {
+                       compatible = "ethernet-phy-ieee802.3-c22";
+                       reg = <1>;
+                       interrupt-parent = <&gpio1>;
+                       interrupts = <28 IRQ_TYPE_LEVEL_LOW>;
+                       status = "okay";
+               };
+       };
 };
 
 /* Bluetooth */
 &uart2 {
        pinctrl-names = "default";
        pinctrl-0 = <&pinctrl_uart2>;
+       uart-has-rtscts;
        status = "okay";
 };
 
 &usdhc1 {
        pinctrl-names = "default";
        pinctrl-0 = <&pinctrl_usdhc1>;
+       bus-width = <4>;
+       mmc-pwrseq = <&usdhc1_pwrseq>;
+       vmmc-supply = <&reg_3p3v>;
+       vqmmc-supply = <&reg_1p8v>;
+       cap-power-off-card;
+       keep-power-in-suspend;
        non-removable;
        status = "okay";
 
 };
 
 &iomuxc {
-       apf6 {
-               pinctrl_enet: enetgrp {
-                       fsl,pins = <
-                               MX6QDL_PAD_ENET_MDIO__ENET_MDIO         0x1b8b0
-                               MX6QDL_PAD_ENET_MDC__ENET_MDC           0x1b0b0
-                               MX6QDL_PAD_ENET_REF_CLK__ENET_TX_CLK    0x1b0b0
-                               MX6QDL_PAD_ENET_RX_ER__GPIO1_IO24       0x130b0
-                               MX6QDL_PAD_ENET_TX_EN__GPIO1_IO28       0x130b0
-                               MX6QDL_PAD_RGMII_TXC__RGMII_TXC         0x1b030
-                               MX6QDL_PAD_RGMII_TD0__RGMII_TD0         0x1b030
-                               MX6QDL_PAD_RGMII_TD1__RGMII_TD1         0x1b030
-                               MX6QDL_PAD_RGMII_TD2__RGMII_TD2         0x1b030
-                               MX6QDL_PAD_RGMII_TD3__RGMII_TD3         0x1b030
-                               MX6QDL_PAD_RGMII_TX_CTL__RGMII_TX_CTL   0x1b030
-                               MX6QDL_PAD_RGMII_RXC__RGMII_RXC         0x13030
-                               MX6QDL_PAD_RGMII_RD0__RGMII_RD0         0x1b030
-                               MX6QDL_PAD_RGMII_RD1__RGMII_RD1         0x13030
-                               MX6QDL_PAD_RGMII_RD2__RGMII_RD2         0x1f030
-                               MX6QDL_PAD_RGMII_RD3__RGMII_RD3         0x1f030
-                               MX6QDL_PAD_RGMII_RX_CTL__RGMII_RX_CTL   0x13030
-                       >;
-               };
+       pinctrl_enet: enetgrp {
+               fsl,pins = <
+                       MX6QDL_PAD_ENET_MDIO__ENET_MDIO         0x1b8b0
+                       MX6QDL_PAD_ENET_MDC__ENET_MDC           0x1b0b0
+                       MX6QDL_PAD_ENET_REF_CLK__ENET_TX_CLK    0x1b0b0
+                       MX6QDL_PAD_ENET_RX_ER__GPIO1_IO24       0x130b0
+                       MX6QDL_PAD_ENET_TX_EN__GPIO1_IO28       0x130b0
+                       MX6QDL_PAD_RGMII_TXC__RGMII_TXC         0x1b030
+                       MX6QDL_PAD_RGMII_TD0__RGMII_TD0         0x1b030
+                       MX6QDL_PAD_RGMII_TD1__RGMII_TD1         0x1b030
+                       MX6QDL_PAD_RGMII_TD2__RGMII_TD2         0x1b030
+                       MX6QDL_PAD_RGMII_TD3__RGMII_TD3         0x1b030
+                       MX6QDL_PAD_RGMII_TX_CTL__RGMII_TX_CTL   0x1b030
+                       MX6QDL_PAD_RGMII_RXC__RGMII_RXC         0x13030
+                       MX6QDL_PAD_RGMII_RD0__RGMII_RD0         0x1b030
+                       MX6QDL_PAD_RGMII_RD1__RGMII_RD1         0x13030
+                       MX6QDL_PAD_RGMII_RD2__RGMII_RD2         0x1f030
+                       MX6QDL_PAD_RGMII_RD3__RGMII_RD3         0x1f030
+                       MX6QDL_PAD_RGMII_RX_CTL__RGMII_RX_CTL   0x13030
+               >;
+       };
 
-               pinctrl_uart2: uart2grp {
-                       fsl,pins = <
-                               MX6QDL_PAD_SD4_DAT4__UART2_RX_DATA      0x1b0b0
-                               MX6QDL_PAD_SD4_DAT5__UART2_RTS_B        0x1b0b0
-                               MX6QDL_PAD_SD4_DAT6__UART2_CTS_B        0x1b0b0
-                               MX6QDL_PAD_SD4_DAT7__UART2_TX_DATA      0x1b0b0
-                               MX6QDL_PAD_SD4_DAT3__GPIO2_IO11         0x130b0 /* BT_EN */
-                       >;
-               };
+       pinctrl_uart2: uart2grp {
+               fsl,pins = <
+                       MX6QDL_PAD_SD4_DAT4__UART2_RX_DATA      0x1b0b0
+                       MX6QDL_PAD_SD4_DAT5__UART2_RTS_B        0x1b0b0
+                       MX6QDL_PAD_SD4_DAT6__UART2_CTS_B        0x1b0b0
+                       MX6QDL_PAD_SD4_DAT7__UART2_TX_DATA      0x1b0b0
+                       MX6QDL_PAD_SD4_DAT3__GPIO2_IO11         0x130b0 /* BT_EN */
+               >;
+       };
 
-               pinctrl_usdhc1: usdhc1grp {
-                       fsl,pins = <
-                               MX6QDL_PAD_SD1_CMD__SD1_CMD     0x17059
-                               MX6QDL_PAD_SD1_CLK__SD1_CLK     0x10059
-                               MX6QDL_PAD_SD1_DAT0__SD1_DATA0  0x17059
-                               MX6QDL_PAD_SD1_DAT1__SD1_DATA1  0x17059
-                               MX6QDL_PAD_SD1_DAT2__SD1_DATA2  0x17059
-                               MX6QDL_PAD_SD1_DAT3__SD1_DATA3  0x17059
-                               MX6QDL_PAD_SD4_DAT0__GPIO2_IO08 0x1b0b0 /* WL_EN */
-                               MX6QDL_PAD_SD4_DAT2__GPIO2_IO10 0x1b0b0 /* WL_IRQ */
-                       >;
-               };
+       pinctrl_usdhc1: usdhc1grp {
+               fsl,pins = <
+                       MX6QDL_PAD_SD1_CMD__SD1_CMD     0x17059
+                       MX6QDL_PAD_SD1_CLK__SD1_CLK     0x10059
+                       MX6QDL_PAD_SD1_DAT0__SD1_DATA0  0x17059
+                       MX6QDL_PAD_SD1_DAT1__SD1_DATA1  0x17059
+                       MX6QDL_PAD_SD1_DAT2__SD1_DATA2  0x17059
+                       MX6QDL_PAD_SD1_DAT3__SD1_DATA3  0x17059
+                       MX6QDL_PAD_SD4_DAT0__GPIO2_IO08 0x130b0 /* WL_EN */
+                       MX6QDL_PAD_SD4_DAT2__GPIO2_IO10 0x130b0 /* WL_IRQ */
+               >;
+       };
 
-               pinctrl_usdhc3: usdhc3grp {
-                       fsl,pins = <
-                               MX6QDL_PAD_SD3_CMD__SD3_CMD     0x17059
-                               MX6QDL_PAD_SD3_CLK__SD3_CLK     0x10059
-                               MX6QDL_PAD_SD3_DAT0__SD3_DATA0  0x17059
-                               MX6QDL_PAD_SD3_DAT1__SD3_DATA1  0x17059
-                               MX6QDL_PAD_SD3_DAT2__SD3_DATA2  0x17059
-                               MX6QDL_PAD_SD3_DAT3__SD3_DATA3  0x17059
-                               MX6QDL_PAD_SD3_DAT4__SD3_DATA4  0x17059
-                               MX6QDL_PAD_SD3_DAT5__SD3_DATA5  0x17059
-                               MX6QDL_PAD_SD3_DAT6__SD3_DATA6  0x17059
-                               MX6QDL_PAD_SD3_DAT7__SD3_DATA7  0x17059
-                       >;
-               };
+       pinctrl_usdhc3: usdhc3grp {
+               fsl,pins = <
+                       MX6QDL_PAD_SD3_CMD__SD3_CMD     0x17059
+                       MX6QDL_PAD_SD3_CLK__SD3_CLK     0x10059
+                       MX6QDL_PAD_SD3_DAT0__SD3_DATA0  0x17059
+                       MX6QDL_PAD_SD3_DAT1__SD3_DATA1  0x17059
+                       MX6QDL_PAD_SD3_DAT2__SD3_DATA2  0x17059
+                       MX6QDL_PAD_SD3_DAT3__SD3_DATA3  0x17059
+                       MX6QDL_PAD_SD3_DAT4__SD3_DATA4  0x17059
+                       MX6QDL_PAD_SD3_DAT5__SD3_DATA5  0x17059
+                       MX6QDL_PAD_SD3_DAT6__SD3_DATA6  0x17059
+                       MX6QDL_PAD_SD3_DAT7__SD3_DATA7  0x17059
+               >;
        };
 };
index 9fc1fa4..b8e74ab 100644 (file)
@@ -1,49 +1,6 @@
-/*
- * Copyright 2015 Armadeus Systems
- *
- * 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.
- */
+// SPDX-License-Identifier: GPL-2.0+ OR MIT
+//
+// Copyright 2015 Armadeus Systems <support@armadeus.com>
 
 #include <dt-bindings/gpio/gpio.h>
 #include <dt-bindings/input/input.h>
                stdout-path = &uart4;
        };
 
+       backlight: backlight {
+               compatible = "pwm-backlight";
+               pwms = <&pwm3 0 191000>;
+               brightness-levels = <0 4 8 16 32 64 128 255>;
+               default-brightness-level = <0>;
+               power-supply = <&reg_5v>;
+       };
+
        disp0 {
                compatible = "fsl,imx-parallel-display";
-               interface-pix-fmt = "bgr666";
                pinctrl-names = "default";
-               pinctrl-0 = <&pinctrl_ipu1_disp1>;
-
-               display-timings {
-                       lw700 {
-                               clock-frequency = <33000033>;
-                               hactive = <800>;
-                               vactive = <480>;
-                               hback-porch = <96>;
-                               hfront-porch = <96>;
-                               vback-porch = <20>;
-                               vfront-porch = <21>;
-                               hsync-len = <64>;
-                               vsync-len = <4>;
-                               hsync-active = <1>;
-                               vsync-active = <1>;
-                               de-active = <1>;
-                               pixelclk-active = <1>;
-                       };
-               };
+               pinctrl-0 = <&pinctrl_ipu1_disp0>;
+
+               #address-cells = <1>;
+               #size-cells = <0>;
+
+               port@0 {
+                       reg = <0>;
 
-               port {
                        display_in: endpoint {
                                remote-endpoint = <&ipu1_di0_disp0>;
                        };
                };
+
+               port@1 {
+                       reg = <1>;
+
+                       display_out: endpoint {
+                               remote-endpoint = <&panel_in>;
+                       };
+               };
        };
 
        gpio-keys {
                };
        };
 
+       panel {
+               compatible = "armadeus,st0700-adapt";
+               power-supply = <&reg_3p3v>;
+               backlight = <&backlight>;
+
+               port {
+                       panel_in: endpoint {
+                               remote-endpoint = <&display_out>;
+                       };
+               };
+       };
+
        reg_3p3v: regulator-3p3v {
                compatible = "regulator-fixed";
                regulator-name = "3P3V";
                regulator-min-microvolt = <3300000>;
                regulator-max-microvolt = <3300000>;
                regulator-always-on;
+               vin-supply = <&reg_5v>;
        };
 
-       reg_usbh1_vbus: regulator-usb-h1-vbus {
+       reg_5v: regulator-5v {
                compatible = "regulator-fixed";
-               regulator-name = "usb_h1_vbus";
+               regulator-name = "5V";
                regulator-min-microvolt = <5000000>;
                regulator-max-microvolt = <5000000>;
                regulator-always-on;
 &can2 {
        pinctrl-names = "default";
        pinctrl-0 = <&pinctrl_flexcan2>;
+       xceiver-supply = <&reg_5v>;
        status = "okay";
 };
 
                VDDA-supply = <&reg_3p3v>;
                VDDIO-supply = <&reg_3p3v>;
        };
+
+       rtc@6f {
+               compatible = "microchip,mcp7940x";
+               reg = <0x6f>;
+       };
 };
 
 &i2c3 {
 };
 
 &usbh1 {
-       vbus-supply = <&reg_usbh1_vbus>;
+       vbus-supply = <&reg_5v>;
        phy_type = "utmi";
        status = "okay";
 };
        pinctrl-names = "default";
        pinctrl-0 = <&pinctrl_gpios>;
 
-       apf6dev {
-               pinctrl_audmux: audmuxgrp {
-                       fsl,pins = <
-                               MX6QDL_PAD_CSI0_DAT4__AUD3_TXC  0x1b0b0
-                               MX6QDL_PAD_CSI0_DAT5__AUD3_TXD  0x1b0b0
-                               MX6QDL_PAD_CSI0_DAT6__AUD3_TXFS 0x1b0b0
-                               MX6QDL_PAD_CSI0_DAT7__AUD3_RXD  0x1b0b0
-                               MX6QDL_PAD_GPIO_0__CCM_CLKO1    0x130b0
-                       >;
-               };
+       pinctrl_audmux: audmuxgrp {
+               fsl,pins = <
+                       MX6QDL_PAD_CSI0_DAT4__AUD3_TXC  0x1b0b0
+                       MX6QDL_PAD_CSI0_DAT5__AUD3_TXD  0x1b0b0
+                       MX6QDL_PAD_CSI0_DAT6__AUD3_TXFS 0x1b0b0
+                       MX6QDL_PAD_CSI0_DAT7__AUD3_RXD  0x1b0b0
+                       MX6QDL_PAD_GPIO_0__CCM_CLKO1    0x130b0
+               >;
+       };
 
-               pinctrl_ecspi1: ecspi1grp {
-                       fsl,pins = <
-                               MX6QDL_PAD_KEY_COL1__ECSPI1_MISO 0x100b1
-                               MX6QDL_PAD_KEY_ROW0__ECSPI1_MOSI 0x100b1
-                               MX6QDL_PAD_KEY_COL0__ECSPI1_SCLK 0x100b1
-                               MX6QDL_PAD_KEY_ROW1__GPIO4_IO09  0x1b0b0
-                               MX6QDL_PAD_KEY_ROW2__GPIO4_IO11  0x1b0b0
-                               MX6QDL_PAD_KEY_COL2__GPIO4_IO10  0x1b0b0
-                       >;
-               };
+       pinctrl_ecspi1: ecspi1grp {
+               fsl,pins = <
+                       MX6QDL_PAD_KEY_COL1__ECSPI1_MISO 0x100b1
+                       MX6QDL_PAD_KEY_ROW0__ECSPI1_MOSI 0x100b1
+                       MX6QDL_PAD_KEY_COL0__ECSPI1_SCLK 0x100b1
+                       MX6QDL_PAD_KEY_ROW1__GPIO4_IO09  0x1b0b0
+                       MX6QDL_PAD_KEY_ROW2__GPIO4_IO11  0x1b0b0
+                       MX6QDL_PAD_KEY_COL2__GPIO4_IO10  0x1b0b0
+               >;
+       };
 
-               pinctrl_flexcan2: flexcan2grp {
-                       fsl,pins = <
-                               MX6QDL_PAD_KEY_COL4__FLEXCAN2_TX 0x1b0b0
-                               MX6QDL_PAD_KEY_ROW4__FLEXCAN2_RX 0x1b0b0
-                       >;
-               };
+       pinctrl_flexcan2: flexcan2grp {
+               fsl,pins = <
+                       MX6QDL_PAD_KEY_COL4__FLEXCAN2_TX 0x1b0b0
+                       MX6QDL_PAD_KEY_ROW4__FLEXCAN2_RX 0x1b0b0
+               >;
+       };
 
-               pinctrl_gpio_keys: gpiokeysgrp {
-                       fsl,pins = <
-                               MX6QDL_PAD_GPIO_9__GPIO1_IO09 0x1b0b0
-                       >;
-               };
+       pinctrl_gpio_keys: gpiokeysgrp {
+               fsl,pins = <
+                       MX6QDL_PAD_GPIO_9__GPIO1_IO09 0x1b0b0
+               >;
+       };
 
-               pinctrl_gpio_leds: gpioledsgrp {
-                       fsl,pins = <
-                               MX6QDL_PAD_GPIO_17__GPIO7_IO12 0x130b0
-                       >;
-               };
+       pinctrl_gpio_leds: gpioledsgrp {
+               fsl,pins = <
+                       MX6QDL_PAD_GPIO_17__GPIO7_IO12 0x130b0
+               >;
+       };
 
-               pinctrl_gpios: gpiosgrp {
-                       fsl,pins = <
-                               MX6QDL_PAD_DI0_PIN4__GPIO4_IO20         0x100b1
-                               MX6QDL_PAD_DISP0_DAT18__GPIO5_IO12      0x100b1
-                               MX6QDL_PAD_DISP0_DAT19__GPIO5_IO13      0x100b1
-                               MX6QDL_PAD_DISP0_DAT20__GPIO5_IO14      0x100b1
-                               MX6QDL_PAD_DISP0_DAT21__GPIO5_IO15      0x100b1
-                               MX6QDL_PAD_DISP0_DAT22__GPIO5_IO16      0x100b1
-                               MX6QDL_PAD_DISP0_DAT23__GPIO5_IO17      0x100b1
-                               MX6QDL_PAD_CSI0_PIXCLK__GPIO5_IO18      0x100b1
-                               MX6QDL_PAD_CSI0_VSYNC__GPIO5_IO21       0x100b1
-                       >;
-               };
+       pinctrl_gpios: gpiosgrp {
+               fsl,pins = <
+                       MX6QDL_PAD_DI0_PIN4__GPIO4_IO20         0x100b1
+                       MX6QDL_PAD_DISP0_DAT18__GPIO5_IO12      0x100b1
+                       MX6QDL_PAD_DISP0_DAT19__GPIO5_IO13      0x100b1
+                       MX6QDL_PAD_DISP0_DAT20__GPIO5_IO14      0x100b1
+                       MX6QDL_PAD_DISP0_DAT21__GPIO5_IO15      0x100b1
+                       MX6QDL_PAD_DISP0_DAT22__GPIO5_IO16      0x100b1
+                       MX6QDL_PAD_DISP0_DAT23__GPIO5_IO17      0x100b1
+                       MX6QDL_PAD_CSI0_PIXCLK__GPIO5_IO18      0x100b1
+                       MX6QDL_PAD_CSI0_VSYNC__GPIO5_IO21       0x100b1
+               >;
+       };
 
-               pinctrl_gsm: gsmgrp {
-                       fsl,pins = <
-                               MX6QDL_PAD_GPIO_4__GPIO1_IO04  0x130b0 /* GSM_POKIN */
-                               MX6QDL_PAD_GPIO_18__GPIO7_IO13 0x130b0 /* GSM_PWR_EN */
-                       >;
-               };
+       pinctrl_gsm: gsmgrp {
+               fsl,pins = <
+                       MX6QDL_PAD_GPIO_4__GPIO1_IO04  0x130b0 /* GSM_POKIN */
+                       MX6QDL_PAD_GPIO_18__GPIO7_IO13 0x130b0 /* GSM_PWR_EN */
+               >;
+       };
 
-               pinctrl_i2c1: i2c1grp {
-                       fsl,pins = <
-                               MX6QDL_PAD_CSI0_DAT8__I2C1_SDA 0x4001b8b1
-                               MX6QDL_PAD_CSI0_DAT9__I2C1_SCL 0x4001b8b1
-                       >;
-               };
+       pinctrl_i2c1: i2c1grp {
+               fsl,pins = <
+                       MX6QDL_PAD_CSI0_DAT8__I2C1_SDA 0x4001b8b1
+                       MX6QDL_PAD_CSI0_DAT9__I2C1_SCL 0x4001b8b1
+               >;
+       };
 
-               pinctrl_i2c2: i2c2grp {
-                       fsl,pins = <
-                               MX6QDL_PAD_KEY_COL3__I2C2_SCL 0x4001b8b1
-                               MX6QDL_PAD_KEY_ROW3__I2C2_SDA 0x4001b8b1
-                       >;
-               };
+       pinctrl_i2c2: i2c2grp {
+               fsl,pins = <
+                       MX6QDL_PAD_KEY_COL3__I2C2_SCL 0x4001b8b1
+                       MX6QDL_PAD_KEY_ROW3__I2C2_SDA 0x4001b8b1
+               >;
+       };
 
-               pinctrl_i2c3: i2c3grp {
-                       fsl,pins = <
-                               MX6QDL_PAD_GPIO_6__I2C3_SDA 0x4001b8b1
-                               MX6QDL_PAD_GPIO_5__I2C3_SCL 0x4001b8b1
-                       >;
-               };
+       pinctrl_i2c3: i2c3grp {
+               fsl,pins = <
+                       MX6QDL_PAD_GPIO_6__I2C3_SDA 0x4001b8b1
+                       MX6QDL_PAD_GPIO_5__I2C3_SCL 0x4001b8b1
+               >;
+       };
 
-               pinctrl_ipu1_disp1: ipu1disp1grp {
-                       fsl,pins = <
-                               MX6QDL_PAD_DI0_DISP_CLK__IPU1_DI0_DISP_CLK      0x100b1
-                               MX6QDL_PAD_DI0_PIN15__IPU1_DI0_PIN15            0x100b1
-                               MX6QDL_PAD_DI0_PIN2__IPU1_DI0_PIN02             0x100b1
-                               MX6QDL_PAD_DI0_PIN3__IPU1_DI0_PIN03             0x100b1
-                               MX6QDL_PAD_DISP0_DAT0__IPU1_DISP0_DATA00        0x100b1
-                               MX6QDL_PAD_DISP0_DAT1__IPU1_DISP0_DATA01        0x100b1
-                               MX6QDL_PAD_DISP0_DAT2__IPU1_DISP0_DATA02        0x100b1
-                               MX6QDL_PAD_DISP0_DAT3__IPU1_DISP0_DATA03        0x100b1
-                               MX6QDL_PAD_DISP0_DAT4__IPU1_DISP0_DATA04        0x100b1
-                               MX6QDL_PAD_DISP0_DAT5__IPU1_DISP0_DATA05        0x100b1
-                               MX6QDL_PAD_DISP0_DAT6__IPU1_DISP0_DATA06        0x100b1
-                               MX6QDL_PAD_DISP0_DAT7__IPU1_DISP0_DATA07        0x100b1
-                               MX6QDL_PAD_DISP0_DAT8__IPU1_DISP0_DATA08        0x100b1
-                               MX6QDL_PAD_DISP0_DAT9__IPU1_DISP0_DATA09        0x100b1
-                               MX6QDL_PAD_DISP0_DAT10__IPU1_DISP0_DATA10       0x100b1
-                               MX6QDL_PAD_DISP0_DAT11__IPU1_DISP0_DATA11       0x100b1
-                               MX6QDL_PAD_DISP0_DAT12__IPU1_DISP0_DATA12       0x100b1
-                               MX6QDL_PAD_DISP0_DAT13__IPU1_DISP0_DATA13       0x100b1
-                               MX6QDL_PAD_DISP0_DAT14__IPU1_DISP0_DATA14       0x100b1
-                               MX6QDL_PAD_DISP0_DAT15__IPU1_DISP0_DATA15       0x100b1
-                               MX6QDL_PAD_DISP0_DAT16__IPU1_DISP0_DATA16       0x100b1
-                               MX6QDL_PAD_DISP0_DAT17__IPU1_DISP0_DATA17       0x100b1
-                       >;
-               };
+       pinctrl_ipu1_disp0: ipu1disp0grp {
+               fsl,pins = <
+                       MX6QDL_PAD_DI0_DISP_CLK__IPU1_DI0_DISP_CLK      0x100b1
+                       MX6QDL_PAD_DI0_PIN15__IPU1_DI0_PIN15            0x100b1
+                       MX6QDL_PAD_DI0_PIN2__IPU1_DI0_PIN02             0x100b1
+                       MX6QDL_PAD_DI0_PIN3__IPU1_DI0_PIN03             0x100b1
+                       MX6QDL_PAD_DISP0_DAT0__IPU1_DISP0_DATA00        0x100b1
+                       MX6QDL_PAD_DISP0_DAT1__IPU1_DISP0_DATA01        0x100b1
+                       MX6QDL_PAD_DISP0_DAT2__IPU1_DISP0_DATA02        0x100b1
+                       MX6QDL_PAD_DISP0_DAT3__IPU1_DISP0_DATA03        0x100b1
+                       MX6QDL_PAD_DISP0_DAT4__IPU1_DISP0_DATA04        0x100b1
+                       MX6QDL_PAD_DISP0_DAT5__IPU1_DISP0_DATA05        0x100b1
+                       MX6QDL_PAD_DISP0_DAT6__IPU1_DISP0_DATA06        0x100b1
+                       MX6QDL_PAD_DISP0_DAT7__IPU1_DISP0_DATA07        0x100b1
+                       MX6QDL_PAD_DISP0_DAT8__IPU1_DISP0_DATA08        0x100b1
+                       MX6QDL_PAD_DISP0_DAT9__IPU1_DISP0_DATA09        0x100b1
+                       MX6QDL_PAD_DISP0_DAT10__IPU1_DISP0_DATA10       0x100b1
+                       MX6QDL_PAD_DISP0_DAT11__IPU1_DISP0_DATA11       0x100b1
+                       MX6QDL_PAD_DISP0_DAT12__IPU1_DISP0_DATA12       0x100b1
+                       MX6QDL_PAD_DISP0_DAT13__IPU1_DISP0_DATA13       0x100b1
+                       MX6QDL_PAD_DISP0_DAT14__IPU1_DISP0_DATA14       0x100b1
+                       MX6QDL_PAD_DISP0_DAT15__IPU1_DISP0_DATA15       0x100b1
+                       MX6QDL_PAD_DISP0_DAT16__IPU1_DISP0_DATA16       0x100b1
+                       MX6QDL_PAD_DISP0_DAT17__IPU1_DISP0_DATA17       0x100b1
+               >;
+       };
 
-               pinctrl_pcie: pciegrp {
-                       fsl,pins = <
-                               MX6QDL_PAD_CSI0_DAT16__GPIO6_IO02 0x130b0
-                       >;
-               };
+       pinctrl_pcie: pciegrp {
+               fsl,pins = <
+                       MX6QDL_PAD_CSI0_DAT16__GPIO6_IO02 0x130b0
+               >;
+       };
 
-               pinctrl_pwm3: pwm3grp {
-                       fsl,pins = <
-                               MX6QDL_PAD_SD4_DAT1__PWM3_OUT 0x1b0b1
-                       >;
-               };
+       pinctrl_pwm3: pwm3grp {
+               fsl,pins = <
+                       MX6QDL_PAD_SD4_DAT1__PWM3_OUT 0x1b0b1
+               >;
+       };
 
-               pinctrl_uart1: uart1grp {
-                       fsl,pins = <
-                               MX6QDL_PAD_CSI0_DAT10__UART1_TX_DATA 0x1b0b0
-                               MX6QDL_PAD_CSI0_DAT11__UART1_RX_DATA 0x1b0b0
-                       >;
-               };
+       pinctrl_uart1: uart1grp {
+               fsl,pins = <
+                       MX6QDL_PAD_CSI0_DAT10__UART1_TX_DATA 0x1b0b0
+                       MX6QDL_PAD_CSI0_DAT11__UART1_RX_DATA 0x1b0b0
+               >;
+       };
 
-               pinctrl_uart3: uart3grp {
-                       fsl,pins = <
-                               MX6QDL_PAD_EIM_D23__UART3_CTS_B   0x1b0b0
-                               MX6QDL_PAD_EIM_D24__UART3_TX_DATA 0x1b0b0
-                               MX6QDL_PAD_EIM_D25__UART3_RX_DATA 0x1b0b0
-                               MX6QDL_PAD_EIM_D31__UART3_RTS_B   0x1b0b0
-                       >;
-               };
+       pinctrl_uart3: uart3grp {
+               fsl,pins = <
+                       MX6QDL_PAD_EIM_D23__UART3_CTS_B   0x1b0b0
+                       MX6QDL_PAD_EIM_D24__UART3_TX_DATA 0x1b0b0
+                       MX6QDL_PAD_EIM_D25__UART3_RX_DATA 0x1b0b0
+                       MX6QDL_PAD_EIM_D31__UART3_RTS_B   0x1b0b0
+               >;
+       };
 
-               pinctrl_uart4: uart4grp {
-                       fsl,pins = <
-                               MX6QDL_PAD_CSI0_DAT12__UART4_TX_DATA 0x1b0b0
-                               MX6QDL_PAD_CSI0_DAT13__UART4_RX_DATA 0x1b0b0
-                       >;
-               };
+       pinctrl_uart4: uart4grp {
+               fsl,pins = <
+                       MX6QDL_PAD_CSI0_DAT12__UART4_TX_DATA 0x1b0b0
+                       MX6QDL_PAD_CSI0_DAT13__UART4_RX_DATA 0x1b0b0
+               >;
+       };
 
-               pinctrl_usbotg: usbotggrp {
-                       fsl,pins = <
-                               MX6QDL_PAD_GPIO_1__USB_OTG_ID 0x1b0b0
-                       >;
-               };
+       pinctrl_usbotg: usbotggrp {
+               fsl,pins = <
+                       MX6QDL_PAD_GPIO_1__USB_OTG_ID 0x1b0b0
+               >;
+       };
 
-               pinctrl_usdhc2: usdhc2grp {
-                       fsl,pins = <
-                               MX6QDL_PAD_SD2_CMD__SD2_CMD    0x17059
-                               MX6QDL_PAD_SD2_CLK__SD2_CLK    0x10059
-                               MX6QDL_PAD_SD2_DAT0__SD2_DATA0 0x17059
-                               MX6QDL_PAD_SD2_DAT1__SD2_DATA1 0x17059
-                               MX6QDL_PAD_SD2_DAT2__SD2_DATA2 0x17059
-                               MX6QDL_PAD_SD2_DAT3__SD2_DATA3 0x17059
-                       >;
-               };
+       pinctrl_usdhc2: usdhc2grp {
+               fsl,pins = <
+                       MX6QDL_PAD_SD2_CMD__SD2_CMD    0x17059
+                       MX6QDL_PAD_SD2_CLK__SD2_CLK    0x10059
+                       MX6QDL_PAD_SD2_DAT0__SD2_DATA0 0x17059
+                       MX6QDL_PAD_SD2_DAT1__SD2_DATA1 0x17059
+                       MX6QDL_PAD_SD2_DAT2__SD2_DATA2 0x17059
+                       MX6QDL_PAD_SD2_DAT3__SD2_DATA3 0x17059
+               >;
+       };
 
-               pinctrl_spdif: spdifgrp {
-                       fsl,pins = <
-                               MX6QDL_PAD_GPIO_19__SPDIF_OUT 0x1b0b0
-                       >;
-               };
+       pinctrl_spdif: spdifgrp {
+               fsl,pins = <
+                       MX6QDL_PAD_GPIO_19__SPDIF_OUT 0x1b0b0
+               >;
+       };
 
-               pinctrl_touchscreen: touchscreengrp {
-                       fsl,pins = <
-                               MX6QDL_PAD_CSI0_DAT17__GPIO6_IO03 0x1b0b0
-                       >;
-               };
+       pinctrl_touchscreen: touchscreengrp {
+               fsl,pins = <
+                       MX6QDL_PAD_CSI0_DAT17__GPIO6_IO03 0x1b0b0
+               >;
        };
 };
index 019dda6..d03dff2 100644 (file)
  */
 &i2c2 {
        clock-frequency = <100000>;
-       pinctrl-names = "default";
+       pinctrl-names = "default", "gpio";
        pinctrl-0 = <&pinctrl_i2c2>;
+       pinctrl-0 = <&pinctrl_i2c2_gpio>;
+       scl-gpios = <&gpio2 30 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
+       sda-gpios = <&gpio3 16 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
        status = "okay";
 
        pmic: pfuze100@8 {
  */
 &i2c3 {
        clock-frequency = <100000>;
-       pinctrl-names = "default", "recovery";
+       pinctrl-names = "default", "gpio";
        pinctrl-0 = <&pinctrl_i2c3>;
-       pinctrl-1 = <&pinctrl_i2c3_recovery>;
+       pinctrl-1 = <&pinctrl_i2c3_gpio>;
        scl-gpios = <&gpio1 3 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
        sda-gpios = <&gpio1 6 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
        status = "disabled";
 };
 
 &iomuxc {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_usbh_oc_1>;
+
        pinctrl_audmux: audmuxgrp {
                fsl,pins = <
                        MX6QDL_PAD_KEY_COL0__AUD5_TXC   0x130b0
                >;
        };
 
+       pinctrl_i2c2_gpio: i2c2grp {
+               fsl,pins = <
+                       MX6QDL_PAD_EIM_EB2__GPIO2_IO30 0x4001b8b1
+                       MX6QDL_PAD_EIM_D16__GPIO3_IO16 0x4001b8b1
+               >;
+       };
+
        pinctrl_i2c3: i2c3grp {
                fsl,pins = <
                        MX6QDL_PAD_GPIO_3__I2C3_SCL 0x4001b8b1
                >;
        };
 
-       pinctrl_i2c3_recovery: i2c3recoverygrp {
+       pinctrl_i2c3_gpio: i2c3gpiogrp {
                fsl,pins = <
                        MX6QDL_PAD_GPIO_3__GPIO1_IO03 0x4001b8b1
                        MX6QDL_PAD_GPIO_6__GPIO1_IO06 0x4001b8b1
                >;
        };
 
+       pinctrl_usbh_oc_1: usbhoc1grp {
+               fsl,pins = <
+                       /* USBH_OC */
+                       MX6QDL_PAD_EIM_D30__GPIO3_IO30          0x1b0b0
+               >;
+       };
+
        pinctrl_spdif: spdifgrp {
                fsl,pins = <
                        MX6QDL_PAD_GPIO_17__SPDIF_OUT 0x1b0b0
                >;
        };
 
+       pinctrl_usbc_id_1: usbc_id-1 {
+               fsl,pins = <
+                       /* USBC_ID */
+                       MX6QDL_PAD_NANDF_D2__GPIO2_IO02         0x1b0b0
+               >;
+       };
+
        pinctrl_usdhc1: usdhc1grp {
                fsl,pins = <
                        MX6QDL_PAD_SD1_CMD__SD1_CMD     0x17071
index c23ba22..c38e86e 100644 (file)
        sound-digital {
                compatible = "simple-audio-card";
                simple-audio-card,name = "tda1997x-audio";
+               simple-audio-card,format = "i2s";
+               simple-audio-card,bitclock-master = <&sound_codec>;
+               simple-audio-card,frame-master = <&sound_codec>;
 
-               simple-audio-card,dai-link@0 {
-                       format = "i2s";
-
-                       cpu {
-                               sound-dai = <&ssi2>;
-                       };
+               sound_cpu: simple-audio-card,cpu {
+                       sound-dai = <&ssi2>;
+               };
 
-                       codec {
-                               bitclock-master;
-                               frame-master;
-                               sound-dai = <&hdmi_receiver>;
-                       };
+               sound_codec: simple-audio-card,codec {
+                       sound-dai = <&hdmi_receiver>;
                };
        };
 };
index 97f1659..de514eb 100644 (file)
        pinctrl-0 = <&pinctrl_i2c2>;
        status = "okay";
 
+       pca9535: gpio-expander@27 {
+               compatible = "nxp,pca9535";
+               reg = <0x27>;
+               gpio-controller;
+               #gpio-cells = <2>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&pinctrl_pca9535>;
+               interrupt-parent = <&gpio6>;
+               interrupts = <16 IRQ_TYPE_LEVEL_LOW>;
+               interrupt-controller;
+               #interrupt-cells = <2>;
+       };
+
        eeprom@57 {
                compatible = "atmel,24c02";
                reg = <0x57>;
                        >;
                };
 
+               pinctrl_pca9535: pca9535grp {
+                       fsl,pins = <
+                               MX6QDL_PAD_NANDF_CS3__GPIO6_IO16        0x17059
+                  >;
+               };
+
                pinctrl_uart1: uart1grp {
                        fsl,pins = <
                                MX6QDL_PAD_CSI0_DAT10__UART1_TX_DATA    0x1b0b1
index 776bfc7..828dd20 100644 (file)
                        >;
                };
 
+               pinctrl_usbotg: usbotg {
+                       fsl,pins = <
+                               MX6QDL_PAD_GPIO_1__USB_OTG_ID 0x17059
+                               MX6QDL_PAD_EIM_D22__USB_OTG_PWR 0x17059
+                               MX6QDL_PAD_EIM_D21__USB_OTG_OC 0x17059
+                       >;
+               };
+
                pinctrl_usdhc3: usdhc3grp {
                        fsl,pins = <
                                MX6QDL_PAD_SD3_CMD__SD3_CMD             0x17059
        status = "okay";
 };
 
+&usbotg {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_usbotg>;
+       status = "okay";
+};
+
 &usdhc3 {
        pinctrl-names = "default";
        pinctrl-0 = <&pinctrl_usdhc3>;
index 2cfb411..c070893 100644 (file)
        pinctrl-names = "default";
        pinctrl-0 = <&pinctrl_enet>;
        phy-mode = "rgmii-id";
+       phy-handle = <&ethphy>;
        phy-reset-gpios = <&gpio3 29 GPIO_ACTIVE_LOW>;
        status = "okay";
+
+       mdio {
+               #address-cells = <1>;
+               #size-cells = <0>;
+
+               ethphy: ethernet-phy@1 {
+                       reg = <1>;
+               };
+       };
 };
 
 &mipi_csi {
index 93be00a..a2a4f33 100644 (file)
                compatible = "fsl,mma8451";
                reg = <0x1c>;
                interrupt-parent = <&gpio1>;
-               interrupt-names = "int1", "int2";
-               interrupts = <18 IRQ_TYPE_LEVEL_LOW>, <20 IRQ_TYPE_LEVEL_LOW>;
+               interrupt-names = "INT2";
+               interrupts = <20 IRQ_TYPE_LEVEL_LOW>;
+               vdd-supply = <&reg_3p3v>;
+               vddio-supply = <&reg_3p3v>;
        };
 
        hpa2: amp@60 {
 &iomuxc {
        pinctrl_accel: accelgrp {
                fsl,pins = <
-                       MX6QDL_PAD_SD1_CMD__GPIO1_IO18          0x4001b000
                        MX6QDL_PAD_SD1_CLK__GPIO1_IO20          0x4001b000
                >;
        };
index 3a96b55..59c54e6 100644 (file)
                        anatop: anatop@20c8000 {
                                compatible = "fsl,imx6sl-anatop",
                                             "fsl,imx6q-anatop",
-                                            "syscon", "simple-bus";
+                                            "syscon", "simple-mfd";
                                reg = <0x020c8000 0x1000>;
                                interrupts = <0 49 IRQ_TYPE_LEVEL_HIGH>,
                                             <0 54 IRQ_TYPE_LEVEL_HIGH>,
diff --git a/arch/arm/boot/dts/imx6sll-kobo-clarahd.dts b/arch/arm/boot/dts/imx6sll-kobo-clarahd.dts
new file mode 100644 (file)
index 0000000..7214d1c
--- /dev/null
@@ -0,0 +1,324 @@
+// SPDX-License-Identifier: (GPL-2.0)
+/*
+ * Device tree for the Kobo Clara HD ebook reader
+ *
+ * Name on mainboard is: 37NB-E60K00+4A4
+ * Serials start with: E60K02 (a number also seen in
+ * vendor kernel sources)
+ *
+ * This mainboard seems to be equipped with different SoCs.
+ * In the Kobo Clara HD ebook reader it is an i.MX6SLL
+ *
+ * Copyright 2019 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 "e60k02.dtsi"
+
+/ {
+       model = "Kobo Clara HD";
+       compatible = "kobo,clarahd", "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_SD1_DATA1__GPIO5_IO08        0x17059 /* PWR_SW */
+                       MX6SLL_PAD_SD1_DATA4__GPIO5_IO12        0x17059 /* HALL_EN */
+               >;
+       };
+
+       pinctrl_hog: hoggrp {
+               fsl,pins = <
+                       MX6SLL_PAD_LCD_DATA00__GPIO2_IO20       0x79
+                       MX6SLL_PAD_LCD_DATA01__GPIO2_IO21       0x79
+                       MX6SLL_PAD_LCD_DATA02__GPIO2_IO22       0x79
+                       MX6SLL_PAD_LCD_DATA03__GPIO2_IO23       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_KEY_COL3__GPIO3_IO30         0x79
+                       MX6SLL_PAD_KEY_ROW7__GPIO4_IO07         0x79
+                       MX6SLL_PAD_ECSPI2_MOSI__GPIO4_IO13      0x79
+                       MX6SLL_PAD_KEY_COL5__GPIO4_IO02         0x79
+                       MX6SLL_PAD_KEY_ROW6__GPIO4_IO05         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_SD1_DATA6__GPIO5_IO07 0x17059
+               >;
+       };
+
+       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_SD1_CLK__GPIO5_IO15  0x1b8b1 /* ricoh619 chg */
+                       MX6SLL_PAD_SD1_DATA0__GPIO5_IO11 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_usdhc2: usdhc2grp {
+               fsl,pins = <
+                       MX6SLL_PAD_SD2_CMD__SD2_CMD             0x17059
+                       MX6SLL_PAD_SD2_CLK__SD2_CLK             0x13059
+                       MX6SLL_PAD_SD2_DATA0__SD2_DATA0         0x17059
+                       MX6SLL_PAD_SD2_DATA1__SD2_DATA1         0x17059
+                       MX6SLL_PAD_SD2_DATA2__SD2_DATA2         0x17059
+                       MX6SLL_PAD_SD2_DATA3__SD2_DATA3         0x17059
+               >;
+       };
+
+       pinctrl_usdhc2_100mhz: usdhc2grp-100mhz {
+               fsl,pins = <
+                       MX6SLL_PAD_SD2_CMD__SD2_CMD             0x170b9
+                       MX6SLL_PAD_SD2_CLK__SD2_CLK             0x130b9
+                       MX6SLL_PAD_SD2_DATA0__SD2_DATA0         0x170b9
+                       MX6SLL_PAD_SD2_DATA1__SD2_DATA1         0x170b9
+                       MX6SLL_PAD_SD2_DATA2__SD2_DATA2         0x170b9
+                       MX6SLL_PAD_SD2_DATA3__SD2_DATA3         0x170b9
+               >;
+       };
+
+       pinctrl_usdhc2_200mhz: usdhc2grp-200mhz {
+               fsl,pins = <
+                       MX6SLL_PAD_SD2_CMD__SD2_CMD             0x170f9
+                       MX6SLL_PAD_SD2_CLK__SD2_CLK             0x130f9
+                       MX6SLL_PAD_SD2_DATA0__SD2_DATA0         0x170f9
+                       MX6SLL_PAD_SD2_DATA1__SD2_DATA1         0x170f9
+                       MX6SLL_PAD_SD2_DATA2__SD2_DATA2         0x170f9
+                       MX6SLL_PAD_SD2_DATA3__SD2_DATA3         0x170f9
+               >;
+       };
+
+       pinctrl_usdhc2_sleep: usdhc2grp-sleep {
+               fsl,pins = <
+                       MX6SLL_PAD_SD2_CMD__GPIO5_IO04          0x100f9
+                       MX6SLL_PAD_SD2_CLK__GPIO5_IO05          0x100f9
+                       MX6SLL_PAD_SD2_DATA0__GPIO5_IO01        0x100f9
+                       MX6SLL_PAD_SD2_DATA1__GPIO4_IO30        0x100f9
+                       MX6SLL_PAD_SD2_DATA2__GPIO5_IO03        0x100f9
+                       MX6SLL_PAD_SD2_DATA3__GPIO4_IO28        0x100f9
+               >;
+       };
+
+       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: usdhc3grp-100mhz {
+               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: usdhc3grp-200mhz {
+               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: usdhc3grp-sleep {
+               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>;
+};
+
+&usdhc2 {
+       pinctrl-names = "default", "state_100mhz", "state_200mhz","sleep";
+       pinctrl-0 = <&pinctrl_usdhc2>;
+       pinctrl-1 = <&pinctrl_usdhc2_100mhz>;
+       pinctrl-2 = <&pinctrl_usdhc2_200mhz>;
+       pinctrl-3 = <&pinctrl_usdhc2_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 13c7ba7..85aa8bb 100644 (file)
                        anatop: anatop@20c8000 {
                                compatible = "fsl,imx6sll-anatop",
                                             "fsl,imx6q-anatop",
-                                            "syscon", "simple-bus";
+                                            "syscon", "simple-mfd";
                                reg = <0x020c8000 0x4000>;
                                interrupts = <GIC_SPI 49 IRQ_TYPE_LEVEL_HIGH>,
                                             <GIC_SPI 54 IRQ_TYPE_LEVEL_HIGH>,
index 531a52c..59bad60 100644 (file)
 
                        anatop: anatop@20c8000 {
                                compatible = "fsl,imx6sx-anatop", "fsl,imx6q-anatop",
-                                            "syscon", "simple-bus";
+                                            "syscon", "simple-mfd";
                                reg = <0x020c8000 0x1000>;
                                interrupts = <GIC_SPI 49 IRQ_TYPE_LEVEL_HIGH>,
                                             <GIC_SPI 54 IRQ_TYPE_LEVEL_HIGH>,
index c2a9dd5..1506eb1 100644 (file)
                enable-active-high;
        };
 
+       reg_sensors: regulator-sensors {
+               compatible = "regulator-fixed";
+               pinctrl-names = "default";
+               pinctrl-0 = <&pinctrl_sensors_reg>;
+               regulator-name = "sensors-supply";
+               regulator-min-microvolt = <3300000>;
+               regulator-max-microvolt = <3300000>;
+               gpio = <&gpio5 2 GPIO_ACTIVE_LOW>;
+       };
+
        reg_can_3v3: regulator-can-3v3 {
                compatible = "regulator-fixed";
                regulator-name = "can-3v3";
        pinctrl-0 = <&pinctrl_i2c1>;
        status = "okay";
 
-       mag3110@e {
+       magnetometer@e {
                compatible = "fsl,mag3110";
                reg = <0x0e>;
+               vdd-supply = <&reg_sensors>;
+               vddio-supply = <&reg_sensors>;
        };
 };
 
 
 &usbotg1 {
        dr_mode = "otg";
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_usb_otg1>;
        status = "okay";
 };
 
                >;
        };
 
+       pinctrl_sensors_reg: sensorsreggrp {
+               fsl,pins = <
+                       MX6UL_PAD_SNVS_TAMPER2__GPIO5_IO02      0x1b0b0
+               >;
+       };
+
        pinctrl_pwm1: pwm1grp {
                fsl,pins = <
                        MX6UL_PAD_GPIO1_IO08__PWM1_OUT   0x110b0
                >;
        };
 
+       pinctrl_usb_otg1: usbotg1grp {
+               fsl,pins = <
+                       MX6UL_PAD_GPIO1_IO00__ANATOP_OTG1_ID    0x17059
+               >;
+       };
+
        pinctrl_usdhc1: usdhc1grp {
                fsl,pins = <
                        MX6UL_PAD_SD1_CMD__USDHC1_CMD           0x17059
diff --git a/arch/arm/boot/dts/imx6ul-imx6ull-opos6ul.dtsi b/arch/arm/boot/dts/imx6ul-imx6ull-opos6ul.dtsi
new file mode 100644 (file)
index 0000000..f2386dc
--- /dev/null
@@ -0,0 +1,148 @@
+// SPDX-License-Identifier: GPL-2.0 OR MIT
+//
+// Copyright 2019 Armadeus Systems <support@armadeus.com>
+
+/ {
+       memory@80000000 {
+               device_type = "memory";
+               reg = <0x80000000 0>; /* will be filled by U-Boot */
+       };
+
+       reg_3v3: regulator-3v3 {
+               compatible = "regulator-fixed";
+               regulator-name = "3V3";
+               regulator-min-microvolt = <3300000>;
+               regulator-max-microvolt = <3300000>;
+       };
+
+       usdhc3_pwrseq: usdhc3-pwrseq {
+               compatible = "mmc-pwrseq-simple";
+               reset-gpios = <&gpio2 9 GPIO_ACTIVE_LOW>;
+       };
+};
+
+&fec1 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_enet1>;
+       phy-mode = "rmii";
+       phy-reset-duration = <1>;
+       phy-reset-gpios = <&gpio4 2 GPIO_ACTIVE_LOW>;
+       phy-handle = <&ethphy1>;
+       phy-supply = <&reg_3v3>;
+       status = "okay";
+
+       mdio: mdio {
+               #address-cells = <1>;
+               #size-cells = <0>;
+
+               ethphy1: ethernet-phy@1 {
+                       compatible = "ethernet-phy-ieee802.3-c22";
+                       reg = <1>;
+                       interrupt-parent = <&gpio4>;
+                       interrupts = <16 IRQ_TYPE_LEVEL_LOW>;
+                       status = "okay";
+               };
+       };
+};
+
+/* Bluetooth */
+&uart8 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_uart8>;
+       uart-has-rtscts;
+       status = "okay";
+};
+
+/* eMMC */
+&usdhc1 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_usdhc1>;
+       bus-width = <8>;
+       no-1-8-v;
+       non-removable;
+       status = "okay";
+};
+
+/* WiFi */
+&usdhc2 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_usdhc2>;
+       bus-width = <4>;
+       no-1-8-v;
+       non-removable;
+       mmc-pwrseq = <&usdhc3_pwrseq>;
+       status = "okay";
+
+       #address-cells = <1>;
+       #size-cells = <0>;
+
+       brcmf: wifi@1 {
+               compatible = "brcm,bcm4329-fmac";
+               reg = <1>;
+               interrupt-parent = <&gpio2>;
+               interrupts = <8 IRQ_TYPE_LEVEL_LOW>;
+               interrupt-names = "host-wake";
+       };
+};
+
+&iomuxc {
+       pinctrl_enet1: enet1grp {
+               fsl,pins = <
+                       MX6UL_PAD_GPIO1_IO06__ENET1_MDIO        0x1b0b0
+                       MX6UL_PAD_GPIO1_IO07__ENET1_MDC         0x1b0b0
+                       MX6UL_PAD_ENET1_RX_ER__ENET1_RX_ER      0x130b0
+                       MX6UL_PAD_ENET1_RX_EN__ENET1_RX_EN      0x130b0
+                       MX6UL_PAD_ENET1_RX_DATA1__ENET1_RDATA01 0x130b0
+                       MX6UL_PAD_ENET1_RX_DATA0__ENET1_RDATA00 0x130b0
+                       MX6UL_PAD_ENET1_TX_DATA0__ENET1_TDATA00 0x1b0b0
+                       MX6UL_PAD_ENET1_TX_DATA1__ENET1_TDATA01 0x1b0b0
+                       MX6UL_PAD_ENET1_TX_EN__ENET1_TX_EN      0x1b0b0
+                       /* INT# */
+                       MX6UL_PAD_NAND_DQS__GPIO4_IO16          0x1b0b0
+                       /* RST# */
+                       MX6UL_PAD_NAND_DATA00__GPIO4_IO02       0x130b0
+                       MX6UL_PAD_ENET1_TX_CLK__ENET1_REF_CLK1  0x4001b031
+               >;
+       };
+
+       pinctrl_uart8: uart8grp {
+               fsl,pins = <
+                       MX6UL_PAD_ENET2_TX_EN__UART8_DCE_RX     0x1b0b0
+                       MX6UL_PAD_ENET2_TX_DATA1__UART8_DCE_TX  0x1b0b0
+                       MX6UL_PAD_ENET2_RX_ER__UART8_DCE_RTS    0x1b0b0
+                       MX6UL_PAD_ENET2_TX_CLK__UART8_DCE_CTS   0x1b0b0
+                       /* BT_REG_ON */
+                       MX6UL_PAD_ENET2_RX_EN__GPIO2_IO10       0x130b0
+               >;
+       };
+
+       pinctrl_usdhc1: usdhc1grp {
+               fsl,pins = <
+                       MX6UL_PAD_SD1_CMD__USDHC1_CMD           0x17059
+                       MX6UL_PAD_SD1_CLK__USDHC1_CLK           0x10059
+                       MX6UL_PAD_SD1_DATA0__USDHC1_DATA0       0x17059
+                       MX6UL_PAD_SD1_DATA1__USDHC1_DATA1       0x17059
+                       MX6UL_PAD_SD1_DATA2__USDHC1_DATA2       0x17059
+                       MX6UL_PAD_SD1_DATA3__USDHC1_DATA3       0x17059
+                       MX6UL_PAD_NAND_READY_B__USDHC1_DATA4    0x17059
+                       MX6UL_PAD_NAND_CE0_B__USDHC1_DATA5      0x17059
+                       MX6UL_PAD_NAND_CE1_B__USDHC1_DATA6      0x17059
+                       MX6UL_PAD_NAND_CLE__USDHC1_DATA7        0x17059
+               >;
+       };
+
+       pinctrl_usdhc2: usdhc2grp {
+               fsl,pins = <
+                       MX6UL_PAD_LCD_DATA18__USDHC2_CMD        0x1b0b0
+                       MX6UL_PAD_LCD_DATA19__USDHC2_CLK        0x100b0
+                       MX6UL_PAD_LCD_DATA20__USDHC2_DATA0      0x1b0b0
+                       MX6UL_PAD_LCD_DATA21__USDHC2_DATA1      0x1b0b0
+                       MX6UL_PAD_LCD_DATA22__USDHC2_DATA2      0x1b0b0
+                       MX6UL_PAD_LCD_DATA23__USDHC2_DATA3      0x1b0b0
+                       /* WL_REG_ON */
+                       MX6UL_PAD_ENET2_RX_DATA1__GPIO2_IO09    0x130b0
+                       /* WL_IRQ */
+                       MX6UL_PAD_ENET2_RX_DATA0__GPIO2_IO08    0x1b0b0
+               >;
+       };
+};
diff --git a/arch/arm/boot/dts/imx6ul-imx6ull-opos6uldev.dtsi b/arch/arm/boot/dts/imx6ul-imx6ull-opos6uldev.dtsi
new file mode 100644 (file)
index 0000000..1896635
--- /dev/null
@@ -0,0 +1,338 @@
+// SPDX-License-Identifier: GPL-2.0 OR MIT
+//
+// Copyright 2019 Armadeus Systems <support@armadeus.com>
+
+/ {
+       chosen {
+               stdout-path = &uart1;
+       };
+
+       backlight: backlight {
+               compatible = "pwm-backlight";
+               pwms = <&pwm3 0 191000>;
+               brightness-levels = <0 4 8 16 32 64 128 255>;
+               default-brightness-level = <7>;
+               power-supply = <&reg_5v>;
+               status = "okay";
+       };
+
+       gpio-keys {
+               compatible = "gpio-keys";
+               pinctrl-names = "default";
+               pinctrl-0 = <&pinctrl_gpio_keys>;
+
+               user-button {
+                       label = "User button";
+                       gpios = <&gpio2 11 GPIO_ACTIVE_LOW>;
+                       linux,code = <BTN_MISC>;
+                       wakeup-source;
+               };
+       };
+
+       leds {
+               compatible = "gpio-leds";
+
+               user-led {
+                       label = "User";
+                       pinctrl-names = "default";
+                       pinctrl-0 = <&pinctrl_led>;
+                       gpios = <&gpio3 4 GPIO_ACTIVE_HIGH>;
+                       linux,default-trigger = "heartbeat";
+               };
+       };
+
+       onewire {
+               compatible = "w1-gpio";
+               pinctrl-names = "default";
+               pinctrl-0 = <&pinctrl_w1>;
+               gpios = <&gpio5 1 GPIO_ACTIVE_HIGH>;
+       };
+
+       panel: panel {
+               compatible = "armadeus,st0700-adapt";
+               power-supply = <&reg_3v3>;
+               backlight = <&backlight>;
+
+               port {
+                       panel_in: endpoint {
+                               remote-endpoint = <&lcdif_out>;
+                       };
+               };
+       };
+
+       reg_5v: regulator-5v {
+               compatible = "regulator-fixed";
+               regulator-name = "5V";
+               regulator-min-microvolt = <5000000>;
+               regulator-max-microvolt = <5000000>;
+       };
+
+       reg_usbotg1_vbus: regulator-usbotg1vbus {
+               compatible = "regulator-fixed";
+               regulator-name = "usbotg1vbus";
+               regulator-min-microvolt = <5000000>;
+               regulator-max-microvolt = <5000000>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&pinctrl_usbotg1_vbus>;
+               gpio = <&gpio1 5 GPIO_ACTIVE_HIGH>;
+               enable-active-high;
+       };
+
+       reg_usbotg2_vbus: regulator-usbotg2vbus {
+               compatible = "regulator-fixed";
+               regulator-name = "usbotg2vbus";
+               regulator-min-microvolt = <5000000>;
+               regulator-max-microvolt = <5000000>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&pinctrl_usbotg2_vbus>;
+               gpio = <&gpio5 9 GPIO_ACTIVE_HIGH>;
+               enable-active-high;
+       };
+};
+
+&adc1 {
+       vref-supply = <&reg_3v3>;
+       status = "okay";
+};
+
+&can1 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_flexcan1>;
+       xceiver-supply = <&reg_5v>;
+       status = "okay";
+};
+
+&can2 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_flexcan2>;
+       xceiver-supply = <&reg_5v>;
+       status = "okay";
+};
+
+&ecspi4 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_ecspi4>;
+       cs-gpios = <&gpio4 9 GPIO_ACTIVE_LOW>, <&gpio4 3 GPIO_ACTIVE_LOW>;
+       status = "okay";
+
+       spidev0: spi@0 {
+               compatible = "spidev";
+               reg = <0>;
+               spi-max-frequency = <5000000>;
+       };
+
+       spidev1: spi@1 {
+               compatible = "spidev";
+               reg = <1>;
+               spi-max-frequency = <5000000>;
+       };
+};
+
+&i2c1 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_i2c1>;
+       clock-frequency = <400000>;
+       status = "okay";
+};
+
+&i2c2 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_i2c2>;
+       clock-frequency = <400000>;
+       status = "okay";
+};
+
+&lcdif {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_lcdif>;
+       status = "okay";
+
+       port {
+               lcdif_out: endpoint {
+                       remote-endpoint = <&panel_in>;
+               };
+       };
+};
+
+&pwm3 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_pwm3>;
+       status = "okay";
+};
+
+&snvs_pwrkey {
+       status = "disabled";
+};
+
+&tsc {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_tsc>;
+       xnur-gpio = <&gpio1 3 GPIO_ACTIVE_LOW>;
+       measure-delay-time = <0xffff>;
+       pre-charge-time = <0xffff>;
+       status = "okay";
+};
+
+&uart1 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_uart1>;
+       status = "okay";
+};
+
+&uart2 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_uart2>;
+       status = "okay";
+};
+
+&usbotg1 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_usbotg1_id>;
+       vbus-supply = <&reg_usbotg1_vbus>;
+       dr_mode = "otg";
+       disable-over-current;
+       status = "okay";
+};
+
+&usbotg2 {
+       vbus-supply = <&reg_usbotg2_vbus>;
+       dr_mode = "host";
+       disable-over-current;
+       status = "okay";
+};
+
+&iomuxc {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_gpios>;
+
+       pinctrl_ecspi4: ecspi4grp {
+               fsl,pins = <
+                       MX6UL_PAD_NAND_DATA04__ECSPI4_SCLK      0x1b0b0
+                       MX6UL_PAD_NAND_DATA05__ECSPI4_MOSI      0x1b0b0
+                       MX6UL_PAD_NAND_DATA06__ECSPI4_MISO      0x1b0b0
+                       MX6UL_PAD_NAND_DATA01__GPIO4_IO03       0x1b0b0
+                       MX6UL_PAD_NAND_DATA07__GPIO4_IO09       0x1b0b0
+               >;
+       };
+
+       pinctrl_flexcan1: flexcan1grp {
+               fsl,pins = <
+                       MX6UL_PAD_UART3_CTS_B__FLEXCAN1_TX      0x0b0b0
+                       MX6UL_PAD_UART3_RTS_B__FLEXCAN1_RX      0x0b0b0
+               >;
+       };
+
+       pinctrl_flexcan2: flexcan2grp {
+               fsl,pins = <
+                       MX6UL_PAD_UART2_CTS_B__FLEXCAN2_TX      0x0b0b0
+                       MX6UL_PAD_UART2_RTS_B__FLEXCAN2_RX      0x0b0b0
+               >;
+       };
+
+       pinctrl_gpios: gpiosgrp {
+               fsl,pins = <
+                       MX6UL_PAD_GPIO1_IO09__GPIO1_IO09        0x0b0b0
+                       MX6UL_PAD_UART3_RX_DATA__GPIO1_IO25     0x0b0b0
+                       MX6UL_PAD_UART3_TX_DATA__GPIO1_IO24     0x0b0b0
+                       MX6UL_PAD_NAND_RE_B__GPIO4_IO00         0x0b0b0
+                       MX6UL_PAD_GPIO1_IO08__GPIO1_IO08        0x0b0b0
+                       MX6UL_PAD_UART1_CTS_B__GPIO1_IO18       0x0b0b0
+                       MX6UL_PAD_UART1_RTS_B__GPIO1_IO19       0x0b0b0
+                       MX6UL_PAD_NAND_WE_B__GPIO4_IO01         0x0b0b0
+               >;
+       };
+
+       pinctrl_gpio_keys: gpiokeysgrp {
+               fsl,pins = <
+                       MX6UL_PAD_ENET2_TX_DATA0__GPIO2_IO11    0x0b0b0
+               >;
+       };
+
+       pinctrl_i2c1: i2c1grp {
+               fsl,pins = <
+                       MX6UL_PAD_UART4_RX_DATA__I2C1_SDA       0x4001b8b0
+                       MX6UL_PAD_UART4_TX_DATA__I2C1_SCL       0x4001b8b0
+               >;
+       };
+
+       pinctrl_i2c2: i2c2grp {
+               fsl,pins = <
+                       MX6UL_PAD_UART5_RX_DATA__I2C2_SDA       0x4001b8b0
+                       MX6UL_PAD_UART5_TX_DATA__I2C2_SCL       0x4001b8b0
+               >;
+       };
+
+       pinctrl_lcdif: lcdifgrp {
+               fsl,pins = <
+                       MX6UL_PAD_LCD_CLK__LCDIF_CLK        0x100b1
+                       MX6UL_PAD_LCD_ENABLE__LCDIF_ENABLE  0x100b1
+                       MX6UL_PAD_LCD_HSYNC__LCDIF_HSYNC    0x100b1
+                       MX6UL_PAD_LCD_VSYNC__LCDIF_VSYNC    0x100b1
+                       MX6UL_PAD_LCD_DATA00__LCDIF_DATA00  0x100b1
+                       MX6UL_PAD_LCD_DATA01__LCDIF_DATA01  0x100b1
+                       MX6UL_PAD_LCD_DATA02__LCDIF_DATA02  0x100b1
+                       MX6UL_PAD_LCD_DATA03__LCDIF_DATA03  0x100b1
+                       MX6UL_PAD_LCD_DATA04__LCDIF_DATA04  0x100b1
+                       MX6UL_PAD_LCD_DATA05__LCDIF_DATA05  0x100b1
+                       MX6UL_PAD_LCD_DATA06__LCDIF_DATA06  0x100b1
+                       MX6UL_PAD_LCD_DATA07__LCDIF_DATA07  0x100b1
+                       MX6UL_PAD_LCD_DATA08__LCDIF_DATA08  0x100b1
+                       MX6UL_PAD_LCD_DATA09__LCDIF_DATA09  0x100b1
+                       MX6UL_PAD_LCD_DATA10__LCDIF_DATA10  0x100b1
+                       MX6UL_PAD_LCD_DATA11__LCDIF_DATA11  0x100b1
+                       MX6UL_PAD_LCD_DATA12__LCDIF_DATA12  0x100b1
+                       MX6UL_PAD_LCD_DATA13__LCDIF_DATA13  0x100b1
+                       MX6UL_PAD_LCD_DATA14__LCDIF_DATA14  0x100b1
+                       MX6UL_PAD_LCD_DATA15__LCDIF_DATA15  0x100b1
+                       MX6UL_PAD_LCD_DATA16__LCDIF_DATA16  0x100b1
+                       MX6UL_PAD_LCD_DATA17__LCDIF_DATA17  0x100b1
+               >;
+       };
+
+       pinctrl_led: ledgrp {
+               fsl,pins = <
+                       MX6UL_PAD_LCD_RESET__GPIO3_IO04         0x0b0b0
+               >;
+       };
+
+       pinctrl_pwm3: pwm3grp {
+               fsl,pins = <
+                       MX6UL_PAD_NAND_ALE__PWM3_OUT            0x1b0b0
+               >;
+       };
+
+       pinctrl_tsc: tscgrp {
+               fsl,pins = <
+                       MX6UL_PAD_GPIO1_IO01__GPIO1_IO01       0xb0
+                       MX6UL_PAD_GPIO1_IO02__GPIO1_IO02       0xb0
+                       MX6UL_PAD_GPIO1_IO03__GPIO1_IO03       0xb0
+                       MX6UL_PAD_GPIO1_IO04__GPIO1_IO04       0xb0
+               >;
+       };
+
+       pinctrl_uart1: uart1grp {
+               fsl,pins = <
+                       MX6UL_PAD_UART1_TX_DATA__UART1_DCE_TX   0x1b0b1
+                       MX6UL_PAD_UART1_RX_DATA__UART1_DCE_RX   0x1b0b1
+               >;
+       };
+
+       pinctrl_uart2: uart2grp {
+               fsl,pins = <
+                       MX6UL_PAD_UART2_TX_DATA__UART2_DCE_TX   0x1b0b1
+                       MX6UL_PAD_UART2_RX_DATA__UART2_DCE_RX   0x1b0b1
+               >;
+       };
+
+       pinctrl_usbotg1_id: usbotg1idgrp {
+               fsl,pins = <
+                       MX6UL_PAD_GPIO1_IO00__ANATOP_OTG1_ID    0x1b0b0
+               >;
+       };
+
+       pinctrl_usbotg1_vbus: usbotg1vbusgrp {
+               fsl,pins = <
+                       MX6UL_PAD_GPIO1_IO05__GPIO1_IO05        0x1b0b0
+               >;
+       };
+};
index 0205fd5..5a3e06d 100644 (file)
 /dts-v1/;
 
 #include "imx6ul-kontron-n6310-som.dtsi"
+#include "imx6ul-kontron-n6x1x-s.dtsi"
 
 / {
        model = "Kontron N6310 S";
        compatible = "kontron,imx6ul-n6310-s", "kontron,imx6ul-n6310-som",
                     "fsl,imx6ul";
-
-       gpio-leds {
-               compatible = "gpio-leds";
-               pinctrl-names = "default";
-               pinctrl-0 = <&pinctrl_gpio_leds>;
-
-               led1 {
-                       label = "debug-led1";
-                       gpios = <&gpio1 30 GPIO_ACTIVE_LOW>;
-                       default-state = "off";
-                       linux,default-trigger = "heartbeat";
-               };
-
-               led2 {
-                       label = "debug-led2";
-                       gpios = <&gpio5 3 GPIO_ACTIVE_LOW>;
-                       default-state = "off";
-               };
-
-               led3 {
-                       label = "debug-led3";
-                       gpios = <&gpio5 2 GPIO_ACTIVE_LOW>;
-                       default-state = "off";
-               };
-       };
-
-       pwm-beeper {
-               compatible = "pwm-beeper";
-               pwms = <&pwm8 0 5000>;
-       };
-
-       reg_3v3: regulator-3v3 {
-               compatible = "regulator-fixed";
-               regulator-name = "3v3";
-               regulator-min-microvolt = <3300000>;
-               regulator-max-microvolt = <3300000>;
-       };
-
-       reg_usb_otg1_vbus: regulator-usb-otg1-vbus {
-               compatible = "regulator-fixed";
-               regulator-name = "usb_otg1_vbus";
-               regulator-min-microvolt = <5000000>;
-               regulator-max-microvolt = <5000000>;
-               gpio = <&gpio1 4 GPIO_ACTIVE_HIGH>;
-               enable-active-high;
-       };
-
-       reg_vref_adc: regulator-vref-adc {
-               compatible = "regulator-fixed";
-               regulator-name = "vref-adc";
-               regulator-min-microvolt = <3300000>;
-               regulator-max-microvolt = <3300000>;
-       };
-};
-
-&adc1 {
-       pinctrl-names = "default";
-       pinctrl-0 = <&pinctrl_adc1>;
-       num-channels = <3>;
-       vref-supply = <&reg_vref_adc>;
-       status = "okay";
-};
-
-&can2 {
-       pinctrl-names = "default";
-       pinctrl-0 = <&pinctrl_flexcan2>;
-       status = "okay";
-};
-
-&ecspi1 {
-       cs-gpios = <&gpio4 26 GPIO_ACTIVE_HIGH>;
-       pinctrl-names = "default";
-       pinctrl-0 = <&pinctrl_ecspi1>;
-       status = "okay";
-
-       eeprom@0 {
-               compatible = "anvo,anv32e61w", "atmel,at25";
-               reg = <0>;
-               spi-max-frequency = <20000000>;
-               spi-cpha;
-               spi-cpol;
-               pagesize = <1>;
-               size = <8192>;
-               address-width = <16>;
-       };
-};
-
-&fec1 {
-       pinctrl-0 = <&pinctrl_enet1>;
-       /delete-node/ mdio;
-};
-
-&fec2 {
-       pinctrl-names = "default";
-       pinctrl-0 = <&pinctrl_enet2 &pinctrl_enet2_mdio>;
-       phy-mode = "rmii";
-       phy-handle = <&ethphy2>;
-       status = "okay";
-
-       mdio {
-               #address-cells = <1>;
-               #size-cells = <0>;
-
-               ethphy1: ethernet-phy@1 {
-                       reg = <1>;
-                       micrel,led-mode = <0>;
-                       clocks = <&clks IMX6UL_CLK_ENET_REF>;
-                       clock-names = "rmii-ref";
-               };
-
-               ethphy2: ethernet-phy@2 {
-                       reg = <2>;
-                       micrel,led-mode = <0>;
-                       clocks = <&clks IMX6UL_CLK_ENET2_REF>;
-                       clock-names = "rmii-ref";
-               };
-       };
-};
-
-&i2c1 {
-       clock-frequency = <100000>;
-       pinctrl-names = "default";
-       pinctrl-0 = <&pinctrl_i2c1>;
-       status = "okay";
-};
-
-&i2c4 {
-       clock-frequency = <100000>;
-       pinctrl-names = "default";
-       pinctrl-0 = <&pinctrl_i2c4>;
-       status = "okay";
-
-       rtc@32 {
-               compatible = "epson,rx8900";
-               reg = <0x32>;
-       };
-};
-
-&pwm8 {
-       pinctrl-names = "default";
-       pinctrl-0 = <&pinctrl_pwm8>;
-       status = "okay";
-};
-
-&snvs_poweroff {
-       status = "okay";
-};
-
-&uart1 {
-       pinctrl-names = "default";
-       pinctrl-0 = <&pinctrl_uart1>;
-       status = "okay";
-};
-
-&uart2 {
-       pinctrl-names = "default";
-       pinctrl-0 = <&pinctrl_uart2>;
-       linux,rs485-enabled-at-boot-time;
-       rs485-rx-during-tx;
-       rs485-rts-active-low;
-       uart-has-rtscts;
-       status = "okay";
-};
-
-&uart3 {
-       pinctrl-names = "default";
-       pinctrl-0 = <&pinctrl_uart3>;
-       fsl,uart-has-rtscts;
-       status = "okay";
-};
-
-&uart4 {
-       pinctrl-names = "default";
-       pinctrl-0 = <&pinctrl_uart4>;
-       status = "okay";
-};
-
-&usbotg1 {
-       pinctrl-names = "default";
-       pinctrl-0 = <&pinctrl_usbotg1>;
-       dr_mode = "otg";
-       srp-disable;
-       hnp-disable;
-       adp-disable;
-       vbus-supply = <&reg_usb_otg1_vbus>;
-       status = "okay";
-};
-
-&usbotg2 {
-       dr_mode = "host";
-       disable-over-current;
-       status = "okay";
-};
-
-&usdhc1 {
-       pinctrl-names = "default";
-       pinctrl-0 = <&pinctrl_usdhc1>;
-       cd-gpios = <&gpio1 19 GPIO_ACTIVE_LOW>;
-       keep-power-in-suspend;
-       wakeup-source;
-       vmmc-supply = <&reg_3v3>;
-       voltage-ranges = <3300 3300>;
-       no-1-8-v;
-       status = "okay";
-};
-
-&usdhc2 {
-       pinctrl-names = "default", "state_100mhz", "state_200mhz";
-       pinctrl-0 = <&pinctrl_usdhc2>;
-       pinctrl-1 = <&pinctrl_usdhc2_100mhz>;
-       pinctrl-2 = <&pinctrl_usdhc2_200mhz>;
-       non-removable;
-       keep-power-in-suspend;
-       wakeup-source;
-       vmmc-supply = <&reg_3v3>;
-       voltage-ranges = <3300 3300>;
-       no-1-8-v;
-       status = "okay";
-};
-
-&wdog1 {
-       pinctrl-names = "default";
-       pinctrl-0 = <&pinctrl_wdog>;
-       fsl,ext-reset-output;
-       status = "okay";
-};
-
-&iomuxc {
-       pinctrl-0 = <&pinctrl_reset_out &pinctrl_gpio>;
-
-       pinctrl_adc1: adc1grp {
-               fsl,pins = <
-                       MX6UL_PAD_GPIO1_IO02__GPIO1_IO02        0xb0
-                       MX6UL_PAD_GPIO1_IO03__GPIO1_IO03        0xb0
-                       MX6UL_PAD_GPIO1_IO08__GPIO1_IO08        0xb0
-               >;
-       };
-
-       /* FRAM */
-       pinctrl_ecspi1: ecspi1grp {
-               fsl,pins = <
-                       MX6UL_PAD_CSI_DATA07__ECSPI1_MISO       0x100b1
-                       MX6UL_PAD_CSI_DATA06__ECSPI1_MOSI       0x100b1
-                       MX6UL_PAD_CSI_DATA04__ECSPI1_SCLK       0x100b1
-                       MX6UL_PAD_CSI_DATA05__GPIO4_IO26        0x100b1 /* ECSPI1-CS1 */
-               >;
-       };
-
-       pinctrl_enet2: enet2grp {
-               fsl,pins = <
-                       MX6UL_PAD_ENET2_RX_EN__ENET2_RX_EN      0x1b0b0
-                       MX6UL_PAD_ENET2_RX_ER__ENET2_RX_ER      0x1b0b0
-                       MX6UL_PAD_ENET2_RX_DATA0__ENET2_RDATA00 0x1b0b0
-                       MX6UL_PAD_ENET2_RX_DATA1__ENET2_RDATA01 0x1b0b0
-                       MX6UL_PAD_ENET2_TX_EN__ENET2_TX_EN      0x1b0b0
-                       MX6UL_PAD_ENET2_TX_DATA0__ENET2_TDATA00 0x1b0b0
-                       MX6UL_PAD_ENET2_TX_DATA1__ENET2_TDATA01 0x1b0b0
-                       MX6UL_PAD_ENET2_TX_CLK__ENET2_REF_CLK2  0x4001b009
-               >;
-       };
-
-       pinctrl_enet2_mdio: enet2mdiogrp {
-               fsl,pins = <
-                       MX6UL_PAD_GPIO1_IO07__ENET2_MDC         0x1b0b0
-                       MX6UL_PAD_GPIO1_IO06__ENET2_MDIO        0x1b0b0
-               >;
-       };
-
-       pinctrl_flexcan2: flexcan2grp{
-               fsl,pins = <
-                       MX6UL_PAD_UART2_RTS_B__FLEXCAN2_RX      0x1b020
-                       MX6UL_PAD_UART2_CTS_B__FLEXCAN2_TX      0x1b020
-               >;
-       };
-
-       pinctrl_gpio: gpiogrp {
-               fsl,pins = <
-                       MX6UL_PAD_SNVS_TAMPER5__GPIO5_IO05      0x1b0b0 /* DOUT1 */
-                       MX6UL_PAD_SNVS_TAMPER4__GPIO5_IO04      0x1b0b0 /* DIN1 */
-                       MX6UL_PAD_SNVS_TAMPER1__GPIO5_IO01      0x1b0b0 /* DOUT2 */
-                       MX6UL_PAD_SNVS_TAMPER0__GPIO5_IO00      0x1b0b0 /* DIN2 */
-               >;
-       };
-
-       pinctrl_gpio_leds: gpioledsgrp {
-               fsl,pins = <
-                       MX6UL_PAD_UART5_TX_DATA__GPIO1_IO30     0x1b0b0 /* LED H14 */
-                       MX6UL_PAD_SNVS_TAMPER3__GPIO5_IO03      0x1b0b0 /* LED H15 */
-                       MX6UL_PAD_SNVS_TAMPER2__GPIO5_IO02      0x1b0b0 /* LED H16 */
-               >;
-       };
-
-       pinctrl_i2c1: i2c1grp {
-               fsl,pins = <
-                       MX6UL_PAD_CSI_PIXCLK__I2C1_SCL          0x4001b8b0
-                       MX6UL_PAD_CSI_MCLK__I2C1_SDA            0x4001b8b0
-               >;
-       };
-
-       pinctrl_i2c4: i2c4grp {
-               fsl,pins = <
-                       MX6UL_PAD_UART2_TX_DATA__I2C4_SCL       0x4001f8b0
-                       MX6UL_PAD_UART2_RX_DATA__I2C4_SDA       0x4001f8b0
-               >;
-       };
-
-       pinctrl_pwm8: pwm8grp {
-               fsl,pins = <
-                       MX6UL_PAD_CSI_HSYNC__PWM8_OUT           0x110b0
-               >;
-       };
-
-       pinctrl_uart1: uart1grp {
-               fsl,pins = <
-                       MX6UL_PAD_UART1_TX_DATA__UART1_DCE_TX   0x1b0b1
-                       MX6UL_PAD_UART1_RX_DATA__UART1_DCE_RX   0x1b0b1
-               >;
-       };
-
-       pinctrl_uart2: uart2grp {
-               fsl,pins = <
-                       MX6UL_PAD_NAND_DATA04__UART2_DCE_TX     0x1b0b1
-                       MX6UL_PAD_NAND_DATA05__UART2_DCE_RX     0x1b0b1
-                       MX6UL_PAD_NAND_DATA06__UART2_DCE_CTS    0x1b0b1
-                       /*
-                        * mux unused RTS to make sure it doesn't cause
-                        * any interrupts when it is undefined
-                        */
-                       MX6UL_PAD_NAND_DATA07__UART2_DCE_RTS    0x1b0b1
-               >;
-       };
-
-       pinctrl_uart3: uart3grp {
-               fsl,pins = <
-                       MX6UL_PAD_UART3_TX_DATA__UART3_DCE_TX   0x1b0b1
-                       MX6UL_PAD_UART3_RX_DATA__UART3_DCE_RX   0x1b0b1
-                       MX6UL_PAD_UART3_CTS_B__UART3_DCE_CTS    0x1b0b1
-                       MX6UL_PAD_UART3_RTS_B__UART3_DCE_RTS    0x1b0b1
-               >;
-       };
-
-       pinctrl_uart4: uart4grp {
-               fsl,pins = <
-                       MX6UL_PAD_UART4_TX_DATA__UART4_DCE_TX   0x1b0b1
-                       MX6UL_PAD_UART4_RX_DATA__UART4_DCE_RX   0x1b0b1
-               >;
-       };
-
-       pinctrl_usbotg1: usbotg1 {
-               fsl,pins = <
-                       MX6UL_PAD_GPIO1_IO04__GPIO1_IO04        0x1b0b0
-               >;
-       };
-
-       pinctrl_usdhc1: usdhc1grp {
-               fsl,pins = <
-                       MX6UL_PAD_SD1_CMD__USDHC1_CMD           0x17059
-                       MX6UL_PAD_SD1_CLK__USDHC1_CLK           0x10059
-                       MX6UL_PAD_SD1_DATA0__USDHC1_DATA0       0x17059
-                       MX6UL_PAD_SD1_DATA1__USDHC1_DATA1       0x17059
-                       MX6UL_PAD_SD1_DATA2__USDHC1_DATA2       0x17059
-                       MX6UL_PAD_SD1_DATA3__USDHC1_DATA3       0x17059
-                       MX6UL_PAD_UART1_RTS_B__GPIO1_IO19       0x100b1 /* SD1_CD */
-               >;
-       };
-
-       pinctrl_usdhc2: usdhc2grp {
-               fsl,pins = <
-                       MX6UL_PAD_NAND_RE_B__USDHC2_CLK         0x10059
-                       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
-               >;
-       };
-
-       pinctrl_usdhc2_100mhz: usdhc2-100mhzgrp {
-               fsl,pins = <
-                       MX6UL_PAD_NAND_RE_B__USDHC2_CLK         0x100b9
-                       MX6UL_PAD_NAND_WE_B__USDHC2_CMD         0x170b9
-                       MX6UL_PAD_NAND_DATA00__USDHC2_DATA0     0x170b9
-                       MX6UL_PAD_NAND_DATA01__USDHC2_DATA1     0x170b9
-                       MX6UL_PAD_NAND_DATA02__USDHC2_DATA2     0x170b9
-                       MX6UL_PAD_NAND_DATA03__USDHC2_DATA3     0x170b9
-               >;
-       };
-
-       pinctrl_usdhc2_200mhz: usdhc2-200mhzgrp {
-               fsl,pins = <
-                       MX6UL_PAD_NAND_RE_B__USDHC2_CLK         0x100f9
-                       MX6UL_PAD_NAND_WE_B__USDHC2_CMD         0x170f9
-                       MX6UL_PAD_NAND_DATA00__USDHC2_DATA0     0x170f9
-                       MX6UL_PAD_NAND_DATA01__USDHC2_DATA1     0x170f9
-                       MX6UL_PAD_NAND_DATA02__USDHC2_DATA2     0x170f9
-                       MX6UL_PAD_NAND_DATA03__USDHC2_DATA3     0x170f9
-               >;
-       };
-
-       pinctrl_wdog: wdoggrp {
-               fsl,pins = <
-                       MX6UL_PAD_GPIO1_IO09__WDOG1_WDOG_ANY    0x30b0
-               >;
-       };
 };
index a896b23..47d3ce5 100644 (file)
@@ -6,7 +6,7 @@
  */
 
 #include "imx6ul.dtsi"
-#include <dt-bindings/gpio/gpio.h>
+#include "imx6ul-kontron-n6x1x-som-common.dtsi"
 
 / {
        model = "Kontron N6310 SOM";
        };
 };
 
-&ecspi2 {
-       cs-gpios = <&gpio4 22 GPIO_ACTIVE_HIGH>;
-       pinctrl-names = "default";
-       pinctrl-0 = <&pinctrl_ecspi2>;
-       status = "okay";
-
-       spi-flash@0 {
-               compatible = "mxicy,mx25v8035f", "jedec,spi-nor";
-               spi-max-frequency = <50000000>;
-               reg = <0>;
-       };
-};
-
-&fec1 {
-       pinctrl-names = "default";
-       pinctrl-0 = <&pinctrl_enet1 &pinctrl_enet1_mdio>;
-       phy-mode = "rmii";
-       phy-handle = <&ethphy1>;
-       status = "okay";
-
-       mdio {
-               #address-cells = <1>;
-               #size-cells = <0>;
-
-               ethphy1: ethernet-phy@1 {
-                       reg = <1>;
-                       micrel,led-mode = <0>;
-                       clocks = <&clks IMX6UL_CLK_ENET_REF>;
-                       clock-names = "rmii-ref";
-               };
-       };
-};
-
-&fec2 {
-       phy-mode = "rmii";
-       status = "disabled";
-};
-
 &qspi {
-       pinctrl-names = "default";
-       pinctrl-0 = <&pinctrl_qspi>;
-       status = "okay";
-
        spi-flash@0 {
                #address-cells = <1>;
                #size-cells = <1>;
                };
        };
 };
-
-&iomuxc {
-       pinctrl-names = "default";
-       pinctrl-0 = <&pinctrl_reset_out>;
-
-       pinctrl_ecspi2: ecspi2grp {
-               fsl,pins = <
-                       MX6UL_PAD_CSI_DATA03__ECSPI2_MISO      0x100b1
-                       MX6UL_PAD_CSI_DATA02__ECSPI2_MOSI      0x100b1
-                       MX6UL_PAD_CSI_DATA00__ECSPI2_SCLK      0x100b1
-                       MX6UL_PAD_CSI_DATA01__GPIO4_IO22       0x100b1
-               >;
-       };
-
-       pinctrl_enet1: enet1grp {
-               fsl,pins = <
-                       MX6UL_PAD_ENET1_RX_EN__ENET1_RX_EN      0x1b0b0
-                       MX6UL_PAD_ENET1_RX_ER__ENET1_RX_ER      0x1b0b0
-                       MX6UL_PAD_ENET1_RX_DATA0__ENET1_RDATA00 0x1b0b0
-                       MX6UL_PAD_ENET1_RX_DATA1__ENET1_RDATA01 0x1b0b0
-                       MX6UL_PAD_ENET1_TX_EN__ENET1_TX_EN      0x1b0b0
-                       MX6UL_PAD_ENET1_TX_DATA0__ENET1_TDATA00 0x1b0b0
-                       MX6UL_PAD_ENET1_TX_DATA1__ENET1_TDATA01 0x1b0b0
-                       MX6UL_PAD_ENET1_TX_CLK__ENET1_REF_CLK1  0x4001b009
-               >;
-       };
-
-       pinctrl_enet1_mdio: enet1mdiogrp {
-               fsl,pins = <
-                       MX6UL_PAD_GPIO1_IO07__ENET1_MDC         0x1b0b0
-                       MX6UL_PAD_GPIO1_IO06__ENET1_MDIO        0x1b0b0
-               >;
-       };
-
-       pinctrl_qspi: qspigrp {
-               fsl,pins = <
-                       MX6UL_PAD_NAND_WP_B__QSPI_A_SCLK        0x70a1
-                       MX6UL_PAD_NAND_READY_B__QSPI_A_DATA00   0x70a1
-                       MX6UL_PAD_NAND_CE0_B__QSPI_A_DATA01     0x70a1
-                       MX6UL_PAD_NAND_CE1_B__QSPI_A_DATA02     0x70a1
-                       MX6UL_PAD_NAND_CLE__QSPI_A_DATA03       0x70a1
-                       MX6UL_PAD_NAND_DQS__QSPI_A_SS0_B        0x70a1
-               >;
-       };
-
-       pinctrl_reset_out: rstoutgrp {
-               fsl,pins = <
-                       MX6UL_PAD_SNVS_TAMPER9__GPIO5_IO09      0x1b0b0
-               >;
-       };
-};
diff --git a/arch/arm/boot/dts/imx6ul-kontron-n6311-s.dts b/arch/arm/boot/dts/imx6ul-kontron-n6311-s.dts
new file mode 100644 (file)
index 0000000..239a1af
--- /dev/null
@@ -0,0 +1,16 @@
+// SPDX-License-Identifier: GPL-2.0
+/*
+ * Copyright (C) 2017 exceet electronics GmbH
+ * Copyright (C) 2018 Kontron Electronics GmbH
+ */
+
+/dts-v1/;
+
+#include "imx6ul-kontron-n6311-som.dtsi"
+#include "imx6ul-kontron-n6x1x-s.dtsi"
+
+/ {
+       model = "Kontron N6311 S";
+       compatible = "kontron,imx6ul-n6311-s", "kontron,imx6ul-n6311-som",
+                    "fsl,imx6ul";
+};
diff --git a/arch/arm/boot/dts/imx6ul-kontron-n6311-som.dtsi b/arch/arm/boot/dts/imx6ul-kontron-n6311-som.dtsi
new file mode 100644 (file)
index 0000000..a095a76
--- /dev/null
@@ -0,0 +1,40 @@
+// SPDX-License-Identifier: GPL-2.0
+/*
+ * Copyright (C) 2017 exceet electronics GmbH
+ * Copyright (C) 2018 Kontron Electronics GmbH
+ */
+
+#include "imx6ul.dtsi"
+#include "imx6ul-kontron-n6x1x-som-common.dtsi"
+
+/ {
+       model = "Kontron N6311 SOM";
+       compatible = "kontron,imx6ul-n6311-som", "fsl,imx6ul";
+
+       memory@80000000 {
+               reg = <0x80000000 0x20000000>;
+               device_type = "memory";
+       };
+};
+
+&qspi {
+       spi-flash@0 {
+               #address-cells = <1>;
+               #size-cells = <1>;
+               compatible = "spi-nand";
+               spi-max-frequency = <104000000>;
+               spi-tx-bus-width = <4>;
+               spi-rx-bus-width = <4>;
+               reg = <0>;
+
+               partition@0 {
+                       label = "ubi1";
+                       reg = <0x00000000 0x08000000>;
+               };
+
+               partition@8000000 {
+                       label = "ubi2";
+                       reg = <0x08000000 0x18000000>;
+               };
+       };
+};
diff --git a/arch/arm/boot/dts/imx6ul-kontron-n6x1x-s.dtsi b/arch/arm/boot/dts/imx6ul-kontron-n6x1x-s.dtsi
new file mode 100644 (file)
index 0000000..f05e918
--- /dev/null
@@ -0,0 +1,418 @@
+// SPDX-License-Identifier: GPL-2.0
+/*
+ * Copyright (C) 2017 exceet electronics GmbH
+ * Copyright (C) 2018 Kontron Electronics GmbH
+ * Copyright (c) 2019 Krzysztof Kozlowski <krzk@kernel.org>
+ */
+
+#include <dt-bindings/gpio/gpio.h>
+
+/ {
+       gpio-leds {
+               compatible = "gpio-leds";
+               pinctrl-names = "default";
+               pinctrl-0 = <&pinctrl_gpio_leds>;
+
+               led1 {
+                       label = "debug-led1";
+                       gpios = <&gpio1 30 GPIO_ACTIVE_LOW>;
+                       default-state = "off";
+                       linux,default-trigger = "heartbeat";
+               };
+
+               led2 {
+                       label = "debug-led2";
+                       gpios = <&gpio5 3 GPIO_ACTIVE_LOW>;
+                       default-state = "off";
+               };
+
+               led3 {
+                       label = "debug-led3";
+                       gpios = <&gpio5 2 GPIO_ACTIVE_LOW>;
+                       default-state = "off";
+               };
+       };
+
+       pwm-beeper {
+               compatible = "pwm-beeper";
+               pwms = <&pwm8 0 5000>;
+       };
+
+       reg_3v3: regulator-3v3 {
+               compatible = "regulator-fixed";
+               regulator-name = "3v3";
+               regulator-min-microvolt = <3300000>;
+               regulator-max-microvolt = <3300000>;
+       };
+
+       reg_5v: regulator-5v {
+               compatible = "regulator-fixed";
+               regulator-name = "5v";
+               regulator-min-microvolt = <5000000>;
+               regulator-max-microvolt = <5000000>;
+       };
+
+       reg_usb_otg1_vbus: regulator-usb-otg1-vbus {
+               compatible = "regulator-fixed";
+               regulator-name = "usb_otg1_vbus";
+               regulator-min-microvolt = <5000000>;
+               regulator-max-microvolt = <5000000>;
+               gpio = <&gpio1 4 GPIO_ACTIVE_HIGH>;
+               enable-active-high;
+       };
+
+       reg_vref_adc: regulator-vref-adc {
+               compatible = "regulator-fixed";
+               regulator-name = "vref-adc";
+               regulator-min-microvolt = <3300000>;
+               regulator-max-microvolt = <3300000>;
+       };
+};
+
+&adc1 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_adc1>;
+       num-channels = <3>;
+       vref-supply = <&reg_vref_adc>;
+       status = "okay";
+};
+
+&can2 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_flexcan2>;
+       status = "okay";
+};
+
+&ecspi1 {
+       cs-gpios = <&gpio4 26 GPIO_ACTIVE_HIGH>;
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_ecspi1>;
+       status = "okay";
+
+       eeprom@0 {
+               compatible = "anvo,anv32e61w", "atmel,at25";
+               reg = <0>;
+               spi-max-frequency = <20000000>;
+               spi-cpha;
+               spi-cpol;
+               pagesize = <1>;
+               size = <8192>;
+               address-width = <16>;
+       };
+};
+
+&fec1 {
+       pinctrl-0 = <&pinctrl_enet1>;
+       /delete-node/ mdio;
+};
+
+&fec2 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_enet2 &pinctrl_enet2_mdio>;
+       phy-mode = "rmii";
+       phy-handle = <&ethphy2>;
+       status = "okay";
+
+       mdio {
+               #address-cells = <1>;
+               #size-cells = <0>;
+
+               ethphy1: ethernet-phy@1 {
+                       reg = <1>;
+                       micrel,led-mode = <0>;
+                       clocks = <&clks IMX6UL_CLK_ENET_REF>;
+                       clock-names = "rmii-ref";
+               };
+
+               ethphy2: ethernet-phy@2 {
+                       reg = <2>;
+                       micrel,led-mode = <0>;
+                       clocks = <&clks IMX6UL_CLK_ENET2_REF>;
+                       clock-names = "rmii-ref";
+               };
+       };
+};
+
+&i2c1 {
+       clock-frequency = <100000>;
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_i2c1>;
+       status = "okay";
+};
+
+&i2c4 {
+       clock-frequency = <100000>;
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_i2c4>;
+       status = "okay";
+
+       rtc@32 {
+               compatible = "epson,rx8900";
+               reg = <0x32>;
+       };
+};
+
+&pwm8 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_pwm8>;
+       status = "okay";
+};
+
+&uart1 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_uart1>;
+       status = "okay";
+};
+
+&uart2 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_uart2>;
+       linux,rs485-enabled-at-boot-time;
+       rs485-rx-during-tx;
+       rs485-rts-active-low;
+       uart-has-rtscts;
+       status = "okay";
+};
+
+&uart3 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_uart3>;
+       fsl,uart-has-rtscts;
+       status = "okay";
+};
+
+&uart4 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_uart4>;
+       status = "okay";
+};
+
+&usbotg1 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_usbotg1>;
+       dr_mode = "otg";
+       srp-disable;
+       hnp-disable;
+       adp-disable;
+       over-current-active-low;
+       vbus-supply = <&reg_usb_otg1_vbus>;
+       status = "okay";
+};
+
+&usbotg2 {
+       dr_mode = "host";
+       disable-over-current;
+       vbus-supply = <&reg_5v>;
+       status = "okay";
+};
+
+&usdhc1 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_usdhc1>;
+       cd-gpios = <&gpio1 19 GPIO_ACTIVE_LOW>;
+       keep-power-in-suspend;
+       wakeup-source;
+       vmmc-supply = <&reg_3v3>;
+       voltage-ranges = <3300 3300>;
+       no-1-8-v;
+       status = "okay";
+};
+
+&usdhc2 {
+       pinctrl-names = "default", "state_100mhz", "state_200mhz";
+       pinctrl-0 = <&pinctrl_usdhc2>;
+       pinctrl-1 = <&pinctrl_usdhc2_100mhz>;
+       pinctrl-2 = <&pinctrl_usdhc2_200mhz>;
+       non-removable;
+       keep-power-in-suspend;
+       wakeup-source;
+       vmmc-supply = <&reg_3v3>;
+       voltage-ranges = <3300 3300>;
+       no-1-8-v;
+       status = "okay";
+};
+
+&wdog1 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_wdog>;
+       fsl,ext-reset-output;
+       status = "okay";
+};
+
+&iomuxc {
+       pinctrl-0 = <&pinctrl_reset_out &pinctrl_gpio>;
+
+       pinctrl_adc1: adc1grp {
+               fsl,pins = <
+                       MX6UL_PAD_GPIO1_IO02__GPIO1_IO02        0xb0
+                       MX6UL_PAD_GPIO1_IO03__GPIO1_IO03        0xb0
+                       MX6UL_PAD_GPIO1_IO08__GPIO1_IO08        0xb0
+               >;
+       };
+
+       pinctrl_ecspi1: ecspi1grp {
+               fsl,pins = <
+                       MX6UL_PAD_CSI_DATA07__ECSPI1_MISO       0x100b1
+                       MX6UL_PAD_CSI_DATA06__ECSPI1_MOSI       0x100b1
+                       MX6UL_PAD_CSI_DATA04__ECSPI1_SCLK       0x100b1
+                       MX6UL_PAD_CSI_DATA05__GPIO4_IO26        0x100b1 /* ECSPI1-CS1 */
+               >;
+       };
+
+       pinctrl_enet2: enet2grp {
+               fsl,pins = <
+                       MX6UL_PAD_ENET2_RX_EN__ENET2_RX_EN      0x1b0b0
+                       MX6UL_PAD_ENET2_RX_ER__ENET2_RX_ER      0x1b0b0
+                       MX6UL_PAD_ENET2_RX_DATA0__ENET2_RDATA00 0x1b0b0
+                       MX6UL_PAD_ENET2_RX_DATA1__ENET2_RDATA01 0x1b0b0
+                       MX6UL_PAD_ENET2_TX_EN__ENET2_TX_EN      0x1b0b0
+                       MX6UL_PAD_ENET2_TX_DATA0__ENET2_TDATA00 0x1b0b0
+                       MX6UL_PAD_ENET2_TX_DATA1__ENET2_TDATA01 0x1b0b0
+                       MX6UL_PAD_ENET2_TX_CLK__ENET2_REF_CLK2  0x4001b009
+               >;
+       };
+
+       pinctrl_enet2_mdio: enet2mdiogrp {
+               fsl,pins = <
+                       MX6UL_PAD_GPIO1_IO07__ENET2_MDC         0x1b0b0
+                       MX6UL_PAD_GPIO1_IO06__ENET2_MDIO        0x1b0b0
+               >;
+       };
+
+       pinctrl_flexcan2: flexcan2grp{
+               fsl,pins = <
+                       MX6UL_PAD_UART2_RTS_B__FLEXCAN2_RX      0x1b020
+                       MX6UL_PAD_UART2_CTS_B__FLEXCAN2_TX      0x1b020
+               >;
+       };
+
+       pinctrl_gpio: gpiogrp {
+               fsl,pins = <
+                       MX6UL_PAD_SNVS_TAMPER5__GPIO5_IO05      0x1b0b0 /* DOUT1 */
+                       MX6UL_PAD_SNVS_TAMPER4__GPIO5_IO04      0x1b0b0 /* DIN1 */
+                       MX6UL_PAD_SNVS_TAMPER1__GPIO5_IO01      0x1b0b0 /* DOUT2 */
+                       MX6UL_PAD_SNVS_TAMPER0__GPIO5_IO00      0x1b0b0 /* DIN2 */
+               >;
+       };
+
+       pinctrl_gpio_leds: gpioledsgrp {
+               fsl,pins = <
+                       MX6UL_PAD_UART5_TX_DATA__GPIO1_IO30     0x1b0b0 /* LED H14 */
+                       MX6UL_PAD_SNVS_TAMPER3__GPIO5_IO03      0x1b0b0 /* LED H15 */
+                       MX6UL_PAD_SNVS_TAMPER2__GPIO5_IO02      0x1b0b0 /* LED H16 */
+               >;
+       };
+
+       pinctrl_i2c1: i2c1grp {
+               fsl,pins = <
+                       MX6UL_PAD_CSI_PIXCLK__I2C1_SCL          0x4001b8b0
+                       MX6UL_PAD_CSI_MCLK__I2C1_SDA            0x4001b8b0
+               >;
+       };
+
+       pinctrl_i2c4: i2c4grp {
+               fsl,pins = <
+                       MX6UL_PAD_UART2_TX_DATA__I2C4_SCL       0x4001f8b0
+                       MX6UL_PAD_UART2_RX_DATA__I2C4_SDA       0x4001f8b0
+               >;
+       };
+
+       pinctrl_pwm8: pwm8grp {
+               fsl,pins = <
+                       MX6UL_PAD_CSI_HSYNC__PWM8_OUT           0x110b0
+               >;
+       };
+
+       pinctrl_uart1: uart1grp {
+               fsl,pins = <
+                       MX6UL_PAD_UART1_TX_DATA__UART1_DCE_TX   0x1b0b1
+                       MX6UL_PAD_UART1_RX_DATA__UART1_DCE_RX   0x1b0b1
+               >;
+       };
+
+       pinctrl_uart2: uart2grp {
+               fsl,pins = <
+                       MX6UL_PAD_NAND_DATA04__UART2_DCE_TX     0x1b0b1
+                       MX6UL_PAD_NAND_DATA05__UART2_DCE_RX     0x1b0b1
+                       MX6UL_PAD_NAND_DATA06__UART2_DCE_CTS    0x1b0b1
+                       /*
+                        * mux unused RTS to make sure it doesn't cause
+                        * any interrupts when it is undefined
+                        */
+                       MX6UL_PAD_NAND_DATA07__UART2_DCE_RTS    0x1b0b1
+               >;
+       };
+
+       pinctrl_uart3: uart3grp {
+               fsl,pins = <
+                       MX6UL_PAD_UART3_TX_DATA__UART3_DCE_TX   0x1b0b1
+                       MX6UL_PAD_UART3_RX_DATA__UART3_DCE_RX   0x1b0b1
+                       MX6UL_PAD_UART3_CTS_B__UART3_DCE_CTS    0x1b0b1
+                       MX6UL_PAD_UART3_RTS_B__UART3_DCE_RTS    0x1b0b1
+               >;
+       };
+
+       pinctrl_uart4: uart4grp {
+               fsl,pins = <
+                       MX6UL_PAD_UART4_TX_DATA__UART4_DCE_TX   0x1b0b1
+                       MX6UL_PAD_UART4_RX_DATA__UART4_DCE_RX   0x1b0b1
+               >;
+       };
+
+       pinctrl_usbotg1: usbotg1 {
+               fsl,pins = <
+                       MX6UL_PAD_GPIO1_IO04__GPIO1_IO04        0x1b0b0
+               >;
+       };
+
+       pinctrl_usdhc1: usdhc1grp {
+               fsl,pins = <
+                       MX6UL_PAD_SD1_CMD__USDHC1_CMD           0x17059
+                       MX6UL_PAD_SD1_CLK__USDHC1_CLK           0x10059
+                       MX6UL_PAD_SD1_DATA0__USDHC1_DATA0       0x17059
+                       MX6UL_PAD_SD1_DATA1__USDHC1_DATA1       0x17059
+                       MX6UL_PAD_SD1_DATA2__USDHC1_DATA2       0x17059
+                       MX6UL_PAD_SD1_DATA3__USDHC1_DATA3       0x17059
+                       MX6UL_PAD_UART1_RTS_B__GPIO1_IO19       0x100b1 /* SD1_CD */
+               >;
+       };
+
+       pinctrl_usdhc2: usdhc2grp {
+               fsl,pins = <
+                       MX6UL_PAD_NAND_RE_B__USDHC2_CLK         0x10059
+                       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
+               >;
+       };
+
+       pinctrl_usdhc2_100mhz: usdhc2-100mhzgrp {
+               fsl,pins = <
+                       MX6UL_PAD_NAND_RE_B__USDHC2_CLK         0x100b9
+                       MX6UL_PAD_NAND_WE_B__USDHC2_CMD         0x170b9
+                       MX6UL_PAD_NAND_DATA00__USDHC2_DATA0     0x170b9
+                       MX6UL_PAD_NAND_DATA01__USDHC2_DATA1     0x170b9
+                       MX6UL_PAD_NAND_DATA02__USDHC2_DATA2     0x170b9
+                       MX6UL_PAD_NAND_DATA03__USDHC2_DATA3     0x170b9
+               >;
+       };
+
+       pinctrl_usdhc2_200mhz: usdhc2-200mhzgrp {
+               fsl,pins = <
+                       MX6UL_PAD_NAND_RE_B__USDHC2_CLK         0x100f9
+                       MX6UL_PAD_NAND_WE_B__USDHC2_CMD         0x170f9
+                       MX6UL_PAD_NAND_DATA00__USDHC2_DATA0     0x170f9
+                       MX6UL_PAD_NAND_DATA01__USDHC2_DATA1     0x170f9
+                       MX6UL_PAD_NAND_DATA02__USDHC2_DATA2     0x170f9
+                       MX6UL_PAD_NAND_DATA03__USDHC2_DATA3     0x170f9
+               >;
+       };
+
+       pinctrl_wdog: wdoggrp {
+               fsl,pins = <
+                       MX6UL_PAD_GPIO1_IO09__WDOG1_WDOG_ANY    0x30b0
+               >;
+       };
+};
diff --git a/arch/arm/boot/dts/imx6ul-kontron-n6x1x-som-common.dtsi b/arch/arm/boot/dts/imx6ul-kontron-n6x1x-som-common.dtsi
new file mode 100644 (file)
index 0000000..a17af4d
--- /dev/null
@@ -0,0 +1,109 @@
+// SPDX-License-Identifier: GPL-2.0
+/*
+ * Copyright (C) 2017 exceet electronics GmbH
+ * Copyright (C) 2018 Kontron Electronics GmbH
+ * Copyright (c) 2019 Krzysztof Kozlowski <krzk@kernel.org>
+ */
+
+#include <dt-bindings/gpio/gpio.h>
+
+/ {
+       chosen {
+               stdout-path = &uart4;
+       };
+};
+
+&ecspi2 {
+       cs-gpios = <&gpio4 22 GPIO_ACTIVE_HIGH>;
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_ecspi2>;
+       status = "okay";
+
+       spi-flash@0 {
+               compatible = "mxicy,mx25v8035f", "jedec,spi-nor";
+               spi-max-frequency = <50000000>;
+               reg = <0>;
+       };
+};
+
+&fec1 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_enet1 &pinctrl_enet1_mdio>;
+       phy-mode = "rmii";
+       phy-handle = <&ethphy1>;
+       status = "okay";
+
+       mdio {
+               #address-cells = <1>;
+               #size-cells = <0>;
+
+               ethphy1: ethernet-phy@1 {
+                       reg = <1>;
+                       micrel,led-mode = <0>;
+                       clocks = <&clks IMX6UL_CLK_ENET_REF>;
+                       clock-names = "rmii-ref";
+               };
+       };
+};
+
+&fec2 {
+       phy-mode = "rmii";
+       status = "disabled";
+};
+
+&qspi {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_qspi>;
+       status = "okay";
+};
+
+&iomuxc {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_reset_out>;
+
+       pinctrl_ecspi2: ecspi2grp {
+               fsl,pins = <
+                       MX6UL_PAD_CSI_DATA03__ECSPI2_MISO      0x100b1
+                       MX6UL_PAD_CSI_DATA02__ECSPI2_MOSI      0x100b1
+                       MX6UL_PAD_CSI_DATA00__ECSPI2_SCLK      0x100b1
+                       MX6UL_PAD_CSI_DATA01__GPIO4_IO22       0x100b1
+               >;
+       };
+
+       pinctrl_enet1: enet1grp {
+               fsl,pins = <
+                       MX6UL_PAD_ENET1_RX_EN__ENET1_RX_EN      0x1b0b0
+                       MX6UL_PAD_ENET1_RX_ER__ENET1_RX_ER      0x1b0b0
+                       MX6UL_PAD_ENET1_RX_DATA0__ENET1_RDATA00 0x1b0b0
+                       MX6UL_PAD_ENET1_RX_DATA1__ENET1_RDATA01 0x1b0b0
+                       MX6UL_PAD_ENET1_TX_EN__ENET1_TX_EN      0x1b0b0
+                       MX6UL_PAD_ENET1_TX_DATA0__ENET1_TDATA00 0x1b0b0
+                       MX6UL_PAD_ENET1_TX_DATA1__ENET1_TDATA01 0x1b0b0
+                       MX6UL_PAD_ENET1_TX_CLK__ENET1_REF_CLK1  0x4001b009
+               >;
+       };
+
+       pinctrl_enet1_mdio: enet1mdiogrp {
+               fsl,pins = <
+                       MX6UL_PAD_GPIO1_IO07__ENET1_MDC         0x1b0b0
+                       MX6UL_PAD_GPIO1_IO06__ENET1_MDIO        0x1b0b0
+               >;
+       };
+
+       pinctrl_qspi: qspigrp {
+               fsl,pins = <
+                       MX6UL_PAD_NAND_WP_B__QSPI_A_SCLK        0x70a1
+                       MX6UL_PAD_NAND_READY_B__QSPI_A_DATA00   0x70a1
+                       MX6UL_PAD_NAND_CE0_B__QSPI_A_DATA01     0x70a1
+                       MX6UL_PAD_NAND_CE1_B__QSPI_A_DATA02     0x70a1
+                       MX6UL_PAD_NAND_CLE__QSPI_A_DATA03       0x70a1
+                       MX6UL_PAD_NAND_DQS__QSPI_A_SS0_B        0x70a1
+               >;
+       };
+
+       pinctrl_reset_out: rstoutgrp {
+               fsl,pins = <
+                       MX6UL_PAD_SNVS_TAMPER9__GPIO5_IO09      0x1b0b0
+               >;
+       };
+};
index cf7faf4..6ce84f9 100644 (file)
@@ -1,193 +1,6 @@
-/*
- * Copyright 2017 Armadeus Systems <support@armadeus.com>
- *
- * 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.
- */
+// SPDX-License-Identifier: GPL-2.0 OR MIT
+//
+// Copyright 2017 Armadeus Systems <support@armadeus.com>
 
 #include "imx6ul.dtsi"
-
-/ {
-       memory@80000000 {
-               device_type = "memory";
-               reg = <0x80000000 0>; /* will be filled by U-Boot */
-       };
-
-       reg_3v3: regulator-3v3 {
-               compatible = "regulator-fixed";
-               regulator-name = "3V3";
-               regulator-min-microvolt = <3300000>;
-               regulator-max-microvolt = <3300000>;
-       };
-
-       usdhc3_pwrseq: usdhc3-pwrseq {
-               compatible = "mmc-pwrseq-simple";
-               reset-gpios = <&gpio2 9 GPIO_ACTIVE_LOW>;
-       };
-};
-
-&fec1 {
-       pinctrl-names = "default";
-       pinctrl-0 = <&pinctrl_enet1>;
-       phy-mode = "rmii";
-       phy-reset-duration = <1>;
-       phy-reset-gpios = <&gpio4 2 GPIO_ACTIVE_LOW>;
-       phy-handle = <&ethphy1>;
-       phy-supply = <&reg_3v3>;
-       status = "okay";
-
-       mdio: mdio {
-               #address-cells = <1>;
-               #size-cells = <0>;
-
-               ethphy1: ethernet-phy@1 {
-                       compatible = "ethernet-phy-ieee802.3-c22";
-                       reg = <1>;
-                       interrupt-parent = <&gpio4>;
-                       interrupts = <16 IRQ_TYPE_LEVEL_LOW>;
-                       status = "okay";
-               };
-       };
-};
-
-/* Bluetooth */
-&uart8 {
-       pinctrl-names = "default";
-       pinctrl-0 = <&pinctrl_uart8>;
-       uart-has-rtscts;
-       status = "okay";
-};
-
-/* eMMC */
-&usdhc1 {
-       pinctrl-names = "default";
-       pinctrl-0 = <&pinctrl_usdhc1>;
-       bus-width = <8>;
-       no-1-8-v;
-       non-removable;
-       status = "okay";
-};
-
-/* WiFi */
-&usdhc2 {
-       pinctrl-names = "default";
-       pinctrl-0 = <&pinctrl_usdhc2>;
-       bus-width = <4>;
-       no-1-8-v;
-       non-removable;
-       mmc-pwrseq = <&usdhc3_pwrseq>;
-       status = "okay";
-
-       #address-cells = <1>;
-       #size-cells = <0>;
-
-       brcmf: wifi@1 {
-               compatible = "brcm,bcm4329-fmac";
-               reg = <1>;
-               interrupt-parent = <&gpio2>;
-               interrupts = <8 IRQ_TYPE_LEVEL_LOW>;
-               interrupt-names = "host-wake";
-       };
-};
-
-&iomuxc {
-       pinctrl_enet1: enet1grp {
-               fsl,pins = <
-                       MX6UL_PAD_GPIO1_IO06__ENET1_MDIO        0x1b0b0
-                       MX6UL_PAD_GPIO1_IO07__ENET1_MDC         0x1b0b0
-                       MX6UL_PAD_ENET1_RX_ER__ENET1_RX_ER      0x130b0
-                       MX6UL_PAD_ENET1_RX_EN__ENET1_RX_EN      0x130b0
-                       MX6UL_PAD_ENET1_RX_DATA1__ENET1_RDATA01 0x130b0
-                       MX6UL_PAD_ENET1_RX_DATA0__ENET1_RDATA00 0x130b0
-                       MX6UL_PAD_ENET1_TX_DATA0__ENET1_TDATA00 0x1b0b0
-                       MX6UL_PAD_ENET1_TX_DATA1__ENET1_TDATA01 0x1b0b0
-                       MX6UL_PAD_ENET1_TX_EN__ENET1_TX_EN      0x1b0b0
-                       /* INT# */
-                       MX6UL_PAD_NAND_DQS__GPIO4_IO16          0x1b0b0
-                       /* RST# */
-                       MX6UL_PAD_NAND_DATA00__GPIO4_IO02       0x130b0
-                       MX6UL_PAD_ENET1_TX_CLK__ENET1_REF_CLK1  0x4001b031
-               >;
-       };
-
-       pinctrl_uart8: uart8grp {
-               fsl,pins = <
-                       MX6UL_PAD_ENET2_TX_EN__UART8_DCE_RX     0x1b0b0
-                       MX6UL_PAD_ENET2_TX_DATA1__UART8_DCE_TX  0x1b0b0
-                       MX6UL_PAD_ENET2_RX_ER__UART8_DCE_RTS    0x1b0b0
-                       MX6UL_PAD_ENET2_TX_CLK__UART8_DCE_CTS   0x1b0b0
-                       /* BT_REG_ON */
-                       MX6UL_PAD_ENET2_RX_EN__GPIO2_IO10       0x130b0
-               >;
-       };
-
-       pinctrl_usdhc1: usdhc1grp {
-               fsl,pins = <
-                       MX6UL_PAD_SD1_CMD__USDHC1_CMD           0x17059
-                       MX6UL_PAD_SD1_CLK__USDHC1_CLK           0x10059
-                       MX6UL_PAD_SD1_DATA0__USDHC1_DATA0       0x17059
-                       MX6UL_PAD_SD1_DATA1__USDHC1_DATA1       0x17059
-                       MX6UL_PAD_SD1_DATA2__USDHC1_DATA2       0x17059
-                       MX6UL_PAD_SD1_DATA3__USDHC1_DATA3       0x17059
-                       MX6UL_PAD_NAND_READY_B__USDHC1_DATA4    0x17059
-                       MX6UL_PAD_NAND_CE0_B__USDHC1_DATA5      0x17059
-                       MX6UL_PAD_NAND_CE1_B__USDHC1_DATA6      0x17059
-                       MX6UL_PAD_NAND_CLE__USDHC1_DATA7        0x17059
-               >;
-       };
-
-       pinctrl_usdhc2: usdhc2grp {
-               fsl,pins = <
-                       MX6UL_PAD_LCD_DATA18__USDHC2_CMD        0x1b0b0
-                       MX6UL_PAD_LCD_DATA19__USDHC2_CLK        0x100b0
-                       MX6UL_PAD_LCD_DATA20__USDHC2_DATA0      0x1b0b0
-                       MX6UL_PAD_LCD_DATA21__USDHC2_DATA1      0x1b0b0
-                       MX6UL_PAD_LCD_DATA22__USDHC2_DATA2      0x1b0b0
-                       MX6UL_PAD_LCD_DATA23__USDHC2_DATA3      0x1b0b0
-                       /* WL_REG_ON */
-                       MX6UL_PAD_ENET2_RX_DATA1__GPIO2_IO09    0x130b0
-                       /* WL_IRQ */
-                       MX6UL_PAD_ENET2_RX_DATA0__GPIO2_IO08    0x1b0b0
-               >;
-       };
-};
+#include "imx6ul-imx6ull-opos6ul.dtsi"
index 8ecdb9a..375b98d 100644 (file)
-/*
- * Copyright 2017 Armadeus Systems <support@armadeus.com>
- *
- * 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.
- */
+// SPDX-License-Identifier: GPL-2.0 OR MIT
+//
+// Copyright 2017 Armadeus Systems <support@armadeus.com>
 
 /dts-v1/;
 #include "imx6ul-opos6ul.dtsi"
+#include "imx6ul-imx6ull-opos6uldev.dtsi"
 
 / {
-       model = "Armadeus Systems OPOS6UL SoM on OPOS6ULDev board";
-       compatible = "armadeus,opos6uldev", "armadeus,opos6ul", "fsl,imx6ul";
-
-       chosen {
-               stdout-path = &uart1;
-       };
-
-       backlight: backlight {
-               compatible = "pwm-backlight";
-               pwms = <&pwm3 0 191000>;
-               brightness-levels = <0 4 8 16 32 64 128 255>;
-               default-brightness-level = <7>;
-               power-supply = <&reg_5v>;
-               status = "okay";
-       };
-
-       gpio-keys {
-               compatible = "gpio-keys";
-               pinctrl-names = "default";
-               pinctrl-0 = <&pinctrl_gpio_keys>;
-
-               user-button {
-                       label = "User button";
-                       gpios = <&gpio2 11 GPIO_ACTIVE_LOW>;
-                       linux,code = <BTN_MISC>;
-                       wakeup-source;
-               };
-       };
-
-       leds {
-               compatible = "gpio-leds";
-
-               user-led {
-                       label = "User";
-                       pinctrl-names = "default";
-                       pinctrl-0 = <&pinctrl_led>;
-                       gpios = <&gpio3 4 GPIO_ACTIVE_HIGH>;
-                       linux,default-trigger = "heartbeat";
-               };
-       };
-
-       onewire {
-               compatible = "w1-gpio";
-               pinctrl-names = "default";
-               pinctrl-0 = <&pinctrl_w1>;
-               gpios = <&gpio5 1 GPIO_ACTIVE_HIGH>;
-       };
-
-       panel: panel {
-               compatible = "armadeus,st0700-adapt";
-               power-supply = <&reg_3v3>;
-               backlight = <&backlight>;
-
-               port {
-                       panel_in: endpoint {
-                               remote-endpoint = <&lcdif_out>;
-                       };
-               };
-       };
-
-       reg_5v: regulator-5v {
-               compatible = "regulator-fixed";
-               regulator-name = "5V";
-               regulator-min-microvolt = <5000000>;
-               regulator-max-microvolt = <5000000>;
-       };
-
-       reg_usbotg1_vbus: regulator-usbotg1vbus {
-               compatible = "regulator-fixed";
-               regulator-name = "usbotg1vbus";
-               regulator-min-microvolt = <5000000>;
-               regulator-max-microvolt = <5000000>;
-               pinctrl-names = "default";
-               pinctrl-0 = <&pinctrl_usbotg1_vbus>;
-               gpio = <&gpio1 5 GPIO_ACTIVE_HIGH>;
-               enable-active-high;
-       };
-
-       reg_usbotg2_vbus: regulator-usbotg2vbus {
-               compatible = "regulator-fixed";
-               regulator-name = "usbotg2vbus";
-               regulator-min-microvolt = <5000000>;
-               regulator-max-microvolt = <5000000>;
-               pinctrl-names = "default";
-               pinctrl-0 = <&pinctrl_usbotg2_vbus>;
-               gpio = <&gpio5 9 GPIO_ACTIVE_HIGH>;
-               enable-active-high;
-       };
-};
-
-&adc1 {
-       vref-supply = <&reg_3v3>;
-       status = "okay";
-};
-
-&can1 {
-       pinctrl-names = "default";
-       pinctrl-0 = <&pinctrl_flexcan1>;
-       xceiver-supply = <&reg_5v>;
-       status = "okay";
-};
-
-&can2 {
-       pinctrl-names = "default";
-       pinctrl-0 = <&pinctrl_flexcan2>;
-       xceiver-supply = <&reg_5v>;
-       status = "okay";
-};
-
-&ecspi4 {
-       pinctrl-names = "default";
-       pinctrl-0 = <&pinctrl_ecspi4>;
-       cs-gpios = <&gpio4 9 GPIO_ACTIVE_LOW>, <&gpio4 3 GPIO_ACTIVE_LOW>;
-       status = "okay";
-
-       spidev0: spi@0 {
-               compatible = "spidev";
-               reg = <0>;
-               spi-max-frequency = <5000000>;
-       };
-
-       spidev1: spi@1 {
-               compatible = "spidev";
-               reg = <1>;
-               spi-max-frequency = <5000000>;
-       };
-};
-
-&i2c1 {
-       pinctrl-names = "default";
-       pinctrl-0 = <&pinctrl_i2c1>;
-       clock_frequency = <400000>;
-       status = "okay";
-};
-
-&i2c2 {
-       pinctrl-names = "default";
-       pinctrl-0 = <&pinctrl_i2c2>;
-       clock_frequency = <400000>;
-       status = "okay";
-};
-
-&lcdif {
-       pinctrl-names = "default";
-       pinctrl-0 = <&pinctrl_lcdif>;
-       status = "okay";
-
-       port {
-               lcdif_out: endpoint {
-                       remote-endpoint = <&panel_in>;
-               };
-       };
-};
-
-&pwm3 {
-       pinctrl-names = "default";
-       pinctrl-0 = <&pinctrl_pwm3>;
-       status = "okay";
-};
-
-&snvs_pwrkey {
-       status = "disabled";
-};
-
-&tsc {
-       pinctrl-names = "default";
-       pinctrl-0 = <&pinctrl_tsc>;
-       xnur-gpio = <&gpio1 3 GPIO_ACTIVE_LOW>;
-       measure-delay-time = <0xffff>;
-       pre-charge-time = <0xffff>;
-       status = "okay";
-};
-
-&uart1 {
-       pinctrl-names = "default";
-       pinctrl-0 = <&pinctrl_uart1>;
-       status = "okay";
-};
-
-&uart2 {
-       pinctrl-names = "default";
-       pinctrl-0 = <&pinctrl_uart2>;
-       status = "okay";
-};
-
-&usbotg1 {
-       pinctrl-names = "default";
-       pinctrl-0 = <&pinctrl_usbotg1_id>;
-       vbus-supply = <&reg_usbotg1_vbus>;
-       dr_mode = "otg";
-       disable-over-current;
-       status = "okay";
-};
-
-&usbotg2 {
-       vbus-supply = <&reg_usbotg2_vbus>;
-       dr_mode = "host";
-       disable-over-current;
-       status = "okay";
+       model = "Armadeus Systems OPOS6UL SoM (i.MX6UL) on OPOS6ULDev board";
+       compatible = "armadeus,imx6ul-opos6uldev", "armadeus,imx6ul-opos6ul", "fsl,imx6ul";
 };
 
 &iomuxc {
-       pinctrl-names = "default";
-       pinctrl-0 = <&pinctrl_gpios>;
+       pinctrl-0 = <&pinctrl_gpios>, <&pinctrl_tamper_gpios>;
 
-       pinctrl_ecspi4: ecspi4grp {
+       pinctrl_tamper_gpios: tampergpiosgrp {
                fsl,pins = <
-                       MX6UL_PAD_NAND_DATA04__ECSPI4_SCLK      0x1b0b0
-                       MX6UL_PAD_NAND_DATA05__ECSPI4_MOSI      0x1b0b0
-                       MX6UL_PAD_NAND_DATA06__ECSPI4_MISO      0x1b0b0
-                       MX6UL_PAD_NAND_DATA01__GPIO4_IO03       0x1b0b0
-                       MX6UL_PAD_NAND_DATA07__GPIO4_IO09       0x1b0b0
-               >;
-       };
-
-       pinctrl_flexcan1: flexcan1grp {
-               fsl,pins = <
-                       MX6UL_PAD_UART3_CTS_B__FLEXCAN1_TX      0x0b0b0
-                       MX6UL_PAD_UART3_RTS_B__FLEXCAN1_RX      0x0b0b0
-               >;
-       };
-
-       pinctrl_flexcan2: flexcan2grp {
-               fsl,pins = <
-                       MX6UL_PAD_UART2_CTS_B__FLEXCAN2_TX      0x0b0b0
-                       MX6UL_PAD_UART2_RTS_B__FLEXCAN2_RX      0x0b0b0
-               >;
-       };
-
-       pinctrl_gpios: gpiosgrp {
-               fsl,pins = <
-                       MX6UL_PAD_GPIO1_IO09__GPIO1_IO09        0x0b0b0
-                       MX6UL_PAD_UART3_RX_DATA__GPIO1_IO25     0x0b0b0
-                       MX6UL_PAD_UART3_TX_DATA__GPIO1_IO24     0x0b0b0
-                       MX6UL_PAD_NAND_RE_B__GPIO4_IO00         0x0b0b0
-                       MX6UL_PAD_GPIO1_IO08__GPIO1_IO08        0x0b0b0
-                       MX6UL_PAD_UART1_CTS_B__GPIO1_IO18       0x0b0b0
-                       MX6UL_PAD_UART1_RTS_B__GPIO1_IO19       0x0b0b0
-                       MX6UL_PAD_NAND_WE_B__GPIO4_IO01         0x0b0b0
                        MX6UL_PAD_SNVS_TAMPER0__GPIO5_IO00      0x0b0b0
                        MX6UL_PAD_SNVS_TAMPER2__GPIO5_IO02      0x0b0b0
                        MX6UL_PAD_SNVS_TAMPER3__GPIO5_IO03      0x0b0b0
                >;
        };
 
-       pinctrl_gpio_keys: gpiokeysgrp {
-               fsl,pins = <
-                       MX6UL_PAD_ENET2_TX_DATA0__GPIO2_IO11    0x0b0b0
-               >;
-       };
-
-       pinctrl_i2c1: i2c1grp {
-               fsl,pins = <
-                       MX6UL_PAD_UART4_RX_DATA__I2C1_SDA       0x4001b8b0
-                       MX6UL_PAD_UART4_TX_DATA__I2C1_SCL       0x4001b8b0
-               >;
-       };
-
-       pinctrl_i2c2: i2c2grp {
-               fsl,pins = <
-                       MX6UL_PAD_UART5_RX_DATA__I2C2_SDA       0x4001b8b0
-                       MX6UL_PAD_UART5_TX_DATA__I2C2_SCL       0x4001b8b0
-               >;
-       };
-
-       pinctrl_lcdif: lcdifgrp {
-               fsl,pins = <
-                       MX6UL_PAD_LCD_CLK__LCDIF_CLK        0x100b1
-                       MX6UL_PAD_LCD_ENABLE__LCDIF_ENABLE  0x100b1
-                       MX6UL_PAD_LCD_HSYNC__LCDIF_HSYNC    0x100b1
-                       MX6UL_PAD_LCD_VSYNC__LCDIF_VSYNC    0x100b1
-                       MX6UL_PAD_LCD_DATA00__LCDIF_DATA00  0x100b1
-                       MX6UL_PAD_LCD_DATA01__LCDIF_DATA01  0x100b1
-                       MX6UL_PAD_LCD_DATA02__LCDIF_DATA02  0x100b1
-                       MX6UL_PAD_LCD_DATA03__LCDIF_DATA03  0x100b1
-                       MX6UL_PAD_LCD_DATA04__LCDIF_DATA04  0x100b1
-                       MX6UL_PAD_LCD_DATA05__LCDIF_DATA05  0x100b1
-                       MX6UL_PAD_LCD_DATA06__LCDIF_DATA06  0x100b1
-                       MX6UL_PAD_LCD_DATA07__LCDIF_DATA07  0x100b1
-                       MX6UL_PAD_LCD_DATA08__LCDIF_DATA08  0x100b1
-                       MX6UL_PAD_LCD_DATA09__LCDIF_DATA09  0x100b1
-                       MX6UL_PAD_LCD_DATA10__LCDIF_DATA10  0x100b1
-                       MX6UL_PAD_LCD_DATA11__LCDIF_DATA11  0x100b1
-                       MX6UL_PAD_LCD_DATA12__LCDIF_DATA12  0x100b1
-                       MX6UL_PAD_LCD_DATA13__LCDIF_DATA13  0x100b1
-                       MX6UL_PAD_LCD_DATA14__LCDIF_DATA14  0x100b1
-                       MX6UL_PAD_LCD_DATA15__LCDIF_DATA15  0x100b1
-                       MX6UL_PAD_LCD_DATA16__LCDIF_DATA16  0x100b1
-                       MX6UL_PAD_LCD_DATA17__LCDIF_DATA17  0x100b1
-               >;
-       };
-
-       pinctrl_led: ledgrp {
-               fsl,pins = <
-                       MX6UL_PAD_LCD_RESET__GPIO3_IO04         0x0b0b0
-               >;
-       };
-
-       pinctrl_pwm3: pwm3grp {
-               fsl,pins = <
-                       MX6UL_PAD_NAND_ALE__PWM3_OUT            0x1b0b0
-               >;
-       };
-
-       pinctrl_tsc: tscgrp {
-               fsl,pins = <
-                       MX6UL_PAD_GPIO1_IO01__GPIO1_IO01       0xb0
-                       MX6UL_PAD_GPIO1_IO02__GPIO1_IO02       0xb0
-                       MX6UL_PAD_GPIO1_IO03__GPIO1_IO03       0xb0
-                       MX6UL_PAD_GPIO1_IO04__GPIO1_IO04       0xb0
-               >;
-       };
-
-       pinctrl_uart1: uart1grp {
-               fsl,pins = <
-                       MX6UL_PAD_UART1_TX_DATA__UART1_DCE_TX   0x1b0b1
-                       MX6UL_PAD_UART1_RX_DATA__UART1_DCE_RX   0x1b0b1
-               >;
-       };
-
-       pinctrl_uart2: uart2grp {
-               fsl,pins = <
-                       MX6UL_PAD_UART2_TX_DATA__UART2_DCE_TX   0x1b0b1
-                       MX6UL_PAD_UART2_RX_DATA__UART2_DCE_RX   0x1b0b1
-               >;
-       };
-
-       pinctrl_usbotg1_id: usbotg1idgrp {
-               fsl,pins = <
-                       MX6UL_PAD_GPIO1_IO00__ANATOP_OTG1_ID    0x1b0b0
-               >;
-       };
-
-       pinctrl_usbotg1_vbus: usbotg1vbusgrp {
-               fsl,pins = <
-                       MX6UL_PAD_GPIO1_IO05__GPIO1_IO05        0x1b0b0
-               >;
-       };
-
        pinctrl_usbotg2_vbus: usbotg2vbusgrp {
                fsl,pins = <
                        MX6UL_PAD_SNVS_TAMPER9__GPIO5_IO09      0x1b0b0
index 41f3b7f..88f631c 100644 (file)
@@ -20,7 +20,7 @@
         * Set the minimum memory size here and
         * let the bootloader set the real size.
         */
-       memory {
+       memory@80000000 {
                device_type = "memory";
                reg = <0x80000000 0x8000000>;
        };
index f008036..d9fdca1 100644 (file)
 
                        anatop: anatop@20c8000 {
                                compatible = "fsl,imx6ul-anatop", "fsl,imx6q-anatop",
-                                            "syscon", "simple-bus";
+                                            "syscon", "simple-mfd";
                                reg = <0x020c8000 0x1000>;
                                interrupts = <GIC_SPI 49 IRQ_TYPE_LEVEL_HIGH>,
                                             <GIC_SPI 54 IRQ_TYPE_LEVEL_HIGH>,
                                clocks = <&clks IMX6UL_CLK_GPT2_BUS>,
                                         <&clks IMX6UL_CLK_GPT2_SERIAL>;
                                clock-names = "ipg", "per";
+                               status = "disabled";
                        };
 
                        sdma: sdma@20ec000 {
index b6147c7..a78849f 100644 (file)
@@ -8,6 +8,20 @@
                stdout-path = "serial0:115200n8";
        };
 
+       gpio-keys {
+               compatible = "gpio-keys";
+               pinctrl-names = "default";
+               pinctrl-0 = <&pinctrl_snvs_gpiokeys>;
+
+               power {
+                       label = "Wake-Up";
+                       gpios = <&gpio5 1 GPIO_ACTIVE_HIGH>;
+                       linux,code = <KEY_WAKEUP>;
+                       debounce-interval = <10>;
+                       wakeup-source;
+               };
+       };
+
        /* fixed crystal dedicated to mcp2515 */
        clk16m: clk16m {
                compatible = "fixed-clock";
index fb213be..95a11b8 100644 (file)
@@ -15,7 +15,7 @@
 &iomuxc {
        pinctrl-names = "default";
        pinctrl-0 = <&pinctrl_gpio1 &pinctrl_gpio2 &pinctrl_gpio3
-               &pinctrl_gpio4 &pinctrl_gpio5 &pinctrl_gpio6>;
+               &pinctrl_gpio4 &pinctrl_gpio5 &pinctrl_gpio6 &pinctrl_gpio7>;
 };
 
 &iomuxc_snvs {
index 038d8c9..a054543 100644 (file)
@@ -26,7 +26,7 @@
 &iomuxc {
        pinctrl-names = "default";
        pinctrl-0 = <&pinctrl_gpio1 &pinctrl_gpio2 &pinctrl_gpio3
-               &pinctrl_gpio4 &pinctrl_gpio5>;
+               &pinctrl_gpio4 &pinctrl_gpio5 &pinctrl_gpio7>;
 
 };
 
index d56728f..6d850d9 100644 (file)
        vref-supply = <&reg_module_3v3_avdd>;
 };
 
+&can1 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_flexcan1>;
+       status = "disabled";
+};
+
+&can2 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_flexcan2>;
+       status = "disabled";
+};
+
 /* Colibri SPI */
 &ecspi1 {
        cs-gpios = <&gpio3 26 GPIO_ACTIVE_HIGH>;
@@ -62,8 +74,9 @@
 };
 
 &fec2 {
-       pinctrl-names = "default";
+       pinctrl-names = "default", "sleep";
        pinctrl-0 = <&pinctrl_enet2>;
+       pinctrl-1 = <&pinctrl_enet2_sleep>;
        phy-mode = "rmii";
        phy-handle = <&ethphy1>;
        status = "okay";
        assigned-clock-rates = <0>, <198000000>;
 };
 
+&wdog1 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_wdog>;
+       fsl,ext-reset-output;
+};
+
 &iomuxc {
        pinctrl_can_int: canint-grp {
                fsl,pins = <
                >;
        };
 
+       pinctrl_enet2_sleep: enet2sleepgrp {
+               fsl,pins = <
+                       MX6UL_PAD_GPIO1_IO06__GPIO1_IO06        0x0
+                       MX6UL_PAD_GPIO1_IO07__GPIO1_IO07        0x0
+                       MX6UL_PAD_ENET2_RX_DATA0__GPIO2_IO08    0x0
+                       MX6UL_PAD_ENET2_RX_DATA1__GPIO2_IO09    0x0
+                       MX6UL_PAD_ENET2_RX_EN__GPIO2_IO10       0x0
+                       MX6UL_PAD_ENET2_RX_ER__GPIO2_IO15       0x0
+                       MX6UL_PAD_ENET2_TX_CLK__ENET2_REF_CLK2  0x4001b031
+                       MX6UL_PAD_ENET2_TX_DATA0__GPIO2_IO11    0x0
+                       MX6UL_PAD_ENET2_TX_DATA1__GPIO2_IO12    0x0
+                       MX6UL_PAD_ENET2_TX_EN__GPIO2_IO13       0x0
+               >;
+       };
+
        pinctrl_ecspi1_cs: ecspi1-cs-grp {
                fsl,pins = <
                        MX6UL_PAD_LCD_DATA21__GPIO3_IO26        0x000a0
                >;
        };
 
+       pinctrl_flexcan1: flexcan1-grp {
+               fsl,pins = <
+                       MX6UL_PAD_ENET1_RX_DATA0__FLEXCAN1_TX   0x1b020
+                       MX6UL_PAD_ENET1_RX_DATA1__FLEXCAN1_RX   0x1b020
+               >;
+       };
+
        pinctrl_flexcan2: flexcan2-grp {
                fsl,pins = <
                        MX6UL_PAD_ENET1_TX_DATA0__FLEXCAN2_RX   0x1b020
 
        pinctrl_gpio1: gpio1-grp {
                fsl,pins = <
-                       MX6UL_PAD_ENET1_RX_DATA0__GPIO2_IO00    0x74 /* SODIMM 55 */
-                       MX6UL_PAD_ENET1_RX_DATA1__GPIO2_IO01    0x74 /* SODIMM 63 */
                        MX6UL_PAD_UART3_RX_DATA__GPIO1_IO25     0X14 /* SODIMM 77 */
                        MX6UL_PAD_JTAG_TCK__GPIO1_IO14          0x14 /* SODIMM 99 */
                        MX6UL_PAD_NAND_CE1_B__GPIO4_IO14        0x14 /* SODIMM 133 */
                >;
        };
 
+       pinctrl_gpio7: gpio7-grp { /* CAN1 */
+               fsl,pins = <
+                       MX6UL_PAD_ENET1_RX_DATA0__GPIO2_IO00    0x74 /* SODIMM 55 */
+                       MX6UL_PAD_ENET1_RX_DATA1__GPIO2_IO01    0x74 /* SODIMM 63 */
+               >;
+       };
+
        pinctrl_gpmi_nand: gpmi-nand-grp {
                fsl,pins = <
                        MX6UL_PAD_NAND_DATA00__RAWNAND_DATA00   0x100a9
                        MX6UL_PAD_GPIO1_IO03__OSC32K_32K_OUT    0x14
                >;
        };
+
+       pinctrl_wdog: wdog-grp {
+               fsl,pins = <
+                       MX6UL_PAD_LCD_RESET__WDOG1_WDOG_ANY    0x30b0
+               >;
+       };
 };
 
 &iomuxc_snvs {
 
        pinctrl_snvs_ad7879_int: snvs-ad7879-int-grp { /* TOUCH Interrupt */
                fsl,pins = <
-                       MX6ULL_PAD_SNVS_TAMPER7__GPIO5_IO07     0x1b0b0
+                       MX6ULL_PAD_SNVS_TAMPER7__GPIO5_IO07     0x100b0
                >;
        };
 
        pinctrl_snvs_reg_sd: snvs-reg-sd-grp {
                fsl,pins = <
-                       MX6ULL_PAD_SNVS_TAMPER9__GPIO5_IO09     0x4001b8b0
+                       MX6ULL_PAD_SNVS_TAMPER9__GPIO5_IO09     0x400100b0
                >;
        };
 
        pinctrl_snvs_usbc_det: snvs-usbc-det-grp {
                fsl,pins = <
-                       MX6ULL_PAD_SNVS_TAMPER2__GPIO5_IO02     0x1b0b0
+                       MX6ULL_PAD_SNVS_TAMPER2__GPIO5_IO02     0x130b0
                >;
        };
 
diff --git a/arch/arm/boot/dts/imx6ull-kontron-n6411-s.dts b/arch/arm/boot/dts/imx6ull-kontron-n6411-s.dts
new file mode 100644 (file)
index 0000000..57588a5
--- /dev/null
@@ -0,0 +1,16 @@
+// SPDX-License-Identifier: GPL-2.0
+/*
+ * Copyright (C) 2017 exceet electronics GmbH
+ * Copyright (C) 2019 Kontron Electronics GmbH
+ */
+
+/dts-v1/;
+
+#include "imx6ull-kontron-n6411-som.dtsi"
+#include "imx6ul-kontron-n6x1x-s.dtsi"
+
+/ {
+       model = "Kontron N6411 S";
+       compatible = "kontron,imx6ull-n6411-s", "kontron,imx6ull-n6411-som",
+                    "fsl,imx6ull";
+};
diff --git a/arch/arm/boot/dts/imx6ull-kontron-n6411-som.dtsi b/arch/arm/boot/dts/imx6ull-kontron-n6411-som.dtsi
new file mode 100644 (file)
index 0000000..b7e9842
--- /dev/null
@@ -0,0 +1,40 @@
+// SPDX-License-Identifier: GPL-2.0
+/*
+ * Copyright (C) 2017 exceet electronics GmbH
+ * Copyright (C) 2018 Kontron Electronics GmbH
+ */
+
+#include "imx6ull.dtsi"
+#include "imx6ul-kontron-n6x1x-som-common.dtsi"
+
+/ {
+       model = "Kontron N6411 SOM";
+       compatible = "kontron,imx6ull-n6311-som", "fsl,imx6ull";
+
+       memory@80000000 {
+               reg = <0x80000000 0x20000000>;
+               device_type = "memory";
+       };
+};
+
+&qspi {
+       spi-flash@0 {
+               #address-cells = <1>;
+               #size-cells = <1>;
+               compatible = "spi-nand";
+               spi-max-frequency = <104000000>;
+               spi-tx-bus-width = <4>;
+               spi-rx-bus-width = <4>;
+               reg = <0>;
+
+               partition@0 {
+                       label = "ubi1";
+                       reg = <0x00000000 0x08000000>;
+               };
+
+               partition@8000000 {
+                       label = "ubi2";
+                       reg = <0x08000000 0x18000000>;
+               };
+       };
+};
diff --git a/arch/arm/boot/dts/imx6ull-opos6ul.dtsi b/arch/arm/boot/dts/imx6ull-opos6ul.dtsi
new file mode 100644 (file)
index 0000000..155f941
--- /dev/null
@@ -0,0 +1,6 @@
+// SPDX-License-Identifier: GPL-2.0 OR MIT
+//
+// Copyright 2019 Armadeus Systems <support@armadeus.com>
+
+#include "imx6ull.dtsi"
+#include "imx6ul-imx6ull-opos6ul.dtsi"
diff --git a/arch/arm/boot/dts/imx6ull-opos6uldev.dts b/arch/arm/boot/dts/imx6ull-opos6uldev.dts
new file mode 100644 (file)
index 0000000..198fdb7
--- /dev/null
@@ -0,0 +1,42 @@
+// SPDX-License-Identifier: GPL-2.0 OR MIT
+//
+// Copyright 2019 Armadeus Systems <support@armadeus.com>
+
+/dts-v1/;
+#include "imx6ull-opos6ul.dtsi"
+#include "imx6ul-imx6ull-opos6uldev.dtsi"
+
+/ {
+       model = "Armadeus Systems OPOS6UL SoM (i.MX6ULL) on OPOS6ULDev board";
+       compatible = "armadeus,imx6ull-opos6uldev", "armadeus,imx6ull-opos6ul", "fsl,imx6ull";
+};
+
+&iomuxc_snvs {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_tamper_gpios>;
+
+       pinctrl_tamper_gpios: tampergpiosgrp {
+               fsl,pins = <
+                       MX6ULL_PAD_SNVS_TAMPER0__GPIO5_IO00     0x0b0b0
+                       MX6ULL_PAD_SNVS_TAMPER2__GPIO5_IO02     0x0b0b0
+                       MX6ULL_PAD_SNVS_TAMPER3__GPIO5_IO03     0x0b0b0
+                       MX6ULL_PAD_SNVS_TAMPER4__GPIO5_IO04     0x0b0b0
+                       MX6ULL_PAD_SNVS_TAMPER5__GPIO5_IO05     0x0b0b0
+                       MX6ULL_PAD_SNVS_TAMPER6__GPIO5_IO06     0x0b0b0
+                       MX6ULL_PAD_SNVS_TAMPER7__GPIO5_IO07     0x0b0b0
+                       MX6ULL_PAD_SNVS_TAMPER8__GPIO5_IO08     0x0b0b0
+               >;
+       };
+
+       pinctrl_usbotg2_vbus: usbotg2vbusgrp {
+               fsl,pins = <
+                       MX6ULL_PAD_SNVS_TAMPER9__GPIO5_IO09     0x1b0b0
+               >;
+       };
+
+       pinctrl_w1: w1grp {
+               fsl,pins = <
+                       MX6ULL_PAD_SNVS_TAMPER1__GPIO5_IO01     0x0b0b0
+               >;
+       };
+};
index 3f27461..6aa123c 100644 (file)
                clock-frequency = <16000000>;
        };
 
+       gpio-keys {
+               compatible = "gpio-keys";
+               pinctrl-names = "default";
+               pinctrl-0 = <&pinctrl_gpiokeys>;
+
+               power {
+                       label = "Wake-Up";
+                       gpios = <&gpio1 1 GPIO_ACTIVE_HIGH>;
+                       linux,code = <KEY_WAKEUP>;
+                       debounce-interval = <10>;
+                       wakeup-source;
+               };
+       };
+
        panel: panel {
                compatible = "edt,et057090dhu";
                backlight = <&bl>;
 &i2c4 {
        status = "okay";
 
+       /*
+        * Touchscreen is using SODIMM 28/30, also used for PWM<B>, PWM<C>,
+        * aka pwm2, pwm3. so if you enable touchscreen, disable the pwms
+        */
+       touchscreen@4a {
+               compatible = "atmel,maxtouch";
+               pinctrl-names = "default";
+               pinctrl-0 = <&pinctrl_gpiotouch>;
+               reg = <0x4a>;
+               interrupt-parent = <&gpio1>;
+               interrupts = <9 IRQ_TYPE_EDGE_FALLING>;         /* SODIMM 28 */
+               reset-gpios = <&gpio1 10 GPIO_ACTIVE_HIGH>;     /* SODIMM 30 */
+               status = "disabled";
+       };
+
        /* M41T0M6 real time clock on carrier board */
        rtc: m41t0m6@68 {
                compatible = "st,m41t0";
        vmmc-supply = <&reg_3v3>;
        status = "okay";
 };
+
+&iomuxc {
+       pinctrl_gpiotouch: touchgpios {
+               fsl,pins = <
+                       MX7D_PAD_GPIO1_IO09__GPIO1_IO9          0x74
+                       MX7D_PAD_GPIO1_IO10__GPIO1_IO10         0x14
+               >;
+       };
+};
index 917eb0b..d05be3f 100644 (file)
 &usdhc1 {
        pinctrl-names = "default";
        pinctrl-0 = <&pinctrl_usdhc1 &pinctrl_cd_usdhc1>;
-       no-1-8-v;
        cd-gpios = <&gpio1 0 GPIO_ACTIVE_LOW>;
        disable-wp;
        vqmmc-supply = <&reg_LDO2>;
                >;
        };
 
+       pinctrl_usdhc1_100mhz: usdhc1grp_100mhz {
+               fsl,pins = <
+                       MX7D_PAD_SD1_CMD__SD1_CMD       0x5a
+                       MX7D_PAD_SD1_CLK__SD1_CLK       0x1a
+                       MX7D_PAD_SD1_DATA0__SD1_DATA0   0x5a
+                       MX7D_PAD_SD1_DATA1__SD1_DATA1   0x5a
+                       MX7D_PAD_SD1_DATA2__SD1_DATA2   0x5a
+                       MX7D_PAD_SD1_DATA3__SD1_DATA3   0x5a
+               >;
+       };
+
+       pinctrl_usdhc1_200mhz: usdhc1grp_200mhz {
+               fsl,pins = <
+                       MX7D_PAD_SD1_CMD__SD1_CMD       0x5b
+                       MX7D_PAD_SD1_CLK__SD1_CLK       0x1b
+                       MX7D_PAD_SD1_DATA0__SD1_DATA0   0x5b
+                       MX7D_PAD_SD1_DATA1__SD1_DATA1   0x5b
+                       MX7D_PAD_SD1_DATA2__SD1_DATA2   0x5b
+                       MX7D_PAD_SD1_DATA3__SD1_DATA3   0x5b
+               >;
+       };
+
        pinctrl_usdhc3: usdhc3grp {
                fsl,pins = <
                        MX7D_PAD_SD3_CMD__SD3_CMD               0x59
 
        pinctrl_gpio_lpsr: gpio1-grp {
                fsl,pins = <
-                       MX7D_PAD_LPSR_GPIO1_IO01__GPIO1_IO1     0x59
                        MX7D_PAD_LPSR_GPIO1_IO02__GPIO1_IO2     0x59
                        MX7D_PAD_LPSR_GPIO1_IO03__GPIO1_IO3     0x59
                >;
        };
 
+       pinctrl_gpiokeys: gpiokeysgrp {
+               fsl,pins = <
+                       MX7D_PAD_LPSR_GPIO1_IO01__GPIO1_IO1     0x19
+               >;
+       };
+
        pinctrl_i2c1: i2c1-grp {
                fsl,pins = <
                        MX7D_PAD_LPSR_GPIO1_IO05__I2C1_SDA      0x4000007f
index 9c8dd32..d8acd7c 100644 (file)
@@ -22,6 +22,7 @@
                        reg = <1>;
                        clock-frequency = <996000000>;
                        operating-points-v2 = <&cpu0_opp_table>;
+                       #cooling-cells = <2>;
                        cpu-idle-states = <&cpu_sleep_wait>;
                };
        };
@@ -43,7 +44,8 @@
                        opp-hz = /bits/ 64 <792000000>;
                        opp-microvolt = <1000000>;
                        clock-latency-ns = <150000>;
-                       opp-supported-hw = <0xf>, <0xf>;
+                       opp-supported-hw = <0xd>, <0xf>;
+                       opp-suspend;
                };
 
                opp-996000000 {
@@ -51,6 +53,7 @@
                        opp-microvolt = <1100000>;
                        clock-latency-ns = <150000>;
                        opp-supported-hw = <0xc>, <0xf>;
+                       opp-suspend;
                };
 
                opp-1200000000 {
@@ -58,6 +61,7 @@
                        opp-microvolt = <1225000>;
                        clock-latency-ns = <150000>;
                        opp-supported-hw = <0x8>, <0xf>;
+                       opp-suspend;
                };
        };
 
index e2e604d..1b812f4 100644 (file)
 
                        anatop: anatop@30360000 {
                                compatible = "fsl,imx7d-anatop", "fsl,imx6q-anatop",
-                                       "syscon", "simple-bus";
+                                       "syscon", "simple-mfd";
                                reg = <0x30360000 0x10000>;
                                interrupts = <GIC_SPI 49 IRQ_TYPE_LEVEL_HIGH>,
                                        <GIC_SPI 51 IRQ_TYPE_LEVEL_HIGH>;
index 4245b33..a863a2b 100644 (file)
@@ -77,6 +77,8 @@
 };
 
 &usdhc0 {
+       assigned-clocks = <&pcc2 IMX7ULP_CLK_USDHC0>;
+       assigned-clock-parents = <&scg1 IMX7ULP_CLK_APLL_PFD1>;
        pinctrl-names = "default";
        pinctrl-0 = <&pinctrl_usdhc0>;
        cd-gpios = <&gpio_ptc 10 GPIO_ACTIVE_LOW>;
index 6859a3a..d37a192 100644 (file)
                #clock-cells = <0>;
        };
 
-       mpll: clock-mpll {
-               compatible = "fixed-clock";
-               clock-frequency = <480000000>;
-               clock-output-names = "mpll";
-               #clock-cells = <0>;
-       };
-
        ahbbridge0: bus@40000000 {
                compatible = "simple-bus";
                #address-cells = <1>;
                                 <&scg1 IMX7ULP_CLK_NIC1_DIV>,
                                 <&pcc2 IMX7ULP_CLK_USDHC0>;
                        clock-names = "ipg", "ahb", "per";
-                       assigned-clocks = <&pcc2 IMX7ULP_CLK_USDHC0>;
-                       assigned-clock-parents = <&scg1 IMX7ULP_CLK_NIC1_DIV>;
                        bus-width = <4>;
                        fsl,tuning-start-tap = <20>;
                        fsl,tuning-step = <2>;
                                 <&scg1 IMX7ULP_CLK_NIC1_DIV>,
                                 <&pcc2 IMX7ULP_CLK_USDHC1>;
                        clock-names = "ipg", "ahb", "per";
-                       assigned-clocks = <&pcc2 IMX7ULP_CLK_USDHC1>;
-                       assigned-clock-parents = <&scg1 IMX7ULP_CLK_NIC1_DIV>;
                        bus-width = <4>;
                        fsl,tuning-start-tap = <20>;
                        fsl,tuning-step = <2>;
                        compatible = "fsl,imx7ulp-scg1";
                        reg = <0x403e0000 0x10000>;
                        clocks = <&rosc>, <&sosc>, <&sirc>,
-                                <&firc>, <&upll>, <&mpll>;
+                                <&firc>, <&upll>;
                        clock-names = "rosc", "sosc", "sirc",
-                                     "firc", "upll", "mpll";
+                                     "firc", "upll";
                        #clock-cells = <1>;
                };
 
+               wdog1: watchdog@403d0000 {
+                       compatible = "fsl,imx7ulp-wdt";
+                       reg = <0x403d0000 0x10000>;
+                       interrupts = <GIC_SPI 55 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&pcc2 IMX7ULP_CLK_WDG1>;
+                       assigned-clocks = <&pcc2 IMX7ULP_CLK_WDG1>;
+                       assigned-clocks-parents = <&scg1 IMX7ULP_CLK_FIRC_BUS_CLK>;
+                       timeout-sec = <40>;
+               };
+
                pcc2: clock-controller@403f0000 {
                        compatible = "fsl,imx7ulp-pcc2";
                        reg = <0x403f0000 0x10000>;
                                 <&scg1 IMX7ULP_CLK_APLL_PFD0>,
                                 <&scg1 IMX7ULP_CLK_UPLL>,
                                 <&scg1 IMX7ULP_CLK_SOSC_BUS_CLK>,
-                                <&scg1 IMX7ULP_CLK_MIPI_PLL>,
                                 <&scg1 IMX7ULP_CLK_FIRC_BUS_CLK>,
                                 <&scg1 IMX7ULP_CLK_ROSC>,
                                 <&scg1 IMX7ULP_CLK_SPLL_BUS_CLK>;
                        clock-names = "nic1_bus_clk", "nic1_clk", "ddr_clk",
                                      "apll_pfd2", "apll_pfd1", "apll_pfd0",
-                                     "upll", "sosc_bus_clk", "mpll",
+                                     "upll", "sosc_bus_clk",
                                      "firc_bus_clk", "rosc", "spll_bus_clk";
                        assigned-clocks = <&pcc2 IMX7ULP_CLK_LPTPM5>;
                        assigned-clock-parents = <&scg1 IMX7ULP_CLK_SOSC_BUS_CLK>;
                                 <&scg1 IMX7ULP_CLK_APLL_PFD0>,
                                 <&scg1 IMX7ULP_CLK_UPLL>,
                                 <&scg1 IMX7ULP_CLK_SOSC_BUS_CLK>,
-                                <&scg1 IMX7ULP_CLK_MIPI_PLL>,
                                 <&scg1 IMX7ULP_CLK_FIRC_BUS_CLK>,
                                 <&scg1 IMX7ULP_CLK_ROSC>,
                                 <&scg1 IMX7ULP_CLK_SPLL_BUS_CLK>;
                        clock-names = "nic1_bus_clk", "nic1_clk", "ddr_clk",
                                      "apll_pfd2", "apll_pfd1", "apll_pfd0",
-                                     "upll", "sosc_bus_clk", "mpll",
+                                     "upll", "sosc_bus_clk",
                                      "firc_bus_clk", "rosc", "spll_bus_clk";
                };
        };
index 457515b..0397c34 100644 (file)
@@ -408,4 +408,31 @@ clocks {
                reg-names = "control", "domain";
                domain-id = <0>;
        };
+
+       /*
+        * Below are set of fixed, input clocks definitions,
+        * for which real frequencies have to be defined in board files.
+        * Those clocks can be used as reference clocks for some HW modules
+        * (as cpts, for example) by configuring corresponding clock muxes.
+        */
+       timi0: timi0 {
+               #clock-cells = <0>;
+               compatible = "fixed-clock";
+               clock-frequency = <0>;
+               clock-output-names = "timi0";
+       };
+
+       timi1: timi1 {
+               #clock-cells = <0>;
+               compatible = "fixed-clock";
+               clock-frequency = <0>;
+               clock-output-names = "timi1";
+       };
+
+       tsrefclk: tsrefclk {
+               #clock-cells = <0>;
+               compatible = "fixed-clock";
+               clock-frequency = <0>;
+               clock-output-names = "tsrefclk";
+       };
 };
index f759215..cf30e00 100644 (file)
@@ -71,4 +71,24 @@ clocks {
                reg-names = "control", "domain";
                domain-id = <29>;
        };
+
+       /*
+        * Below are set of fixed, input clocks definitions,
+        * for which real frequencies have to be defined in board files.
+        * Those clocks can be used as reference clocks for some HW modules
+        * (as cpts, for example) by configuring corresponding clock muxes.
+        */
+       tsipclka: tsipclka {
+               #clock-cells = <0>;
+               compatible = "fixed-clock";
+               clock-frequency = <0>;
+               clock-output-names = "tsipclka";
+       };
+
+       tsipclkb: tsipclkb {
+               #clock-cells = <0>;
+               compatible = "fixed-clock";
+               clock-frequency = <0>;
+               clock-output-names = "tsipclkb";
+       };
 };
index 1db17ec..ad15e77 100644 (file)
@@ -135,8 +135,8 @@ netcp: netcp@24000000 {
        /* NetCP address range */
        ranges = <0 0x24000000 0x1000000>;
 
-       clocks = <&clkpa>, <&clkcpgmac>, <&chipclk12>;
-       clock-names = "pa_clk", "ethss_clk", "cpts";
+       clocks = <&clkpa>, <&clkcpgmac>;
+       clock-names = "pa_clk", "ethss_clk";
        dma-coherent;
 
        ti,navigator-dmas = <&dma_gbe 0>,
@@ -156,6 +156,23 @@ netcp: netcp@24000000 {
                        tx-queue = <896>;
                        tx-channel = "nettx";
 
+                       cpts {
+                               clocks = <&cpts_refclk_mux>;
+                               clock-names = "cpts";
+
+                               cpts_refclk_mux: cpts-refclk-mux {
+                                       #clock-cells = <0>;
+                                       clocks = <&chipclk12>, <&chipclk13>,
+                                                <&timi0>, <&timi1>,
+                                                <&tsipclka>, <&tsrefclk>,
+                                                <&tsipclkb>;
+                                       ti,mux-tbl = <0x0>, <0x1>, <0x2>,
+                                               <0x3>, <0x4>, <0x8>, <0xC>;
+                                       assigned-clocks = <&cpts_refclk_mux>;
+                                       assigned-clock-parents = <&chipclk12>;
+                               };
+                       };
+
                        interfaces {
                                gbe0: interface-0 {
                                        slave-port = <0>;
index e203145..d5a6c1f 100644 (file)
@@ -152,8 +152,8 @@ netcp: netcp@2000000 {
        /* NetCP address range */
        ranges  = <0 0x2000000 0x100000>;
 
-       clocks = <&clkpa>, <&clkcpgmac>, <&chipclk12>;
-       clock-names = "pa_clk", "ethss_clk", "cpts";
+       clocks = <&clkpa>, <&clkcpgmac>;
+       clock-names = "pa_clk", "ethss_clk";
        dma-coherent;
 
        ti,navigator-dmas = <&dma_gbe 22>,
@@ -175,6 +175,22 @@ netcp: netcp@2000000 {
                        tx-queue = <648>;
                        tx-channel = "nettx";
 
+                       cpts {
+                               clocks = <&cpts_refclk_mux>;
+                               clock-names = "cpts";
+
+                               cpts_refclk_mux: cpts-refclk-mux {
+                                       #clock-cells = <0>;
+                                       clocks = <&chipclk12>, <&chipclk13>,
+                                                <&timi0>, <&timi1>,
+                                                <&tsrefclk>;
+                                       ti,mux-tbl = <0x0>, <0x1>, <0x2>,
+                                               <0x3>, <0x8>;
+                                       assigned-clocks = <&cpts_refclk_mux>;
+                                       assigned-clock-parents = <&chipclk12>;
+                               };
+                       };
+
                        interfaces {
                                gbe0: interface-0 {
                                        slave-port = <0>;
index a2e47ba..c1f9826 100644 (file)
@@ -134,8 +134,8 @@ netcp: netcp@26000000 {
        /* NetCP address range */
        ranges = <0 0x26000000 0x1000000>;
 
-       clocks = <&clkpa>, <&clkcpgmac>, <&chipclk12>;
-       clock-names = "pa_clk", "ethss_clk", "cpts";
+       clocks = <&clkpa>, <&clkcpgmac>;
+       clock-names = "pa_clk", "ethss_clk";
        dma-coherent;
 
        ti,navigator-dmas = <&dma_gbe 0>,
@@ -155,6 +155,22 @@ netcp: netcp@26000000 {
                        tx-queue = <896>;
                        tx-channel = "nettx";
 
+                       cpts {
+                               clocks = <&cpts_refclk_mux>;
+                               clock-names = "cpts";
+
+                               cpts_refclk_mux: cpts-refclk-mux {
+                                       #clock-cells = <0>;
+                                       clocks = <&chipclk12>, <&chipclk13>,
+                                                <&timi0>, <&timi1>,
+                                                <&tsrefclk>;
+                                       ti,mux-tbl = <0x0>, <0x1>, <0x2>,
+                                               <0x3>, <0x8>;
+                                       assigned-clocks = <&cpts_refclk_mux>;
+                                       assigned-clock-parents = <&chipclk12>;
+                               };
+                       };
+
                        interfaces {
                                gbe0: interface-0 {
                                        slave-port = <0>;
index c97ed29..217bd37 100644 (file)
 
                        rs5c372: rs5c372@32 {
                                status = "disabled";
-                               compatible = "ricoh,rs5c372";
+                               compatible = "ricoh,rs5c372a";
                                reg = <0x32>;
                        };
 
index 07ac99b..cdb89b3 100644 (file)
 #include "logicpd-torpedo-37xx-devkit.dts"
 
 &lcd0 {
-
-       label = "28";
-
-       panel-timing {
-               clock-frequency = <9000000>;
-               hactive = <480>;
-               vactive = <272>;
-               hfront-porch = <3>;
-               hback-porch = <2>;
-               hsync-len = <42>;
-               vback-porch = <3>;
-               vfront-porch = <2>;
-               vsync-len = <11>;
-               hsync-active = <1>;
-               vsync-active = <1>;
-               de-active = <1>;
-               pixelclk-active = <0>;
-       };
+       /* To make it work, set CONFIG_OMAP2_DSS_MIN_FCK_PER_PCK=4 */
+       compatible = "logicpd,type28";
 };
index 18c27e8..5532db0 100644 (file)
        };
 };
 
+&uart2 {
+       /delete-property/dma-names;
+       bluetooth {
+               compatible = "ti,wl1283-st";
+               enable-gpios = <&gpio6 2 GPIO_ACTIVE_HIGH>; /* gpio 162 */
+               max-speed = <3000000>;
+       };
+};
+
+/* The DM3730 has a faster L3 than OMAP35, so increase pixel clock */
+&mt9p031_out {
+       pixel-clock-frequency = <90000000>;
+};
+
 &omap3_pmx_core {
        mmc3_pins: pinmux_mm3_pins {
                pinctrl-single,pins = <
index 449cc76..184e462 100644 (file)
 &dss {
        status = "ok";
        vdds_dsi-supply = <&vpll2>;
+       vdda_video-supply = <&vpll2>;
        pinctrl-names = "default";
        pinctrl-0 = <&dss_dpi_pins1>;
        port {
index 506b118..3a52285 100644 (file)
        };
 };
 
+/* The Torpedo doesn't route the USB host pins */
+&usbhshost {
+       status = "disabled";
+};
+
 &gpmc {
        ranges = <0 0 0x30000000 0x1000000>;    /* CS0: 16MB for NAND */
 
diff --git a/arch/arm/boot/dts/mmp3-dell-ariel.dts b/arch/arm/boot/dts/mmp3-dell-ariel.dts
new file mode 100644 (file)
index 0000000..c1947b5
--- /dev/null
@@ -0,0 +1,94 @@
+// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
+/*
+ * Dell Wyse 3020 a.k.a. "Ariel" a.k.a. Tx0D (T00D, T10D)
+ *
+ * Copyright (C) 2019 Lubomir Rintel <lkundrak@v3.sk>
+ */
+
+/dts-v1/;
+#include "mmp3.dtsi"
+#include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/interrupt-controller/irq.h>
+
+/ {
+       model = "Dell Ariel";
+       compatible = "dell,wyse-ariel", "marvell,mmp3";
+
+       aliases {
+               serial2 = &uart3;
+       };
+
+       chosen {
+               #address-cells = <0x1>;
+               #size-cells = <0x1>;
+               ranges;
+               bootargs = "earlyprintk=ttyS2,115200 console=ttyS2,115200";
+       };
+
+       memory@0 {
+               linux,usable-memory = <0x0 0x7f600000>;
+               available = <0x7f700000 0x7ff00000 0x00000000 0x7f600000>;
+               reg = <0x0 0x80000000>;
+               device_type = "memory";
+       };
+};
+
+&uart3 {
+       status = "okay";
+};
+
+&rtc {
+       status = "okay";
+};
+
+&usb_otg0 {
+       status = "okay";
+};
+
+&usb_otg_phy0 {
+       status = "okay";
+};
+
+&mmc3 {
+       status = "okay";
+       max-frequency = <50000000>;
+       status = "okay";
+       bus-width = <8>;
+       non-removable;
+       cap-mmc-highspeed;
+};
+
+&twsi1 {
+       status = "okay";
+
+       rtc@68 {
+               compatible = "dallas,ds1338";
+               reg = <0x68>;
+               status = "okay";
+       };
+};
+
+&twsi3 {
+       status = "okay";
+};
+
+&twsi4 {
+       status = "okay";
+};
+
+&ssp3 {
+       status = "okay";
+       cs-gpios = <&gpio 46 GPIO_ACTIVE_HIGH>;
+
+       firmware-flash@0 {
+               compatible = "st,m25p80", "jedec,spi-nor";
+               reg = <0>;
+               spi-max-frequency = <40000000>;
+               m25p,fast-read;
+       };
+};
+
+&ssp4 {
+       cs-gpios = <&gpio 56 GPIO_ACTIVE_HIGH>;
+       status = "okay";
+};
diff --git a/arch/arm/boot/dts/mmp3.dtsi b/arch/arm/boot/dts/mmp3.dtsi
new file mode 100644 (file)
index 0000000..d9762de
--- /dev/null
@@ -0,0 +1,527 @@
+// SPDX-License-Identifier: GPL-2.0+ OR MIT
+/*
+ *  Copyright (C) 2019 Lubomir Rintel <lkundrak@v3.sk>
+ */
+
+#include <dt-bindings/clock/marvell,mmp2.h>
+#include <dt-bindings/interrupt-controller/arm-gic.h>
+
+/ {
+       #address-cells = <1>;
+       #size-cells = <1>;
+
+       cpus {
+               #address-cells = <1>;
+               #size-cells = <0>;
+               enable-method = "marvell,mmp3-smp";
+
+               cpu@0 {
+                       compatible = "marvell,pj4b";
+                       device_type = "cpu";
+                       next-level-cache = <&l2>;
+                       reg = <0>;
+               };
+
+               cpu@1 {
+                       compatible = "marvell,pj4b";
+                       device_type = "cpu";
+                       next-level-cache = <&l2>;
+                       reg = <1>;
+               };
+       };
+
+       soc {
+               #address-cells = <1>;
+               #size-cells = <1>;
+               compatible = "simple-bus";
+               interrupt-parent = <&gic>;
+               ranges;
+
+               axi@d4200000 {
+                       compatible = "simple-bus";
+                       #address-cells = <1>;
+                       #size-cells = <1>;
+                       reg = <0xd4200000 0x00200000>;
+                       ranges;
+
+                       interrupt-controller@d4282000 {
+                               compatible = "marvell,mmp3-intc";
+                               interrupt-controller;
+                               #interrupt-cells = <1>;
+                               reg = <0xd4282000 0x1000>,
+                                     <0xd4284000 0x100>;
+                               mrvl,intc-nr-irqs = <64>;
+                       };
+
+                       pmic_mux: interrupt-controller@d4282150 {
+                               compatible = "mrvl,mmp2-mux-intc";
+                               interrupts = <GIC_SPI 4 IRQ_TYPE_LEVEL_HIGH>;
+                               interrupt-controller;
+                               #interrupt-cells = <1>;
+                               reg = <0x150 0x4>, <0x168 0x4>;
+                               reg-names = "mux status", "mux mask";
+                               mrvl,intc-nr-irqs = <4>;
+                       };
+
+                       rtc_mux: interrupt-controller@d4282154 {
+                               compatible = "mrvl,mmp2-mux-intc";
+                               interrupts = <GIC_SPI 5 IRQ_TYPE_LEVEL_HIGH>;
+                               interrupt-controller;
+                               #interrupt-cells = <1>;
+                               reg = <0x154 0x4>, <0x16c 0x4>;
+                               reg-names = "mux status", "mux mask";
+                               mrvl,intc-nr-irqs = <2>;
+                       };
+
+                       hsi3_mux: interrupt-controller@d42821bc {
+                               compatible = "mrvl,mmp2-mux-intc";
+                               interrupts = <GIC_SPI 6 IRQ_TYPE_LEVEL_HIGH>;
+                               interrupt-controller;
+                               #interrupt-cells = <1>;
+                               reg = <0x1bc 0x4>, <0x1a4 0x4>;
+                               reg-names = "mux status", "mux mask";
+                               mrvl,intc-nr-irqs = <3>;
+                       };
+
+                       gpu_mux: interrupt-controller@d42821c0 {
+                               compatible = "mrvl,mmp2-mux-intc";
+                               interrupts = <GIC_SPI 8 IRQ_TYPE_LEVEL_HIGH>;
+                               interrupt-controller;
+                               #interrupt-cells = <1>;
+                               reg = <0x1c0 0x4>, <0x1a8 0x4>;
+                               reg-names = "mux status", "mux mask";
+                               mrvl,intc-nr-irqs = <3>;
+                       };
+
+                       twsi_mux: interrupt-controller@d4282158 {
+                               compatible = "mrvl,mmp2-mux-intc";
+                               interrupts = <GIC_SPI 17 IRQ_TYPE_LEVEL_HIGH>;
+                               interrupt-controller;
+                               #interrupt-cells = <1>;
+                               reg = <0x158 0x4>, <0x170 0x4>;
+                               reg-names = "mux status", "mux mask";
+                               mrvl,intc-nr-irqs = <5>;
+                       };
+
+                       hsi2_mux: interrupt-controller@d42821c4 {
+                               compatible = "mrvl,mmp2-mux-intc";
+                               interrupts = <GIC_SPI 18 IRQ_TYPE_LEVEL_HIGH>;
+                               interrupt-controller;
+                               #interrupt-cells = <1>;
+                               reg = <0x1c4 0x4>, <0x1ac 0x4>;
+                               reg-names = "mux status", "mux mask";
+                               mrvl,intc-nr-irqs = <2>;
+                       };
+
+                       dxo_mux: interrupt-controller@d42821c8 {
+                               compatible = "mrvl,mmp2-mux-intc";
+                               interrupts = <GIC_SPI 30 IRQ_TYPE_LEVEL_HIGH>;
+                               interrupt-controller;
+                               #interrupt-cells = <1>;
+                               reg = <0x1c8 0x4>, <0x1b0 0x4>;
+                               reg-names = "mux status", "mux mask";
+                               mrvl,intc-nr-irqs = <2>;
+                       };
+
+                       misc1_mux: interrupt-controller@d428215c {
+                               compatible = "mrvl,mmp2-mux-intc";
+                               interrupts = <GIC_SPI 35 IRQ_TYPE_LEVEL_HIGH>;
+                               interrupt-controller;
+                               #interrupt-cells = <1>;
+                               reg = <0x15c 0x4>, <0x174 0x4>;
+                               reg-names = "mux status", "mux mask";
+                               mrvl,intc-nr-irqs = <31>;
+                       };
+
+                       ci_mux: interrupt-controller@d42821cc {
+                               compatible = "mrvl,mmp2-mux-intc";
+                               interrupts = <GIC_SPI 42 IRQ_TYPE_LEVEL_HIGH>;
+                               interrupt-controller;
+                               #interrupt-cells = <1>;
+                               reg = <0x1cc 0x4>, <0x1b4 0x4>;
+                               reg-names = "mux status", "mux mask";
+                               mrvl,intc-nr-irqs = <2>;
+                       };
+
+                       ssp_mux: interrupt-controller@d4282160 {
+                               compatible = "mrvl,mmp2-mux-intc";
+                               interrupts = <GIC_SPI 51 IRQ_TYPE_LEVEL_HIGH>;
+                               interrupt-controller;
+                               #interrupt-cells = <1>;
+                               reg = <0x160 0x4>, <0x178 0x4>;
+                               reg-names = "mux status", "mux mask";
+                               mrvl,intc-nr-irqs = <2>;
+                       };
+
+                       hsi1_mux: interrupt-controller@d4282184 {
+                               compatible = "mrvl,mmp2-mux-intc";
+                               interrupts = <GIC_SPI 55 IRQ_TYPE_LEVEL_HIGH>;
+                               interrupt-controller;
+                               #interrupt-cells = <1>;
+                               reg = <0x184 0x4>, <0x17c 0x4>;
+                               reg-names = "mux status", "mux mask";
+                               mrvl,intc-nr-irqs = <4>;
+                       };
+
+                       misc2_mux: interrupt-controller@d4282188 {
+                               compatible = "mrvl,mmp2-mux-intc";
+                               interrupts = <GIC_SPI 57 IRQ_TYPE_LEVEL_HIGH>;
+                               interrupt-controller;
+                               #interrupt-cells = <1>;
+                               reg = <0x188 0x4>, <0x180 0x4>;
+                               reg-names = "mux status", "mux mask";
+                               mrvl,intc-nr-irqs = <20>;
+                       };
+
+                       hsi0_mux: interrupt-controller@d42821d0 {
+                               compatible = "mrvl,mmp2-mux-intc";
+                               interrupts = <GIC_SPI 58 IRQ_TYPE_LEVEL_HIGH>;
+                               interrupt-controller;
+                               #interrupt-cells = <1>;
+                               reg = <0x1d0 0x4>, <0x1b8 0x4>;
+                               reg-names = "mux status", "mux mask";
+                               mrvl,intc-nr-irqs = <5>;
+                       };
+
+                       usb_otg_phy0: usb-otg-phy@d4207000 {
+                               compatible = "marvell,mmp3-usb-phy";
+                               reg = <0xd4207000 0x40>;
+                               #phy-cells = <0>;
+                               status = "disabled";
+                       };
+
+                       usb_otg0: usb-otg@d4208000 {
+                               compatible = "marvell,pxau2o-ehci";
+                               reg = <0xd4208000 0x200>;
+                               interrupts = <GIC_SPI 44 IRQ_TYPE_LEVEL_HIGH>;
+                               clocks = <&soc_clocks MMP2_CLK_USB>;
+                               clock-names = "USBCLK";
+                               phys = <&usb_otg_phy0>;
+                               phy-names = "usb";
+                               status = "disabled";
+                       };
+
+                       mmc1: mmc@d4280000 {
+                               compatible = "mrvl,pxav3-mmc";
+                               reg = <0xd4280000 0x120>;
+                               clocks = <&soc_clocks MMP2_CLK_SDH0>;
+                               clock-names = "io";
+                               interrupts = <GIC_SPI 39 IRQ_TYPE_LEVEL_HIGH>;
+                               status = "disabled";
+                       };
+
+                       mmc2: mmc@d4280800 {
+                               compatible = "mrvl,pxav3-mmc";
+                               reg = <0xd4280800 0x120>;
+                               clocks = <&soc_clocks MMP2_CLK_SDH1>;
+                               clock-names = "io";
+                               interrupts = <GIC_SPI 52 IRQ_TYPE_LEVEL_HIGH>;
+                               status = "disabled";
+                       };
+
+                       mmc3: mmc@d4281000 {
+                               compatible = "mrvl,pxav3-mmc";
+                               reg = <0xd4281000 0x120>;
+                               clocks = <&soc_clocks MMP2_CLK_SDH2>;
+                               clock-names = "io";
+                               interrupts = <GIC_SPI 53 IRQ_TYPE_LEVEL_HIGH>;
+                               status = "disabled";
+                       };
+
+                       mmc4: mmc@d4281800 {
+                               compatible = "mrvl,pxav3-mmc";
+                               reg = <0xd4281800 0x120>;
+                               clocks = <&soc_clocks MMP2_CLK_SDH3>;
+                               clock-names = "io";
+                               interrupts = <GIC_SPI 54 IRQ_TYPE_LEVEL_HIGH>;
+                               status = "disabled";
+                       };
+
+                       camera0: camera@d420a000 {
+                               compatible = "marvell,mmp2-ccic";
+                               reg = <0xd420a000 0x800>;
+                               interrupts = <GIC_SPI 42 IRQ_TYPE_LEVEL_HIGH>;
+                               clocks = <&soc_clocks MMP2_CLK_CCIC0>;
+                               clock-names = "axi";
+                               #clock-cells = <0>;
+                               clock-output-names = "mclk";
+                               status = "disabled";
+                       };
+
+                       camera1: camera@d420a800 {
+                               compatible = "marvell,mmp2-ccic";
+                               reg = <0xd420a800 0x800>;
+                               interrupts = <GIC_SPI 30 IRQ_TYPE_LEVEL_HIGH>;
+                               clocks = <&soc_clocks MMP2_CLK_CCIC1>;
+                               clock-names = "axi";
+                               #clock-cells = <0>;
+                               clock-output-names = "mclk";
+                               status = "disabled";
+                       };
+               };
+
+               apb@d4000000 {
+                       compatible = "simple-bus";
+                       #address-cells = <1>;
+                       #size-cells = <1>;
+                       reg = <0xd4000000 0x00200000>;
+                       ranges;
+
+                       timer: timer@d4014000 {
+                               compatible = "mrvl,mmp-timer";
+                               reg = <0xd4014000 0x100>;
+                               interrupts = <GIC_SPI 13 IRQ_TYPE_LEVEL_HIGH>;
+                               clocks = <&soc_clocks MMP2_CLK_TIMER>;
+                       };
+
+                       uart1: uart@d4030000 {
+                               compatible = "mrvl,mmp-uart";
+                               reg = <0xd4030000 0x1000>;
+                               interrupts = <GIC_SPI 27 IRQ_TYPE_LEVEL_HIGH>;
+                               clocks = <&soc_clocks MMP2_CLK_UART0>;
+                               resets = <&soc_clocks MMP2_CLK_UART0>;
+                               reg-shift = <2>;
+                               status = "disabled";
+                       };
+
+                       uart2: uart@d4017000 {
+                               compatible = "mrvl,mmp-uart";
+                               reg = <0xd4017000 0x1000>;
+                               interrupts = <GIC_SPI 28 IRQ_TYPE_LEVEL_HIGH>;
+                               clocks = <&soc_clocks MMP2_CLK_UART1>;
+                               resets = <&soc_clocks MMP2_CLK_UART1>;
+                               reg-shift = <2>;
+                               status = "disabled";
+                       };
+
+                       uart3: uart@d4018000 {
+                               compatible = "mrvl,mmp-uart";
+                               reg = <0xd4018000 0x1000>;
+                               interrupts = <GIC_SPI 24 IRQ_TYPE_LEVEL_HIGH>;
+                               clocks = <&soc_clocks MMP2_CLK_UART2>;
+                               resets = <&soc_clocks MMP2_CLK_UART2>;
+                               reg-shift = <2>;
+                               status = "disabled";
+                       };
+
+                       uart4: uart@d4016000 {
+                               compatible = "mrvl,mmp-uart";
+                               reg = <0xd4016000 0x1000>;
+                               interrupts = <GIC_SPI 46 IRQ_TYPE_LEVEL_HIGH>;
+                               clocks = <&soc_clocks MMP2_CLK_UART3>;
+                               resets = <&soc_clocks MMP2_CLK_UART3>;
+                               reg-shift = <2>;
+                               status = "disabled";
+                       };
+
+                       gpio: gpio@d4019000 {
+                               compatible = "marvell,mmp2-gpio";
+                               #address-cells = <1>;
+                               #size-cells = <1>;
+                               reg = <0xd4019000 0x1000>;
+                               gpio-controller;
+                               #gpio-cells = <2>;
+                               interrupts = <GIC_SPI 49 IRQ_TYPE_LEVEL_HIGH>;
+                               interrupt-names = "gpio_mux";
+                               clocks = <&soc_clocks MMP2_CLK_GPIO>;
+                               resets = <&soc_clocks MMP2_CLK_GPIO>;
+                               interrupt-controller;
+                               #interrupt-cells = <2>;
+                               ranges;
+
+                               gcb0: gpio@d4019000 {
+                                       reg = <0xd4019000 0x4>;
+                               };
+
+                               gcb1: gpio@d4019004 {
+                                       reg = <0xd4019004 0x4>;
+                               };
+
+                               gcb2: gpio@d4019008 {
+                                       reg = <0xd4019008 0x4>;
+                               };
+
+                               gcb3: gpio@d4019100 {
+                                       reg = <0xd4019100 0x4>;
+                               };
+
+                               gcb4: gpio@d4019104 {
+                                       reg = <0xd4019104 0x4>;
+                               };
+
+                               gcb5: gpio@d4019108 {
+                                       reg = <0xd4019108 0x4>;
+                               };
+                       };
+
+                       twsi1: i2c@d4011000 {
+                               compatible = "mrvl,mmp-twsi";
+                               reg = <0xd4011000 0x1000>;
+                               interrupts = <GIC_SPI 7 IRQ_TYPE_LEVEL_HIGH>;
+                               clocks = <&soc_clocks MMP2_CLK_TWSI0>;
+                               resets = <&soc_clocks MMP2_CLK_TWSI0>;
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+                               mrvl,i2c-fast-mode;
+                               status = "disabled";
+                       };
+
+                       twsi2: i2c@d4031000 {
+                               compatible = "mrvl,mmp-twsi";
+                               reg = <0xd4031000 0x1000>;
+                               interrupt-parent = <&twsi_mux>;
+                               interrupts = <0>;
+                               clocks = <&soc_clocks MMP2_CLK_TWSI1>;
+                               resets = <&soc_clocks MMP2_CLK_TWSI1>;
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+                               status = "disabled";
+                       };
+
+                       twsi3: i2c@d4032000 {
+                               compatible = "mrvl,mmp-twsi";
+                               reg = <0xd4032000 0x1000>;
+                               interrupt-parent = <&twsi_mux>;
+                               interrupts = <1>;
+                               clocks = <&soc_clocks MMP2_CLK_TWSI2>;
+                               resets = <&soc_clocks MMP2_CLK_TWSI2>;
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+                               status = "disabled";
+                       };
+
+                       twsi4: i2c@d4033000 {
+                               compatible = "mrvl,mmp-twsi";
+                               reg = <0xd4033000 0x1000>;
+                               interrupt-parent = <&twsi_mux>;
+                               interrupts = <2>;
+                               clocks = <&soc_clocks MMP2_CLK_TWSI3>;
+                               resets = <&soc_clocks MMP2_CLK_TWSI3>;
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+                               status = "disabled";
+                       };
+
+
+                       twsi5: i2c@d4033800 {
+                               compatible = "mrvl,mmp-twsi";
+                               reg = <0xd4033800 0x1000>;
+                               interrupt-parent = <&twsi_mux>;
+                               interrupts = <3>;
+                               clocks = <&soc_clocks MMP2_CLK_TWSI4>;
+                               resets = <&soc_clocks MMP2_CLK_TWSI4>;
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+                               status = "disabled";
+                       };
+
+                       twsi6: i2c@d4034000 {
+                               compatible = "mrvl,mmp-twsi";
+                               reg = <0xd4034000 0x1000>;
+                               interrupt-parent = <&twsi_mux>;
+                               interrupts = <4>;
+                               clocks = <&soc_clocks MMP2_CLK_TWSI5>;
+                               resets = <&soc_clocks MMP2_CLK_TWSI5>;
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+                               status = "disabled";
+                       };
+
+                       rtc: rtc@d4010000 {
+                               compatible = "mrvl,mmp-rtc";
+                               reg = <0xd4010000 0x1000>;
+                               interrupts = <1 0>;
+                               interrupt-names = "rtc 1Hz", "rtc alarm";
+                               interrupt-parent = <&rtc_mux>;
+                               clocks = <&soc_clocks MMP2_CLK_RTC>;
+                               resets = <&soc_clocks MMP2_CLK_RTC>;
+                               status = "disabled";
+                       };
+
+                       ssp1: spi@d4035000 {
+                               compatible = "marvell,mmp2-ssp";
+                               reg = <0xd4035000 0x1000>;
+                               clocks = <&soc_clocks MMP2_CLK_SSP0>;
+                               interrupts = <GIC_SPI 0 IRQ_TYPE_LEVEL_HIGH>;
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+                               status = "disabled";
+                       };
+
+                       ssp2: spi@d4036000 {
+                               compatible = "marvell,mmp2-ssp";
+                               reg = <0xd4036000 0x1000>;
+                               clocks = <&soc_clocks MMP2_CLK_SSP1>;
+                               interrupts = <GIC_SPI 1 IRQ_TYPE_LEVEL_HIGH>;
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+                               status = "disabled";
+                       };
+
+                       ssp3: spi@d4037000 {
+                               compatible = "marvell,mmp2-ssp";
+                               reg = <0xd4037000 0x1000>;
+                               clocks = <&soc_clocks MMP2_CLK_SSP2>;
+                               interrupts = <GIC_SPI 20 IRQ_TYPE_LEVEL_HIGH>;
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+                               status = "disabled";
+                       };
+
+                       ssp4: spi@d4039000 {
+                               compatible = "marvell,mmp2-ssp";
+                               reg = <0xd4039000 0x1000>;
+                               clocks = <&soc_clocks MMP2_CLK_SSP3>;
+                               interrupts = <GIC_SPI 21 IRQ_TYPE_LEVEL_HIGH>;
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+                               status = "disabled";
+                       };
+               };
+
+               l2: l2-cache-controller@d0020000 {
+                       compatible = "marvell,tauros3-cache", "arm,pl310-cache";
+                       reg = <0xd0020000 0x1000>;
+                       cache-unified;
+                       cache-level = <2>;
+               };
+
+               soc_clocks: clocks@d4050000 {
+                       compatible = "marvell,mmp2-clock";
+                       reg = <0xd4050000 0x1000>,
+                             <0xd4282800 0x400>,
+                             <0xd4015000 0x1000>;
+                       reg-names = "mpmu", "apmu", "apbc";
+                       #clock-cells = <1>;
+                       #reset-cells = <1>;
+                       #power-domain-cells = <1>;
+               };
+
+               snoop-control-unit@e0000000 {
+                       compatible = "arm,arm11mp-scu";
+                       reg = <0xe0000000 0x100>;
+               };
+
+               gic: interrupt-controller@e0001000 {
+                       compatible = "arm,arm11mp-gic";
+                       interrupt-controller;
+                       #interrupt-cells = <3>;
+                       reg = <0xe0001000 0x1000>,
+                             <0xe0000100 0x100>;
+               };
+
+               local-timer@e0000600 {
+                       compatible = "arm,arm11mp-twd-timer";
+                       interrupts = <GIC_PPI 13 (GIC_CPU_MASK_SIMPLE(2) |
+                                                 IRQ_TYPE_EDGE_RISING)>;
+                       reg = <0xe0000600 0x20>;
+               };
+
+               watchdog@e0000620 {
+                       compatible = "arm,arm11mp-twd-wdt";
+                       reg = <0xe0000620 0x20>;
+                       interrupts = <GIC_PPI 14 (GIC_CPU_MASK_SIMPLE(2) |
+                                                 IRQ_TYPE_EDGE_RISING)>;
+               };
+       };
+};
diff --git a/arch/arm/boot/dts/motorola-mapphone-common.dtsi b/arch/arm/boot/dts/motorola-mapphone-common.dtsi
new file mode 100644 (file)
index 0000000..da6b107
--- /dev/null
@@ -0,0 +1,786 @@
+// SPDX-License-Identifier: GPL-2.0-only
+/dts-v1/;
+
+#include <dt-bindings/input/input.h>
+#include "omap443x.dtsi"
+#include "motorola-cpcap-mapphone.dtsi"
+
+/ {
+       chosen {
+               stdout-path = &uart3;
+       };
+
+       aliases {
+               display0 = &lcd0;
+               display1 = &hdmi0;
+       };
+
+       /*
+        * We seem to have only 1021 MB accessible, 1021 - 1022 is locked,
+        * then 1023 - 1024 seems to contain mbm.
+        */
+       memory {
+               device_type = "memory";
+               reg = <0x80000000 0x3fd00000>;  /* 1021 MB */
+       };
+
+       /* Poweroff GPIO probably connected to CPCAP */
+       gpio-poweroff {
+               compatible = "gpio-poweroff";
+               pinctrl-0 = <&poweroff_gpio>;
+               pinctrl-names = "default";
+               gpios = <&gpio2 18 GPIO_ACTIVE_LOW>;    /* gpio50 */
+       };
+
+       hdmi0: connector {
+               compatible = "hdmi-connector";
+               pinctrl-0 = <&hdmi_hpd_gpio>;
+               pinctrl-names = "default";
+               label = "hdmi";
+               type = "d";
+
+               hpd-gpios = <&gpio2 31 GPIO_ACTIVE_HIGH>;       /* gpio63 */
+
+               port {
+                       hdmi_connector_in: endpoint {
+                               remote-endpoint = <&hdmi_out>;
+                       };
+               };
+       };
+
+       /*
+        * HDMI 5V regulator probably sourced from battery. Let's keep
+        * keep this as always enabled for HDMI to work until we've
+        * figured what the encoder chip is.
+        */
+       hdmi_regulator: regulator-hdmi {
+               compatible = "regulator-fixed";
+               regulator-name = "hdmi";
+               regulator-min-microvolt = <5000000>;
+               regulator-max-microvolt = <5000000>;
+               gpio = <&gpio2 27 GPIO_ACTIVE_HIGH>;    /* gpio59 */
+               enable-active-high;
+               regulator-always-on;
+       };
+
+       /* FS USB Host PHY on port 1 for mdm6600 */
+       fsusb1_phy: usb-phy@1 {
+               compatible = "motorola,mapphone-mdm6600";
+               pinctrl-0 = <&usb_mdm6600_pins>;
+               pinctrl-names = "default";
+               enable-gpios = <&gpio3 31 GPIO_ACTIVE_LOW>;     /* gpio_95 */
+               power-gpios = <&gpio2 22 GPIO_ACTIVE_HIGH>;     /* gpio_54 */
+               reset-gpios = <&gpio2 17 GPIO_ACTIVE_HIGH>;     /* gpio_49 */
+               /* mode: gpio_148 gpio_149 */
+               motorola,mode-gpios = <&gpio5 20 GPIO_ACTIVE_HIGH>,
+                                     <&gpio5 21 GPIO_ACTIVE_HIGH>;
+               /* cmd: gpio_103 gpio_104 gpio_142 */
+               motorola,cmd-gpios = <&gpio4 7 GPIO_ACTIVE_HIGH>,
+                                    <&gpio4 8 GPIO_ACTIVE_HIGH>,
+                                    <&gpio5 14 GPIO_ACTIVE_HIGH>;
+               /* status: gpio_52 gpio_53 gpio_55 */
+               motorola,status-gpios = <&gpio2 20 GPIO_ACTIVE_HIGH>,
+                                       <&gpio2 21 GPIO_ACTIVE_HIGH>,
+                                       <&gpio2 23 GPIO_ACTIVE_HIGH>;
+               #phy-cells = <0>;
+       };
+
+       /* HS USB host TLL nop-phy on port 2 for w3glte */
+       hsusb2_phy: usb-phy@2 {
+               compatible = "usb-nop-xceiv";
+               #phy-cells = <0>;
+       };
+
+       /* LCD regulator from sw5 source */
+       lcd_regulator: regulator-lcd {
+               compatible = "regulator-fixed";
+               regulator-name = "lcd";
+               regulator-min-microvolt = <5050000>;
+               regulator-max-microvolt = <5050000>;
+               gpio = <&gpio4 0 GPIO_ACTIVE_HIGH>;     /* gpio96 */
+               enable-active-high;
+               vin-supply = <&sw5>;
+       };
+
+       /* This is probably coming straight from the battery.. */
+       wl12xx_vmmc: regulator-wl12xx {
+               compatible = "regulator-fixed";
+               regulator-name = "vwl1271";
+               regulator-min-microvolt = <1650000>;
+               regulator-max-microvolt = <1650000>;
+               gpio = <&gpio3 30 GPIO_ACTIVE_HIGH>;    /* gpio94 */
+               startup-delay-us = <70000>;
+               enable-active-high;
+       };
+
+       gpio_keys {
+               compatible = "gpio-keys";
+
+               volume_down {
+                       label = "Volume Down";
+                       gpios = <&gpio5 26 GPIO_ACTIVE_LOW>; /* gpio154 */
+                       linux,code = <KEY_VOLUMEDOWN>;
+                       linux,can-disable;
+                       /* Value above 7.95ms for no GPIO hardware debounce */
+                       debounce-interval = <10>;
+               };
+
+               slider {
+                       label = "Keypad Slide";
+                       gpios = <&gpio4 26 GPIO_ACTIVE_HIGH>; /* gpio122 */
+                       linux,input-type = <EV_SW>;
+                       linux,code = <SW_KEYPAD_SLIDE>;
+                       linux,can-disable;
+                       /* Value above 7.95ms for no GPIO hardware debounce */
+                       debounce-interval = <10>;
+               };
+       };
+
+       soundcard {
+               compatible = "audio-graph-card";
+               label = "Droid 4 Audio";
+
+               simple-graph-card,widgets =
+                       "Speaker", "Earpiece",
+                       "Speaker", "Loudspeaker",
+                       "Headphone", "Headphone Jack",
+                       "Microphone", "Internal Mic";
+
+               simple-graph-card,routing =
+                       "Earpiece", "EP",
+                       "Loudspeaker", "SPKR",
+                       "Headphone Jack", "HSL",
+                       "Headphone Jack", "HSR",
+                       "MICR", "Internal Mic";
+
+               dais = <&mcbsp2_port>, <&mcbsp3_port>;
+       };
+
+       pwm8: dmtimer-pwm-8 {
+               pinctrl-names = "default";
+               pinctrl-0 = <&vibrator_direction_pin>;
+
+               compatible = "ti,omap-dmtimer-pwm";
+               #pwm-cells = <3>;
+               ti,timers = <&timer8>;
+               ti,clock-source = <0x01>;
+       };
+
+       pwm9: dmtimer-pwm-9 {
+               pinctrl-names = "default";
+               pinctrl-0 = <&vibrator_enable_pin>;
+
+               compatible = "ti,omap-dmtimer-pwm";
+               #pwm-cells = <3>;
+               ti,timers = <&timer9>;
+               ti,clock-source = <0x01>;
+       };
+
+       vibrator {
+               compatible = "pwm-vibrator";
+               pwms = <&pwm9 0 10000000 0>, <&pwm8 0 10000000 0>;
+               pwm-names = "enable", "direction";
+               direction-duty-cycle-ns = <10000000>;
+       };
+};
+
+&dss {
+       status = "okay";
+};
+
+&dsi1 {
+       status = "okay";
+       vdd-supply = <&vcsi>;
+
+       port {
+               dsi1_out_ep: endpoint {
+                       remote-endpoint = <&lcd0_in>;
+                       lanes = <0 1 2 3 4 5>;
+               };
+       };
+
+       lcd0: display {
+               compatible = "panel-dsi-cm";
+               label = "lcd0";
+               vddi-supply = <&lcd_regulator>;
+               reset-gpios = <&gpio4 5 GPIO_ACTIVE_HIGH>;      /* gpio101 */
+
+               width-mm = <50>;
+               height-mm = <89>;
+
+               panel-timing {
+                       clock-frequency = <0>;          /* Calculated by dsi */
+
+                       hback-porch = <2>;
+                       hactive = <540>;
+                       hfront-porch = <0>;
+                       hsync-len = <2>;
+
+                       vback-porch = <1>;
+                       vactive = <960>;
+                       vfront-porch = <0>;
+                       vsync-len = <1>;
+
+                       hsync-active = <0>;
+                       vsync-active = <0>;
+                       de-active = <1>;
+                       pixelclk-active = <1>;
+               };
+
+               port {
+                       lcd0_in: endpoint {
+                               remote-endpoint = <&dsi1_out_ep>;
+                       };
+               };
+       };
+};
+
+&hdmi {
+       status = "okay";
+       pinctrl-0 = <&dss_hdmi_pins>;
+       pinctrl-names = "default";
+       vdda-supply = <&vdac>;
+
+       port {
+               hdmi_out: endpoint {
+                       remote-endpoint = <&hdmi_connector_in>;
+                       lanes = <1 0 3 2 5 4 7 6>;
+               };
+       };
+};
+
+&i2c1 {
+       tmp105@48 {
+               compatible = "ti,tmp105";
+               reg = <0x48>;
+               pinctrl-0 = <&tmp105_irq>;
+               pinctrl-names = "default";
+               /* kpd_row0.gpio_178 */
+               interrupts-extended = <&gpio6 18 IRQ_TYPE_EDGE_FALLING
+                                      &omap4_pmx_core 0x14e>;
+               interrupt-names = "irq", "wakeup";
+               wakeup-source;
+       };
+};
+
+&keypad {
+       keypad,num-rows = <8>;
+       keypad,num-columns = <8>;
+       linux,keymap = <
+
+       /* Row 1 */
+       MATRIX_KEY(0, 2, KEY_1)
+       MATRIX_KEY(0, 6, KEY_2)
+       MATRIX_KEY(2, 3, KEY_3)
+       MATRIX_KEY(0, 7, KEY_4)
+       MATRIX_KEY(0, 4, KEY_5)
+       MATRIX_KEY(5, 5, KEY_6)
+       MATRIX_KEY(0, 1, KEY_7)
+       MATRIX_KEY(0, 5, KEY_8)
+       MATRIX_KEY(0, 0, KEY_9)
+       MATRIX_KEY(1, 6, KEY_0)
+
+       /* Row 2 */
+       MATRIX_KEY(3, 4, KEY_APOSTROPHE)
+       MATRIX_KEY(7, 6, KEY_Q)
+       MATRIX_KEY(7, 7, KEY_W)
+       MATRIX_KEY(7, 2, KEY_E)
+       MATRIX_KEY(1, 0, KEY_R)
+       MATRIX_KEY(4, 4, KEY_T)
+       MATRIX_KEY(1, 2, KEY_Y)
+       MATRIX_KEY(6, 7, KEY_U)
+       MATRIX_KEY(2, 2, KEY_I)
+       MATRIX_KEY(5, 6, KEY_O)
+       MATRIX_KEY(3, 7, KEY_P)
+       MATRIX_KEY(6, 5, KEY_BACKSPACE)
+
+       /* Row 3 */
+       MATRIX_KEY(5, 4, KEY_TAB)
+       MATRIX_KEY(5, 7, KEY_A)
+       MATRIX_KEY(2, 7, KEY_S)
+       MATRIX_KEY(7, 0, KEY_D)
+       MATRIX_KEY(2, 6, KEY_F)
+       MATRIX_KEY(6, 2, KEY_G)
+       MATRIX_KEY(6, 6, KEY_H)
+       MATRIX_KEY(1, 4, KEY_J)
+       MATRIX_KEY(3, 1, KEY_K)
+       MATRIX_KEY(2, 1, KEY_L)
+       MATRIX_KEY(4, 6, KEY_ENTER)
+
+       /* Row 4 */
+       MATRIX_KEY(3, 6, KEY_LEFTSHIFT)         /* KEY_CAPSLOCK */
+       MATRIX_KEY(6, 1, KEY_Z)
+       MATRIX_KEY(7, 4, KEY_X)
+       MATRIX_KEY(5, 1, KEY_C)
+       MATRIX_KEY(1, 7, KEY_V)
+       MATRIX_KEY(2, 4, KEY_B)
+       MATRIX_KEY(4, 1, KEY_N)
+       MATRIX_KEY(1, 1, KEY_M)
+       MATRIX_KEY(3, 5, KEY_COMMA)
+       MATRIX_KEY(5, 2, KEY_DOT)
+       MATRIX_KEY(6, 3, KEY_UP)
+       MATRIX_KEY(7, 3, KEY_OK)
+
+       /* Row 5 */
+       MATRIX_KEY(2, 5, KEY_LEFTCTRL)          /* KEY_LEFTSHIFT */
+       MATRIX_KEY(4, 5, KEY_LEFTALT)           /* SYM */
+       MATRIX_KEY(6, 0, KEY_MINUS)
+       MATRIX_KEY(4, 7, KEY_EQUAL)
+       MATRIX_KEY(1, 5, KEY_SPACE)
+       MATRIX_KEY(3, 2, KEY_SLASH)
+       MATRIX_KEY(4, 3, KEY_LEFT)
+       MATRIX_KEY(5, 3, KEY_DOWN)
+       MATRIX_KEY(3, 3, KEY_RIGHT)
+
+       /* Side buttons, KEY_VOLUMEDOWN and KEY_PWER are on CPCAP? */
+       MATRIX_KEY(5, 0, KEY_VOLUMEUP)
+       >;
+};
+
+&mmc1 {
+       vmmc-supply = <&vwlan2>;
+       bus-width = <4>;
+       cd-gpios = <&gpio6 16 GPIO_ACTIVE_LOW>; /* gpio176 */
+};
+
+&mmc2 {
+       vmmc-supply = <&vsdio>;
+       bus-width = <8>;
+       ti,non-removable;
+};
+
+&mmc3 {
+       vmmc-supply = <&wl12xx_vmmc>;
+       /* uart2_tx.sdmmc3_dat1 pad as wakeirq */
+       interrupts-extended = <&wakeupgen GIC_SPI 94 IRQ_TYPE_LEVEL_HIGH
+                              &omap4_pmx_core 0xde>;
+       interrupt-names = "irq", "wakeup";
+       non-removable;
+       bus-width = <4>;
+       cap-power-off-card;
+       keep-power-in-suspend;
+
+       #address-cells = <1>;
+       #size-cells = <0>;
+       wlcore: wlcore@2 {
+               compatible = "ti,wl1285", "ti,wl1283";
+               reg = <2>;
+               /* gpio_100 with gpmc_wait2 pad as wakeirq */
+               interrupts-extended = <&gpio4 4 IRQ_TYPE_LEVEL_HIGH>,
+                                     <&omap4_pmx_core 0x4e>;
+               interrupt-names = "irq", "wakeup";
+               ref-clock-frequency = <26000000>;
+               tcxo-clock-frequency = <26000000>;
+       };
+};
+
+&i2c1 {
+       led-controller@38 {
+               compatible = "ti,lm3532";
+               #address-cells = <1>;
+               #size-cells = <0>;
+               reg = <0x38>;
+
+               enable-gpios = <&gpio6 12 GPIO_ACTIVE_HIGH>;
+
+               ramp-up-us = <1024>;
+               ramp-down-us = <8193>;
+
+               led@0 {
+                       reg = <0>;
+                       led-sources = <2>;
+                       ti,led-mode = <0>;
+                       label = ":backlight";
+                       linux,default-trigger = "backlight";
+               };
+
+               led@1 {
+                       reg = <1>;
+                       led-sources = <1>;
+                       ti,led-mode = <0>;
+                       label = ":kbd_backlight";
+               };
+       };
+};
+
+&i2c2 {
+       touchscreen@4a {
+               compatible = "atmel,maxtouch";
+               reg = <0x4a>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&touchscreen_pins>;
+
+               reset-gpios = <&gpio6 13 GPIO_ACTIVE_HIGH>; /* gpio173 */
+
+               /* gpio_183 with sys_nirq2 pad as wakeup */
+               interrupts-extended = <&gpio6 23 IRQ_TYPE_EDGE_FALLING>,
+                                     <&omap4_pmx_core 0x160>;
+               interrupt-names = "irq", "wakeup";
+               wakeup-source;
+       };
+
+       isl29030@44 {
+               compatible = "isil,isl29030";
+               reg = <0x44>;
+
+               pinctrl-names = "default";
+               pinctrl-0 = <&als_proximity_pins>;
+
+               interrupt-parent = <&gpio6>;
+               interrupts = <17 IRQ_TYPE_LEVEL_LOW>; /* gpio177 */
+       };
+};
+
+&omap4_pmx_core {
+
+       /* hdmi_hpd.gpio_63 */
+       hdmi_hpd_gpio: pinmux_hdmi_hpd_pins {
+               pinctrl-single,pins = <
+               OMAP4_IOPAD(0x098, PIN_INPUT | MUX_MODE3)
+               >;
+       };
+
+       /* hdmi_cec.hdmi_cec, hdmi_scl.hdmi_scl, hdmi_sda.hdmi_sda */
+       dss_hdmi_pins: pinmux_dss_hdmi_pins {
+               pinctrl-single,pins = <
+               OMAP4_IOPAD(0x09a, PIN_INPUT | MUX_MODE0)
+               OMAP4_IOPAD(0x09c, PIN_INPUT | MUX_MODE0)
+               OMAP4_IOPAD(0x09e, PIN_INPUT | MUX_MODE0)
+               >;
+       };
+
+       /* gpmc_ncs0.gpio_50 */
+       poweroff_gpio: pinmux_poweroff_pins {
+               pinctrl-single,pins = <
+               OMAP4_IOPAD(0x074, PIN_OUTPUT_PULLUP | MUX_MODE3)
+               >;
+       };
+
+       /* kpd_row0.gpio_178 */
+       tmp105_irq: pinmux_tmp105_irq {
+               pinctrl-single,pins = <
+               OMAP4_IOPAD(0x18e, PIN_INPUT_PULLUP | MUX_MODE3)
+               >;
+       };
+
+       usb_gpio_mux_sel1: pinmux_usb_gpio_mux_sel1_pins {
+               /* gpio_60 */
+               pinctrl-single,pins = <
+               OMAP4_IOPAD(0x088, PIN_OUTPUT | MUX_MODE3)
+               >;
+       };
+
+       touchscreen_pins: pinmux_touchscreen_pins {
+               pinctrl-single,pins = <
+               OMAP4_IOPAD(0x180, PIN_OUTPUT | MUX_MODE3)
+               OMAP4_IOPAD(0x1a0, PIN_INPUT_PULLUP | MUX_MODE3)
+               >;
+       };
+
+       als_proximity_pins: pinmux_als_proximity_pins {
+               pinctrl-single,pins = <
+               OMAP4_IOPAD(0x18c, PIN_INPUT_PULLUP | MUX_MODE3)
+               >;
+       };
+
+       usb_mdm6600_pins: pinmux_usb_mdm6600_pins {
+               pinctrl-single,pins = <
+               /* enable 0x4a1000d8 usbb1_ulpitll_dat7.gpio_95 ag16 */
+               OMAP4_IOPAD(0x0d8, PIN_INPUT | MUX_MODE3)
+
+               /* power 0x4a10007c gpmc_nwp.gpio_54 c25 */
+               OMAP4_IOPAD(0x07c, PIN_OUTPUT | MUX_MODE3)
+
+               /* reset 0x4a100072 gpmc_a25.gpio_49 d20 */
+               OMAP4_IOPAD(0x072, PIN_OUTPUT | MUX_MODE3)
+
+               /* mode0/bpwake 0x4a10014e sdmmc5_dat1.gpio_148 af4 */
+               OMAP4_IOPAD(0x14e, PIN_OUTPUT | MUX_MODE3)
+
+               /* mode1/apwake 0x4a100150 sdmmc5_dat2.gpio_149 ag3 */
+               OMAP4_IOPAD(0x150, PIN_OFF_OUTPUT_LOW | PIN_INPUT | MUX_MODE3)
+
+               /* status0 0x4a10007e gpmc_clk.gpio_55 b22 */
+               OMAP4_IOPAD(0x07e, PIN_INPUT | MUX_MODE3)
+
+               /* status1 0x4a10007a gpmc_ncs3.gpio_53 c22 */
+               OMAP4_IOPAD(0x07a, PIN_INPUT | MUX_MODE3)
+
+               /* status2 0x4a100078 gpmc_ncs2.gpio_52 d21 */
+               OMAP4_IOPAD(0x078, PIN_INPUT | MUX_MODE3)
+
+               /* cmd0 0x4a100094 gpmc_ncs6.gpio_103 c24 */
+               OMAP4_IOPAD(0x094, PIN_OUTPUT | MUX_MODE3)
+
+               /* cmd1 0x4a100096 gpmc_ncs7.gpio_104 d24 */
+               OMAP4_IOPAD(0x096, PIN_OUTPUT | MUX_MODE3)
+
+               /* cmd2 0x4a100142 uart3_rts_sd.gpio_142 f28 */
+               OMAP4_IOPAD(0x142, PIN_OUTPUT | MUX_MODE3)
+               >;
+       };
+
+       usb_ulpi_pins: pinmux_usb_ulpi_pins {
+               pinctrl-single,pins = <
+               OMAP4_IOPAD(0x196, MUX_MODE7)
+               OMAP4_IOPAD(0x198, MUX_MODE7)
+               OMAP4_IOPAD(0x1b2, PIN_INPUT_PULLUP | MUX_MODE0)
+               OMAP4_IOPAD(0x1b4, PIN_INPUT_PULLUP | MUX_MODE0)
+               OMAP4_IOPAD(0x1b6, PIN_INPUT_PULLUP | MUX_MODE0)
+               OMAP4_IOPAD(0x1b8, PIN_INPUT_PULLUP | MUX_MODE0)
+               OMAP4_IOPAD(0x1ba, PIN_INPUT_PULLUP | MUX_MODE0)
+               OMAP4_IOPAD(0x1bc, PIN_INPUT_PULLUP | MUX_MODE0)
+               OMAP4_IOPAD(0x1be, PIN_INPUT_PULLUP | MUX_MODE0)
+               OMAP4_IOPAD(0x1c0, PIN_INPUT_PULLUP | MUX_MODE0)
+               OMAP4_IOPAD(0x1c2, PIN_INPUT_PULLUP | MUX_MODE0)
+               OMAP4_IOPAD(0x1c4, PIN_INPUT_PULLUP | MUX_MODE0)
+               OMAP4_IOPAD(0x1c6, PIN_INPUT_PULLUP | MUX_MODE0)
+               OMAP4_IOPAD(0x1c8, PIN_INPUT_PULLUP | MUX_MODE0)
+               >;
+       };
+
+       /* usb0_otg_dp and usb0_otg_dm */
+       usb_utmi_pins: pinmux_usb_utmi_pins {
+               pinctrl-single,pins = <
+               OMAP4_IOPAD(0x196, PIN_INPUT | MUX_MODE0)
+               OMAP4_IOPAD(0x198, PIN_INPUT | MUX_MODE0)
+               OMAP4_IOPAD(0x1b2, PIN_INPUT_PULLUP | MUX_MODE7)
+               OMAP4_IOPAD(0x1b4, PIN_INPUT_PULLUP | MUX_MODE7)
+               OMAP4_IOPAD(0x1b6, PIN_INPUT_PULLUP | MUX_MODE7)
+               OMAP4_IOPAD(0x1b8, PIN_INPUT_PULLUP | MUX_MODE7)
+               OMAP4_IOPAD(0x1ba, PIN_INPUT_PULLUP | MUX_MODE7)
+               OMAP4_IOPAD(0x1bc, PIN_INPUT_PULLUP | MUX_MODE7)
+               OMAP4_IOPAD(0x1be, PIN_INPUT_PULLUP | MUX_MODE7)
+               OMAP4_IOPAD(0x1c0, PIN_INPUT_PULLUP | MUX_MODE7)
+               OMAP4_IOPAD(0x1c2, PIN_INPUT_PULLUP | MUX_MODE7)
+               OMAP4_IOPAD(0x1c4, PIN_INPUT_PULLUP | MUX_MODE7)
+               OMAP4_IOPAD(0x1c6, PIN_INPUT_PULLUP | MUX_MODE7)
+               OMAP4_IOPAD(0x1c8, PIN_INPUT_PULLUP | MUX_MODE7)
+               >;
+       };
+
+       /*
+        * Note that the v3.0.8 stock userspace dynamically remuxes uart1
+        * rts pin probably for PM purposes to PIN_INPUT_PULLUP | MUX_MODE7
+        * when not used. If needed, we can add rts pin remux later based
+        * on power measurements.
+        */
+       uart1_pins: pinmux_uart1_pins {
+               pinctrl-single,pins = <
+               /* 0x4a10013c mcspi1_cs2.uart1_cts ag23 */
+               OMAP4_IOPAD(0x13c, PIN_INPUT_PULLUP | MUX_MODE1)
+
+               /* 0x4a10013e mcspi1_cs3.uart1_rts ah23 */
+               OMAP4_IOPAD(0x13e, MUX_MODE1)
+
+               /* 0x4a100140 uart3_cts_rctx.uart1_tx f27 */
+               OMAP4_IOPAD(0x140, PIN_OUTPUT | MUX_MODE1)
+
+               /* 0x4a1001ca dpm_emu14.uart1_rx aa3 */
+               OMAP4_IOPAD(0x1ca, PIN_INPUT_PULLUP | MUX_MODE2)
+               >;
+       };
+
+       /* uart3_tx_irtx and uart3_rx_irrx */
+       uart3_pins: pinmux_uart3_pins {
+               pinctrl-single,pins = <
+               OMAP4_IOPAD(0x196, MUX_MODE7)
+               OMAP4_IOPAD(0x198, MUX_MODE7)
+               OMAP4_IOPAD(0x1b2, PIN_INPUT_PULLUP | MUX_MODE7)
+               OMAP4_IOPAD(0x1b4, PIN_INPUT_PULLUP | MUX_MODE7)
+               OMAP4_IOPAD(0x1b6, PIN_INPUT_PULLUP | MUX_MODE7)
+               OMAP4_IOPAD(0x1b8, PIN_INPUT_PULLUP | MUX_MODE7)
+               OMAP4_IOPAD(0x1ba, MUX_MODE2)
+               OMAP4_IOPAD(0x1bc, PIN_INPUT | MUX_MODE2)
+               OMAP4_IOPAD(0x1be, PIN_INPUT_PULLUP | MUX_MODE7)
+               OMAP4_IOPAD(0x1c0, PIN_INPUT_PULLUP | MUX_MODE7)
+               OMAP4_IOPAD(0x1c2, PIN_INPUT_PULLUP | MUX_MODE7)
+               OMAP4_IOPAD(0x1c4, PIN_INPUT_PULLUP | MUX_MODE7)
+               OMAP4_IOPAD(0x1c6, PIN_INPUT_PULLUP | MUX_MODE7)
+               OMAP4_IOPAD(0x1c8, PIN_INPUT_PULLUP | MUX_MODE7)
+               >;
+       };
+
+       uart4_pins: pinmux_uart4_pins {
+               pinctrl-single,pins = <
+               OMAP4_IOPAD(0x15c, PIN_INPUT | MUX_MODE0)               /* uart4_rx */
+               OMAP4_IOPAD(0x15e, PIN_OUTPUT | MUX_MODE0)              /* uart4_tx */
+               OMAP4_IOPAD(0x110, PIN_INPUT_PULLUP | MUX_MODE5)        /* uart4_cts */
+               OMAP4_IOPAD(0x112, PIN_OUTPUT_PULLUP | MUX_MODE5)       /* uart4_rts */
+               >;
+       };
+
+       mcbsp2_pins: pinmux_mcbsp2_pins {
+               pinctrl-single,pins = <
+               OMAP4_IOPAD(0x0f6, PIN_INPUT | MUX_MODE0)       /* abe_mcbsp2_clkx */
+               OMAP4_IOPAD(0x0f8, PIN_INPUT | MUX_MODE0)       /* abe_mcbsp2_dr */
+               OMAP4_IOPAD(0x0fa, PIN_OUTPUT | MUX_MODE0)      /* abe_mcbsp2_dx */
+               OMAP4_IOPAD(0x0fc, PIN_INPUT | MUX_MODE0)       /* abe_mcbsp2_fsx */
+               >;
+       };
+
+       mcbsp3_pins: pinmux_mcbsp3_pins {
+               pinctrl-single,pins = <
+               OMAP4_IOPAD(0x106, PIN_INPUT | MUX_MODE1)       /* abe_mcbsp3_dr */
+               OMAP4_IOPAD(0x108, PIN_OUTPUT | MUX_MODE1)      /* abe_mcbsp3_dx */
+               OMAP4_IOPAD(0x10a, PIN_INPUT | MUX_MODE1)       /* abe_mcbsp3_clkx */
+               OMAP4_IOPAD(0x10c, PIN_INPUT | MUX_MODE1)       /* abe_mcbsp3_fsx */
+               >;
+       };
+
+       vibrator_direction_pin: pinmux_vibrator_direction_pin {
+               pinctrl-single,pins = <
+               OMAP4_IOPAD(0x1ce, PIN_OUTPUT | MUX_MODE1)      /* dmtimer8_pwm_evt (gpio_27) */
+               >;
+       };
+
+       vibrator_enable_pin: pinmux_vibrator_enable_pin {
+               pinctrl-single,pins = <
+               OMAP4_IOPAD(0X1d0, PIN_OUTPUT | MUX_MODE1)      /* dmtimer9_pwm_evt (gpio_28) */
+               >;
+       };
+};
+
+&omap4_pmx_wkup {
+       usb_gpio_mux_sel2: pinmux_usb_gpio_mux_sel2_pins {
+               /* gpio_wk0 */
+               pinctrl-single,pins = <
+               OMAP4_IOPAD(0x040, PIN_OUTPUT_PULLDOWN | MUX_MODE3)
+               >;
+       };
+};
+
+/* Configure pwm clock source for timers 8 & 9 */
+&timer8 {
+       assigned-clocks = <&abe_clkctrl OMAP4_TIMER8_CLKCTRL 24>;
+       assigned-clock-parents = <&sys_clkin_ck>;
+};
+
+&timer9 {
+       assigned-clocks = <&l4_per_clkctrl OMAP4_TIMER9_CLKCTRL 24>;
+       assigned-clock-parents = <&sys_clkin_ck>;
+};
+
+/*
+ * As uart1 is wired to mdm6600 with rts and cts, we can use the cts pin for
+ * uart1 wakeirq.
+ */
+&uart1 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&uart1_pins>;
+       interrupts-extended = <&wakeupgen GIC_SPI 72 IRQ_TYPE_LEVEL_HIGH
+                              &omap4_pmx_core 0xfc>;
+};
+
+&uart3 {
+       interrupts-extended = <&wakeupgen GIC_SPI 74 IRQ_TYPE_LEVEL_HIGH
+                              &omap4_pmx_core 0x17c>;
+};
+
+&uart4 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&uart4_pins>;
+
+       bluetooth {
+               compatible = "ti,wl1285-st";
+               enable-gpios = <&gpio6 14 GPIO_ACTIVE_HIGH>; /* gpio 174 */
+               max-speed = <3686400>;
+       };
+};
+
+&usbhsohci {
+       phys = <&fsusb1_phy>;
+       phy-names = "usb";
+};
+
+&usbhsehci {
+       phys = <&hsusb2_phy>;
+};
+
+&usbhshost {
+       port1-mode = "ohci-phy-4pin-dpdm";
+       port2-mode = "ehci-tll";
+};
+
+/* Internal UTMI+ PHY used for OTG, CPCAP ULPI PHY for detection and charger */
+&usb_otg_hs {
+       interface-type = <1>;
+       mode = <3>;
+
+       /*
+        * Max 300 mA steps based on similar PMIC MC13783UG.pdf "Table 10-4.
+        * VBUS Regulator Main Characteristics". Binding uses 2 mA units.
+        */
+       power = <150>;
+};
+
+&i2c4 {
+       ak8975: magnetometer@c {
+               compatible = "asahi-kasei,ak8975";
+               reg = <0x0c>;
+
+               vdd-supply = <&vhvio>;
+
+               interrupt-parent = <&gpio6>;
+               interrupts = <15 IRQ_TYPE_EDGE_RISING>; /* gpio175 */
+
+               rotation-matrix = "-1", "0", "0",
+                                 "0", "1", "0",
+                                 "0", "0", "-1";
+
+       };
+
+       lis3dh: accelerometer@18 {
+               compatible = "st,lis3dh-accel";
+               reg = <0x18>;
+
+               vdd-supply = <&vhvio>;
+
+               interrupt-parent = <&gpio2>;
+               interrupts = <2 IRQ_TYPE_EDGE_BOTH>; /* gpio34 */
+
+               rotation-matrix = "0", "-1", "0",
+                                 "1", "0", "0",
+                                 "0", "0", "1";
+       };
+};
+
+&mcbsp2 {
+       #sound-dai-cells = <0>;
+       pinctrl-names = "default";
+       pinctrl-0 = <&mcbsp2_pins>;
+       status = "okay";
+
+       mcbsp2_port: port {
+               cpu_dai2: endpoint {
+                       dai-format = "i2s";
+                       remote-endpoint = <&cpcap_audio_codec0>;
+                       frame-master = <&cpcap_audio_codec0>;
+                       bitclock-master = <&cpcap_audio_codec0>;
+               };
+       };
+};
+
+&mcbsp3 {
+       #sound-dai-cells = <0>;
+       pinctrl-names = "default";
+       pinctrl-0 = <&mcbsp3_pins>;
+       status = "okay";
+
+       mcbsp3_port: port {
+               cpu_dai3: endpoint {
+                       dai-format = "dsp_a";
+                       frame-master = <&cpcap_audio_codec1>;
+                       bitclock-master = <&cpcap_audio_codec1>;
+                       remote-endpoint = <&cpcap_audio_codec1>;
+               };
+       };
+};
+
+&cpcap_audio_codec0 {
+       remote-endpoint = <&cpu_dai2>;
+};
+
+&cpcap_audio_codec1 {
+       remote-endpoint = <&cpu_dai3>;
+};
index ba39740..7fda40a 100644 (file)
                                regulator-enable-ramp-delay = <216>;
                        };
                };
+
+               mt6323keys: mt6323keys {
+                       compatible = "mediatek,mt6323-keys";
+                       mediatek,long-press-mode = <1>;
+                       power-off-time-sec = <0>;
+
+                       power {
+                               linux,keycodes = <116>;
+                               wakeup-source;
+                       };
+
+                       home {
+                               linux,keycodes = <114>;
+                       };
+               };
+
+               codec: mt6397codec {
+                       compatible = "mediatek,mt6397-codec";
+               };
+
+               power-controller {
+                       compatible = "mediatek,mt6323-pwrc";
+               };
+
+               rtc {
+                       compatible = "mediatek,mt6323-rtc";
+               };
        };
 };
index d134ce1..5672325 100644 (file)
                interrupts = <17 IRQ_TYPE_EDGE_RISING>; /* gpio 177 */
        };
 };
+
+&uart2 {
+       bluetooth {
+               compatible = "ti,wl1835-st";
+               enable-gpios = <&gpio5 9 GPIO_ACTIVE_HIGH>; /* gpio 137 */
+               max-speed = <300000>;
+       };
+};
index 9ca1d0f..df6ba12 100644 (file)
                interrupts = <8 IRQ_TYPE_EDGE_RISING>; /* gpio 136 */
        };
 };
+
+&uart2 {
+       bluetooth {
+               compatible = "ti,wl1835-st";
+               enable-gpios = <&gpio5 9 GPIO_ACTIVE_HIGH>; /* gpio 137 */
+               max-speed = <300000>;
+       };
+};
index 6365988..a638e05 100644 (file)
        };
 };
 
+/* RNG not directly accessible on n900, see omap3-rom-rng instead */
+&rng_target {
+       status = "disabled";
+};
+
 &usb_otg_hs {
        interface-type = <0>;
        usb-phy = <&usb2_phy>;
index 4043ecb..5698a3e 100644 (file)
@@ -8,6 +8,7 @@
  * kind, whether express or implied.
  */
 
+#include <dt-bindings/bus/ti-sysc.h>
 #include <dt-bindings/gpio/gpio.h>
 #include <dt-bindings/interrupt-controller/irq.h>
 #include <dt-bindings/pinctrl/omap.h>
                        status = "disabled";
                };
 
+               /* Likely needs to be tagged disabled on HS devices */
+               rng_target: target-module@480a0000 {
+                       compatible = "ti,sysc-omap2", "ti,sysc";
+                       reg = <0x480a003c 0x4>,
+                             <0x480a0040 0x4>,
+                             <0x480a0044 0x4>;
+                       reg-names = "rev", "sysc", "syss";
+                       ti,sysc-mask = <(SYSC_OMAP2_AUTOIDLE)>;
+                       ti,sysc-sidle = <SYSC_IDLE_FORCE>,
+                                       <SYSC_IDLE_NO>;
+                       ti,syss-mask = <1>;
+                       clocks = <&rng_ick>;
+                       clock-names = "ick";
+                       #address-cells = <1>;
+                       #size-cells = <1>;
+                       ranges = <0 0x480a0000 0x2000>;
+
+                       rng: rng@0 {
+                               compatible = "ti,omap2-rng";
+                               reg = <0x0 0x2000>;
+                               interrupts = <52>;
+                       };
+               };
+
                mcbsp2: mcbsp@49022000 {
                        compatible = "ti,omap3-mcbsp";
                        reg = <0x49022000 0xff>,
index 5e9d1af..21079cd 100644 (file)
                         <&gpt10_ick>, <&mcbsp5_ick>, <&mcbsp1_ick>,
                         <&omapctrl_ick>, <&aes2_ick>, <&sha12_ick>, <&icr_ick>,
                         <&des2_ick>, <&mspro_ick>, <&mailboxes_ick>,
-                        <&mspro_fck>;
+                        <&rng_ick>, <&mspro_fck>;
        };
 };
diff --git a/arch/arm/boot/dts/omap4-droid-bionic-xt875.dts b/arch/arm/boot/dts/omap4-droid-bionic-xt875.dts
new file mode 100644 (file)
index 0000000..ba5c35b
--- /dev/null
@@ -0,0 +1,9 @@
+// SPDX-License-Identifier: GPL-2.0-only
+/dts-v1/;
+
+#include "motorola-mapphone-common.dtsi"
+
+/ {
+       model = "Motorola Droid Bionic XT875";
+       compatible = "motorola,droid-bionic", "ti,omap4430", "ti,omap4";
+};
index a40fe8d..c0d2fd9 100644 (file)
@@ -1,784 +1,9 @@
 // SPDX-License-Identifier: GPL-2.0-only
 /dts-v1/;
 
-#include <dt-bindings/input/input.h>
-#include "omap443x.dtsi"
-#include "motorola-cpcap-mapphone.dtsi"
+#include "motorola-mapphone-common.dtsi"
 
 / {
        model = "Motorola Droid 4 XT894";
        compatible = "motorola,droid4", "ti,omap4430", "ti,omap4";
-
-       chosen {
-               stdout-path = &uart3;
-       };
-
-       aliases {
-               display0 = &lcd0;
-               display1 = &hdmi0;
-       };
-
-       /*
-        * We seem to have only 1021 MB accessible, 1021 - 1022 is locked,
-        * then 1023 - 1024 seems to contain mbm.
-        */
-       memory {
-               device_type = "memory";
-               reg = <0x80000000 0x3fd00000>;  /* 1021 MB */
-       };
-
-       /* Poweroff GPIO probably connected to CPCAP */
-       gpio-poweroff {
-               compatible = "gpio-poweroff";
-               pinctrl-0 = <&poweroff_gpio>;
-               pinctrl-names = "default";
-               gpios = <&gpio2 18 GPIO_ACTIVE_LOW>;    /* gpio50 */
-       };
-
-       hdmi0: connector {
-               compatible = "hdmi-connector";
-               pinctrl-0 = <&hdmi_hpd_gpio>;
-               pinctrl-names = "default";
-               label = "hdmi";
-               type = "d";
-
-               hpd-gpios = <&gpio2 31 GPIO_ACTIVE_HIGH>;       /* gpio63 */
-
-               port {
-                       hdmi_connector_in: endpoint {
-                               remote-endpoint = <&hdmi_out>;
-                       };
-               };
-       };
-
-       /*
-        * HDMI 5V regulator probably sourced from battery. Let's keep
-        * keep this as always enabled for HDMI to work until we've
-        * figured what the encoder chip is.
-        */
-       hdmi_regulator: regulator-hdmi {
-               compatible = "regulator-fixed";
-               regulator-name = "hdmi";
-               regulator-min-microvolt = <5000000>;
-               regulator-max-microvolt = <5000000>;
-               gpio = <&gpio2 27 GPIO_ACTIVE_HIGH>;    /* gpio59 */
-               enable-active-high;
-               regulator-always-on;
-       };
-
-       /* FS USB Host PHY on port 1 for mdm6600 */
-       fsusb1_phy: usb-phy@1 {
-               compatible = "motorola,mapphone-mdm6600";
-               pinctrl-0 = <&usb_mdm6600_pins>;
-               pinctrl-names = "default";
-               enable-gpios = <&gpio3 31 GPIO_ACTIVE_LOW>;     /* gpio_95 */
-               power-gpios = <&gpio2 22 GPIO_ACTIVE_HIGH>;     /* gpio_54 */
-               reset-gpios = <&gpio2 17 GPIO_ACTIVE_HIGH>;     /* gpio_49 */
-               /* mode: gpio_148 gpio_149 */
-               motorola,mode-gpios = <&gpio5 20 GPIO_ACTIVE_HIGH>,
-                                     <&gpio5 21 GPIO_ACTIVE_HIGH>;
-               /* cmd: gpio_103 gpio_104 gpio_142 */
-               motorola,cmd-gpios = <&gpio4 7 GPIO_ACTIVE_HIGH>,
-                                    <&gpio4 8 GPIO_ACTIVE_HIGH>,
-                                    <&gpio5 14 GPIO_ACTIVE_HIGH>;
-               /* status: gpio_52 gpio_53 gpio_55 */
-               motorola,status-gpios = <&gpio2 20 GPIO_ACTIVE_HIGH>,
-                                       <&gpio2 21 GPIO_ACTIVE_HIGH>,
-                                       <&gpio2 23 GPIO_ACTIVE_HIGH>;
-               #phy-cells = <0>;
-       };
-
-       /* HS USB host TLL nop-phy on port 2 for w3glte */
-       hsusb2_phy: usb-phy@2 {
-               compatible = "usb-nop-xceiv";
-               #phy-cells = <0>;
-       };
-
-       /* LCD regulator from sw5 source */
-       lcd_regulator: regulator-lcd {
-               compatible = "regulator-fixed";
-               regulator-name = "lcd";
-               regulator-min-microvolt = <5050000>;
-               regulator-max-microvolt = <5050000>;
-               gpio = <&gpio4 0 GPIO_ACTIVE_HIGH>;     /* gpio96 */
-               enable-active-high;
-               vin-supply = <&sw5>;
-       };
-
-       /* This is probably coming straight from the battery.. */
-       wl12xx_vmmc: regulator-wl12xx {
-               compatible = "regulator-fixed";
-               regulator-name = "vwl1271";
-               regulator-min-microvolt = <1650000>;
-               regulator-max-microvolt = <1650000>;
-               gpio = <&gpio3 30 GPIO_ACTIVE_HIGH>;    /* gpio94 */
-               startup-delay-us = <70000>;
-               enable-active-high;
-       };
-
-       gpio_keys {
-               compatible = "gpio-keys";
-
-               volume_down {
-                       label = "Volume Down";
-                       gpios = <&gpio5 26 GPIO_ACTIVE_LOW>; /* gpio154 */
-                       linux,code = <KEY_VOLUMEDOWN>;
-                       linux,can-disable;
-                       /* Value above 7.95ms for no GPIO hardware debounce */
-                       debounce-interval = <10>;
-               };
-
-               slider {
-                       label = "Keypad Slide";
-                       gpios = <&gpio4 26 GPIO_ACTIVE_HIGH>; /* gpio122 */
-                       linux,input-type = <EV_SW>;
-                       linux,code = <SW_KEYPAD_SLIDE>;
-                       linux,can-disable;
-                       /* Value above 7.95ms for no GPIO hardware debounce */
-                       debounce-interval = <10>;
-               };
-       };
-
-       soundcard {
-               compatible = "audio-graph-card";
-               label = "Droid 4 Audio";
-
-               simple-graph-card,widgets =
-                       "Speaker", "Earpiece",
-                       "Speaker", "Loudspeaker",
-                       "Headphone", "Headphone Jack",
-                       "Microphone", "Internal Mic";
-
-               simple-graph-card,routing =
-                       "Earpiece", "EP",
-                       "Loudspeaker", "SPKR",
-                       "Headphone Jack", "HSL",
-                       "Headphone Jack", "HSR",
-                       "MICR", "Internal Mic";
-
-               dais = <&mcbsp2_port>, <&mcbsp3_port>;
-       };
-
-       pwm8: dmtimer-pwm-8 {
-               pinctrl-names = "default";
-               pinctrl-0 = <&vibrator_direction_pin>;
-
-               compatible = "ti,omap-dmtimer-pwm";
-               #pwm-cells = <3>;
-               ti,timers = <&timer8>;
-               ti,clock-source = <0x01>;
-       };
-
-       pwm9: dmtimer-pwm-9 {
-               pinctrl-names = "default";
-               pinctrl-0 = <&vibrator_enable_pin>;
-
-               compatible = "ti,omap-dmtimer-pwm";
-               #pwm-cells = <3>;
-               ti,timers = <&timer9>;
-               ti,clock-source = <0x01>;
-       };
-
-       vibrator {
-               compatible = "pwm-vibrator";
-               pwms = <&pwm9 0 10000000 0>, <&pwm8 0 10000000 0>;
-               pwm-names = "enable", "direction";
-               direction-duty-cycle-ns = <10000000>;
-       };
-};
-
-&dss {
-       status = "okay";
-};
-
-&dsi1 {
-       status = "okay";
-       vdd-supply = <&vcsi>;
-
-       port {
-               dsi1_out_ep: endpoint {
-                       remote-endpoint = <&lcd0_in>;
-                       lanes = <0 1 2 3 4 5>;
-               };
-       };
-
-       lcd0: display {
-               compatible = "panel-dsi-cm";
-               label = "lcd0";
-               vddi-supply = <&lcd_regulator>;
-               reset-gpios = <&gpio4 5 GPIO_ACTIVE_HIGH>;      /* gpio101 */
-
-               width-mm = <50>;
-               height-mm = <89>;
-
-               panel-timing {
-                       clock-frequency = <0>;          /* Calculated by dsi */
-
-                       hback-porch = <2>;
-                       hactive = <540>;
-                       hfront-porch = <0>;
-                       hsync-len = <2>;
-
-                       vback-porch = <1>;
-                       vactive = <960>;
-                       vfront-porch = <0>;
-                       vsync-len = <1>;
-
-                       hsync-active = <0>;
-                       vsync-active = <0>;
-                       de-active = <1>;
-                       pixelclk-active = <1>;
-               };
-
-               port {
-                       lcd0_in: endpoint {
-                               remote-endpoint = <&dsi1_out_ep>;
-                       };
-               };
-       };
-};
-
-&hdmi {
-       status = "okay";
-       pinctrl-0 = <&dss_hdmi_pins>;
-       pinctrl-names = "default";
-       vdda-supply = <&vdac>;
-
-       port {
-               hdmi_out: endpoint {
-                       remote-endpoint = <&hdmi_connector_in>;
-                       lanes = <1 0 3 2 5 4 7 6>;
-               };
-       };
-};
-
-&i2c1 {
-       tmp105@48 {
-               compatible = "ti,tmp105";
-               reg = <0x48>;
-               pinctrl-0 = <&tmp105_irq>;
-               pinctrl-names = "default";
-               /* kpd_row0.gpio_178 */
-               interrupts-extended = <&gpio6 18 IRQ_TYPE_EDGE_FALLING
-                                      &omap4_pmx_core 0x14e>;
-               interrupt-names = "irq", "wakeup";
-               wakeup-source;
-       };
-};
-
-&keypad {
-       keypad,num-rows = <8>;
-       keypad,num-columns = <8>;
-       linux,keymap = <
-
-       /* Row 1 */
-       MATRIX_KEY(0, 2, KEY_1)
-       MATRIX_KEY(0, 6, KEY_2)
-       MATRIX_KEY(2, 3, KEY_3)
-       MATRIX_KEY(0, 7, KEY_4)
-       MATRIX_KEY(0, 4, KEY_5)
-       MATRIX_KEY(5, 5, KEY_6)
-       MATRIX_KEY(0, 1, KEY_7)
-       MATRIX_KEY(0, 5, KEY_8)
-       MATRIX_KEY(0, 0, KEY_9)
-       MATRIX_KEY(1, 6, KEY_0)
-
-       /* Row 2 */
-       MATRIX_KEY(3, 4, KEY_APOSTROPHE)
-       MATRIX_KEY(7, 6, KEY_Q)
-       MATRIX_KEY(7, 7, KEY_W)
-       MATRIX_KEY(7, 2, KEY_E)
-       MATRIX_KEY(1, 0, KEY_R)
-       MATRIX_KEY(4, 4, KEY_T)
-       MATRIX_KEY(1, 2, KEY_Y)
-       MATRIX_KEY(6, 7, KEY_U)
-       MATRIX_KEY(2, 2, KEY_I)
-       MATRIX_KEY(5, 6, KEY_O)
-       MATRIX_KEY(3, 7, KEY_P)
-       MATRIX_KEY(6, 5, KEY_BACKSPACE)
-
-       /* Row 3 */
-       MATRIX_KEY(5, 4, KEY_TAB)
-       MATRIX_KEY(5, 7, KEY_A)
-       MATRIX_KEY(2, 7, KEY_S)
-       MATRIX_KEY(7, 0, KEY_D)
-       MATRIX_KEY(2, 6, KEY_F)
-       MATRIX_KEY(6, 2, KEY_G)
-       MATRIX_KEY(6, 6, KEY_H)
-       MATRIX_KEY(1, 4, KEY_J)
-       MATRIX_KEY(3, 1, KEY_K)
-       MATRIX_KEY(2, 1, KEY_L)
-       MATRIX_KEY(4, 6, KEY_ENTER)
-
-       /* Row 4 */
-       MATRIX_KEY(3, 6, KEY_LEFTSHIFT)         /* KEY_CAPSLOCK */
-       MATRIX_KEY(6, 1, KEY_Z)
-       MATRIX_KEY(7, 4, KEY_X)
-       MATRIX_KEY(5, 1, KEY_C)
-       MATRIX_KEY(1, 7, KEY_V)
-       MATRIX_KEY(2, 4, KEY_B)
-       MATRIX_KEY(4, 1, KEY_N)
-       MATRIX_KEY(1, 1, KEY_M)
-       MATRIX_KEY(3, 5, KEY_COMMA)
-       MATRIX_KEY(5, 2, KEY_DOT)
-       MATRIX_KEY(6, 3, KEY_UP)
-       MATRIX_KEY(7, 3, KEY_OK)
-
-       /* Row 5 */
-       MATRIX_KEY(2, 5, KEY_LEFTCTRL)          /* KEY_LEFTSHIFT */
-       MATRIX_KEY(4, 5, KEY_LEFTALT)           /* SYM */
-       MATRIX_KEY(6, 0, KEY_MINUS)
-       MATRIX_KEY(4, 7, KEY_EQUAL)
-       MATRIX_KEY(1, 5, KEY_SPACE)
-       MATRIX_KEY(3, 2, KEY_SLASH)
-       MATRIX_KEY(4, 3, KEY_LEFT)
-       MATRIX_KEY(5, 3, KEY_DOWN)
-       MATRIX_KEY(3, 3, KEY_RIGHT)
-
-       /* Side buttons, KEY_VOLUMEDOWN and KEY_PWER are on CPCAP? */
-       MATRIX_KEY(5, 0, KEY_VOLUMEUP)
-       >;
-};
-
-&mmc1 {
-       vmmc-supply = <&vwlan2>;
-       bus-width = <4>;
-       cd-gpios = <&gpio6 16 GPIO_ACTIVE_LOW>; /* gpio176 */
-};
-
-&mmc2 {
-       vmmc-supply = <&vsdio>;
-       bus-width = <8>;
-       ti,non-removable;
-};
-
-&mmc3 {
-       vmmc-supply = <&wl12xx_vmmc>;
-       /* uart2_tx.sdmmc3_dat1 pad as wakeirq */
-       interrupts-extended = <&wakeupgen GIC_SPI 94 IRQ_TYPE_LEVEL_HIGH
-                              &omap4_pmx_core 0xde>;
-       interrupt-names = "irq", "wakeup";
-       non-removable;
-       bus-width = <4>;
-       cap-power-off-card;
-       keep-power-in-suspend;
-
-       #address-cells = <1>;
-       #size-cells = <0>;
-       wlcore: wlcore@2 {
-               compatible = "ti,wl1285", "ti,wl1283";
-               reg = <2>;
-               /* gpio_100 with gpmc_wait2 pad as wakeirq */
-               interrupts-extended = <&gpio4 4 IRQ_TYPE_LEVEL_HIGH>,
-                                     <&omap4_pmx_core 0x4e>;
-               interrupt-names = "irq", "wakeup";
-               ref-clock-frequency = <26000000>;
-               tcxo-clock-frequency = <26000000>;
-       };
-};
-
-&i2c1 {
-       led-controller@38 {
-               compatible = "ti,lm3532";
-               #address-cells = <1>;
-               #size-cells = <0>;
-               reg = <0x38>;
-
-               enable-gpios = <&gpio6 12 GPIO_ACTIVE_HIGH>;
-
-               ramp-up-us = <1024>;
-               ramp-down-us = <8193>;
-
-               led@0 {
-                       reg = <0>;
-                       led-sources = <2>;
-                       ti,led-mode = <0>;
-                       label = ":backlight";
-                       linux,default-trigger = "backlight";
-               };
-
-               led@1 {
-                       reg = <1>;
-                       led-sources = <1>;
-                       ti,led-mode = <0>;
-                       label = ":kbd_backlight";
-               };
-       };
-};
-
-&i2c2 {
-       touchscreen@4a {
-               compatible = "atmel,maxtouch";
-               reg = <0x4a>;
-               pinctrl-names = "default";
-               pinctrl-0 = <&touchscreen_pins>;
-
-               reset-gpios = <&gpio6 13 GPIO_ACTIVE_HIGH>; /* gpio173 */
-
-               /* gpio_183 with sys_nirq2 pad as wakeup */
-               interrupts-extended = <&gpio6 23 IRQ_TYPE_EDGE_FALLING>,
-                                     <&omap4_pmx_core 0x160>;
-               interrupt-names = "irq", "wakeup";
-               wakeup-source;
-       };
-
-       isl29030@44 {
-               compatible = "isil,isl29030";
-               reg = <0x44>;
-
-               pinctrl-names = "default";
-               pinctrl-0 = <&als_proximity_pins>;
-
-               interrupt-parent = <&gpio6>;
-               interrupts = <17 IRQ_TYPE_LEVEL_LOW>; /* gpio177 */
-       };
-};
-
-&omap4_pmx_core {
-
-       /* hdmi_hpd.gpio_63 */
-       hdmi_hpd_gpio: pinmux_hdmi_hpd_pins {
-               pinctrl-single,pins = <
-               OMAP4_IOPAD(0x098, PIN_INPUT | MUX_MODE3)
-               >;
-       };
-
-       /* hdmi_cec.hdmi_cec, hdmi_scl.hdmi_scl, hdmi_sda.hdmi_sda */
-       dss_hdmi_pins: pinmux_dss_hdmi_pins {
-               pinctrl-single,pins = <
-               OMAP4_IOPAD(0x09a, PIN_INPUT | MUX_MODE0)
-               OMAP4_IOPAD(0x09c, PIN_INPUT | MUX_MODE0)
-               OMAP4_IOPAD(0x09e, PIN_INPUT | MUX_MODE0)
-               >;
-       };
-
-       /* gpmc_ncs0.gpio_50 */
-       poweroff_gpio: pinmux_poweroff_pins {
-               pinctrl-single,pins = <
-               OMAP4_IOPAD(0x074, PIN_OUTPUT_PULLUP | MUX_MODE3)
-               >;
-       };
-
-       /* kpd_row0.gpio_178 */
-       tmp105_irq: pinmux_tmp105_irq {
-               pinctrl-single,pins = <
-               OMAP4_IOPAD(0x18e, PIN_INPUT_PULLUP | MUX_MODE3)
-               >;
-       };
-
-       usb_gpio_mux_sel1: pinmux_usb_gpio_mux_sel1_pins {
-               /* gpio_60 */
-               pinctrl-single,pins = <
-               OMAP4_IOPAD(0x088, PIN_OUTPUT | MUX_MODE3)
-               >;
-       };
-
-       touchscreen_pins: pinmux_touchscreen_pins {
-               pinctrl-single,pins = <
-               OMAP4_IOPAD(0x180, PIN_OUTPUT | MUX_MODE3)
-               OMAP4_IOPAD(0x1a0, PIN_INPUT_PULLUP | MUX_MODE3)
-               >;
-       };
-
-       als_proximity_pins: pinmux_als_proximity_pins {
-               pinctrl-single,pins = <
-               OMAP4_IOPAD(0x18c, PIN_INPUT_PULLUP | MUX_MODE3)
-               >;
-       };
-
-       usb_mdm6600_pins: pinmux_usb_mdm6600_pins {
-               pinctrl-single,pins = <
-               /* enable 0x4a1000d8 usbb1_ulpitll_dat7.gpio_95 ag16 */
-               OMAP4_IOPAD(0x0d8, PIN_INPUT | MUX_MODE3)
-
-               /* power 0x4a10007c gpmc_nwp.gpio_54 c25 */
-               OMAP4_IOPAD(0x07c, PIN_OUTPUT | MUX_MODE3)
-
-               /* reset 0x4a100072 gpmc_a25.gpio_49 d20 */
-               OMAP4_IOPAD(0x072, PIN_OUTPUT | MUX_MODE3)
-
-               /* mode0/bpwake 0x4a10014e sdmmc5_dat1.gpio_148 af4 */
-               OMAP4_IOPAD(0x14e, PIN_OUTPUT | MUX_MODE3)
-
-               /* mode1/apwake 0x4a100150 sdmmc5_dat2.gpio_149 ag3 */
-               OMAP4_IOPAD(0x150, PIN_OFF_OUTPUT_LOW | PIN_INPUT | MUX_MODE3)
-
-               /* status0 0x4a10007e gpmc_clk.gpio_55 b22 */
-               OMAP4_IOPAD(0x07e, PIN_INPUT | MUX_MODE3)
-
-               /* status1 0x4a10007a gpmc_ncs3.gpio_53 c22 */
-               OMAP4_IOPAD(0x07a, PIN_INPUT | MUX_MODE3)
-
-               /* status2 0x4a100078 gpmc_ncs2.gpio_52 d21 */
-               OMAP4_IOPAD(0x078, PIN_INPUT | MUX_MODE3)
-
-               /* cmd0 0x4a100094 gpmc_ncs6.gpio_103 c24 */
-               OMAP4_IOPAD(0x094, PIN_OUTPUT | MUX_MODE3)
-
-               /* cmd1 0x4a100096 gpmc_ncs7.gpio_104 d24 */
-               OMAP4_IOPAD(0x096, PIN_OUTPUT | MUX_MODE3)
-
-               /* cmd2 0x4a100142 uart3_rts_sd.gpio_142 f28 */
-               OMAP4_IOPAD(0x142, PIN_OUTPUT | MUX_MODE3)
-               >;
-       };
-
-       usb_ulpi_pins: pinmux_usb_ulpi_pins {
-               pinctrl-single,pins = <
-               OMAP4_IOPAD(0x196, MUX_MODE7)
-               OMAP4_IOPAD(0x198, MUX_MODE7)
-               OMAP4_IOPAD(0x1b2, PIN_INPUT_PULLUP | MUX_MODE0)
-               OMAP4_IOPAD(0x1b4, PIN_INPUT_PULLUP | MUX_MODE0)
-               OMAP4_IOPAD(0x1b6, PIN_INPUT_PULLUP | MUX_MODE0)
-               OMAP4_IOPAD(0x1b8, PIN_INPUT_PULLUP | MUX_MODE0)
-               OMAP4_IOPAD(0x1ba, PIN_INPUT_PULLUP | MUX_MODE0)
-               OMAP4_IOPAD(0x1bc, PIN_INPUT_PULLUP | MUX_MODE0)
-               OMAP4_IOPAD(0x1be, PIN_INPUT_PULLUP | MUX_MODE0)
-               OMAP4_IOPAD(0x1c0, PIN_INPUT_PULLUP | MUX_MODE0)
-               OMAP4_IOPAD(0x1c2, PIN_INPUT_PULLUP | MUX_MODE0)
-               OMAP4_IOPAD(0x1c4, PIN_INPUT_PULLUP | MUX_MODE0)
-               OMAP4_IOPAD(0x1c6, PIN_INPUT_PULLUP | MUX_MODE0)
-               OMAP4_IOPAD(0x1c8, PIN_INPUT_PULLUP | MUX_MODE0)
-               >;
-       };
-
-       /* usb0_otg_dp and usb0_otg_dm */
-       usb_utmi_pins: pinmux_usb_utmi_pins {
-               pinctrl-single,pins = <
-               OMAP4_IOPAD(0x196, PIN_INPUT | MUX_MODE0)
-               OMAP4_IOPAD(0x198, PIN_INPUT | MUX_MODE0)
-               OMAP4_IOPAD(0x1b2, PIN_INPUT_PULLUP | MUX_MODE7)
-               OMAP4_IOPAD(0x1b4, PIN_INPUT_PULLUP | MUX_MODE7)
-               OMAP4_IOPAD(0x1b6, PIN_INPUT_PULLUP | MUX_MODE7)
-               OMAP4_IOPAD(0x1b8, PIN_INPUT_PULLUP | MUX_MODE7)
-               OMAP4_IOPAD(0x1ba, PIN_INPUT_PULLUP | MUX_MODE7)
-               OMAP4_IOPAD(0x1bc, PIN_INPUT_PULLUP | MUX_MODE7)
-               OMAP4_IOPAD(0x1be, PIN_INPUT_PULLUP | MUX_MODE7)
-               OMAP4_IOPAD(0x1c0, PIN_INPUT_PULLUP | MUX_MODE7)
-               OMAP4_IOPAD(0x1c2, PIN_INPUT_PULLUP | MUX_MODE7)
-               OMAP4_IOPAD(0x1c4, PIN_INPUT_PULLUP | MUX_MODE7)
-               OMAP4_IOPAD(0x1c6, PIN_INPUT_PULLUP | MUX_MODE7)
-               OMAP4_IOPAD(0x1c8, PIN_INPUT_PULLUP | MUX_MODE7)
-               >;
-       };
-
-       /*
-        * Note that the v3.0.8 stock userspace dynamically remuxes uart1
-        * rts pin probably for PM purposes to PIN_INPUT_PULLUP | MUX_MODE7
-        * when not used. If needed, we can add rts pin remux later based
-        * on power measurements.
-        */
-       uart1_pins: pinmux_uart1_pins {
-               pinctrl-single,pins = <
-               /* 0x4a10013c mcspi1_cs2.uart1_cts ag23 */
-               OMAP4_IOPAD(0x13c, PIN_INPUT_PULLUP | MUX_MODE1)
-
-               /* 0x4a10013e mcspi1_cs3.uart1_rts ah23 */
-               OMAP4_IOPAD(0x13e, MUX_MODE1)
-
-               /* 0x4a100140 uart3_cts_rctx.uart1_tx f27 */
-               OMAP4_IOPAD(0x140, PIN_OUTPUT | MUX_MODE1)
-
-               /* 0x4a1001ca dpm_emu14.uart1_rx aa3 */
-               OMAP4_IOPAD(0x1ca, PIN_INPUT_PULLUP | MUX_MODE2)
-               >;
-       };
-
-       /* uart3_tx_irtx and uart3_rx_irrx */
-       uart3_pins: pinmux_uart3_pins {
-               pinctrl-single,pins = <
-               OMAP4_IOPAD(0x196, MUX_MODE7)
-               OMAP4_IOPAD(0x198, MUX_MODE7)
-               OMAP4_IOPAD(0x1b2, PIN_INPUT_PULLUP | MUX_MODE7)
-               OMAP4_IOPAD(0x1b4, PIN_INPUT_PULLUP | MUX_MODE7)
-               OMAP4_IOPAD(0x1b6, PIN_INPUT_PULLUP | MUX_MODE7)
-               OMAP4_IOPAD(0x1b8, PIN_INPUT_PULLUP | MUX_MODE7)
-               OMAP4_IOPAD(0x1ba, MUX_MODE2)
-               OMAP4_IOPAD(0x1bc, PIN_INPUT | MUX_MODE2)
-               OMAP4_IOPAD(0x1be, PIN_INPUT_PULLUP | MUX_MODE7)
-               OMAP4_IOPAD(0x1c0, PIN_INPUT_PULLUP | MUX_MODE7)
-               OMAP4_IOPAD(0x1c2, PIN_INPUT_PULLUP | MUX_MODE7)
-               OMAP4_IOPAD(0x1c4, PIN_INPUT_PULLUP | MUX_MODE7)
-               OMAP4_IOPAD(0x1c6, PIN_INPUT_PULLUP | MUX_MODE7)
-               OMAP4_IOPAD(0x1c8, PIN_INPUT_PULLUP | MUX_MODE7)
-               >;
-       };
-
-       uart4_pins: pinmux_uart4_pins {
-               pinctrl-single,pins = <
-               OMAP4_IOPAD(0x15c, PIN_INPUT | MUX_MODE0)               /* uart4_rx */
-               OMAP4_IOPAD(0x15e, PIN_OUTPUT | MUX_MODE0)              /* uart4_tx */
-               OMAP4_IOPAD(0x110, PIN_INPUT_PULLUP | MUX_MODE5)        /* uart4_cts */
-               OMAP4_IOPAD(0x112, PIN_OUTPUT_PULLUP | MUX_MODE5)       /* uart4_rts */
-               >;
-       };
-
-       mcbsp2_pins: pinmux_mcbsp2_pins {
-               pinctrl-single,pins = <
-               OMAP4_IOPAD(0x0f6, PIN_INPUT | MUX_MODE0)       /* abe_mcbsp2_clkx */
-               OMAP4_IOPAD(0x0f8, PIN_INPUT | MUX_MODE0)       /* abe_mcbsp2_dr */
-               OMAP4_IOPAD(0x0fa, PIN_OUTPUT | MUX_MODE0)      /* abe_mcbsp2_dx */
-               OMAP4_IOPAD(0x0fc, PIN_INPUT | MUX_MODE0)       /* abe_mcbsp2_fsx */
-               >;
-       };
-
-       mcbsp3_pins: pinmux_mcbsp3_pins {
-               pinctrl-single,pins = <
-               OMAP4_IOPAD(0x106, PIN_INPUT | MUX_MODE1)       /* abe_mcbsp3_dr */
-               OMAP4_IOPAD(0x108, PIN_OUTPUT | MUX_MODE1)      /* abe_mcbsp3_dx */
-               OMAP4_IOPAD(0x10a, PIN_INPUT | MUX_MODE1)       /* abe_mcbsp3_clkx */
-               OMAP4_IOPAD(0x10c, PIN_INPUT | MUX_MODE1)       /* abe_mcbsp3_fsx */
-               >;
-       };
-
-       vibrator_direction_pin: pinmux_vibrator_direction_pin {
-               pinctrl-single,pins = <
-               OMAP4_IOPAD(0x1ce, PIN_OUTPUT | MUX_MODE1)      /* dmtimer8_pwm_evt (gpio_27) */
-               >;
-       };
-
-       vibrator_enable_pin: pinmux_vibrator_enable_pin {
-               pinctrl-single,pins = <
-               OMAP4_IOPAD(0X1d0, PIN_OUTPUT | MUX_MODE1)      /* dmtimer9_pwm_evt (gpio_28) */
-               >;
-       };
-};
-
-&omap4_pmx_wkup {
-       usb_gpio_mux_sel2: pinmux_usb_gpio_mux_sel2_pins {
-               /* gpio_wk0 */
-               pinctrl-single,pins = <
-               OMAP4_IOPAD(0x040, PIN_OUTPUT_PULLDOWN | MUX_MODE3)
-               >;
-       };
-};
-
-/* Configure pwm clock source for timers 8 & 9 */
-&timer8 {
-       assigned-clocks = <&abe_clkctrl OMAP4_TIMER8_CLKCTRL 24>;
-       assigned-clock-parents = <&sys_clkin_ck>;
-};
-
-&timer9 {
-       assigned-clocks = <&l4_per_clkctrl OMAP4_TIMER9_CLKCTRL 24>;
-       assigned-clock-parents = <&sys_clkin_ck>;
-};
-
-/*
- * As uart1 is wired to mdm6600 with rts and cts, we can use the cts pin for
- * uart1 wakeirq.
- */
-&uart1 {
-       pinctrl-names = "default";
-       pinctrl-0 = <&uart1_pins>;
-       interrupts-extended = <&wakeupgen GIC_SPI 72 IRQ_TYPE_LEVEL_HIGH
-                              &omap4_pmx_core 0xfc>;
-};
-
-&uart3 {
-       interrupts-extended = <&wakeupgen GIC_SPI 74 IRQ_TYPE_LEVEL_HIGH
-                              &omap4_pmx_core 0x17c>;
-};
-
-&uart4 {
-       pinctrl-names = "default";
-       pinctrl-0 = <&uart4_pins>;
-
-       bluetooth {
-               compatible = "ti,wl1285-st";
-               enable-gpios = <&gpio6 14 GPIO_ACTIVE_HIGH>; /* gpio 174 */
-               max-speed = <3686400>;
-       };
-};
-
-&usbhsohci {
-       phys = <&fsusb1_phy>;
-       phy-names = "usb";
-};
-
-&usbhsehci {
-       phys = <&hsusb2_phy>;
-};
-
-&usbhshost {
-       port1-mode = "ohci-phy-4pin-dpdm";
-       port2-mode = "ehci-tll";
-};
-
-/* Internal UTMI+ PHY used for OTG, CPCAP ULPI PHY for detection and charger */
-&usb_otg_hs {
-       interface-type = <1>;
-       mode = <3>;
-       power = <50>;
-};
-
-&i2c4 {
-       ak8975: magnetometer@c {
-               compatible = "asahi-kasei,ak8975";
-               reg = <0x0c>;
-
-               vdd-supply = <&vhvio>;
-
-               interrupt-parent = <&gpio6>;
-               interrupts = <15 IRQ_TYPE_EDGE_RISING>; /* gpio175 */
-
-               rotation-matrix = "-1", "0", "0",
-                                 "0", "1", "0",
-                                 "0", "0", "-1";
-
-       };
-
-       lis3dh: accelerometer@18 {
-               compatible = "st,lis3dh-accel";
-               reg = <0x18>;
-
-               vdd-supply = <&vhvio>;
-
-               interrupt-parent = <&gpio2>;
-               interrupts = <2 IRQ_TYPE_EDGE_BOTH>; /* gpio34 */
-
-               rotation-matrix = "0", "-1", "0",
-                                 "1", "0", "0",
-                                 "0", "0", "1";
-       };
-};
-
-&mcbsp2 {
-       #sound-dai-cells = <0>;
-       pinctrl-names = "default";
-       pinctrl-0 = <&mcbsp2_pins>;
-       status = "okay";
-
-       mcbsp2_port: port {
-               cpu_dai2: endpoint {
-                       dai-format = "i2s";
-                       remote-endpoint = <&cpcap_audio_codec0>;
-                       frame-master = <&cpcap_audio_codec0>;
-                       bitclock-master = <&cpcap_audio_codec0>;
-               };
-       };
-};
-
-&mcbsp3 {
-       #sound-dai-cells = <0>;
-       pinctrl-names = "default";
-       pinctrl-0 = <&mcbsp3_pins>;
-       status = "okay";
-
-       mcbsp3_port: port {
-               cpu_dai3: endpoint {
-                       dai-format = "dsp_a";
-                       frame-master = <&cpcap_audio_codec1>;
-                       bitclock-master = <&cpcap_audio_codec1>;
-                       remote-endpoint = <&cpcap_audio_codec1>;
-               };
-       };
-};
-
-&cpcap_audio_codec0 {
-       remote-endpoint = <&cpu_dai2>;
-};
-
-&cpcap_audio_codec1 {
-       remote-endpoint = <&cpu_dai3>;
 };
index 8e6662b..6c892fc 100644 (file)
@@ -86,7 +86,6 @@
 
                target-module@22000 {                   /* 0x40122000, ap 2 02.0 */
                        compatible = "ti,sysc-omap2", "ti,sysc";
-                       ti,hwmods = "mcbsp1";
                        reg = <0x2208c 0x4>;
                        reg-names = "sysc";
                        ti,sysc-mask = <(SYSC_OMAP2_CLOCKACTIVITY |
 
                target-module@24000 {                   /* 0x40124000, ap 4 04.0 */
                        compatible = "ti,sysc-omap2", "ti,sysc";
-                       ti,hwmods = "mcbsp2";
                        reg = <0x2408c 0x4>;
                        reg-names = "sysc";
                        ti,sysc-mask = <(SYSC_OMAP2_CLOCKACTIVITY |
 
                target-module@26000 {                   /* 0x40126000, ap 6 06.0 */
                        compatible = "ti,sysc-omap2", "ti,sysc";
-                       ti,hwmods = "mcbsp3";
                        reg = <0x2608c 0x4>;
                        reg-names = "sysc";
                        ti,sysc-mask = <(SYSC_OMAP2_CLOCKACTIVITY |
 
                target-module@28000 {                   /* 0x40128000, ap 8 08.0 */
                        compatible = "ti,sysc-mcasp", "ti,sysc";
-                       ti,hwmods = "mcasp";
                        reg = <0x28000 0x4>,
                              <0x28004 0x4>;
                        reg-names = "rev", "sysc";
index d60d5e0..83f803b 100644 (file)
 
                target-module@2b000 {                   /* 0x4a0ab000, ap 84 12.0 */
                        compatible = "ti,sysc-omap2", "ti,sysc";
-                       ti,hwmods = "usb_otg_hs";
                        reg = <0x2b400 0x4>,
                              <0x2b404 0x4>,
                              <0x2b408 0x4>;
 
                target-module@74000 {                   /* 0x4a0f4000, ap 27 24.0 */
                        compatible = "ti,sysc-omap4", "ti,sysc";
-                       ti,hwmods = "mailbox";
                        reg = <0x74000 0x4>,
                              <0x74010 0x4>;
                        reg-names = "rev", "sysc";
                        ranges = <0x0 0x6000 0x2000>;
 
                        prm: prm@0 {
-                               compatible = "ti,omap4-prm";
+                               compatible = "ti,omap4-prm", "simple-bus";
                                reg = <0x0 0x2000>;
                                interrupts = <GIC_SPI 11 IRQ_TYPE_LEVEL_HIGH>;
                                #address-cells = <1>;
 
                gpio1_target: target-module@0 {                 /* 0x4a310000, ap 5 14.0 */
                        compatible = "ti,sysc-omap2", "ti,sysc";
-                       ti,hwmods = "gpio1";
                        reg = <0x0 0x4>,
                              <0x10 0x4>,
                              <0x114 0x4>;
 
                target-module@55000 {                   /* 0x48055000, ap 15 0c.0 */
                        compatible = "ti,sysc-omap2", "ti,sysc";
-                       ti,hwmods = "gpio2";
                        reg = <0x55000 0x4>,
                              <0x55010 0x4>,
                              <0x55114 0x4>;
 
                target-module@57000 {                   /* 0x48057000, ap 17 16.0 */
                        compatible = "ti,sysc-omap2", "ti,sysc";
-                       ti,hwmods = "gpio3";
                        reg = <0x57000 0x4>,
                              <0x57010 0x4>,
                              <0x57114 0x4>;
 
                target-module@59000 {                   /* 0x48059000, ap 19 10.0 */
                        compatible = "ti,sysc-omap2", "ti,sysc";
-                       ti,hwmods = "gpio4";
                        reg = <0x59000 0x4>,
                              <0x59010 0x4>,
                              <0x59114 0x4>;
 
                target-module@5b000 {                   /* 0x4805b000, ap 21 12.0 */
                        compatible = "ti,sysc-omap2", "ti,sysc";
-                       ti,hwmods = "gpio5";
                        reg = <0x5b000 0x4>,
                              <0x5b010 0x4>,
                              <0x5b114 0x4>;
 
                target-module@5d000 {                   /* 0x4805d000, ap 23 14.0 */
                        compatible = "ti,sysc-omap2", "ti,sysc";
-                       ti,hwmods = "gpio6";
                        reg = <0x5d000 0x4>,
                              <0x5d010 0x4>,
                              <0x5d114 0x4>;
 
                target-module@96000 {                   /* 0x48096000, ap 37 26.0 */
                        compatible = "ti,sysc-omap2", "ti,sysc";
-                       ti,hwmods = "mcbsp4";
                        reg = <0x9608c 0x4>;
                        reg-names = "sysc";
                        ti,sysc-mask = <(SYSC_OMAP2_CLOCKACTIVITY |
 
                target-module@98000 {                   /* 0x48098000, ap 49 22.0 */
                        compatible = "ti,sysc-omap4", "ti,sysc";
-                       ti,hwmods = "mcspi1";
                        reg = <0x98000 0x4>,
                              <0x98010 0x4>;
                        reg-names = "rev", "sysc";
 
                target-module@9a000 {                   /* 0x4809a000, ap 51 2c.0 */
                        compatible = "ti,sysc-omap4", "ti,sysc";
-                       ti,hwmods = "mcspi2";
                        reg = <0x9a000 0x4>,
                              <0x9a010 0x4>;
                        reg-names = "rev", "sysc";
 
                target-module@b2000 {                   /* 0x480b2000, ap 65 3c.0 */
                        compatible = "ti,sysc-omap2", "ti,sysc";
-                       ti,hwmods = "hdq1w";
                        reg = <0xb2000 0x4>,
                              <0xb2014 0x4>,
                              <0xb2018 0x4>;
 
                target-module@b8000 {                   /* 0x480b8000, ap 69 58.0 */
                        compatible = "ti,sysc-omap4", "ti,sysc";
-                       ti,hwmods = "mcspi3";
                        reg = <0xb8000 0x4>,
                              <0xb8010 0x4>;
                        reg-names = "rev", "sysc";
 
                target-module@ba000 {                   /* 0x480ba000, ap 71 32.0 */
                        compatible = "ti,sysc-omap4", "ti,sysc";
-                       ti,hwmods = "mcspi4";
                        reg = <0xba000 0x4>,
                              <0xba010 0x4>;
                        reg-names = "rev", "sysc";
index 7cc95bc..a0a747b 100644 (file)
                l4_abe: interconnect@40100000 {
                };
 
-               ocmcram: ocmcram@40304000 {
+               ocmcram: sram@40304000 {
                        compatible = "mmio-sram";
                        reg = <0x40304000 0xa000>; /* 40k */
                };
 #include "omap4-l4.dtsi"
 #include "omap4-l4-abe.dtsi"
 #include "omap44xx-clocks.dtsi"
+
+&prm {
+       prm_tesla: prm@400 {
+               compatible = "ti,omap4-prm-inst", "ti,omap-prm-inst";
+               reg = <0x400 0x100>;
+               #reset-cells = <1>;
+       };
+
+       prm_core: prm@700 {
+               compatible = "ti,omap4-prm-inst", "ti,omap-prm-inst";
+               reg = <0x700 0x100>;
+               #reset-cells = <1>;
+       };
+
+       prm_ivahd: prm@f00 {
+               compatible = "ti,omap4-prm-inst", "ti,omap-prm-inst";
+               reg = <0xf00 0x100>;
+               #reset-cells = <1>;
+       };
+
+       prm_device: prm@1b00 {
+               compatible = "ti,omap4-prm-inst", "ti,omap-prm-inst";
+               reg = <0x1b00 0x40>;
+               #reset-cells = <1>;
+       };
+};
index dc9d053..23aa907 100644 (file)
@@ -86,7 +86,6 @@
 
                target-module@22000 {                   /* 0x40122000, ap 2 02.0 */
                        compatible = "ti,sysc-omap2", "ti,sysc";
-                       ti,hwmods = "mcbsp1";
                        reg = <0x2208c 0x4>;
                        reg-names = "sysc";
                        ti,sysc-mask = <(SYSC_OMAP2_CLOCKACTIVITY |
 
                target-module@24000 {                   /* 0x40124000, ap 4 04.0 */
                        compatible = "ti,sysc-omap2", "ti,sysc";
-                       ti,hwmods = "mcbsp2";
                        reg = <0x2408c 0x4>;
                        reg-names = "sysc";
                        ti,sysc-mask = <(SYSC_OMAP2_CLOCKACTIVITY |
 
                target-module@26000 {                   /* 0x40126000, ap 6 06.0 */
                        compatible = "ti,sysc-omap2", "ti,sysc";
-                       ti,hwmods = "mcbsp3";
                        reg = <0x2608c 0x4>;
                        reg-names = "sysc";
                        ti,sysc-mask = <(SYSC_OMAP2_CLOCKACTIVITY |
index 0960348..25aacf1 100644 (file)
 
                target-module@74000 {                   /* 0x4a0f4000, ap 25 04.0 */
                        compatible = "ti,sysc-omap4", "ti,sysc";
-                       ti,hwmods = "mailbox";
                        reg = <0x74000 0x4>,
                              <0x74010 0x4>;
                        reg-names = "rev", "sysc";
 
                target-module@20000 {                   /* 0x48020000, ap 3 04.0 */
                        compatible = "ti,sysc-omap2", "ti,sysc";
-                       ti,hwmods = "uart3";
                        reg = <0x20050 0x4>,
                              <0x20054 0x4>,
                              <0x20058 0x4>;
 
                target-module@51000 {                   /* 0x48051000, ap 45 2e.0 */
                        compatible = "ti,sysc-omap2", "ti,sysc";
-                       ti,hwmods = "gpio7";
                        reg = <0x51000 0x4>,
                              <0x51010 0x4>,
                              <0x51114 0x4>;
 
                target-module@53000 {                   /* 0x48053000, ap 35 36.0 */
                        compatible = "ti,sysc-omap2", "ti,sysc";
-                       ti,hwmods = "gpio8";
                        reg = <0x53000 0x4>,
                              <0x53010 0x4>,
                              <0x53114 0x4>;
 
                target-module@55000 {                   /* 0x48055000, ap 13 0e.0 */
                        compatible = "ti,sysc-omap2", "ti,sysc";
-                       ti,hwmods = "gpio2";
                        reg = <0x55000 0x4>,
                              <0x55010 0x4>,
                              <0x55114 0x4>;
 
                target-module@57000 {                   /* 0x48057000, ap 15 06.0 */
                        compatible = "ti,sysc-omap2", "ti,sysc";
-                       ti,hwmods = "gpio3";
                        reg = <0x57000 0x4>,
                              <0x57010 0x4>,
                              <0x57114 0x4>;
 
                target-module@59000 {                   /* 0x48059000, ap 17 16.0 */
                        compatible = "ti,sysc-omap2", "ti,sysc";
-                       ti,hwmods = "gpio4";
                        reg = <0x59000 0x4>,
                              <0x59010 0x4>,
                              <0x59114 0x4>;
 
                target-module@5b000 {                   /* 0x4805b000, ap 19 1e.0 */
                        compatible = "ti,sysc-omap2", "ti,sysc";
-                       ti,hwmods = "gpio5";
                        reg = <0x5b000 0x4>,
                              <0x5b010 0x4>,
                              <0x5b114 0x4>;
 
                target-module@5d000 {                   /* 0x4805d000, ap 21 26.0 */
                        compatible = "ti,sysc-omap2", "ti,sysc";
-                       ti,hwmods = "gpio6";
                        reg = <0x5d000 0x4>,
                              <0x5d010 0x4>,
                              <0x5d114 0x4>;
 
                target-module@60000 {                   /* 0x48060000, ap 23 24.0 */
                        compatible = "ti,sysc-omap2", "ti,sysc";
-                       ti,hwmods = "i2c3";
                        reg = <0x60000 0x8>,
                              <0x60010 0x8>,
                              <0x60090 0x8>;
 
                target-module@66000 {                   /* 0x48066000, ap 63 4c.0 */
                        compatible = "ti,sysc-omap2", "ti,sysc";
-                       ti,hwmods = "uart5";
                        reg = <0x66050 0x4>,
                              <0x66054 0x4>,
                              <0x66058 0x4>;
 
                target-module@68000 {                   /* 0x48068000, ap 53 54.0 */
                        compatible = "ti,sysc-omap2", "ti,sysc";
-                       ti,hwmods = "uart6";
                        reg = <0x68050 0x4>,
                              <0x68054 0x4>,
                              <0x68058 0x4>;
 
                target-module@6a000 {                   /* 0x4806a000, ap 24 0a.0 */
                        compatible = "ti,sysc-omap2", "ti,sysc";
-                       ti,hwmods = "uart1";
                        reg = <0x6a050 0x4>,
                              <0x6a054 0x4>,
                              <0x6a058 0x4>;
 
                target-module@6c000 {                   /* 0x4806c000, ap 26 22.0 */
                        compatible = "ti,sysc-omap2", "ti,sysc";
-                       ti,hwmods = "uart2";
                        reg = <0x6c050 0x4>,
                              <0x6c054 0x4>,
                              <0x6c058 0x4>;
 
                target-module@6e000 {                   /* 0x4806e000, ap 28 44.1 */
                        compatible = "ti,sysc-omap2", "ti,sysc";
-                       ti,hwmods = "uart4";
                        reg = <0x6e050 0x4>,
                              <0x6e054 0x4>,
                              <0x6e058 0x4>;
 
                target-module@70000 {                   /* 0x48070000, ap 30 14.0 */
                        compatible = "ti,sysc-omap2", "ti,sysc";
-                       ti,hwmods = "i2c1";
                        reg = <0x70000 0x8>,
                              <0x70010 0x8>,
                              <0x70090 0x8>;
 
                target-module@72000 {                   /* 0x48072000, ap 32 1c.0 */
                        compatible = "ti,sysc-omap2", "ti,sysc";
-                       ti,hwmods = "i2c2";
                        reg = <0x72000 0x8>,
                              <0x72010 0x8>,
                              <0x72090 0x8>;
 
                target-module@7a000 {                   /* 0x4807a000, ap 81 2c.0 */
                        compatible = "ti,sysc-omap2", "ti,sysc";
-                       ti,hwmods = "i2c4";
                        reg = <0x7a000 0x8>,
                              <0x7a010 0x8>,
                              <0x7a090 0x8>;
 
                target-module@7c000 {                   /* 0x4807c000, ap 83 34.0 */
                        compatible = "ti,sysc-omap2", "ti,sysc";
-                       ti,hwmods = "i2c5";
                        reg = <0x7c000 0x8>,
                              <0x7c010 0x8>,
                              <0x7c090 0x8>;
 
                target-module@98000 {                   /* 0x48098000, ap 47 08.0 */
                        compatible = "ti,sysc-omap4", "ti,sysc";
-                       ti,hwmods = "mcspi1";
                        reg = <0x98000 0x4>,
                              <0x98010 0x4>;
                        reg-names = "rev", "sysc";
 
                target-module@9a000 {                   /* 0x4809a000, ap 49 10.0 */
                        compatible = "ti,sysc-omap4", "ti,sysc";
-                       ti,hwmods = "mcspi2";
                        reg = <0x9a000 0x4>,
                              <0x9a010 0x4>;
                        reg-names = "rev", "sysc";
 
                target-module@9c000 {                   /* 0x4809c000, ap 51 3a.0 */
                        compatible = "ti,sysc-omap4", "ti,sysc";
-                       ti,hwmods = "mmc1";
                        reg = <0x9c000 0x4>,
                              <0x9c010 0x4>;
                        reg-names = "rev", "sysc";
 
                target-module@ad000 {                   /* 0x480ad000, ap 61 20.0 */
                        compatible = "ti,sysc-omap4", "ti,sysc";
-                       ti,hwmods = "mmc3";
                        reg = <0xad000 0x4>,
                              <0xad010 0x4>;
                        reg-names = "rev", "sysc";
 
                target-module@b4000 {                   /* 0x480b4000, ap 65 42.0 */
                        compatible = "ti,sysc-omap4", "ti,sysc";
-                       ti,hwmods = "mmc2";
                        reg = <0xb4000 0x4>,
                              <0xb4010 0x4>;
                        reg-names = "rev", "sysc";
 
                target-module@b8000 {                   /* 0x480b8000, ap 67 32.0 */
                        compatible = "ti,sysc-omap4", "ti,sysc";
-                       ti,hwmods = "mcspi3";
                        reg = <0xb8000 0x4>,
                              <0xb8010 0x4>;
                        reg-names = "rev", "sysc";
 
                target-module@ba000 {                   /* 0x480ba000, ap 69 18.0 */
                        compatible = "ti,sysc-omap4", "ti,sysc";
-                       ti,hwmods = "mcspi4";
                        reg = <0xba000 0x4>,
                              <0xba010 0x4>;
                        reg-names = "rev", "sysc";
 
                target-module@d1000 {                   /* 0x480d1000, ap 71 28.0 */
                        compatible = "ti,sysc-omap4", "ti,sysc";
-                       ti,hwmods = "mmc4";
                        reg = <0xd1000 0x4>,
                              <0xd1010 0x4>;
                        reg-names = "rev", "sysc";
 
                target-module@d5000 {                   /* 0x480d5000, ap 73 30.0 */
                        compatible = "ti,sysc-omap4", "ti,sysc";
-                       ti,hwmods = "mmc5";
                        reg = <0xd5000 0x4>,
                              <0xd5010 0x4>;
                        reg-names = "rev", "sysc";
 
                target-module@0 {                       /* 0x4ae10000, ap 5 10.0 */
                        compatible = "ti,sysc-omap2", "ti,sysc";
-                       ti,hwmods = "gpio1";
                        reg = <0x0 0x4>,
                              <0x10 0x4>,
                              <0x114 0x4>;
 
                target-module@4000 {                    /* 0x4ae14000, ap 7 14.0 */
                        compatible = "ti,sysc-omap2", "ti,sysc";
-                       ti,hwmods = "wd_timer2";
                        reg = <0x4000 0x4>,
                              <0x4010 0x4>,
                              <0x4014 0x4>;
index 1fb7937..1f6ad1d 100644 (file)
                l4_abe: interconnect@40100000 {
                };
 
-               ocmcram: ocmcram@40300000 {
+               ocmcram: sram@40300000 {
                        compatible = "mmio-sram";
                        reg = <0x40300000 0x20000>; /* 128k */
                };
 
 #include "omap5-l4-abe.dtsi"
 #include "omap54xx-clocks.dtsi"
+
+&prm {
+       prm_dsp: prm@400 {
+               compatible = "ti,omap5-prm-inst", "ti,omap-prm-inst";
+               reg = <0x400 0x100>;
+               #reset-cells = <1>;
+       };
+
+       prm_core: prm@700 {
+               compatible = "ti,omap5-prm-inst", "ti,omap-prm-inst";
+               reg = <0x700 0x100>;
+               #reset-cells = <1>;
+       };
+
+       prm_iva: prm@1200 {
+               compatible = "ti,omap5-prm-inst", "ti,omap-prm-inst";
+               reg = <0x1200 0x100>;
+               #reset-cells = <1>;
+       };
+
+       prm_device: prm@1c00 {
+               compatible = "ti,omap5-prm-inst", "ti,omap-prm-inst";
+               reg = <0x1c00 0x100>;
+               #reset-cells = <1>;
+       };
+};
diff --git a/arch/arm/boot/dts/openbmc-flash-layout-128.dtsi b/arch/arm/boot/dts/openbmc-flash-layout-128.dtsi
new file mode 100644 (file)
index 0000000..05101a3
--- /dev/null
@@ -0,0 +1,32 @@
+// SPDX-License-Identifier: GPL-2.0+
+
+partitions {
+       compatible = "fixed-partitions";
+       #address-cells = <1>;
+       #size-cells = <1>;
+
+       u-boot@0 {
+               reg = <0x0 0xe0000>; // 896KB
+               label = "u-boot";
+       };
+
+       u-boot-env@e0000 {
+               reg = <0xe0000 0x20000>; // 128KB
+               label = "u-boot-env";
+       };
+
+       kernel@100000 {
+               reg = <0x100000 0x900000>; // 9MB
+               label = "kernel";
+       };
+
+       rofs@a00000 {
+               reg = <0xa00000 0x5600000>; // 86MB
+               label = "rofs";
+       };
+
+       rwfs@6000000 {
+               reg = <0x6000000 0x2000000>; // 32MB
+               label = "rwfs";
+       };
+};
index 56f5159..8ef26da 100644 (file)
                        interrupts = <GIC_SPI 208 IRQ_TYPE_LEVEL_HIGH>;
                };
 
+               sdhci: sdhci@7824900 {
+                       compatible = "qcom,sdhci-msm-v4";
+                       reg = <0x7824900 0x11c>, <0x7824000 0x800>;
+                       interrupts = <GIC_SPI 123 IRQ_TYPE_LEVEL_HIGH>, <GIC_SPI 138 IRQ_TYPE_LEVEL_HIGH>;
+                       interrupt-names = "hc_irq", "pwr_irq";
+                       bus-width = <8>;
+                       clocks = <&gcc GCC_SDCC1_APPS_CLK>, <&gcc GCC_SDCC1_AHB_CLK>,
+                                <&gcc GCC_DCD_XO_CLK>;
+                       clock-names = "core", "iface", "xo";
+                       status = "disabled";
+               };
+
                blsp_dma: dma@7884000 {
                        compatible = "qcom,bam-v1.7.0";
                        reg = <0x07884000 0x23000>;
index bf402ae..2616039 100644 (file)
                                                regulator-max-microvolt = <2950000>;
 
                                                regulator-boot-on;
+                                               regulator-system-load = <200000>;
+                                               regulator-allow-set-load;
                                        };
 
                                        l21 {
                        };
                };
 
-               sdhc2_cd_pin_a: sdhc2-cd-pin-active {
-                       pins = "gpio62";
-                       function = "gpio";
-
-                       drive-strength = <2>;
-                       bias-disable;
-               };
-
                sdhc2_pin_a: sdhc2-pin-active {
                        clk {
                                pins = "sdc2_clk";
                bus-width = <4>;
 
                pinctrl-names = "default";
-               pinctrl-0 = <&sdhc2_pin_a>, <&sdhc2_cd_pin_a>;
+               pinctrl-0 = <&sdhc2_pin_a>;
        };
 
        usb@f9a55000 {
                        };
                };
        };
+
+       imem@fe805000 {
+               status = "okay";
+
+               reboot-mode {
+                       mode-normal     = <0x77665501>;
+                       mode-bootloader = <0x77665500>;
+                       mode-recovery   = <0x77665502>;
+               };
+       };
 };
 
 &spmi_bus {
index 369e58f..9a84eb0 100644 (file)
                                };
                        };
                };
+
+               q6-dsp-thermal {
+                       polling-delay-passive = <250>;
+                       polling-delay = <1000>;
+
+                       thermal-sensors = <&tsens 1>;
+
+                       trips {
+                               q6_dsp_alert0: trip-point0 {
+                                       temperature = <90000>;
+                                       hysteresis = <2000>;
+                                       type = "hot";
+                               };
+                       };
+               };
+
+               modemtx-thermal {
+                       polling-delay-passive = <250>;
+                       polling-delay = <1000>;
+
+                       thermal-sensors = <&tsens 2>;
+
+                       trips {
+                               modemtx_alert0: trip-point0 {
+                                       temperature = <90000>;
+                                       hysteresis = <2000>;
+                                       type = "hot";
+                               };
+                       };
+               };
+
+               video-thermal {
+                       polling-delay-passive = <250>;
+                       polling-delay = <1000>;
+
+                       thermal-sensors = <&tsens 3>;
+
+                       trips {
+                               video_alert0: trip-point0 {
+                                       temperature = <95000>;
+                                       hysteresis = <2000>;
+                                       type = "hot";
+                               };
+                       };
+               };
+
+               wlan-thermal {
+                       polling-delay-passive = <250>;
+                       polling-delay = <1000>;
+
+                       thermal-sensors = <&tsens 4>;
+
+                       trips {
+                               wlan_alert0: trip-point0 {
+                                       temperature = <105000>;
+                                       hysteresis = <2000>;
+                                       type = "hot";
+                               };
+                       };
+               };
+
+               gpu-thermal-top {
+                       polling-delay-passive = <250>;
+                       polling-delay = <1000>;
+
+                       thermal-sensors = <&tsens 9>;
+
+                       trips {
+                               gpu1_alert0: trip-point0 {
+                                       temperature = <90000>;
+                                       hysteresis = <2000>;
+                                       type = "hot";
+                               };
+                       };
+               };
+
+               gpu-thermal-bottom {
+                       polling-delay-passive = <250>;
+                       polling-delay = <1000>;
+
+                       thermal-sensors = <&tsens 10>;
+
+                       trips {
+                               gpu2_alert0: trip-point0 {
+                                       temperature = <90000>;
+                                       hysteresis = <2000>;
+                                       type = "hot";
+                               };
+                       };
+               };
        };
 
        cpu-pmu {
                        nvmem-cells = <&tsens_calib>, <&tsens_backup>;
                        nvmem-cell-names = "calib", "calib_backup";
                        #qcom,sensors = <11>;
+                       interrupts = <GIC_SPI 184 IRQ_TYPE_LEVEL_HIGH>;
+                       interrupt-names = "uplow";
                        #thermal-sensor-cells = <1>;
                };
 
                                clock-names = "iface";
                        };
                };
+
+               imem@fe805000 {
+                       status = "disabled";
+                       compatible = "syscon", "simple-mfd";
+                       reg = <0xfe805000 0x1000>;
+
+                       reboot-mode {
+                               compatible = "syscon-reboot-mode";
+                               offset = <0x65c>;
+                       };
+               };
        };
 
        smd {
index f198480..c1f2012 100644 (file)
                                qcom,vs-soft-start-strength = <0>;
                                regulator-initial-mode = <1>;
                        };
+
+                       pm8941_5vs2: 5vs2 {
+                               regulator-enable-ramp-delay = <1000>;
+                               regulator-pull-down;
+                               regulator-over-current-protection;
+                               qcom,ocp-max-retries = <10>;
+                               qcom,ocp-retry-delay = <30>;
+                               qcom,vs-soft-start-strength = <0>;
+                               regulator-initial-mode = <1>;
+                       };
                };
        };
 };
index 83cc619..6ec2cf7 100644 (file)
                #size-cells = <0>;
        };
 
-        /*
-         * IIC2 and I2C2 may be switched using pinmux.
-         * A fallback to GPIO is also provided.
-         */
+       /*
+        * IIC2 and I2C2 may be switched using pinmux.
+        * A fallback to GPIO is also provided.
+        */
        i2chdmi: i2c-12 {
                compatible = "i2c-demux-pinctrl";
                i2c-parent = <&iic2>, <&i2c2>, <&gpioi2c2>;
index 42f3313..48fbeb6 100644 (file)
                compatible = "gpio-keys";
 
                key-1 {
-                       gpios = <&gpio5 0 GPIO_ACTIVE_LOW>;
-                       linux,code = <KEY_1>;
-                       label = "SW2-1";
-                       wakeup-source;
-                       debounce-interval = <20>;
+                       gpios = <&gpio5 0 GPIO_ACTIVE_LOW>;
+                       linux,code = <KEY_1>;
+                       label = "SW2-1";
+                       wakeup-source;
+                       debounce-interval = <20>;
                };
                key-2 {
-                       gpios = <&gpio5 1 GPIO_ACTIVE_LOW>;
-                       linux,code = <KEY_2>;
-                       label = "SW2-2";
-                       wakeup-source;
-                       debounce-interval = <20>;
+                       gpios = <&gpio5 1 GPIO_ACTIVE_LOW>;
+                       linux,code = <KEY_2>;
+                       label = "SW2-2";
+                       wakeup-source;
+                       debounce-interval = <20>;
                };
                key-3 {
-                       gpios = <&gpio5 2 GPIO_ACTIVE_LOW>;
-                       linux,code = <KEY_3>;
-                       label = "SW2-3";
-                       wakeup-source;
-                       debounce-interval = <20>;
+                       gpios = <&gpio5 2 GPIO_ACTIVE_LOW>;
+                       linux,code = <KEY_3>;
+                       label = "SW2-3";
+                       wakeup-source;
+                       debounce-interval = <20>;
                };
                key-4 {
-                       gpios = <&gpio5 3 GPIO_ACTIVE_LOW>;
-                       linux,code = <KEY_4>;
-                       label = "SW2-4";
-                       wakeup-source;
-                       debounce-interval = <20>;
+                       gpios = <&gpio5 3 GPIO_ACTIVE_LOW>;
+                       linux,code = <KEY_4>;
+                       label = "SW2-4";
+                       wakeup-source;
+                       debounce-interval = <20>;
                };
                key-a {
-                       gpios = <&gpio7 0 GPIO_ACTIVE_LOW>;
-                       linux,code = <KEY_A>;
-                       label = "SW30";
-                       wakeup-source;
-                       debounce-interval = <20>;
+                       gpios = <&gpio7 0 GPIO_ACTIVE_LOW>;
+                       linux,code = <KEY_A>;
+                       label = "SW30";
+                       wakeup-source;
+                       debounce-interval = <20>;
                };
                key-b {
-                       gpios = <&gpio7 1 GPIO_ACTIVE_LOW>;
-                       linux,code = <KEY_B>;
-                       label = "SW31";
-                       wakeup-source;
-                       debounce-interval = <20>;
+                       gpios = <&gpio7 1 GPIO_ACTIVE_LOW>;
+                       linux,code = <KEY_B>;
+                       label = "SW31";
+                       wakeup-source;
+                       debounce-interval = <20>;
                };
                key-c {
-                       gpios = <&gpio7 2 GPIO_ACTIVE_LOW>;
-                       linux,code = <KEY_C>;
-                       label = "SW32";
-                       wakeup-source;
-                       debounce-interval = <20>;
+                       gpios = <&gpio7 2 GPIO_ACTIVE_LOW>;
+                       linux,code = <KEY_C>;
+                       label = "SW32";
+                       wakeup-source;
+                       debounce-interval = <20>;
                };
                key-d {
-                       gpios = <&gpio7 3 GPIO_ACTIVE_LOW>;
-                       linux,code = <KEY_D>;
-                       label = "SW33";
-                       wakeup-source;
-                       debounce-interval = <20>;
+                       gpios = <&gpio7 3 GPIO_ACTIVE_LOW>;
+                       linux,code = <KEY_D>;
+                       label = "SW33";
+                       wakeup-source;
+                       debounce-interval = <20>;
                };
                key-e {
-                       gpios = <&gpio7 4 GPIO_ACTIVE_LOW>;
-                       linux,code = <KEY_E>;
-                       label = "SW34";
-                       wakeup-source;
-                       debounce-interval = <20>;
+                       gpios = <&gpio7 4 GPIO_ACTIVE_LOW>;
+                       linux,code = <KEY_E>;
+                       label = "SW34";
+                       wakeup-source;
+                       debounce-interval = <20>;
                };
                key-f {
-                       gpios = <&gpio7 5 GPIO_ACTIVE_LOW>;
-                       linux,code = <KEY_F>;
-                       label = "SW35";
-                       wakeup-source;
-                       debounce-interval = <20>;
+                       gpios = <&gpio7 5 GPIO_ACTIVE_LOW>;
+                       linux,code = <KEY_F>;
+                       label = "SW35";
+                       wakeup-source;
+                       debounce-interval = <20>;
                };
                key-g {
-                       gpios = <&gpio7 6 GPIO_ACTIVE_LOW>;
-                       linux,code = <KEY_G>;
-                       label = "SW36";
-                       wakeup-source;
-                       debounce-interval = <20>;
+                       gpios = <&gpio7 6 GPIO_ACTIVE_LOW>;
+                       linux,code = <KEY_G>;
+                       label = "SW36";
+                       wakeup-source;
+                       debounce-interval = <20>;
                };
        };
 
index 19cde89..f30d6ec 100644 (file)
                ranges;
        };
 
+       modem@10000000 {
+               compatible = "simple-bus";
+               #address-cells = <1>;
+               #size-cells = <1>;
+               ranges = <0x0 0x10000000 0xfffffff>;
+
+               gpioc@1a08000 {
+                       compatible = "rda,8810pl-gpio";
+                       reg = <0x1a08000 0x1000>;
+                       gpio-controller;
+                       #gpio-cells = <2>;
+                       ngpios = <32>;
+               };
+       };
+
        apb@20800000 {
                compatible = "simple-bus";
                #address-cells = <1>;
                                     <17 IRQ_TYPE_LEVEL_HIGH>;
                        interrupt-names = "hwtimer", "ostimer";
                };
+
+               gpioa@30000 {
+                       compatible = "rda,8810pl-gpio";
+                       reg = <0x30000 0x1000>;
+                       gpio-controller;
+                       #gpio-cells = <2>;
+                       ngpios = <32>;
+                       interrupt-controller;
+                       #interrupt-cells = <2>;
+                       interrupts = <12 IRQ_TYPE_LEVEL_HIGH>;
+               };
+
+               gpiob@31000 {
+                       compatible = "rda,8810pl-gpio";
+                       reg = <0x31000 0x1000>;
+                       gpio-controller;
+                       #gpio-cells = <2>;
+                       ngpios = <32>;
+                       interrupt-controller;
+                       #interrupt-cells = <2>;
+                       interrupts = <13 IRQ_TYPE_LEVEL_HIGH>;
+               };
+
+               gpiod@32000 {
+                       compatible = "rda,8810pl-gpio";
+                       reg = <0x32000 0x1000>;
+                       gpio-controller;
+                       #gpio-cells = <2>;
+                       ngpios = <32>;
+                       interrupt-controller;
+                       #interrupt-cells = <2>;
+                       interrupts = <14 IRQ_TYPE_LEVEL_HIGH>;
+               };
        };
 
        apb@20a00000 {
index c776321..c70182c 100644 (file)
 
                hdmi {
                        hdmi_ctl: hdmi-ctl {
-                               rockchip,pins = <1 RK_PB0  1 &pcfg_pull_none>,
-                                               <1 RK_PB1  1 &pcfg_pull_none>,
+                               rockchip,pins = <1 RK_PB0 1 &pcfg_pull_none>,
+                                               <1 RK_PB1 1 &pcfg_pull_none>,
                                                <1 RK_PB2 1 &pcfg_pull_none>,
                                                <1 RK_PB3 1 &pcfg_pull_none>;
                        };
index 9f9e2bf..44bb5e6 100644 (file)
        };
 
        emmc {
-                       emmc_reset: emmc-reset {
-                               rockchip,pins = <3 RK_PB1 RK_FUNC_GPIO &pcfg_pull_none>;
-                       };
+               emmc_reset: emmc-reset {
+                       rockchip,pins = <3 RK_PB1 RK_FUNC_GPIO &pcfg_pull_none>;
+               };
        };
 
        gmac {
                phy_rst: phy-rst {
-                       rockchip,pins = <4 RK_PB0 RK_FUNC_GPIO  &pcfg_output_high>;
+                       rockchip,pins = <4 RK_PB0 RK_FUNC_GPIO &pcfg_output_high>;
                };
        };
 };
index 81e4e95..0aeef23 100644 (file)
 
        pmic {
                pmic_int: pmic-int {
-                       rockchip,pins = <0 RK_PA4 RK_FUNC_GPIO \
-                                       &pcfg_pull_up>;
+                       rockchip,pins = <0 RK_PA4 RK_FUNC_GPIO &pcfg_pull_up>;
                };
 
                dvs_1: dvs-1 {
-                       rockchip,pins = <0 RK_PB3 RK_FUNC_GPIO \
-                                       &pcfg_pull_down>;
+                       rockchip,pins = <0 RK_PB3 RK_FUNC_GPIO &pcfg_pull_down>;
                };
 
                dvs_2: dvs-2 {
-                       rockchip,pins = <0 RK_PB4 RK_FUNC_GPIO \
-                                       &pcfg_pull_down>;
+                       rockchip,pins = <0 RK_PB4 RK_FUNC_GPIO &pcfg_pull_down>;
                };
        };
 
                };
 
                sdmmc_clk: sdmmc-clk {
-                       rockchip,pins = <6 RK_PC4 1 \
-                                       &pcfg_pull_none_drv_8ma>;
+                       rockchip,pins = <6 RK_PC4 1 &pcfg_pull_none_drv_8ma>;
                };
 
                sdmmc_cmd: sdmmc-cmd {
        sdio {
                wifi_enable: wifi-enable {
                        rockchip,pins = <4 RK_PD3 RK_FUNC_GPIO &pcfg_pull_none>,
-                               <4 RK_PD4 RK_FUNC_GPIO &pcfg_pull_none>;
+                                       <4 RK_PD4 RK_FUNC_GPIO &pcfg_pull_none>;
                };
        };
 };
index 445270a..51208d1 100644 (file)
@@ -17,6 +17,7 @@
                rockchip,hp-det-gpios = <&gpio6 RK_PA5 GPIO_ACTIVE_HIGH>;
                rockchip,mic-det-gpios = <&gpio6 RK_PB3 GPIO_ACTIVE_LOW>;
                rockchip,headset-codec = <&headsetcodec>;
+               rockchip,hdmi-codec = <&hdmi>;
        };
 };
 
index b12e061..300a7e3 100644 (file)
 
        backlight: backlight {
                compatible = "pwm-backlight";
-               brightness-levels = <
-                         0   1   2   3   4   5   6   7
-                         8   9  10  11  12  13  14  15
-                        16  17  18  19  20  21  22  23
-                        24  25  26  27  28  29  30  31
-                        32  33  34  35  36  37  38  39
-                        40  41  42  43  44  45  46  47
-                        48  49  50  51  52  53  54  55
-                        56  57  58  59  60  61  62  63
-                        64  65  66  67  68  69  70  71
-                        72  73  74  75  76  77  78  79
-                        80  81  82  83  84  85  86  87
-                        88  89  90  91  92  93  94  95
-                        96  97  98  99 100 101 102 103
-                       104 105 106 107 108 109 110 111
-                       112 113 114 115 116 117 118 119
-                       120 121 122 123 124 125 126 127
-                       128 129 130 131 132 133 134 135
-                       136 137 138 139 140 141 142 143
-                       144 145 146 147 148 149 150 151
-                       152 153 154 155 156 157 158 159
-                       160 161 162 163 164 165 166 167
-                       168 169 170 171 172 173 174 175
-                       176 177 178 179 180 181 182 183
-                       184 185 186 187 188 189 190 191
-                       192 193 194 195 196 197 198 199
-                       200 201 202 203 204 205 206 207
-                       208 209 210 211 212 213 214 215
-                       216 217 218 219 220 221 222 223
-                       224 225 226 227 228 229 230 231
-                       232 233 234 235 236 237 238 239
-                       240 241 242 243 244 245 246 247
-                       248 249 250 251 252 253 254 255>;
+               brightness-levels = <0 255>;
+               num-interpolated-steps = <255>;
                default-brightness-level = <128>;
                enable-gpios = <&gpio7 RK_PA2 GPIO_ACTIVE_HIGH>;
                pinctrl-names = "default";
index 8038620..a4966e5 100644 (file)
 
 &backlight {
        /* Jaq panel PWM must be >= 3%, so start non-zero brightness at 8 */
-       brightness-levels = <
-                 0
-                 8   9  10  11  12  13  14  15
-                16  17  18  19  20  21  22  23
-                24  25  26  27  28  29  30  31
-                32  33  34  35  36  37  38  39
-                40  41  42  43  44  45  46  47
-                48  49  50  51  52  53  54  55
-                56  57  58  59  60  61  62  63
-                64  65  66  67  68  69  70  71
-                72  73  74  75  76  77  78  79
-                80  81  82  83  84  85  86  87
-                88  89  90  91  92  93  94  95
-                96  97  98  99 100 101 102 103
-               104 105 106 107 108 109 110 111
-               112 113 114 115 116 117 118 119
-               120 121 122 123 124 125 126 127
-               128 129 130 131 132 133 134 135
-               136 137 138 139 140 141 142 143
-               144 145 146 147 148 149 150 151
-               152 153 154 155 156 157 158 159
-               160 161 162 163 164 165 166 167
-               168 169 170 171 172 173 174 175
-               176 177 178 179 180 181 182 183
-               184 185 186 187 188 189 190 191
-               192 193 194 195 196 197 198 199
-               200 201 202 203 204 205 206 207
-               208 209 210 211 212 213 214 215
-               216 217 218 219 220 221 222 223
-               224 225 226 227 228 229 230 231
-               232 233 234 235 236 237 238 239
-               240 241 242 243 244 245 246 247
-               248 249 250 251 252 253 254 255>;
+       brightness-levels = <0 8 255>;
+       num-interpolated-steps = <247>;
 };
 
 &rk808 {
index aa352d4..06a6a95 100644 (file)
                regulator-boot-on;
                vin-supply = <&vcc33_sys>;
        };
+
+       sound {
+               compatible = "rockchip,rockchip-audio-max98090";
+               rockchip,model = "VEYRON-HDMI";
+               rockchip,hdmi-codec = <&hdmi>;
+               rockchip,i2s-controller = <&i2s>;
+       };
 };
 
 &cpu_thermal {
index 55955b0..c833716 100644 (file)
 
 &backlight {
        /* Minnie panel PWM must be >= 1%, so start non-zero brightness at 3 */
-       brightness-levels = <
-                         0   3   4   5   6   7
-                         8   9  10  11  12  13  14  15
-                        16  17  18  19  20  21  22  23
-                        24  25  26  27  28  29  30  31
-                        32  33  34  35  36  37  38  39
-                        40  41  42  43  44  45  46  47
-                        48  49  50  51  52  53  54  55
-                        56  57  58  59  60  61  62  63
-                        64  65  66  67  68  69  70  71
-                        72  73  74  75  76  77  78  79
-                        80  81  82  83  84  85  86  87
-                        88  89  90  91  92  93  94  95
-                        96  97  98  99 100 101 102 103
-                       104 105 106 107 108 109 110 111
-                       112 113 114 115 116 117 118 119
-                       120 121 122 123 124 125 126 127
-                       128 129 130 131 132 133 134 135
-                       136 137 138 139 140 141 142 143
-                       144 145 146 147 148 149 150 151
-                       152 153 154 155 156 157 158 159
-                       160 161 162 163 164 165 166 167
-                       168 169 170 171 172 173 174 175
-                       176 177 178 179 180 181 182 183
-                       184 185 186 187 188 189 190 191
-                       192 193 194 195 196 197 198 199
-                       200 201 202 203 204 205 206 207
-                       208 209 210 211 212 213 214 215
-                       216 217 218 219 220 221 222 223
-                       224 225 226 227 228 229 230 231
-                       232 233 234 235 236 237 238 239
-                       240 241 242 243 244 245 246 247
-                       248 249 250 251 252 253 254 255>;
+       brightness-levels = <0 3 255>;
+       num-interpolated-steps = <252>;
 };
 
 &i2c_tunnel {
index 2755720..bebb230 100644 (file)
 
 &backlight {
        /* Tiger panel PWM must be >= 1%, so start non-zero brightness at 3 */
-       brightness-levels = <
-                 0   3   4   5   6   7
-                 8   9  10  11  12  13  14  15
-                16  17  18  19  20  21  22  23
-                24  25  26  27  28  29  30  31
-                32  33  34  35  36  37  38  39
-                40  41  42  43  44  45  46  47
-                48  49  50  51  52  53  54  55
-                56  57  58  59  60  61  62  63
-                64  65  66  67  68  69  70  71
-                72  73  74  75  76  77  78  79
-                80  81  82  83  84  85  86  87
-                88  89  90  91  92  93  94  95
-                96  97  98  99 100 101 102 103
-               104 105 106 107 108 109 110 111
-               112 113 114 115 116 117 118 119
-               120 121 122 123 124 125 126 127
-               128 129 130 131 132 133 134 135
-               136 137 138 139 140 141 142 143
-               144 145 146 147 148 149 150 151
-               152 153 154 155 156 157 158 159
-               160 161 162 163 164 165 166 167
-               168 169 170 171 172 173 174 175
-               176 177 178 179 180 181 182 183
-               184 185 186 187 188 189 190 191
-               192 193 194 195 196 197 198 199
-               200 201 202 203 204 205 206 207
-               208 209 210 211 212 213 214 215
-               216 217 218 219 220 221 222 223
-               224 225 226 227 228 229 230 231
-               232 233 234 235 236 237 238 239
-               240 241 242 243 244 245 246 247
-               248 249 250 251 252 253 254 255>;
+       brightness-levels = <0 3 255>;
+       num-interpolated-steps = <252>;
 };
 
 &backlight_regulator {
index cc893e1..415c75f 100644 (file)
 
        vopb: vop@ff930000 {
                compatible = "rockchip,rk3288-vop";
-               reg = <0x0 0xff930000 0x0 0x19c>;
+               reg = <0x0 0xff930000 0x0 0x19c>, <0x0 0xff931000 0x0 0x1000>;
                interrupts = <GIC_SPI 15 IRQ_TYPE_LEVEL_HIGH>;
                clocks = <&cru ACLK_VOP0>, <&cru DCLK_VOP0>, <&cru HCLK_VOP0>;
                clock-names = "aclk_vop", "dclk_vop", "hclk_vop";
 
        vopl: vop@ff940000 {
                compatible = "rockchip,rk3288-vop";
-               reg = <0x0 0xff940000 0x0 0x19c>;
+               reg = <0x0 0xff940000 0x0 0x19c>, <0x0 0xff941000 0x0 0x1000>;
                interrupts = <GIC_SPI 16 IRQ_TYPE_LEVEL_HIGH>;
                clocks = <&cru ACLK_VOP1>, <&cru DCLK_VOP1>, <&cru HCLK_VOP1>;
                clock-names = "aclk_vop", "dclk_vop", "hclk_vop";
                clocks = <&cru PCLK_EFUSE256>;
                clock-names = "pclk_efuse";
 
+               cpu_id: cpu-id@7 {
+                       reg = <0x07 0x10>;
+               };
                cpu_leakage: cpu_leakage@17 {
                        reg = <0x17 0x1>;
                };
index 0e159c8..1aeac33 100644 (file)
        };
 };
 
+&clocks {
+       clocks = <&fin_pll>;
+};
+
 &sdhci0 {
        pinctrl-names = "default";
        pinctrl-0 = <&sd0_clk>, <&sd0_cmd>, <&sd0_cd>, <&sd0_bus4>;
index a9a5689..3bf6c45 100644 (file)
        };
 };
 
+&clocks {
+       clocks = <&fin_pll>;
+};
+
 &sdhci0 {
        pinctrl-names = "default";
        pinctrl-0 = <&sd0_clk>, <&sd0_cmd>, <&sd0_cd>, <&sd0_bus4>;
index 2e2c1a7..5652048 100644 (file)
                                #clock-cells = <0>;
                        };
 
-                       rtc@f80480b0 {
+                       rtc: rtc@f80480b0 {
                                compatible = "atmel,at91rm9200-rtc";
                                reg = <0xf80480b0 0x30>;
                                interrupts = <74 IRQ_TYPE_LEVEL_HIGH 7>;
index b4c0a76..2b64564 100644 (file)
@@ -19,7 +19,7 @@
                m25p,fast-read;
                cdns,page-size = <256>;
                cdns,block-size = <16>;
-               cdns,read-delay = <4>;
+               cdns,read-delay = <3>;
                cdns,tshsl-ns = <50>;
                cdns,tsd2d-ns = <50>;
                cdns,tchsh-ns = <4>;
index ba08624..58288aa 100644 (file)
@@ -60,7 +60,7 @@
                stdout-path = "serial0:115200n8";
        };
 
-       memory {
+       memory@00000000 {
                device_type = "memory";
                reg = <0x00000000 0x2000000>;
        };
        status = "okay";
        pinctrl-0 = <&ltdc_pins>;
        pinctrl-names = "default";
-       dma-ranges;
 
        port {
                ltdc_out_rgb: endpoint {
index 2b16648..fcc804e 100644 (file)
@@ -55,7 +55,7 @@
                stdout-path = "serial0:115200n8";
        };
 
-       memory {
+       memory@c0000000 {
                device_type = "memory";
                reg = <0xc0000000 0x2000000>;
        };
@@ -95,7 +95,6 @@
 
        joystick {
                compatible = "gpio-keys";
-               #size-cells = <0>;
                pinctrl-0 = <&joystick_pins>;
                pinctrl-names = "default";
                button-0 {
index e19d0fe..30c0f67 100644 (file)
@@ -59,7 +59,7 @@
                stdout-path = "serial0:115200n8";
        };
 
-       memory {
+       memory@90000000 {
                device_type = "memory";
                reg = <0x90000000 0x800000>;
        };
index a3ff049..f3ce477 100644 (file)
@@ -60,7 +60,7 @@
                stdout-path = "serial0:115200n8";
        };
 
-       memory {
+       memory@00000000 {
                device_type = "memory";
                reg = <0x00000000 0x1000000>;
        };
 };
 
 &ltdc {
-       dma-ranges;
        status = "okay";
 
        port {
index 5ae5213..be002e8 100644 (file)
@@ -8,7 +8,6 @@
                dsi: dsi@40016c00 {
                        compatible = "st,stm32-dsi";
                        reg = <0x40016c00 0x800>;
-                       interrupts = <92>;
                        resets = <&rcc STM32F4_APB2_RESET(DSI)>;
                        reset-names = "apb";
                        clocks = <&rcc 1 CLK_F469_DSI>, <&clk_hse>;
index 0ba9c5b..569d23c 100644 (file)
@@ -55,7 +55,7 @@
                stdout-path = "serial0:115200n8";
        };
 
-       memory {
+       memory@c0000000 {
                device_type = "memory";
                reg = <0xC0000000 0x800000>;
        };
index 6f1d0ac..1626e00 100644 (file)
@@ -55,7 +55,7 @@
                stdout-path = "serial0:115200n8";
        };
 
-       memory {
+       memory@c0000000 {
                device_type = "memory";
                reg = <0xC0000000 0x1000000>;
        };
index 3acd2e9..e446d31 100644 (file)
@@ -53,7 +53,7 @@
                stdout-path = "serial0:115200n8";
        };
 
-       memory {
+       memory@d0000000 {
                device_type = "memory";
                reg = <0xd0000000 0x2000000>;
        };
index e4d3c58..8f39817 100644 (file)
@@ -53,7 +53,7 @@
                stdout-path = "serial0:115200n8";
        };
 
-       memory {
+       memory@d0000000 {
                device_type = "memory";
                reg = <0xd0000000 0x2000000>;
        };
index 0a3a7d6..3d1ecb4 100644 (file)
                                status = "disabled";
                        };
 
+                       adc12_ain_pins_a: adc12-ain-0 {
+                               pins {
+                                       pinmux = <STM32_PINMUX('C', 3, ANALOG)>, /* ADC1 in13 */
+                                                <STM32_PINMUX('F', 12, ANALOG)>, /* ADC1 in6 */
+                                                <STM32_PINMUX('F', 13, ANALOG)>, /* ADC2 in2 */
+                                                <STM32_PINMUX('F', 14, ANALOG)>; /* ADC2 in6 */
+                               };
+                       };
+
+                       adc12_usb_cc_pins_a: adc12-usb-cc-pins-0 {
+                               pins {
+                                       pinmux = <STM32_PINMUX('A', 4, ANALOG)>, /* ADC12 in18 */
+                                                <STM32_PINMUX('A', 5, ANALOG)>; /* ADC12 in19 */
+                               };
+                       };
+
                        cec_pins_a: cec-0 {
                                pins {
                                        pinmux = <STM32_PINMUX('A', 15, AF4)>;
                                };
                        };
 
+                       dac_ch1_pins_a: dac-ch1 {
+                               pins {
+                                       pinmux = <STM32_PINMUX('A', 4, ANALOG)>;
+                               };
+                       };
+
+                       dac_ch2_pins_a: dac-ch2 {
+                               pins {
+                                       pinmux = <STM32_PINMUX('A', 5, ANALOG)>;
+                               };
+                       };
+
                        dcmi_pins_a: dcmi-0 {
                                pins {
                                        pinmux = <STM32_PINMUX('H', 8,  AF13)>,/* DCMI_HSYNC */
index 2e4742c..628c74a 100644 (file)
                                regulator-name = "vbus_otg";
                                interrupts = <IT_OCP_OTG 0>;
                                interrupt-parent = <&pmic>;
-                               regulator-active-discharge;
                        };
 
                        vbus_sw: pwr_sw2 {
                                regulator-name = "vbus_sw";
                                interrupts = <IT_OCP_SWOUT 0>;
                                interrupt-parent = <&pmic>;
-                               regulator-active-discharge;
+                               regulator-active-discharge = <1>;
                        };
                };
 
        status = "okay";
 };
 
+&pwr_regulators {
+       vdd-supply = <&vdd>;
+       vdd_3v3_usbfs-supply = <&vdd_usb>;
+};
+
 &rng1 {
        status = "okay";
 };
index 0615d1c..984a47c 100644 (file)
@@ -25,6 +25,7 @@
        };
 
        memory@c0000000 {
+               device_type = "memory";
                reg = <0xc0000000 0x20000000>;
        };
 
                        "Playback" , "MCLK",
                        "Capture" , "MCLK",
                        "MICL" , "Mic Bias";
-               dais = <&sai2a_port &sai2b_port>;
+               dais = <&sai2a_port &sai2b_port &i2s2_port>;
+               status = "okay";
+       };
+};
+
+&adc {
+       pinctrl-names = "default";
+       pinctrl-0 = <&adc12_ain_pins_a>, <&adc12_usb_cc_pins_a>;
+       vdd-supply = <&vdd>;
+       vdda-supply = <&vdd>;
+       vref-supply = <&vrefbuf>;
+       status = "disabled";
+       adc1: adc@0 {
+               /*
+                * Type-C USB_PWR_CC1 & USB_PWR_CC2 on in18 & in19.
+                * Use at least 5 * RC time, e.g. 5 * (Rp + Rd) * C:
+                * 5 * (56 + 47kOhms) * 5pF => 2.5us.
+                * Use arbitrary margin here (e.g. 5us).
+                */
+               st,min-sample-time-nsecs = <5000>;
+               /* AIN connector, USB Type-C CC1 & CC2 */
+               st,adc-channels = <0 1 6 13 18 19>;
+               status = "okay";
+       };
+       adc2: adc@100 {
+               /* AIN connector, USB Type-C CC1 & CC2 */
+               st,adc-channels = <0 1 2 6 18 19>;
+               st,min-sample-time-nsecs = <5000>;
                status = "okay";
        };
 };
                reset-gpios = <&gpioa 10 GPIO_ACTIVE_LOW>;
                interrupts = <1 IRQ_TYPE_EDGE_FALLING>;
                interrupt-parent = <&gpiog>;
-               pinctrl-names = "default", "sleep";
-               pinctrl-0 = <&ltdc_pins_a>;
-               pinctrl-1 = <&ltdc_pins_sleep_a>;
+               #sound-dai-cells = <0>;
                status = "okay";
 
                ports {
                                        remote-endpoint = <&ltdc_ep0_out>;
                                };
                        };
+
+                       port@3 {
+                               reg = <3>;
+                               sii9022_tx_endpoint: endpoint {
+                                       remote-endpoint = <&i2s2_endpoint>;
+                               };
+                       };
                };
        };
 
 
                        vddcore: buck1 {
                                regulator-name = "vddcore";
-                               regulator-min-microvolt = <800000>;
+                               regulator-min-microvolt = <1200000>;
                                regulator-max-microvolt = <1350000>;
                                regulator-always-on;
                                regulator-initial-mode = <0>;
                         vbus_sw: pwr_sw2 {
                                regulator-name = "vbus_sw";
                                interrupts = <IT_OCP_SWOUT 0>;
-                               regulator-active-discharge;
+                               regulator-active-discharge = <1>;
                         };
                };
 
        };
 };
 
+&i2s2 {
+       clocks = <&rcc SPI2>, <&rcc SPI2_K>, <&rcc PLL3_Q>, <&rcc PLL3_R>;
+       clock-names = "pclk", "i2sclk", "x8k", "x11k";
+       pinctrl-names = "default", "sleep";
+       pinctrl-0 = <&i2s2_pins_a>;
+       pinctrl-1 = <&i2s2_pins_sleep_a>;
+       status = "okay";
+
+       i2s2_port: port {
+               i2s2_endpoint: endpoint {
+                       remote-endpoint = <&sii9022_tx_endpoint>;
+                       format = "i2s";
+                       mclk-fs = <256>;
+               };
+       };
+};
+
 &ipcc {
        status = "okay";
 };
 };
 
 &ltdc {
+       pinctrl-names = "default", "sleep";
+       pinctrl-0 = <&ltdc_pins_a>;
+       pinctrl-1 = <&ltdc_pins_sleep_a>;
        status = "okay";
 
        port {
        status = "okay";
 };
 
+&pwr_regulators {
+       vdd-supply = <&vdd>;
+       vdd_3v3_usbfs-supply = <&vdd_usb>;
+};
+
 &rng1 {
        status = "okay";
 };
        pinctrl-0 = <&uart4_pins_a>;
        status = "okay";
 };
+
+&vrefbuf {
+       regulator-min-microvolt = <2500000>;
+       regulator-max-microvolt = <2500000>;
+       vdda-supply = <&vdd>;
+       status = "okay";
+};
index 20ea601..d26adcb 100644 (file)
 / {
        model = "STMicroelectronics STM32MP157C-DK2 Discovery Board";
        compatible = "st,stm32mp157c-dk2", "st,stm32mp157";
-
-       reg18: reg18 {
-               compatible = "regulator-fixed";
-               regulator-name = "reg18";
-               regulator-min-microvolt = <1800000>;
-               regulator-max-microvolt = <1800000>;
-               regulator-always-on;
-       };
 };
 
 &dsi {
        };
 };
 
+&i2c1 {
+       touchscreen@38 {
+               compatible = "focaltech,ft6236";
+               reg = <0x38>;
+               interrupts = <2 2>;
+               interrupt-parent = <&gpiof>;
+               interrupt-controller;
+               touchscreen-size-x = <480>;
+               touchscreen-size-y = <800>;
+               status = "okay";
+       };
+};
+
 &ltdc {
        status = "okay";
 
index 1d426ea..b8cc0fb 100644 (file)
                serial0 = &uart4;
        };
 
-       reg11: reg11 {
-               compatible = "regulator-fixed";
-               regulator-name = "reg11";
-               regulator-min-microvolt = <1100000>;
-               regulator-max-microvolt = <1100000>;
-               regulator-always-on;
-       };
-
-       reg18: reg18 {
-               compatible = "regulator-fixed";
-               regulator-name = "reg18";
-               regulator-min-microvolt = <1800000>;
-               regulator-max-microvolt = <1800000>;
-               regulator-always-on;
-       };
-
        sd_switch: regulator-sd_switch {
                compatible = "regulator-gpio";
                regulator-name = "sd_switch";
 
                gpios = <&gpiof 14 GPIO_ACTIVE_HIGH>;
                gpios-states = <0>;
-               states = <1800000 0x1 2900000 0x0>;
+               states = <1800000 0x1>,
+                        <2900000 0x0>;
+       };
+};
+
+&dac {
+       pinctrl-names = "default";
+       pinctrl-0 = <&dac_ch1_pins_a &dac_ch2_pins_a>;
+       vref-supply = <&vdda>;
+       status = "disabled";
+       dac1: dac@1 {
+               status = "okay";
+       };
+       dac2: dac@2 {
+               status = "okay";
        };
 };
 
 
                        vddcore: buck1 {
                                regulator-name = "vddcore";
-                               regulator-min-microvolt = <800000>;
+                               regulator-min-microvolt = <1200000>;
                                regulator-max-microvolt = <1350000>;
                                regulator-always-on;
                                regulator-initial-mode = <0>;
                         vbus_sw: pwr_sw2 {
                                regulator-name = "vbus_sw";
                                interrupts = <IT_OCP_SWOUT 0>;
-                               regulator-active-discharge;
+                               regulator-active-discharge = <1>;
                         };
                };
 
        status = "okay";
 };
 
+&pwr_regulators {
+       vdd-supply = <&vdd>;
+       vdd_3v3_usbfs-supply = <&vdd_usb>;
+};
+
 &rng1 {
        status = "okay";
 };
index 91fc0a3..3789312 100644 (file)
@@ -32,7 +32,6 @@
 
        joystick {
                compatible = "gpio-keys";
-               #size-cells = <0>;
                pinctrl-0 = <&joystick_pins>;
                pinctrl-names = "default";
                button-0 {
 
 &usbh_ehci {
        phys = <&usbphyc_port0>;
-       phy-names = "usb";
        status = "okay";
 };
 
 &usbotg_hs {
        dr_mode = "peripheral";
        phys = <&usbphyc_port1 0>;
-       phy-names = "usb2-phy";
        status = "okay";
 };
 
index f98e037..ed8b258 100644 (file)
                        #reset-cells = <1>;
                };
 
+               pwr_regulators: pwr@50001000 {
+                       compatible = "st,stm32mp1,pwr-reg";
+                       reg = <0x50001000 0x10>;
+
+                       reg11: reg11 {
+                               regulator-name = "reg11";
+                               regulator-min-microvolt = <1100000>;
+                               regulator-max-microvolt = <1100000>;
+                       };
+
+                       reg18: reg18 {
+                               regulator-name = "reg18";
+                               regulator-min-microvolt = <1800000>;
+                               regulator-max-microvolt = <1800000>;
+                       };
+
+                       usb33: usb33 {
+                               regulator-name = "usb33";
+                               regulator-min-microvolt = <3300000>;
+                               regulator-max-microvolt = <3300000>;
+                       };
+               };
+
                exti: interrupt-controller@5000d000 {
                        compatible = "st,stm32mp1-exti", "syscon";
                        interrupt-controller;
index 7033a12..d6bb82c 100644 (file)
 &i2c1 {
        status = "okay";
 
-       at24@50 {
+       eeprom@50 {
                compatible = "atmel,24c16";
                pagesize = <16>;
                reg = <0x50>;
index ac76380..2cf34ae 100644 (file)
                                 <&ccu CLK_PLL_VIDEO1_2X>;
                        clock-names = "ahb", "mod", "ddc", "pll-0", "pll-1";
                        resets = <&ccu RST_AHB1_HDMI>;
-                       reset-names = "ahb";
                        dma-names = "ddc-tx", "ddc-rx", "audio-tx";
                        dmas = <&dma 13>, <&dma 13>, <&dma 14>;
                        status = "disabled";
index 3bec3e0..2fd31a0 100644 (file)
        status = "okay";
 };
 
+&i2c0 {
+       clock-frequency = <400000>;
+       status = "okay";
+
+       touchscreen@38 {
+               compatible = "edt,edt-ft5x06";
+               reg = <0x38>;
+               interrupt-parent = <&r_pio>;
+               interrupts = <0 7 IRQ_TYPE_EDGE_FALLING>; /* PL7 */
+               reset-gpios = <&pio 3 5 GPIO_ACTIVE_LOW>; /* PD5 */
+               vcc-supply = <&reg_ldo_io0>;
+               touchscreen-size-x = <1024>;
+               touchscreen-size-y = <600>;
+       };
+};
+
 &i2c1 {
        clock-frequency = <400000>;
        status = "okay";
index 74bb053..53c38de 100644 (file)
                        reg = <0x1c14000 0x400>;
                };
 
+               crypto: crypto@1c15000 {
+                       compatible = "allwinner,sun8i-a83t-crypto";
+                       reg = <0x01c15000 0x1000>;
+                       interrupts = <GIC_SPI 80 IRQ_TYPE_LEVEL_HIGH>;
+                       resets = <&ccu RST_BUS_SS>;
+                       clocks = <&ccu CLK_BUS_SS>, <&ccu CLK_SS>;
+                       clock-names = "bus", "mod";
+               };
+
                usb_otg: usb@1c19000 {
                        compatible = "allwinner,sun8i-a83t-musb",
                                     "allwinner,sun8i-a33-musb";
diff --git a/arch/arm/boot/dts/sun8i-h3-nanopi-duo2.dts b/arch/arm/boot/dts/sun8i-h3-nanopi-duo2.dts
new file mode 100644 (file)
index 0000000..c73f599
--- /dev/null
@@ -0,0 +1,174 @@
+// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
+/*
+ * Copyright (C) 2019 Karl Palsson <karlp@tweak.net.au>
+ */
+
+/dts-v1/;
+#include "sun8i-h3.dtsi"
+#include "sunxi-common-regulators.dtsi"
+
+#include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/input/input.h>
+
+/ {
+       model = "FriendlyARM NanoPi Duo2";
+       compatible = "friendlyarm,nanopi-duo2", "allwinner,sun8i-h3";
+
+       aliases {
+               serial0 = &uart0;
+       };
+
+       chosen {
+               stdout-path = "serial0:115200n8";
+       };
+
+       leds {
+               compatible = "gpio-leds";
+
+               pwr {
+                       label = "nanopi:red:pwr";
+                       gpios = <&r_pio 0 10 GPIO_ACTIVE_HIGH>; /* PL10 */
+                       default-state = "on";
+               };
+
+               status {
+                       label = "nanopi:green:status";
+                       gpios = <&pio 0 10 GPIO_ACTIVE_HIGH>; /* PA10 */
+               };
+       };
+
+       r_gpio_keys {
+               compatible = "gpio-keys";
+
+               k1 {
+                       label = "k1";
+                       linux,code = <BTN_0>;
+                       gpios = <&r_pio 0 3 GPIO_ACTIVE_LOW>; /* PL3 */
+               };
+       };
+
+       reg_vdd_cpux: vdd-cpux-regulator {
+               compatible = "regulator-gpio";
+               regulator-name = "vdd-cpux";
+               regulator-min-microvolt = <1100000>;
+               regulator-max-microvolt = <1300000>;
+               regulator-always-on;
+               regulator-boot-on;
+               regulator-ramp-delay = <50>; /* 4ms */
+
+               enable-active-high;
+               enable-gpio = <&r_pio 0 8 GPIO_ACTIVE_HIGH>; /* PL8 */
+               gpios = <&r_pio 0 6 GPIO_ACTIVE_HIGH>; /* PL6 */
+               gpios-states = <0x1>;
+               states = <1100000 0x0
+                         1300000 0x1>;
+       };
+
+       reg_vcc_dram: vcc-dram {
+               compatible = "regulator-fixed";
+               regulator-name = "vcc-dram";
+               regulator-min-microvolt = <1500000>;
+               regulator-max-microvolt = <1500000>;
+               regulator-always-on;
+               regulator-boot-on;
+               enable-active-high;
+               gpio = <&r_pio 0 9 GPIO_ACTIVE_HIGH>; /* PL9 */
+               vin-supply = <&reg_vcc5v0>;
+        };
+
+       reg_vdd_sys: vdd-sys {
+               compatible = "regulator-fixed";
+               regulator-name = "vdd-sys";
+               regulator-min-microvolt = <1200000>;
+               regulator-max-microvolt = <1200000>;
+               regulator-always-on;
+               regulator-boot-on;
+               enable-active-high;
+               gpio = <&r_pio 0 8 GPIO_ACTIVE_HIGH>; /* PL8 */
+               vin-supply = <&reg_vcc5v0>;
+        };
+
+       wifi_pwrseq: wifi_pwrseq {
+               compatible = "mmc-pwrseq-simple";
+               reset-gpios = <&r_pio 0 7 GPIO_ACTIVE_LOW>; /* PL7 */
+               clocks = <&rtc 1>;
+               clock-names = "ext_clock";
+       };
+
+};
+
+&cpu0 {
+       cpu-supply = <&reg_vdd_cpux>;
+};
+
+&ehci0 {
+       status = "okay";
+};
+
+&mmc0 {
+       bus-width = <4>;
+       cd-gpios = <&pio 5 6 GPIO_ACTIVE_LOW>; /* PF6 */
+       status = "okay";
+       vmmc-supply = <&reg_vcc3v3>;
+};
+
+&mmc1 {
+       vmmc-supply = <&reg_vcc3v3>;
+       vqmmc-supply = <&reg_vcc3v3>;
+       mmc-pwrseq = <&wifi_pwrseq>;
+       bus-width = <4>;
+       non-removable;
+       status = "okay";
+
+       sdio_wifi: sdio_wifi@1 {
+               reg = <1>;
+               compatible = "brcm,bcm4329-fmac";
+               interrupt-parent = <&pio>;
+               interrupts = <6 10 IRQ_TYPE_LEVEL_LOW>; /* PG10 / EINT10 */
+               interrupt-names = "host-wake";
+       };
+};
+
+&ohci0 {
+       status = "okay";
+};
+
+&reg_usb0_vbus {
+       gpio = <&r_pio 0 2 GPIO_ACTIVE_HIGH>; /* PL2 */
+       status = "okay";
+};
+
+&uart0 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&uart0_pa_pins>;
+       status = "okay";
+};
+
+&uart2 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&uart2_pins>, <&uart2_rts_cts_pins>;
+       uart-has-rtscts;
+       status = "okay";
+
+       bluetooth {
+               compatible = "brcm,bcm43438-bt";
+               clocks = <&rtc 1>;
+               clock-names = "lpo";
+               vbat-supply = <&reg_vcc3v3>;
+               vddio-supply = <&reg_vcc3v3>;
+               device-wakeup-gpios = <&pio 0 8 GPIO_ACTIVE_HIGH>; /* PA8 */
+               host-wakeup-gpios = <&pio 0 7 GPIO_ACTIVE_HIGH>; /* PA7 */
+               shutdown-gpios = <&pio 6 13 GPIO_ACTIVE_HIGH>; /* PG13 */
+       };
+};
+
+&usb_otg {
+       status = "okay";
+       dr_mode = "otg";
+};
+
+&usbphy {
+       usb0_id_det-gpios = <&pio 6 12 GPIO_ACTIVE_HIGH>; /* PG12 */
+       usb0_vbus-supply = <&reg_usb0_vbus>;
+       status = "okay";
+};
index e37c30e..fe773c7 100644 (file)
        };
 
        soc {
+               deinterlace: deinterlace@1400000 {
+                       compatible = "allwinner,sun8i-h3-deinterlace";
+                       reg = <0x01400000 0x20000>;
+                       clocks = <&ccu CLK_BUS_DEINTERLACE>,
+                                <&ccu CLK_DEINTERLACE>,
+                                <&ccu CLK_DRAM_DEINTERLACE>;
+                       clock-names = "bus", "mod", "ram";
+                       resets = <&ccu RST_BUS_DEINTERLACE>;
+                       interrupts = <GIC_SPI 93 IRQ_TYPE_LEVEL_HIGH>;
+                       interconnects = <&mbus 9>;
+                       interconnect-names = "dma-mem";
+               };
+
                syscon: system-control@1c00000 {
                        compatible = "allwinner,sun8i-h3-system-control";
                        reg = <0x01c00000 0x1000>;
                        allwinner,sram = <&ve_sram 1>;
                };
 
+               crypto: crypto@1c15000 {
+                       compatible = "allwinner,sun8i-h3-crypto";
+                       reg = <0x01c15000 0x1000>;
+                       interrupts = <GIC_SPI 94 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&ccu CLK_BUS_CE>, <&ccu CLK_CE>;
+                       clock-names = "bus", "mod";
+                       resets = <&ccu RST_BUS_CE>;
+               };
+
                mali: gpu@1c40000 {
                        compatible = "allwinner,sun8i-h3-mali", "arm,mali-400";
                        reg = <0x01c40000 0x10000>;
index c9c2688..421dfbb 100644 (file)
                        #phy-cells = <1>;
                };
 
+               crypto: crypto@1c15000 {
+                       compatible = "allwinner,sun8i-r40-crypto";
+                       reg = <0x01c15000 0x1000>;
+                       interrupts = <GIC_SPI 94 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&ccu CLK_BUS_CE>, <&ccu CLK_CE>;
+                       clock-names = "bus", "mod";
+                       resets = <&ccu RST_BUS_CE>;
+               };
+
                ehci1: usb@1c19000 {
                        compatible = "allwinner,sun8i-r40-ehci", "generic-ehci";
                        reg = <0x01c19000 0x100>;
index b9b6fb0..1d900f5 100644 (file)
                        reg = <0x01700000 0x100>;
                };
 
+               crypto: crypto@1c02000 {
+                       compatible = "allwinner,sun9i-a80-crypto";
+                       reg = <0x01c02000 0x1000>;
+                       interrupts = <GIC_SPI 80 IRQ_TYPE_LEVEL_HIGH>;
+                       resets = <&ccu RST_BUS_SS>;
+                       clocks = <&ccu CLK_BUS_SS>, <&ccu CLK_SS>;
+                       clock-names = "bus", "mod";
+               };
+
                mmc0: mmc@1c0f000 {
                        compatible = "allwinner,sun9i-a80-mmc";
                        reg = <0x01c0f000 0x1000>;
                        compatible = "allwinner,sun6i-a31-wdt";
                        reg = <0x06000ca0 0x20>;
                        interrupts = <GIC_SPI 24 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&osc24M>;
                };
 
                pio: pinctrl@6000800 {
                        compatible = "allwinner,sun6i-a31-wdt";
                        reg = <0x08001000 0x20>;
                        interrupts = <GIC_SPI 36 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&osc24M>;
                };
 
                prcm@8001400 {
index 107eeaf..0afea59 100644 (file)
                compatible = "simple-bus";
                #address-cells = <1>;
                #size-cells = <1>;
+               dma-ranges;
                ranges;
 
                display_clocks: clock@1000000 {
                                function = "uart2";
                        };
 
+                       uart2_rts_cts_pins: uart2-rts-cts-pins {
+                               pins = "PA2", "PA3";
+                               function = "uart2";
+                       };
+
                        uart3_pins: uart3-pins {
                                pins = "PA13", "PA14";
                                function = "uart3";
                        };
                };
 
+               mbus: dram-controller@1c62000 {
+                       compatible = "allwinner,sun8i-h3-mbus";
+                       reg = <0x01c62000 0x1000>;
+                       clocks = <&ccu 113>;
+                       dma-ranges = <0x00000000 0x40000000 0xc0000000>;
+                       #interconnect-cells = <1>;
+               };
+
                spi0: spi@1c68000 {
                        compatible = "allwinner,sun8i-h3-spi";
                        reg = <0x01c68000 0x1000>;
index 9af21fe..fb6b3e1 100644 (file)
@@ -1,5 +1,9 @@
 // SPDX-License-Identifier: GPL-2.0
 / {
+       apbmisc@70000800 {
+               nvidia,long-ram-code;
+       };
+
        clock@60006000 {
                emc-timings-1 {
                        nvidia,ram-code = <1>;
                                clocks = <&tegra_car TEGRA124_CLK_PLL_M>;
                                clock-names = "emc-parent";
                        };
-                       /* TODO: Add 528MHz frequency */
+                       timing-528000000 {
+                               clock-frequency = <528000000>;
+                               nvidia,parent-clock-frequency = <528000000>;
+                               clocks = <&tegra_car TEGRA124_CLK_PLL_M_UD>;
+                               clock-names = "emc-parent";
+                       };
+                       timing-600000000 {
+                               clock-frequency = <600000000>;
+                               nvidia,parent-clock-frequency = <600000000>;
+                               clocks = <&tegra_car TEGRA124_CLK_PLL_C_UD>;
+                               clock-names = "emc-parent";
+                       };
+                       timing-792000000 {
+                               clock-frequency = <792000000>;
+                               nvidia,parent-clock-frequency = <792000000>;
+                               clocks = <&tegra_car TEGRA124_CLK_PLL_M_UD>;
+                               clock-names = "emc-parent";
+                       };
+               };
+
+               emc-timings-4 {
+                       nvidia,ram-code = <4>;
+
+                       timing-12750000 {
+                               clock-frequency = <12750000>;
+                               nvidia,parent-clock-frequency = <408000000>;
+                               clocks = <&tegra_car TEGRA124_CLK_PLL_P>;
+                               clock-names = "emc-parent";
+                       };
+                       timing-20400000 {
+                               clock-frequency = <20400000>;
+                               nvidia,parent-clock-frequency = <408000000>;
+                               clocks = <&tegra_car TEGRA124_CLK_PLL_P>;
+                               clock-names = "emc-parent";
+                       };
+                       timing-40800000 {
+                               clock-frequency = <40800000>;
+                               nvidia,parent-clock-frequency = <408000000>;
+                               clocks = <&tegra_car TEGRA124_CLK_PLL_P>;
+                               clock-names = "emc-parent";
+                       };
+                       timing-68000000 {
+                               clock-frequency = <68000000>;
+                               nvidia,parent-clock-frequency = <408000000>;
+                               clocks = <&tegra_car TEGRA124_CLK_PLL_P>;
+                               clock-names = "emc-parent";
+                       };
+                       timing-102000000 {
+                               clock-frequency = <102000000>;
+                               nvidia,parent-clock-frequency = <408000000>;
+                               clocks = <&tegra_car TEGRA124_CLK_PLL_P>;
+                               clock-names = "emc-parent";
+                       };
+                       timing-204000000 {
+                               clock-frequency = <204000000>;
+                               nvidia,parent-clock-frequency = <408000000>;
+                               clocks = <&tegra_car TEGRA124_CLK_PLL_P>;
+                               clock-names = "emc-parent";
+                       };
+                       timing-300000000 {
+                               clock-frequency = <300000000>;
+                               nvidia,parent-clock-frequency = <600000000>;
+                               clocks = <&tegra_car TEGRA124_CLK_PLL_C>;
+                               clock-names = "emc-parent";
+                       };
+                       timing-396000000 {
+                               clock-frequency = <396000000>;
+                               nvidia,parent-clock-frequency = <792000000>;
+                               clocks = <&tegra_car TEGRA124_CLK_PLL_M>;
+                               clock-names = "emc-parent";
+                       };
+                       timing-528000000 {
+                               clock-frequency = <528000000>;
+                               nvidia,parent-clock-frequency = <528000000>;
+                               clocks = <&tegra_car TEGRA124_CLK_PLL_M_UD>;
+                               clock-names = "emc-parent";
+                       };
+                       timing-600000000 {
+                               clock-frequency = <600000000>;
+                               nvidia,parent-clock-frequency = <600000000>;
+                               clocks = <&tegra_car TEGRA124_CLK_PLL_C_UD>;
+                               clock-names = "emc-parent";
+                       };
+                       timing-792000000 {
+                               clock-frequency = <792000000>;
+                               nvidia,parent-clock-frequency = <792000000>;
+                               clocks = <&tegra_car TEGRA124_CLK_PLL_M_UD>;
+                               clock-names = "emc-parent";
+                       };
+               };
+
+               emc-timings-6 {
+                       nvidia,ram-code = <6>;
+
+                       timing-12750000 {
+                               clock-frequency = <12750000>;
+                               nvidia,parent-clock-frequency = <408000000>;
+                               clocks = <&tegra_car TEGRA124_CLK_PLL_P>;
+                               clock-names = "emc-parent";
+                       };
+                       timing-20400000 {
+                               clock-frequency = <20400000>;
+                               nvidia,parent-clock-frequency = <408000000>;
+                               clocks = <&tegra_car TEGRA124_CLK_PLL_P>;
+                               clock-names = "emc-parent";
+                       };
+                       timing-40800000 {
+                               clock-frequency = <40800000>;
+                               nvidia,parent-clock-frequency = <408000000>;
+                               clocks = <&tegra_car TEGRA124_CLK_PLL_P>;
+                               clock-names = "emc-parent";
+                       };
+                       timing-68000000 {
+                               clock-frequency = <68000000>;
+                               nvidia,parent-clock-frequency = <408000000>;
+                               clocks = <&tegra_car TEGRA124_CLK_PLL_P>;
+                               clock-names = "emc-parent";
+                       };
+                       timing-102000000 {
+                               clock-frequency = <102000000>;
+                               nvidia,parent-clock-frequency = <408000000>;
+                               clocks = <&tegra_car TEGRA124_CLK_PLL_P>;
+                               clock-names = "emc-parent";
+                       };
+                       timing-204000000 {
+                               clock-frequency = <204000000>;
+                               nvidia,parent-clock-frequency = <408000000>;
+                               clocks = <&tegra_car TEGRA124_CLK_PLL_P>;
+                               clock-names = "emc-parent";
+                       };
+                       timing-300000000 {
+                               clock-frequency = <300000000>;
+                               nvidia,parent-clock-frequency = <600000000>;
+                               clocks = <&tegra_car TEGRA124_CLK_PLL_C>;
+                               clock-names = "emc-parent";
+                       };
+                       timing-396000000 {
+                               clock-frequency = <396000000>;
+                               nvidia,parent-clock-frequency = <792000000>;
+                               clocks = <&tegra_car TEGRA124_CLK_PLL_M>;
+                               clock-names = "emc-parent";
+                       };
+                       timing-528000000 {
+                               clock-frequency = <528000000>;
+                               nvidia,parent-clock-frequency = <528000000>;
+                               clocks = <&tegra_car TEGRA124_CLK_PLL_M_UD>;
+                               clock-names = "emc-parent";
+                       };
                        timing-600000000 {
                                clock-frequency = <600000000>;
                                nvidia,parent-clock-frequency = <600000000>;
                                nvidia,emc-zcal-interval = <0x00000000>;
 
                                nvidia,emc-configuration = <
-                                       0x00000000
-                                       0x00000003
-                                       0x00000000
-                                       0x00000000
-                                       0x00000000
-                                       0x00000004
-                                       0x0000000a
-                                       0x00000003
-                                       0x0000000b
-                                       0x00000000
-                                       0x00000000
-                                       0x00000003
-                                       0x00000003
-                                       0x00000000
-                                       0x00000006
-                                       0x00000006
-                                       0x00000006
-                                       0x00000002
-                                       0x00000000
-                                       0x00000005
-                                       0x00000005
-                                       0x00010000
-                                       0x00000003
-                                       0x00000000
-                                       0x00000000
-                                       0x00000000
-                                       0x00000000
-                                       0x00000004
-                                       0x0000000c
-                                       0x0000000d
-                                       0x0000000f
-                                       0x00000060
-                                       0x00000000
-                                       0x00000018
-                                       0x00000002
-                                       0x00000002
-                                       0x00000001
-                                       0x00000000
-                                       0x00000007
-                                       0x0000000f
-                                       0x00000005
-                                       0x00000005
-                                       0x00000004
-                                       0x00000005
-                                       0x00000004
-                                       0x00000000
-                                       0x00000000
-                                       0x00000005
-                                       0x00000005
-                                       0x00000064
-                                       0x00000000
-                                       0x00000000
-                                       0x00000000
-                                       0x106aa298
-                                       0x002c00a0
-                                       0x00008000
-                                       0x00064000
-                                       0x00064000
-                                       0x00064000
-                                       0x00064000
-                                       0x00064000
-                                       0x00064000
-                                       0x00064000
-                                       0x00064000
-                                       0x00064000
-                                       0x00064000
-                                       0x00064000
-                                       0x00064000
-                                       0x00064000
-                                       0x00064000
-                                       0x00064000
-                                       0x00064000
-                                       0x00000000
-                                       0x00000000
-                                       0x00000000
-                                       0x00000000
-                                       0x00000000
-                                       0x00000000
-                                       0x00000000
-                                       0x00000000
-                                       0x00000000
-                                       0x00000000
-                                       0x00004000
-                                       0x00000000
-                                       0x00000000
-                                       0x00004000
-                                       0x00000000
-                                       0x00000000
-                                       0x00000000
-                                       0x00000000
-                                       0x00000000
-                                       0x00000000
-                                       0x00000000
-                                       0x00000000
-                                       0x00000000
-                                       0x00000000
-                                       0x00000000
-                                       0x00000000
-                                       0x00000000
-                                       0x00000000
-                                       0x00000000
-                                       0x00000000
-                                       0x00000000
-                                       0x00000000
-                                       0x00000000
-                                       0x00000000
-                                       0x00000000
-                                       0x00000000
-                                       0x00000000
-                                       0x00000000
-                                       0x000fc000
-                                       0x000fc000
-                                       0x000fc000
-                                       0x000fc000
-                                       0x0000fc00
-                                       0x0000fc00
-                                       0x0000fc00
-                                       0x0000fc00
-                                       0x10000280
-                                       0x00000000
-                                       0x00111111
-                                       0x00000000
-                                       0x00000000
-                                       0x77ffc081
-                                       0x00000303
-                                       0x81f1f108
-                                       0x07070004
-                                       0x0000003f
-                                       0x016eeeee
-                                       0x51451400
-                                       0x00514514
-                                       0x00514514
-                                       0x51451400
-                                       0x0000003f
-                                       0x00000007
-                                       0x00000000
-                                       0x00000042
-                                       0x000c000c
-                                       0x00000000
-                                       0x00000003
-                                       0x0000f2f3
-                                       0x800001c5
-                                       0x0000000a
+                                       0x00000000 /* EMC_RC */
+                                       0x00000003 /* EMC_RFC */
+                                       0x00000000 /* EMC_RFC_SLR */
+                                       0x00000000 /* EMC_RAS */
+                                       0x00000000 /* EMC_RP */
+                                       0x00000004 /* EMC_R2W */
+                                       0x0000000a /* EMC_W2R */
+                                       0x00000003 /* EMC_R2P */
+                                       0x0000000b /* EMC_W2P */
+                                       0x00000000 /* EMC_RD_RCD */
+                                       0x00000000 /* EMC_WR_RCD */
+                                       0x00000003 /* EMC_RRD */
+                                       0x00000003 /* EMC_REXT */
+                                       0x00000000 /* EMC_WEXT */
+                                       0x00000006 /* EMC_WDV */
+                                       0x00000006 /* EMC_WDV_MASK */
+                                       0x00000006 /* EMC_QUSE */
+                                       0x00000002 /* EMC_QUSE_WIDTH */
+                                       0x00000000 /* EMC_IBDLY */
+                                       0x00000005 /* EMC_EINPUT */
+                                       0x00000005 /* EMC_EINPUT_DURATION */
+                                       0x00010000 /* EMC_PUTERM_EXTRA */
+                                       0x00000003 /* EMC_PUTERM_WIDTH */
+                                       0x00000000 /* EMC_PUTERM_ADJ */
+                                       0x00000000 /* EMC_CDB_CNTL_1 */
+                                       0x00000000 /* EMC_CDB_CNTL_2 */
+                                       0x00000000 /* EMC_CDB_CNTL_3 */
+                                       0x00000004 /* EMC_QRST */
+                                       0x0000000c /* EMC_QSAFE */
+                                       0x0000000d /* EMC_RDV */
+                                       0x0000000f /* EMC_RDV_MASK */
+                                       0x00000060 /* EMC_REFRESH */
+                                       0x00000000 /* EMC_BURST_REFRESH_NUM */
+                                       0x00000018 /* EMC_PRE_REFRESH_REQ_CNT */
+                                       0x00000002 /* EMC_PDEX2WR */
+                                       0x00000002 /* EMC_PDEX2RD */
+                                       0x00000001 /* EMC_PCHG2PDEN */
+                                       0x00000000 /* EMC_ACT2PDEN */
+                                       0x00000007 /* EMC_AR2PDEN */
+                                       0x0000000f /* EMC_RW2PDEN */
+                                       0x00000005 /* EMC_TXSR */
+                                       0x00000005 /* EMC_TXSRDLL */
+                                       0x00000004 /* EMC_TCKE */
+                                       0x00000005 /* EMC_TCKESR */
+                                       0x00000004 /* EMC_TPD */
+                                       0x00000000 /* EMC_TFAW */
+                                       0x00000000 /* EMC_TRPAB */
+                                       0x00000005 /* EMC_TCLKSTABLE */
+                                       0x00000005 /* EMC_TCLKSTOP */
+                                       0x00000064 /* EMC_TREFBW */
+                                       0x00000000 /* EMC_FBIO_CFG6 */
+                                       0x00000000 /* EMC_ODT_WRITE */
+                                       0x00000000 /* EMC_ODT_READ */
+                                       0x106aa298 /* EMC_FBIO_CFG5 */
+                                       0x002c00a0 /* EMC_CFG_DIG_DLL */
+                                       0x00008000 /* EMC_CFG_DIG_DLL_PERIOD */
+                                       0x00064000 /* EMC_DLL_XFORM_DQS0 */
+                                       0x00064000 /* EMC_DLL_XFORM_DQS1 */
+                                       0x00064000 /* EMC_DLL_XFORM_DQS2 */
+                                       0x00064000 /* EMC_DLL_XFORM_DQS3 */
+                                       0x00064000 /* EMC_DLL_XFORM_DQS4 */
+                                       0x00064000 /* EMC_DLL_XFORM_DQS5 */
+                                       0x00064000 /* EMC_DLL_XFORM_DQS6 */
+                                       0x00064000 /* EMC_DLL_XFORM_DQS7 */
+                                       0x00064000 /* EMC_DLL_XFORM_DQS8 */
+                                       0x00064000 /* EMC_DLL_XFORM_DQS9 */
+                                       0x00064000 /* EMC_DLL_XFORM_DQS10 */
+                                       0x00064000 /* EMC_DLL_XFORM_DQS11 */
+                                       0x00064000 /* EMC_DLL_XFORM_DQS12 */
+                                       0x00064000 /* EMC_DLL_XFORM_DQS13 */
+                                       0x00064000 /* EMC_DLL_XFORM_DQS14 */
+                                       0x00064000 /* EMC_DLL_XFORM_DQS15 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE0 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE1 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE2 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE3 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE4 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE5 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE6 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE7 */
+                                       0x00000000 /* EMC_DLL_XFORM_ADDR0 */
+                                       0x00000000 /* EMC_DLL_XFORM_ADDR1 */
+                                       0x00004000 /* EMC_DLL_XFORM_ADDR2 */
+                                       0x00000000 /* EMC_DLL_XFORM_ADDR3 */
+                                       0x00000000 /* EMC_DLL_XFORM_ADDR4 */
+                                       0x00004000 /* EMC_DLL_XFORM_ADDR5 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE8 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE9 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE10 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE11 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE12 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE13 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE14 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE15 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS0 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS1 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS2 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS3 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS4 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS5 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS6 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS7 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS8 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS9 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS10 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS11 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS12 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS13 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS14 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS15 */
+                                       0x000fc000 /* EMC_DLL_XFORM_DQ0 */
+                                       0x000fc000 /* EMC_DLL_XFORM_DQ1 */
+                                       0x000fc000 /* EMC_DLL_XFORM_DQ2 */
+                                       0x000fc000 /* EMC_DLL_XFORM_DQ3 */
+                                       0x0000fc00 /* EMC_DLL_XFORM_DQ4 */
+                                       0x0000fc00 /* EMC_DLL_XFORM_DQ5 */
+                                       0x0000fc00 /* EMC_DLL_XFORM_DQ6 */
+                                       0x0000fc00 /* EMC_DLL_XFORM_DQ7 */
+                                       0x10000280 /* EMC_XM2CMDPADCTRL */
+                                       0x00000000 /* EMC_XM2CMDPADCTRL4 */
+                                       0x00111111 /* EMC_XM2CMDPADCTRL5 */
+                                       0x00000000 /* EMC_XM2DQPADCTRL2 */
+                                       0x00000000 /* EMC_XM2DQPADCTRL3 */
+                                       0x77ffc081 /* EMC_XM2CLKPADCTRL */
+                                       0x00000303 /* EMC_XM2CLKPADCTRL2 */
+                                       0x81f1f108 /* EMC_XM2COMPPADCTRL */
+                                       0x07070004 /* EMC_XM2VTTGENPADCTRL */
+                                       0x0000003f /* EMC_XM2VTTGENPADCTRL2 */
+                                       0x016eeeee /* EMC_XM2VTTGENPADCTRL3 */
+                                       0x51451400 /* EMC_XM2DQSPADCTRL3 */
+                                       0x00514514 /* EMC_XM2DQSPADCTRL4 */
+                                       0x00514514 /* EMC_XM2DQSPADCTRL5 */
+                                       0x51451400 /* EMC_XM2DQSPADCTRL6 */
+                                       0x0000003f /* EMC_DSR_VTTGEN_DRV */
+                                       0x00000007 /* EMC_TXDSRVTTGEN */
+                                       0x00000000 /* EMC_FBIO_SPARE */
+                                       0x00000042 /* EMC_ZCAL_WAIT_CNT */
+                                       0x000c000c /* EMC_MRS_WAIT_CNT2 */
+                                       0x00000000 /* EMC_CTT */
+                                       0x00000003 /* EMC_CTT_DURATION */
+                                       0x0000f2f3 /* EMC_CFG_PIPE */
+                                       0x800001c5 /* EMC_DYN_SELF_REF_CONTROL */
+                                       0x0000000a /* EMC_QPOP */
                                >;
                        };
 
                                nvidia,emc-zcal-interval = <0x00000000>;
 
                                nvidia,emc-configuration = <
-                                       0x00000000
-                                       0x00000005
-                                       0x00000000
-                                       0x00000000
-                                       0x00000000
-                                       0x00000004
-                                       0x0000000a
-                                       0x00000003
-                                       0x0000000b
-                                       0x00000000
-                                       0x00000000
-                                       0x00000003
-                                       0x00000003
-                                       0x00000000
-                                       0x00000006
-                                       0x00000006
-                                       0x00000006
-                                       0x00000002
-                                       0x00000000
-                                       0x00000005
-                                       0x00000005
-                                       0x00010000
-                                       0x00000003
-                                       0x00000000
-                                       0x00000000
-                                       0x00000000
-                                       0x00000000
-                                       0x00000004
-                                       0x0000000c
-                                       0x0000000d
-                                       0x0000000f
-                                       0x0000009a
-                                       0x00000000
-                                       0x00000026
-                                       0x00000002
-                                       0x00000002
-                                       0x00000001
-                                       0x00000000
-                                       0x00000007
-                                       0x0000000f
-                                       0x00000006
-                                       0x00000006
-                                       0x00000004
-                                       0x00000005
-                                       0x00000004
-                                       0x00000000
-                                       0x00000000
-                                       0x00000005
-                                       0x00000005
-                                       0x000000a0
-                                       0x00000000
-                                       0x00000000
-                                       0x00000000
-                                       0x106aa298
-                                       0x002c00a0
-                                       0x00008000
-                                       0x00064000
-                                       0x00064000
-                                       0x00064000
-                                       0x00064000
-                                       0x00064000
-                                       0x00064000
-                                       0x00064000
-                                       0x00064000
-                                       0x00064000
-                                       0x00064000
-                                       0x00064000
-                                       0x00064000
-                                       0x00064000
-                                       0x00064000
-                                       0x00064000
-                                       0x00064000
-                                       0x00000000
-                                       0x00000000
-                                       0x00000000
-                                       0x00000000
-                                       0x00000000
-                                       0x00000000
-                                       0x00000000
-                                       0x00000000
-                                       0x00000000
-                                       0x00000000
-                                       0x00004000
-                                       0x00000000
-                                       0x00000000
-                                       0x00004000
-                                       0x00000000
-                                       0x00000000
-                                       0x00000000
-                                       0x00000000
-                                       0x00000000
-                                       0x00000000
-                                       0x00000000
-                                       0x00000000
-                                       0x00000000
-                                       0x00000000
-                                       0x00000000
-                                       0x00000000
-                                       0x00000000
-                                       0x00000000
-                                       0x00000000
-                                       0x00000000
-                                       0x00000000
-                                       0x00000000
-                                       0x00000000
-                                       0x00000000
-                                       0x00000000
-                                       0x00000000
-                                       0x00000000
-                                       0x00000000
-                                       0x000fc000
-                                       0x000fc000
-                                       0x000fc000
-                                       0x000fc000
-                                       0x0000fc00
-                                       0x0000fc00
-                                       0x0000fc00
-                                       0x0000fc00
-                                       0x10000280
-                                       0x00000000
-                                       0x00111111
-                                       0x00000000
-                                       0x00000000
-                                       0x77ffc081
-                                       0x00000303
-                                       0x81f1f108
-                                       0x07070004
-                                       0x0000003f
-                                       0x016eeeee
-                                       0x51451400
-                                       0x00514514
-                                       0x00514514
-                                       0x51451400
-                                       0x0000003f
-                                       0x0000000b
-                                       0x00000000
-                                       0x00000042
-                                       0x000c000c
-                                       0x00000000
-                                       0x00000003
-                                       0x0000f2f3
-                                       0x8000023a
-                                       0x0000000a
+                                       0x00000000 /* EMC_RC */
+                                       0x00000005 /* EMC_RFC */
+                                       0x00000000 /* EMC_RFC_SLR */
+                                       0x00000000 /* EMC_RAS */
+                                       0x00000000 /* EMC_RP */
+                                       0x00000004 /* EMC_R2W */
+                                       0x0000000a /* EMC_W2R */
+                                       0x00000003 /* EMC_R2P */
+                                       0x0000000b /* EMC_W2P */
+                                       0x00000000 /* EMC_RD_RCD */
+                                       0x00000000 /* EMC_WR_RCD */
+                                       0x00000003 /* EMC_RRD */
+                                       0x00000003 /* EMC_REXT */
+                                       0x00000000 /* EMC_WEXT */
+                                       0x00000006 /* EMC_WDV */
+                                       0x00000006 /* EMC_WDV_MASK */
+                                       0x00000006 /* EMC_QUSE */
+                                       0x00000002 /* EMC_QUSE_WIDTH */
+                                       0x00000000 /* EMC_IBDLY */
+                                       0x00000005 /* EMC_EINPUT */
+                                       0x00000005 /* EMC_EINPUT_DURATION */
+                                       0x00010000 /* EMC_PUTERM_EXTRA */
+                                       0x00000003 /* EMC_PUTERM_WIDTH */
+                                       0x00000000 /* EMC_PUTERM_ADJ */
+                                       0x00000000 /* EMC_CDB_CNTL_1 */
+                                       0x00000000 /* EMC_CDB_CNTL_2 */
+                                       0x00000000 /* EMC_CDB_CNTL_3 */
+                                       0x00000004 /* EMC_QRST */
+                                       0x0000000c /* EMC_QSAFE */
+                                       0x0000000d /* EMC_RDV */
+                                       0x0000000f /* EMC_RDV_MASK */
+                                       0x0000009a /* EMC_REFRESH */
+                                       0x00000000 /* EMC_BURST_REFRESH_NUM */
+                                       0x00000026 /* EMC_PRE_REFRESH_REQ_CNT */
+                                       0x00000002 /* EMC_PDEX2WR */
+                                       0x00000002 /* EMC_PDEX2RD */
+                                       0x00000001 /* EMC_PCHG2PDEN */
+                                       0x00000000 /* EMC_ACT2PDEN */
+                                       0x00000007 /* EMC_AR2PDEN */
+                                       0x0000000f /* EMC_RW2PDEN */
+                                       0x00000006 /* EMC_TXSR */
+                                       0x00000006 /* EMC_TXSRDLL */
+                                       0x00000004 /* EMC_TCKE */
+                                       0x00000005 /* EMC_TCKESR */
+                                       0x00000004 /* EMC_TPD */
+                                       0x00000000 /* EMC_TFAW */
+                                       0x00000000 /* EMC_TRPAB */
+                                       0x00000005 /* EMC_TCLKSTABLE */
+                                       0x00000005 /* EMC_TCLKSTOP */
+                                       0x000000a0 /* EMC_TREFBW */
+                                       0x00000000 /* EMC_FBIO_CFG6 */
+                                       0x00000000 /* EMC_ODT_WRITE */
+                                       0x00000000 /* EMC_ODT_READ */
+                                       0x106aa298 /* EMC_FBIO_CFG5 */
+                                       0x002c00a0 /* EMC_CFG_DIG_DLL */
+                                       0x00008000 /* EMC_CFG_DIG_DLL_PERIOD */
+                                       0x00064000 /* EMC_DLL_XFORM_DQS0 */
+                                       0x00064000 /* EMC_DLL_XFORM_DQS1 */
+                                       0x00064000 /* EMC_DLL_XFORM_DQS2 */
+                                       0x00064000 /* EMC_DLL_XFORM_DQS3 */
+                                       0x00064000 /* EMC_DLL_XFORM_DQS4 */
+                                       0x00064000 /* EMC_DLL_XFORM_DQS5 */
+                                       0x00064000 /* EMC_DLL_XFORM_DQS6 */
+                                       0x00064000 /* EMC_DLL_XFORM_DQS7 */
+                                       0x00064000 /* EMC_DLL_XFORM_DQS8 */
+                                       0x00064000 /* EMC_DLL_XFORM_DQS9 */
+                                       0x00064000 /* EMC_DLL_XFORM_DQS10 */
+                                       0x00064000 /* EMC_DLL_XFORM_DQS11 */
+                                       0x00064000 /* EMC_DLL_XFORM_DQS12 */
+                                       0x00064000 /* EMC_DLL_XFORM_DQS13 */
+                                       0x00064000 /* EMC_DLL_XFORM_DQS14 */
+                                       0x00064000 /* EMC_DLL_XFORM_DQS15 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE0 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE1 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE2 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE3 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE4 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE5 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE6 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE7 */
+                                       0x00000000 /* EMC_DLL_XFORM_ADDR0 */
+                                       0x00000000 /* EMC_DLL_XFORM_ADDR1 */
+                                       0x00004000 /* EMC_DLL_XFORM_ADDR2 */
+                                       0x00000000 /* EMC_DLL_XFORM_ADDR3 */
+                                       0x00000000 /* EMC_DLL_XFORM_ADDR4 */
+                                       0x00004000 /* EMC_DLL_XFORM_ADDR5 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE8 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE9 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE10 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE11 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE12 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE13 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE14 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE15 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS0 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS1 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS2 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS3 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS4 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS5 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS6 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS7 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS8 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS9 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS10 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS11 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS12 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS13 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS14 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS15 */
+                                       0x000fc000 /* EMC_DLL_XFORM_DQ0 */
+                                       0x000fc000 /* EMC_DLL_XFORM_DQ1 */
+                                       0x000fc000 /* EMC_DLL_XFORM_DQ2 */
+                                       0x000fc000 /* EMC_DLL_XFORM_DQ3 */
+                                       0x0000fc00 /* EMC_DLL_XFORM_DQ4 */
+                                       0x0000fc00 /* EMC_DLL_XFORM_DQ5 */
+                                       0x0000fc00 /* EMC_DLL_XFORM_DQ6 */
+                                       0x0000fc00 /* EMC_DLL_XFORM_DQ7 */
+                                       0x10000280 /* EMC_XM2CMDPADCTRL */
+                                       0x00000000 /* EMC_XM2CMDPADCTRL4 */
+                                       0x00111111 /* EMC_XM2CMDPADCTRL5 */
+                                       0x00000000 /* EMC_XM2DQPADCTRL2 */
+                                       0x00000000 /* EMC_XM2DQPADCTRL3 */
+                                       0x77ffc081 /* EMC_XM2CLKPADCTRL */
+                                       0x00000303 /* EMC_XM2CLKPADCTRL2 */
+                                       0x81f1f108 /* EMC_XM2COMPPADCTRL */
+                                       0x07070004 /* EMC_XM2VTTGENPADCTRL */
+                                       0x0000003f /* EMC_XM2VTTGENPADCTRL2 */
+                                       0x016eeeee /* EMC_XM2VTTGENPADCTRL3 */
+                                       0x51451400 /* EMC_XM2DQSPADCTRL3 */
+                                       0x00514514 /* EMC_XM2DQSPADCTRL4 */
+                                       0x00514514 /* EMC_XM2DQSPADCTRL5 */
+                                       0x51451400 /* EMC_XM2DQSPADCTRL6 */
+                                       0x0000003f /* EMC_DSR_VTTGEN_DRV */
+                                       0x0000000b /* EMC_TXDSRVTTGEN */
+                                       0x00000000 /* EMC_FBIO_SPARE */
+                                       0x00000042 /* EMC_ZCAL_WAIT_CNT */
+                                       0x000c000c /* EMC_MRS_WAIT_CNT2 */
+                                       0x00000000 /* EMC_CTT */
+                                       0x00000003 /* EMC_CTT_DURATION */
+                                       0x0000f2f3 /* EMC_CFG_PIPE */
+                                       0x8000023a /* EMC_DYN_SELF_REF_CONTROL */
+                                       0x0000000a /* EMC_QPOP */
                                >;
                        };
 
                                nvidia,emc-zcal-interval = <0x00000000>;
 
                                nvidia,emc-configuration = <
-                                       0x00000001
-                                       0x0000000a
-                                       0x00000000
-                                       0x00000001
-                                       0x00000000
-                                       0x00000004
-                                       0x0000000a
-                                       0x00000003
-                                       0x0000000b
-                                       0x00000000
-                                       0x00000000
-                                       0x00000003
-                                       0x00000003
-                                       0x00000000
-                                       0x00000006
-                                       0x00000006
-                                       0x00000006
-                                       0x00000002
-                                       0x00000000
-                                       0x00000005
-                                       0x00000005
-                                       0x00010000
-                                       0x00000003
-                                       0x00000000
-                                       0x00000000
-                                       0x00000000
-                                       0x00000000
-                                       0x00000004
-                                       0x0000000c
-                                       0x0000000d
-                                       0x0000000f
-                                       0x00000134
-                                       0x00000000
-                                       0x0000004d
-                                       0x00000002
-                                       0x00000002
-                                       0x00000001
-                                       0x00000000
-                                       0x00000008
-                                       0x0000000f
-                                       0x0000000c
-                                       0x0000000c
-                                       0x00000004
-                                       0x00000005
-                                       0x00000004
-                                       0x00000000
-                                       0x00000000
-                                       0x00000005
-                                       0x00000005
-                                       0x0000013f
-                                       0x00000000
-                                       0x00000000
-                                       0x00000000
-                                       0x106aa298
-                                       0x002c00a0
-                                       0x00008000
-                                       0x00064000
-                                       0x00064000
-                                       0x00064000
-                                       0x00064000
-                                       0x00064000
-                                       0x00064000
-                                       0x00064000
-                                       0x00064000
-                                       0x00064000
-                                       0x00064000
-                                       0x00064000
-                                       0x00064000
-                                       0x00064000
-                                       0x00064000
-                                       0x00064000
-                                       0x00064000
-                                       0x00000000
-                                       0x00000000
-                                       0x00000000
-                                       0x00000000
-                                       0x00000000
-                                       0x00000000
-                                       0x00000000
-                                       0x00000000
-                                       0x00000000
-                                       0x00000000
-                                       0x00004000
-                                       0x00000000
-                                       0x00000000
-                                       0x00004000
-                                       0x00000000
-                                       0x00000000
-                                       0x00000000
-                                       0x00000000
-                                       0x00000000
-                                       0x00000000
-                                       0x00000000
-                                       0x00000000
-                                       0x00000000
-                                       0x00000000
-                                       0x00000000
-                                       0x00000000
-                                       0x00000000
-                                       0x00000000
-                                       0x00000000
-                                       0x00000000
-                                       0x00000000
-                                       0x00000000
-                                       0x00000000
-                                       0x00000000
-                                       0x00000000
-                                       0x00000000
-                                       0x00000000
-                                       0x00000000
-                                       0x000fc000
-                                       0x000fc000
-                                       0x000fc000
-                                       0x000fc000
-                                       0x0000fc00
-                                       0x0000fc00
-                                       0x0000fc00
-                                       0x0000fc00
-                                       0x10000280
-                                       0x00000000
-                                       0x00111111
-                                       0x00000000
-                                       0x00000000
-                                       0x77ffc081
-                                       0x00000303
-                                       0x81f1f108
-                                       0x07070004
-                                       0x0000003f
-                                       0x016eeeee
-                                       0x51451400
-                                       0x00514514
-                                       0x00514514
-                                       0x51451400
-                                       0x0000003f
-                                       0x00000015
-                                       0x00000000
-                                       0x00000042
-                                       0x000c000c
-                                       0x00000000
-                                       0x00000003
-                                       0x0000f2f3
-                                       0x80000370
-                                       0x0000000a
+                                       0x00000001 /* EMC_RC */
+                                       0x0000000a /* EMC_RFC */
+                                       0x00000000 /* EMC_RFC_SLR */
+                                       0x00000001 /* EMC_RAS */
+                                       0x00000000 /* EMC_RP */
+                                       0x00000004 /* EMC_R2W */
+                                       0x0000000a /* EMC_W2R */
+                                       0x00000003 /* EMC_R2P */
+                                       0x0000000b /* EMC_W2P */
+                                       0x00000000 /* EMC_RD_RCD */
+                                       0x00000000 /* EMC_WR_RCD */
+                                       0x00000003 /* EMC_RRD */
+                                       0x00000003 /* EMC_REXT */
+                                       0x00000000 /* EMC_WEXT */
+                                       0x00000006 /* EMC_WDV */
+                                       0x00000006 /* EMC_WDV_MASK */
+                                       0x00000006 /* EMC_QUSE */
+                                       0x00000002 /* EMC_QUSE_WIDTH */
+                                       0x00000000 /* EMC_IBDLY */
+                                       0x00000005 /* EMC_EINPUT */
+                                       0x00000005 /* EMC_EINPUT_DURATION */
+                                       0x00010000 /* EMC_PUTERM_EXTRA */
+                                       0x00000003 /* EMC_PUTERM_WIDTH */
+                                       0x00000000 /* EMC_PUTERM_ADJ */
+                                       0x00000000 /* EMC_CDB_CNTL_1 */
+                                       0x00000000 /* EMC_CDB_CNTL_2 */
+                                       0x00000000 /* EMC_CDB_CNTL_3 */
+                                       0x00000004 /* EMC_QRST */
+                                       0x0000000c /* EMC_QSAFE */
+                                       0x0000000d /* EMC_RDV */
+                                       0x0000000f /* EMC_RDV_MASK */
+                                       0x00000134 /* EMC_REFRESH */
+                                       0x00000000 /* EMC_BURST_REFRESH_NUM */
+                                       0x0000004d /* EMC_PRE_REFRESH_REQ_CNT */
+                                       0x00000002 /* EMC_PDEX2WR */
+                                       0x00000002 /* EMC_PDEX2RD */
+                                       0x00000001 /* EMC_PCHG2PDEN */
+                                       0x00000000 /* EMC_ACT2PDEN */
+                                       0x00000008 /* EMC_AR2PDEN */
+                                       0x0000000f /* EMC_RW2PDEN */
+                                       0x0000000c /* EMC_TXSR */
+                                       0x0000000c /* EMC_TXSRDLL */
+                                       0x00000004 /* EMC_TCKE */
+                                       0x00000005 /* EMC_TCKESR */
+                                       0x00000004 /* EMC_TPD */
+                                       0x00000000 /* EMC_TFAW */
+                                       0x00000000 /* EMC_TRPAB */
+                                       0x00000005 /* EMC_TCLKSTABLE */
+                                       0x00000005 /* EMC_TCLKSTOP */
+                                       0x0000013f /* EMC_TREFBW */
+                                       0x00000000 /* EMC_FBIO_CFG6 */
+                                       0x00000000 /* EMC_ODT_WRITE */
+                                       0x00000000 /* EMC_ODT_READ */
+                                       0x106aa298 /* EMC_FBIO_CFG5 */
+                                       0x002c00a0 /* EMC_CFG_DIG_DLL */
+                                       0x00008000 /* EMC_CFG_DIG_DLL_PERIOD */
+                                       0x00064000 /* EMC_DLL_XFORM_DQS0 */
+                                       0x00064000 /* EMC_DLL_XFORM_DQS1 */
+                                       0x00064000 /* EMC_DLL_XFORM_DQS2 */
+                                       0x00064000 /* EMC_DLL_XFORM_DQS3 */
+                                       0x00064000 /* EMC_DLL_XFORM_DQS4 */
+                                       0x00064000 /* EMC_DLL_XFORM_DQS5 */
+                                       0x00064000 /* EMC_DLL_XFORM_DQS6 */
+                                       0x00064000 /* EMC_DLL_XFORM_DQS7 */
+                                       0x00064000 /* EMC_DLL_XFORM_DQS8 */
+                                       0x00064000 /* EMC_DLL_XFORM_DQS9 */
+                                       0x00064000 /* EMC_DLL_XFORM_DQS10 */
+                                       0x00064000 /* EMC_DLL_XFORM_DQS11 */
+                                       0x00064000 /* EMC_DLL_XFORM_DQS12 */
+                                       0x00064000 /* EMC_DLL_XFORM_DQS13 */
+                                       0x00064000 /* EMC_DLL_XFORM_DQS14 */
+                                       0x00064000 /* EMC_DLL_XFORM_DQS15 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE0 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE1 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE2 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE3 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE4 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE5 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE6 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE7 */
+                                       0x00000000 /* EMC_DLL_XFORM_ADDR0 */
+                                       0x00000000 /* EMC_DLL_XFORM_ADDR1 */
+                                       0x00004000 /* EMC_DLL_XFORM_ADDR2 */
+                                       0x00000000 /* EMC_DLL_XFORM_ADDR3 */
+                                       0x00000000 /* EMC_DLL_XFORM_ADDR4 */
+                                       0x00004000 /* EMC_DLL_XFORM_ADDR5 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE8 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE9 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE10 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE11 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE12 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE13 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE14 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE15 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS0 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS1 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS2 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS3 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS4 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS5 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS6 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS7 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS8 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS9 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS10 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS11 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS12 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS13 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS14 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS15 */
+                                       0x000fc000 /* EMC_DLL_XFORM_DQ0 */
+                                       0x000fc000 /* EMC_DLL_XFORM_DQ1 */
+                                       0x000fc000 /* EMC_DLL_XFORM_DQ2 */
+                                       0x000fc000 /* EMC_DLL_XFORM_DQ3 */
+                                       0x0000fc00 /* EMC_DLL_XFORM_DQ4 */
+                                       0x0000fc00 /* EMC_DLL_XFORM_DQ5 */
+                                       0x0000fc00 /* EMC_DLL_XFORM_DQ6 */
+                                       0x0000fc00 /* EMC_DLL_XFORM_DQ7 */
+                                       0x10000280 /* EMC_XM2CMDPADCTRL */
+                                       0x00000000 /* EMC_XM2CMDPADCTRL4 */
+                                       0x00111111 /* EMC_XM2CMDPADCTRL5 */
+                                       0x00000000 /* EMC_XM2DQPADCTRL2 */
+                                       0x00000000 /* EMC_XM2DQPADCTRL3 */
+                                       0x77ffc081 /* EMC_XM2CLKPADCTRL */
+                                       0x00000303 /* EMC_XM2CLKPADCTRL2 */
+                                       0x81f1f108 /* EMC_XM2COMPPADCTRL */
+                                       0x07070004 /* EMC_XM2VTTGENPADCTRL */
+                                       0x0000003f /* EMC_XM2VTTGENPADCTRL2 */
+                                       0x016eeeee /* EMC_XM2VTTGENPADCTRL3 */
+                                       0x51451400 /* EMC_XM2DQSPADCTRL3 */
+                                       0x00514514 /* EMC_XM2DQSPADCTRL4 */
+                                       0x00514514 /* EMC_XM2DQSPADCTRL5 */
+                                       0x51451400 /* EMC_XM2DQSPADCTRL6 */
+                                       0x0000003f /* EMC_DSR_VTTGEN_DRV */
+                                       0x00000015 /* EMC_TXDSRVTTGEN */
+                                       0x00000000 /* EMC_FBIO_SPARE */
+                                       0x00000042 /* EMC_ZCAL_WAIT_CNT */
+                                       0x000c000c /* EMC_MRS_WAIT_CNT2 */
+                                       0x00000000 /* EMC_CTT */
+                                       0x00000003 /* EMC_CTT_DURATION */
+                                       0x0000f2f3 /* EMC_CFG_PIPE */
+                                       0x80000370 /* EMC_DYN_SELF_REF_CONTROL */
+                                       0x0000000a /* EMC_QPOP */
                                >;
                        };
 
                                nvidia,emc-zcal-interval = <0x00000000>;
 
                                nvidia,emc-configuration = <
-                                       0x00000003
-                                       0x00000011
-                                       0x00000000
-                                       0x00000002
-                                       0x00000000
-                                       0x00000004
-                                       0x0000000a
-                                       0x00000003
-                                       0x0000000b
-                                       0x00000000
-                                       0x00000000
-                                       0x00000003
-                                       0x00000003
-                                       0x00000000
-                                       0x00000006
-                                       0x00000006
-                                       0x00000006
-                                       0x00000002
-                                       0x00000000
-                                       0x00000005
-                                       0x00000005
-                                       0x00010000
-                                       0x00000003
-                                       0x00000000
-                                       0x00000000
-                                       0x00000000
-                                       0x00000000
-                                       0x00000004
-                                       0x0000000c
-                                       0x0000000d
-                                       0x0000000f
-                                       0x00000202
-                                       0x00000000
-                                       0x00000080
-                                       0x00000002
-                                       0x00000002
-                                       0x00000001
-                                       0x00000000
-                                       0x0000000f
-                                       0x0000000f
-                                       0x00000013
-                                       0x00000013
-                                       0x00000004
-                                       0x00000005
-                                       0x00000004
-                                       0x00000001
-                                       0x00000000
-                                       0x00000005
-                                       0x00000005
-                                       0x00000213
-                                       0x00000000
-                                       0x00000000
-                                       0x00000000
-                                       0x106aa298
-                                       0x002c00a0
-                                       0x00008000
-                                       0x00064000
-                                       0x00064000
-                                       0x00064000
-                                       0x00064000
-                                       0x00064000
-                                       0x00064000
-                                       0x00064000
-                                       0x00064000
-                                       0x00064000
-                                       0x00064000
-                                       0x00064000
-                                       0x00064000
-                                       0x00064000
-                                       0x00064000
-                                       0x00064000
-                                       0x00064000
-                                       0x00000000
-                                       0x00000000
-                                       0x00000000
-                                       0x00000000
-                                       0x00000000
-                                       0x00000000
-                                       0x00000000
-                                       0x00000000
-                                       0x00000000
-                                       0x00000000
-                                       0x00004000
-                                       0x00000000
-                                       0x00000000
-                                       0x00004000
-                                       0x00000000
-                                       0x00000000
-                                       0x00000000
-                                       0x00000000
-                                       0x00000000
-                                       0x00000000
-                                       0x00000000
-                                       0x00000000
-                                       0x00000000
-                                       0x00000000
-                                       0x00000000
-                                       0x00000000
-                                       0x00000000
-                                       0x00000000
-                                       0x00000000
-                                       0x00000000
-                                       0x00000000
-                                       0x00000000
-                                       0x00000000
-                                       0x00000000
-                                       0x00000000
-                                       0x00000000
-                                       0x00000000
-                                       0x00000000
-                                       0x000fc000
-                                       0x000fc000
-                                       0x000fc000
-                                       0x000fc000
-                                       0x0000fc00
-                                       0x0000fc00
-                                       0x0000fc00
-                                       0x0000fc00
-                                       0x10000280
-                                       0x00000000
-                                       0x00111111
-                                       0x00000000
-                                       0x00000000
-                                       0x77ffc081
-                                       0x00000303
-                                       0x81f1f108
-                                       0x07070004
-                                       0x0000003f
-                                       0x016eeeee
-                                       0x51451400
-                                       0x00514514
-                                       0x00514514
-                                       0x51451400
-                                       0x0000003f
-                                       0x00000022
-                                       0x00000000
-                                       0x00000042
-                                       0x000c000c
-                                       0x00000000
-                                       0x00000003
-                                       0x0000f2f3
-                                       0x8000050e
-                                       0x0000000a
+                                       0x00000003 /* EMC_RC */
+                                       0x00000011 /* EMC_RFC */
+                                       0x00000000 /* EMC_RFC_SLR */
+                                       0x00000002 /* EMC_RAS */
+                                       0x00000000 /* EMC_RP */
+                                       0x00000004 /* EMC_R2W */
+                                       0x0000000a /* EMC_W2R */
+                                       0x00000003 /* EMC_R2P */
+                                       0x0000000b /* EMC_W2P */
+                                       0x00000000 /* EMC_RD_RCD */
+                                       0x00000000 /* EMC_WR_RCD */
+                                       0x00000003 /* EMC_RRD */
+                                       0x00000003 /* EMC_REXT */
+                                       0x00000000 /* EMC_WEXT */
+                                       0x00000006 /* EMC_WDV */
+                                       0x00000006 /* EMC_WDV_MASK */
+                                       0x00000006 /* EMC_QUSE */
+                                       0x00000002 /* EMC_QUSE_WIDTH */
+                                       0x00000000 /* EMC_IBDLY */
+                                       0x00000005 /* EMC_EINPUT */
+                                       0x00000005 /* EMC_EINPUT_DURATION */
+                                       0x00010000 /* EMC_PUTERM_EXTRA */
+                                       0x00000003 /* EMC_PUTERM_WIDTH */
+                                       0x00000000 /* EMC_PUTERM_ADJ */
+                                       0x00000000 /* EMC_CDB_CNTL_1 */
+                                       0x00000000 /* EMC_CDB_CNTL_2 */
+                                       0x00000000 /* EMC_CDB_CNTL_3 */
+                                       0x00000004 /* EMC_QRST */
+                                       0x0000000c /* EMC_QSAFE */
+                                       0x0000000d /* EMC_RDV */
+                                       0x0000000f /* EMC_RDV_MASK */
+                                       0x00000202 /* EMC_REFRESH */
+                                       0x00000000 /* EMC_BURST_REFRESH_NUM */
+                                       0x00000080 /* EMC_PRE_REFRESH_REQ_CNT */
+                                       0x00000002 /* EMC_PDEX2WR */
+                                       0x00000002 /* EMC_PDEX2RD */
+                                       0x00000001 /* EMC_PCHG2PDEN */
+                                       0x00000000 /* EMC_ACT2PDEN */
+                                       0x0000000f /* EMC_AR2PDEN */
+                                       0x0000000f /* EMC_RW2PDEN */
+                                       0x00000013 /* EMC_TXSR */
+                                       0x00000013 /* EMC_TXSRDLL */
+                                       0x00000004 /* EMC_TCKE */
+                                       0x00000005 /* EMC_TCKESR */
+                                       0x00000004 /* EMC_TPD */
+                                       0x00000001 /* EMC_TFAW */
+                                       0x00000000 /* EMC_TRPAB */
+                                       0x00000005 /* EMC_TCLKSTABLE */
+                                       0x00000005 /* EMC_TCLKSTOP */
+                                       0x00000213 /* EMC_TREFBW */
+                                       0x00000000 /* EMC_FBIO_CFG6 */
+                                       0x00000000 /* EMC_ODT_WRITE */
+                                       0x00000000 /* EMC_ODT_READ */
+                                       0x106aa298 /* EMC_FBIO_CFG5 */
+                                       0x002c00a0 /* EMC_CFG_DIG_DLL */
+                                       0x00008000 /* EMC_CFG_DIG_DLL_PERIOD */
+                                       0x00064000 /* EMC_DLL_XFORM_DQS0 */
+                                       0x00064000 /* EMC_DLL_XFORM_DQS1 */
+                                       0x00064000 /* EMC_DLL_XFORM_DQS2 */
+                                       0x00064000 /* EMC_DLL_XFORM_DQS3 */
+                                       0x00064000 /* EMC_DLL_XFORM_DQS4 */
+                                       0x00064000 /* EMC_DLL_XFORM_DQS5 */
+                                       0x00064000 /* EMC_DLL_XFORM_DQS6 */
+                                       0x00064000 /* EMC_DLL_XFORM_DQS7 */
+                                       0x00064000 /* EMC_DLL_XFORM_DQS8 */
+                                       0x00064000 /* EMC_DLL_XFORM_DQS9 */
+                                       0x00064000 /* EMC_DLL_XFORM_DQS10 */
+                                       0x00064000 /* EMC_DLL_XFORM_DQS11 */
+                                       0x00064000 /* EMC_DLL_XFORM_DQS12 */
+                                       0x00064000 /* EMC_DLL_XFORM_DQS13 */
+                                       0x00064000 /* EMC_DLL_XFORM_DQS14 */
+                                       0x00064000 /* EMC_DLL_XFORM_DQS15 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE0 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE1 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE2 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE3 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE4 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE5 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE6 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE7 */
+                                       0x00000000 /* EMC_DLL_XFORM_ADDR0 */
+                                       0x00000000 /* EMC_DLL_XFORM_ADDR1 */
+                                       0x00004000 /* EMC_DLL_XFORM_ADDR2 */
+                                       0x00000000 /* EMC_DLL_XFORM_ADDR3 */
+                                       0x00000000 /* EMC_DLL_XFORM_ADDR4 */
+                                       0x00004000 /* EMC_DLL_XFORM_ADDR5 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE8 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE9 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE10 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE11 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE12 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE13 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE14 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE15 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS0 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS1 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS2 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS3 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS4 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS5 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS6 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS7 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS8 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS9 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS10 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS11 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS12 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS13 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS14 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS15 */
+                                       0x000fc000 /* EMC_DLL_XFORM_DQ0 */
+                                       0x000fc000 /* EMC_DLL_XFORM_DQ1 */
+                                       0x000fc000 /* EMC_DLL_XFORM_DQ2 */
+                                       0x000fc000 /* EMC_DLL_XFORM_DQ3 */
+                                       0x0000fc00 /* EMC_DLL_XFORM_DQ4 */
+                                       0x0000fc00 /* EMC_DLL_XFORM_DQ5 */
+                                       0x0000fc00 /* EMC_DLL_XFORM_DQ6 */
+                                       0x0000fc00 /* EMC_DLL_XFORM_DQ7 */
+                                       0x10000280 /* EMC_XM2CMDPADCTRL */
+                                       0x00000000 /* EMC_XM2CMDPADCTRL4 */
+                                       0x00111111 /* EMC_XM2CMDPADCTRL5 */
+                                       0x00000000 /* EMC_XM2DQPADCTRL2 */
+                                       0x00000000 /* EMC_XM2DQPADCTRL3 */
+                                       0x77ffc081 /* EMC_XM2CLKPADCTRL */
+                                       0x00000303 /* EMC_XM2CLKPADCTRL2 */
+                                       0x81f1f108 /* EMC_XM2COMPPADCTRL */
+                                       0x07070004 /* EMC_XM2VTTGENPADCTRL */
+                                       0x0000003f /* EMC_XM2VTTGENPADCTRL2 */
+                                       0x016eeeee /* EMC_XM2VTTGENPADCTRL3 */
+                                       0x51451400 /* EMC_XM2DQSPADCTRL3 */
+                                       0x00514514 /* EMC_XM2DQSPADCTRL4 */
+                                       0x00514514 /* EMC_XM2DQSPADCTRL5 */
+                                       0x51451400 /* EMC_XM2DQSPADCTRL6 */
+                                       0x0000003f /* EMC_DSR_VTTGEN_DRV */
+                                       0x00000022 /* EMC_TXDSRVTTGEN */
+                                       0x00000000 /* EMC_FBIO_SPARE */
+                                       0x00000042 /* EMC_ZCAL_WAIT_CNT */
+                                       0x000c000c /* EMC_MRS_WAIT_CNT2 */
+                                       0x00000000 /* EMC_CTT */
+                                       0x00000003 /* EMC_CTT_DURATION */
+                                       0x0000f2f3 /* EMC_CFG_PIPE */
+                                       0x8000050e /* EMC_DYN_SELF_REF_CONTROL */
+                                       0x0000000a /* EMC_QPOP */
                                >;
                        };
 
                                nvidia,emc-zcal-interval = <0x00000000>;
 
                                nvidia,emc-configuration = <
-                                       0x00000004
-                                       0x0000001a
-                                       0x00000000
-                                       0x00000003
-                                       0x00000001
-                                       0x00000004
-                                       0x0000000a
-                                       0x00000003
-                                       0x0000000b
-                                       0x00000001
-                                       0x00000001
-                                       0x00000003
-                                       0x00000003
-                                       0x00000000
-                                       0x00000006
-                                       0x00000006
-                                       0x00000006
-                                       0x00000002
-                                       0x00000000
-                                       0x00000005
-                                       0x00000005
-                                       0x00010000
-                                       0x00000003
-                                       0x00000000
-                                       0x00000000
-                                       0x00000000
-                                       0x00000000
-                                       0x00000004
-                                       0x0000000c
-                                       0x0000000d
-                                       0x0000000f
-                                       0x00000304
-                                       0x00000000
-                                       0x000000c1
-                                       0x00000002
-                                       0x00000002
-                                       0x00000001
-                                       0x00000000
-                                       0x00000018
-                                       0x0000000f
-                                       0x0000001c
-                                       0x0000001c
-                                       0x00000004
-                                       0x00000005
-                                       0x00000004
-                                       0x00000003
-                                       0x00000000
-                                       0x00000005
-                                       0x00000005
-                                       0x0000031c
-                                       0x00000000
-                                       0x00000000
-                                       0x00000000
-                                       0x106aa298
-                                       0x002c00a0
-                                       0x00008000
-                                       0x00064000
-                                       0x00064000
-                                       0x00064000
-                                       0x00064000
-                                       0x00064000
-                                       0x00064000
-                                       0x00064000
-                                       0x00064000
-                                       0x00064000
-                                       0x00064000
-                                       0x00064000
-                                       0x00064000
-                                       0x00064000
-                                       0x00064000
-                                       0x00064000
-                                       0x00064000
-                                       0x00000000
-                                       0x00000000
-                                       0x00000000
-                                       0x00000000
-                                       0x00000000
-                                       0x00000000
-                                       0x00000000
-                                       0x00000000
-                                       0x00000000
-                                       0x00000000
-                                       0x00004000
-                                       0x00000000
-                                       0x00000000
-                                       0x00004000
-                                       0x00000000
-                                       0x00000000
-                                       0x00000000
-                                       0x00000000
-                                       0x00000000
-                                       0x00000000
-                                       0x00000000
-                                       0x00000000
-                                       0x00000000
-                                       0x00000000
-                                       0x00000000
-                                       0x00000000
-                                       0x00000000
-                                       0x00000000
-                                       0x00000000
-                                       0x00000000
-                                       0x00000000
-                                       0x00000000
-                                       0x00000000
-                                       0x00000000
-                                       0x00000000
-                                       0x00000000
-                                       0x00000000
-                                       0x00000000
-                                       0x000fc000
-                                       0x000fc000
-                                       0x000fc000
-                                       0x000fc000
-                                       0x0000fc00
-                                       0x0000fc00
-                                       0x0000fc00
-                                       0x0000fc00
-                                       0x10000280
-                                       0x00000000
-                                       0x00111111
-                                       0x00000000
-                                       0x00000000
-                                       0x77ffc081
-                                       0x00000303
-                                       0x81f1f108
-                                       0x07070004
-                                       0x0000003f
-                                       0x016eeeee
-                                       0x51451400
-                                       0x00514514
-                                       0x00514514
-                                       0x51451400
-                                       0x0000003f
-                                       0x00000033
-                                       0x00000000
-                                       0x00000042
-                                       0x000c000c
-                                       0x00000000
-                                       0x00000003
-                                       0x0000f2f3
-                                       0x80000713
-                                       0x0000000a
+                                       0x00000004 /* EMC_RC */
+                                       0x0000001a /* EMC_RFC */
+                                       0x00000000 /* EMC_RFC_SLR */
+                                       0x00000003 /* EMC_RAS */
+                                       0x00000001 /* EMC_RP */
+                                       0x00000004 /* EMC_R2W */
+                                       0x0000000a /* EMC_W2R */
+                                       0x00000003 /* EMC_R2P */
+                                       0x0000000b /* EMC_W2P */
+                                       0x00000001 /* EMC_RD_RCD */
+                                       0x00000001 /* EMC_WR_RCD */
+                                       0x00000003 /* EMC_RRD */
+                                       0x00000003 /* EMC_REXT */
+                                       0x00000000 /* EMC_WEXT */
+                                       0x00000006 /* EMC_WDV */
+                                       0x00000006 /* EMC_WDV_MASK */
+                                       0x00000006 /* EMC_QUSE */
+                                       0x00000002 /* EMC_QUSE_WIDTH */
+                                       0x00000000 /* EMC_IBDLY */
+                                       0x00000005 /* EMC_EINPUT */
+                                       0x00000005 /* EMC_EINPUT_DURATION */
+                                       0x00010000 /* EMC_PUTERM_EXTRA */
+                                       0x00000003 /* EMC_PUTERM_WIDTH */
+                                       0x00000000 /* EMC_PUTERM_ADJ */
+                                       0x00000000 /* EMC_CDB_CNTL_1 */
+                                       0x00000000 /* EMC_CDB_CNTL_2 */
+                                       0x00000000 /* EMC_CDB_CNTL_3 */
+                                       0x00000004 /* EMC_QRST */
+                                       0x0000000c /* EMC_QSAFE */
+                                       0x0000000d /* EMC_RDV */
+                                       0x0000000f /* EMC_RDV_MASK */
+                                       0x00000304 /* EMC_REFRESH */
+                                       0x00000000 /* EMC_BURST_REFRESH_NUM */
+                                       0x000000c1 /* EMC_PRE_REFRESH_REQ_CNT */
+                                       0x00000002 /* EMC_PDEX2WR */
+                                       0x00000002 /* EMC_PDEX2RD */
+                                       0x00000001 /* EMC_PCHG2PDEN */
+                                       0x00000000 /* EMC_ACT2PDEN */
+                                       0x00000018 /* EMC_AR2PDEN */
+                                       0x0000000f /* EMC_RW2PDEN */
+                                       0x0000001c /* EMC_TXSR */
+                                       0x0000001c /* EMC_TXSRDLL */
+                                       0x00000004 /* EMC_TCKE */
+                                       0x00000005 /* EMC_TCKESR */
+                                       0x00000004 /* EMC_TPD */
+                                       0x00000003 /* EMC_TFAW */
+                                       0x00000000 /* EMC_TRPAB */
+                                       0x00000005 /* EMC_TCLKSTABLE */
+                                       0x00000005 /* EMC_TCLKSTOP */
+                                       0x0000031c /* EMC_TREFBW */
+                                       0x00000000 /* EMC_FBIO_CFG6 */
+                                       0x00000000 /* EMC_ODT_WRITE */
+                                       0x00000000 /* EMC_ODT_READ */
+                                       0x106aa298 /* EMC_FBIO_CFG5 */
+                                       0x002c00a0 /* EMC_CFG_DIG_DLL */
+                                       0x00008000 /* EMC_CFG_DIG_DLL_PERIOD */
+                                       0x00064000 /* EMC_DLL_XFORM_DQS0 */
+                                       0x00064000 /* EMC_DLL_XFORM_DQS1 */
+                                       0x00064000 /* EMC_DLL_XFORM_DQS2 */
+                                       0x00064000 /* EMC_DLL_XFORM_DQS3 */
+                                       0x00064000 /* EMC_DLL_XFORM_DQS4 */
+                                       0x00064000 /* EMC_DLL_XFORM_DQS5 */
+                                       0x00064000 /* EMC_DLL_XFORM_DQS6 */
+                                       0x00064000 /* EMC_DLL_XFORM_DQS7 */
+                                       0x00064000 /* EMC_DLL_XFORM_DQS8 */
+                                       0x00064000 /* EMC_DLL_XFORM_DQS9 */
+                                       0x00064000 /* EMC_DLL_XFORM_DQS10 */
+                                       0x00064000 /* EMC_DLL_XFORM_DQS11 */
+                                       0x00064000 /* EMC_DLL_XFORM_DQS12 */
+                                       0x00064000 /* EMC_DLL_XFORM_DQS13 */
+                                       0x00064000 /* EMC_DLL_XFORM_DQS14 */
+                                       0x00064000 /* EMC_DLL_XFORM_DQS15 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE0 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE1 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE2 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE3 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE4 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE5 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE6 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE7 */
+                                       0x00000000 /* EMC_DLL_XFORM_ADDR0 */
+                                       0x00000000 /* EMC_DLL_XFORM_ADDR1 */
+                                       0x00004000 /* EMC_DLL_XFORM_ADDR2 */
+                                       0x00000000 /* EMC_DLL_XFORM_ADDR3 */
+                                       0x00000000 /* EMC_DLL_XFORM_ADDR4 */
+                                       0x00004000 /* EMC_DLL_XFORM_ADDR5 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE8 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE9 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE10 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE11 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE12 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE13 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE14 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE15 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS0 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS1 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS2 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS3 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS4 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS5 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS6 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS7 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS8 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS9 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS10 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS11 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS12 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS13 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS14 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS15 */
+                                       0x000fc000 /* EMC_DLL_XFORM_DQ0 */
+                                       0x000fc000 /* EMC_DLL_XFORM_DQ1 */
+                                       0x000fc000 /* EMC_DLL_XFORM_DQ2 */
+                                       0x000fc000 /* EMC_DLL_XFORM_DQ3 */
+                                       0x0000fc00 /* EMC_DLL_XFORM_DQ4 */
+                                       0x0000fc00 /* EMC_DLL_XFORM_DQ5 */
+                                       0x0000fc00 /* EMC_DLL_XFORM_DQ6 */
+                                       0x0000fc00 /* EMC_DLL_XFORM_DQ7 */
+                                       0x10000280 /* EMC_XM2CMDPADCTRL */
+                                       0x00000000 /* EMC_XM2CMDPADCTRL4 */
+                                       0x00111111 /* EMC_XM2CMDPADCTRL5 */
+                                       0x00000000 /* EMC_XM2DQPADCTRL2 */
+                                       0x00000000 /* EMC_XM2DQPADCTRL3 */
+                                       0x77ffc081 /* EMC_XM2CLKPADCTRL */
+                                       0x00000303 /* EMC_XM2CLKPADCTRL2 */
+                                       0x81f1f108 /* EMC_XM2COMPPADCTRL */
+                                       0x07070004 /* EMC_XM2VTTGENPADCTRL */
+                                       0x0000003f /* EMC_XM2VTTGENPADCTRL2 */
+                                       0x016eeeee /* EMC_XM2VTTGENPADCTRL3 */
+                                       0x51451400 /* EMC_XM2DQSPADCTRL3 */
+                                       0x00514514 /* EMC_XM2DQSPADCTRL4 */
+                                       0x00514514 /* EMC_XM2DQSPADCTRL5 */
+                                       0x51451400 /* EMC_XM2DQSPADCTRL6 */
+                                       0x0000003f /* EMC_DSR_VTTGEN_DRV */
+                                       0x00000033 /* EMC_TXDSRVTTGEN */
+                                       0x00000000 /* EMC_FBIO_SPARE */
+                                       0x00000042 /* EMC_ZCAL_WAIT_CNT */
+                                       0x000c000c /* EMC_MRS_WAIT_CNT2 */
+                                       0x00000000 /* EMC_CTT */
+                                       0x00000003 /* EMC_CTT_DURATION */
+                                       0x0000f2f3 /* EMC_CFG_PIPE */
+                                       0x80000713 /* EMC_DYN_SELF_REF_CONTROL */
+                                       0x0000000a /* EMC_QPOP */
                                >;
                        };
 
                                nvidia,emc-zcal-interval = <0x00020000>;
 
                                nvidia,emc-configuration = <
-                                       0x00000009
-                                       0x00000035
-                                       0x00000000
-                                       0x00000007
-                                       0x00000002
-                                       0x00000005
-                                       0x0000000a
-                                       0x00000003
-                                       0x0000000b
-                                       0x00000002
-                                       0x00000002
-                                       0x00000003
-                                       0x00000003
-                                       0x00000000
-                                       0x00000005
-                                       0x00000005
-                                       0x00000006
-                                       0x00000002
-                                       0x00000000
-                                       0x00000004
-                                       0x00000006
-                                       0x00010000
-                                       0x00000003
-                                       0x00000000
-                                       0x00000000
-                                       0x00000000
-                                       0x00000000
-                                       0x00000003
-                                       0x0000000d
-                                       0x0000000f
-                                       0x00000011
-                                       0x00000607
-                                       0x00000000
-                                       0x00000181
-                                       0x00000002
-                                       0x00000002
-                                       0x00000001
-                                       0x00000000
-                                       0x00000032
-                                       0x0000000f
-                                       0x00000038
-                                       0x00000038
-                                       0x00000004
-                                       0x00000005
-                                       0x00000004
-                                       0x00000007
-                                       0x00000000
-                                       0x00000005
-                                       0x00000005
-                                       0x00000638
-                                       0x00000000
-                                       0x00000000
-                                       0x00000000
-                                       0x106aa298
-                                       0x002c00a0
-                                       0x00008000
-                                       0x00064000
-                                       0x00064000
-                                       0x00064000
-                                       0x00064000
-                                       0x00064000
-                                       0x00064000
-                                       0x00064000
-                                       0x00064000
-                                       0x00064000
-                                       0x00064000
-                                       0x00064000
-                                       0x00064000
-                                       0x00064000
-                                       0x00064000
-                                       0x00064000
-                                       0x00064000
-                                       0x00000000
-                                       0x00000000
-                                       0x00000000
-                                       0x00000000
-                                       0x00000000
-                                       0x00000000
-                                       0x00000000
-                                       0x00000000
-                                       0x00000000
-                                       0x00000000
-                                       0x00004000
-                                       0x00000000
-                                       0x00000000
-                                       0x00004000
-                                       0x00000000
-                                       0x00000000
-                                       0x00000000
-                                       0x00000000
-                                       0x00000000
-                                       0x00000000
-                                       0x00000000
-                                       0x00000000
-                                       0x00000000
-                                       0x00000000
-                                       0x00000000
-                                       0x00000000
-                                       0x00000000
-                                       0x00000000
-                                       0x00000000
-                                       0x00000000
-                                       0x00000000
-                                       0x00000000
-                                       0x00000000
-                                       0x00000000
-                                       0x00000000
-                                       0x00000000
-                                       0x00000000
-                                       0x00000000
-                                       0x00090000
-                                       0x00090000
-                                       0x00094000
-                                       0x00094000
-                                       0x00009400
-                                       0x00009000
-                                       0x00009000
-                                       0x00009000
-                                       0x10000280
-                                       0x00000000
-                                       0x00111111
-                                       0x00000000
-                                       0x00000000
-                                       0x77ffc081
-                                       0x00000303
-                                       0x81f1f108
-                                       0x07070004
-                                       0x0000003f
-                                       0x016eeeee
-                                       0x51451400
-                                       0x00514514
-                                       0x00514514
-                                       0x51451400
-                                       0x0000003f
-                                       0x00000066
-                                       0x00000000
-                                       0x00000100
-                                       0x000c000c
-                                       0x00000000
-                                       0x00000003
-                                       0x0000d2b3
-                                       0x80000d22
-                                       0x0000000a
+                                       0x00000009 /* EMC_RC */
+                                       0x00000035 /* EMC_RFC */
+                                       0x00000000 /* EMC_RFC_SLR */
+                                       0x00000007 /* EMC_RAS */
+                                       0x00000002 /* EMC_RP */
+                                       0x00000005 /* EMC_R2W */
+                                       0x0000000a /* EMC_W2R */
+                                       0x00000003 /* EMC_R2P */
+                                       0x0000000b /* EMC_W2P */
+                                       0x00000002 /* EMC_RD_RCD */
+                                       0x00000002 /* EMC_WR_RCD */
+                                       0x00000003 /* EMC_RRD */
+                                       0x00000003 /* EMC_REXT */
+                                       0x00000000 /* EMC_WEXT */
+                                       0x00000005 /* EMC_WDV */
+                                       0x00000005 /* EMC_WDV_MASK */
+                                       0x00000006 /* EMC_QUSE */
+                                       0x00000002 /* EMC_QUSE_WIDTH */
+                                       0x00000000 /* EMC_IBDLY */
+                                       0x00000004 /* EMC_EINPUT */
+                                       0x00000006 /* EMC_EINPUT_DURATION */
+                                       0x00010000 /* EMC_PUTERM_EXTRA */
+                                       0x00000003 /* EMC_PUTERM_WIDTH */
+                                       0x00000000 /* EMC_PUTERM_ADJ */
+                                       0x00000000 /* EMC_CDB_CNTL_1 */
+                                       0x00000000 /* EMC_CDB_CNTL_2 */
+                                       0x00000000 /* EMC_CDB_CNTL_3 */
+                                       0x00000003 /* EMC_QRST */
+                                       0x0000000d /* EMC_QSAFE */
+                                       0x0000000f /* EMC_RDV */
+                                       0x00000011 /* EMC_RDV_MASK */
+                                       0x00000607 /* EMC_REFRESH */
+                                       0x00000000 /* EMC_BURST_REFRESH_NUM */
+                                       0x00000181 /* EMC_PRE_REFRESH_REQ_CNT */
+                                       0x00000002 /* EMC_PDEX2WR */
+                                       0x00000002 /* EMC_PDEX2RD */
+                                       0x00000001 /* EMC_PCHG2PDEN */
+                                       0x00000000 /* EMC_ACT2PDEN */
+                                       0x00000032 /* EMC_AR2PDEN */
+                                       0x0000000f /* EMC_RW2PDEN */
+                                       0x00000038 /* EMC_TXSR */
+                                       0x00000038 /* EMC_TXSRDLL */
+                                       0x00000004 /* EMC_TCKE */
+                                       0x00000005 /* EMC_TCKESR */
+                                       0x00000004 /* EMC_TPD */
+                                       0x00000007 /* EMC_TFAW */
+                                       0x00000000 /* EMC_TRPAB */
+                                       0x00000005 /* EMC_TCLKSTABLE */
+                                       0x00000005 /* EMC_TCLKSTOP */
+                                       0x00000638 /* EMC_TREFBW */
+                                       0x00000000 /* EMC_FBIO_CFG6 */
+                                       0x00000000 /* EMC_ODT_WRITE */
+                                       0x00000000 /* EMC_ODT_READ */
+                                       0x106aa298 /* EMC_FBIO_CFG5 */
+                                       0x002c00a0 /* EMC_CFG_DIG_DLL */
+                                       0x00008000 /* EMC_CFG_DIG_DLL_PERIOD */
+                                       0x00064000 /* EMC_DLL_XFORM_DQS0 */
+                                       0x00064000 /* EMC_DLL_XFORM_DQS1 */
+                                       0x00064000 /* EMC_DLL_XFORM_DQS2 */
+                                       0x00064000 /* EMC_DLL_XFORM_DQS3 */
+                                       0x00064000 /* EMC_DLL_XFORM_DQS4 */
+                                       0x00064000 /* EMC_DLL_XFORM_DQS5 */
+                                       0x00064000 /* EMC_DLL_XFORM_DQS6 */
+                                       0x00064000 /* EMC_DLL_XFORM_DQS7 */
+                                       0x00064000 /* EMC_DLL_XFORM_DQS8 */
+                                       0x00064000 /* EMC_DLL_XFORM_DQS9 */
+                                       0x00064000 /* EMC_DLL_XFORM_DQS10 */
+                                       0x00064000 /* EMC_DLL_XFORM_DQS11 */
+                                       0x00064000 /* EMC_DLL_XFORM_DQS12 */
+                                       0x00064000 /* EMC_DLL_XFORM_DQS13 */
+                                       0x00064000 /* EMC_DLL_XFORM_DQS14 */
+                                       0x00064000 /* EMC_DLL_XFORM_DQS15 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE0 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE1 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE2 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE3 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE4 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE5 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE6 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE7 */
+                                       0x00000000 /* EMC_DLL_XFORM_ADDR0 */
+                                       0x00000000 /* EMC_DLL_XFORM_ADDR1 */
+                                       0x00004000 /* EMC_DLL_XFORM_ADDR2 */
+                                       0x00000000 /* EMC_DLL_XFORM_ADDR3 */
+                                       0x00000000 /* EMC_DLL_XFORM_ADDR4 */
+                                       0x00004000 /* EMC_DLL_XFORM_ADDR5 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE8 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE9 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE10 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE11 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE12 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE13 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE14 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE15 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS0 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS1 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS2 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS3 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS4 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS5 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS6 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS7 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS8 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS9 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS10 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS11 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS12 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS13 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS14 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS15 */
+                                       0x00090000 /* EMC_DLL_XFORM_DQ0 */
+                                       0x00090000 /* EMC_DLL_XFORM_DQ1 */
+                                       0x00094000 /* EMC_DLL_XFORM_DQ2 */
+                                       0x00094000 /* EMC_DLL_XFORM_DQ3 */
+                                       0x00009400 /* EMC_DLL_XFORM_DQ4 */
+                                       0x00009000 /* EMC_DLL_XFORM_DQ5 */
+                                       0x00009000 /* EMC_DLL_XFORM_DQ6 */
+                                       0x00009000 /* EMC_DLL_XFORM_DQ7 */
+                                       0x10000280 /* EMC_XM2CMDPADCTRL */
+                                       0x00000000 /* EMC_XM2CMDPADCTRL4 */
+                                       0x00111111 /* EMC_XM2CMDPADCTRL5 */
+                                       0x00000000 /* EMC_XM2DQPADCTRL2 */
+                                       0x00000000 /* EMC_XM2DQPADCTRL3 */
+                                       0x77ffc081 /* EMC_XM2CLKPADCTRL */
+                                       0x00000303 /* EMC_XM2CLKPADCTRL2 */
+                                       0x81f1f108 /* EMC_XM2COMPPADCTRL */
+                                       0x07070004 /* EMC_XM2VTTGENPADCTRL */
+                                       0x0000003f /* EMC_XM2VTTGENPADCTRL2 */
+                                       0x016eeeee /* EMC_XM2VTTGENPADCTRL3 */
+                                       0x51451400 /* EMC_XM2DQSPADCTRL3 */
+                                       0x00514514 /* EMC_XM2DQSPADCTRL4 */
+                                       0x00514514 /* EMC_XM2DQSPADCTRL5 */
+                                       0x51451400 /* EMC_XM2DQSPADCTRL6 */
+                                       0x0000003f /* EMC_DSR_VTTGEN_DRV */
+                                       0x00000066 /* EMC_TXDSRVTTGEN */
+                                       0x00000000 /* EMC_FBIO_SPARE */
+                                       0x00000100 /* EMC_ZCAL_WAIT_CNT */
+                                       0x000c000c /* EMC_MRS_WAIT_CNT2 */
+                                       0x00000000 /* EMC_CTT */
+                                       0x00000003 /* EMC_CTT_DURATION */
+                                       0x0000d2b3 /* EMC_CFG_PIPE */
+                                       0x80000d22 /* EMC_DYN_SELF_REF_CONTROL */
+                                       0x0000000a /* EMC_QPOP */
                                >;
                        };
 
                                nvidia,emc-zcal-interval = <0x00020000>;
 
                                nvidia,emc-configuration = <
-                                       0x0000000d
-                                       0x0000004c
-                                       0x00000000
-                                       0x00000009
-                                       0x00000003
-                                       0x00000004
-                                       0x00000008
-                                       0x00000002
-                                       0x00000009
-                                       0x00000003
-                                       0x00000003
-                                       0x00000002
-                                       0x00000002
-                                       0x00000000
-                                       0x00000003
-                                       0x00000003
-                                       0x00000005
-                                       0x00000002
-                                       0x00000000
-                                       0x00000002
-                                       0x00000007
-                                       0x00020000
-                                       0x00000003
-                                       0x00000000
-                                       0x00000000
-                                       0x00000000
-                                       0x00000000
-                                       0x00000001
-                                       0x0000000e
-                                       0x00000010
-                                       0x00000012
-                                       0x000008e4
-                                       0x00000000
-                                       0x00000239
-                                       0x00000001
-                                       0x00000008
-                                       0x00000001
-                                       0x00000000
-                                       0x0000004a
-                                       0x0000000e
-                                       0x00000051
-                                       0x00000200
-                                       0x00000004
-                                       0x00000005
-                                       0x00000004
-                                       0x00000009
-                                       0x00000000
-                                       0x00000005
-                                       0x00000005
-                                       0x00000924
-                                       0x00000000
-                                       0x00000000
-                                       0x00000000
-                                       0x104ab098
-                                       0x002c00a0
-                                       0x00008000
-                                       0x00030000
-                                       0x00030000
-                                       0x00030000
-                                       0x00030000
-                                       0x00030000
-                                       0x00030000
-                                       0x00030000
-                                       0x00030000
-                                       0x00030000
-                                       0x00030000
-                                       0x00030000
-                                       0x00030000
-                                       0x00030000
-                                       0x00030000
-                                       0x00030000
-                                       0x00030000
-                                       0x00000000
-                                       0x00000000
-                                       0x00000000
-                                       0x00000000
-                                       0x00000000
-                                       0x00000000
-                                       0x00000000
-                                       0x00000000
-                                       0x00098000
-                                       0x00098000
-                                       0x00000000
-                                       0x00098000
-                                       0x00098000
-                                       0x00000000
-                                       0x00000000
-                                       0x00000000
-                                       0x00000000
-                                       0x00000000
-                                       0x00000000
-                                       0x00000000
-                                       0x00000000
-                                       0x00000000
-                                       0x00000000
-                                       0x00000000
-                                       0x00000000
-                                       0x00000000
-                                       0x00000000
-                                       0x00000000
-                                       0x00000000
-                                       0x00000000
-                                       0x00000000
-                                       0x00000000
-                                       0x00000000
-                                       0x00000000
-                                       0x00000000
-                                       0x00000000
-                                       0x00000000
-                                       0x00000000
-                                       0x00060000
-                                       0x00060000
-                                       0x00060000
-                                       0x00060000
-                                       0x00006000
-                                       0x00006000
-                                       0x00006000
-                                       0x00006000
-                                       0x10000280
-                                       0x00000000
-                                       0x00111111
-                                       0x00000000
-                                       0x00000000
-                                       0x77ffc081
-                                       0x00000101
-                                       0x81f1f108
-                                       0x07070004
-                                       0x00000000
-                                       0x016eeeee
-                                       0x51451420
-                                       0x00514514
-                                       0x00514514
-                                       0x51451400
-                                       0x0000003f
-                                       0x00000096
-                                       0x00000000
-                                       0x00000100
-                                       0x0174000c
-                                       0x00000000
-                                       0x00000003
-                                       0x000052a3
-                                       0x800012d7
-                                       0x00000009
+                                       0x0000000d /* EMC_RC */
+                                       0x0000004c /* EMC_RFC */
+                                       0x00000000 /* EMC_RFC_SLR */
+                                       0x00000009 /* EMC_RAS */
+                                       0x00000003 /* EMC_RP */
+                                       0x00000004 /* EMC_R2W */
+                                       0x00000008 /* EMC_W2R */
+                                       0x00000002 /* EMC_R2P */
+                                       0x00000009 /* EMC_W2P */
+                                       0x00000003 /* EMC_RD_RCD */
+                                       0x00000003 /* EMC_WR_RCD */
+                                       0x00000002 /* EMC_RRD */
+                                       0x00000002 /* EMC_REXT */
+                                       0x00000000 /* EMC_WEXT */
+                                       0x00000003 /* EMC_WDV */
+                                       0x00000003 /* EMC_WDV_MASK */
+                                       0x00000005 /* EMC_QUSE */
+                                       0x00000002 /* EMC_QUSE_WIDTH */
+                                       0x00000000 /* EMC_IBDLY */
+                                       0x00000002 /* EMC_EINPUT */
+                                       0x00000007 /* EMC_EINPUT_DURATION */
+                                       0x00020000 /* EMC_PUTERM_EXTRA */
+                                       0x00000003 /* EMC_PUTERM_WIDTH */
+                                       0x00000000 /* EMC_PUTERM_ADJ */
+                                       0x00000000 /* EMC_CDB_CNTL_1 */
+                                       0x00000000 /* EMC_CDB_CNTL_2 */
+                                       0x00000000 /* EMC_CDB_CNTL_3 */
+                                       0x00000001 /* EMC_QRST */
+                                       0x0000000e /* EMC_QSAFE */
+                                       0x00000010 /* EMC_RDV */
+                                       0x00000012 /* EMC_RDV_MASK */
+                                       0x000008e4 /* EMC_REFRESH */
+                                       0x00000000 /* EMC_BURST_REFRESH_NUM */
+                                       0x00000239 /* EMC_PRE_REFRESH_REQ_CNT */
+                                       0x00000001 /* EMC_PDEX2WR */
+                                       0x00000008 /* EMC_PDEX2RD */
+                                       0x00000001 /* EMC_PCHG2PDEN */
+                                       0x00000000 /* EMC_ACT2PDEN */
+                                       0x0000004a /* EMC_AR2PDEN */
+                                       0x0000000e /* EMC_RW2PDEN */
+                                       0x00000051 /* EMC_TXSR */
+                                       0x00000200 /* EMC_TXSRDLL */
+                                       0x00000004 /* EMC_TCKE */
+                                       0x00000005 /* EMC_TCKESR */
+                                       0x00000004 /* EMC_TPD */
+                                       0x00000009 /* EMC_TFAW */
+                                       0x00000000 /* EMC_TRPAB */
+                                       0x00000005 /* EMC_TCLKSTABLE */
+                                       0x00000005 /* EMC_TCLKSTOP */
+                                       0x00000924 /* EMC_TREFBW */
+                                       0x00000000 /* EMC_FBIO_CFG6 */
+                                       0x00000000 /* EMC_ODT_WRITE */
+                                       0x00000000 /* EMC_ODT_READ */
+                                       0x104ab098 /* EMC_FBIO_CFG5 */
+                                       0x002c00a0 /* EMC_CFG_DIG_DLL */
+                                       0x00008000 /* EMC_CFG_DIG_DLL_PERIOD */
+                                       0x00030000 /* EMC_DLL_XFORM_DQS0 */
+                                       0x00030000 /* EMC_DLL_XFORM_DQS1 */
+                                       0x00030000 /* EMC_DLL_XFORM_DQS2 */
+                                       0x00030000 /* EMC_DLL_XFORM_DQS3 */
+                                       0x00030000 /* EMC_DLL_XFORM_DQS4 */
+                                       0x00030000 /* EMC_DLL_XFORM_DQS5 */
+                                       0x00030000 /* EMC_DLL_XFORM_DQS6 */
+                                       0x00030000 /* EMC_DLL_XFORM_DQS7 */
+                                       0x00030000 /* EMC_DLL_XFORM_DQS8 */
+                                       0x00030000 /* EMC_DLL_XFORM_DQS9 */
+                                       0x00030000 /* EMC_DLL_XFORM_DQS10 */
+                                       0x00030000 /* EMC_DLL_XFORM_DQS11 */
+                                       0x00030000 /* EMC_DLL_XFORM_DQS12 */
+                                       0x00030000 /* EMC_DLL_XFORM_DQS13 */
+                                       0x00030000 /* EMC_DLL_XFORM_DQS14 */
+                                       0x00030000 /* EMC_DLL_XFORM_DQS15 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE0 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE1 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE2 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE3 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE4 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE5 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE6 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE7 */
+                                       0x00098000 /* EMC_DLL_XFORM_ADDR0 */
+                                       0x00098000 /* EMC_DLL_XFORM_ADDR1 */
+                                       0x00000000 /* EMC_DLL_XFORM_ADDR2 */
+                                       0x00098000 /* EMC_DLL_XFORM_ADDR3 */
+                                       0x00098000 /* EMC_DLL_XFORM_ADDR4 */
+                                       0x00000000 /* EMC_DLL_XFORM_ADDR5 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE8 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE9 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE10 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE11 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE12 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE13 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE14 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE15 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS0 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS1 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS2 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS3 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS4 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS5 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS6 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS7 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS8 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS9 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS10 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS11 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS12 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS13 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS14 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS15 */
+                                       0x00060000 /* EMC_DLL_XFORM_DQ0 */
+                                       0x00060000 /* EMC_DLL_XFORM_DQ1 */
+                                       0x00060000 /* EMC_DLL_XFORM_DQ2 */
+                                       0x00060000 /* EMC_DLL_XFORM_DQ3 */
+                                       0x00006000 /* EMC_DLL_XFORM_DQ4 */
+                                       0x00006000 /* EMC_DLL_XFORM_DQ5 */
+                                       0x00006000 /* EMC_DLL_XFORM_DQ6 */
+                                       0x00006000 /* EMC_DLL_XFORM_DQ7 */
+                                       0x10000280 /* EMC_XM2CMDPADCTRL */
+                                       0x00000000 /* EMC_XM2CMDPADCTRL4 */
+                                       0x00111111 /* EMC_XM2CMDPADCTRL5 */
+                                       0x00000000 /* EMC_XM2DQPADCTRL2 */
+                                       0x00000000 /* EMC_XM2DQPADCTRL3 */
+                                       0x77ffc081 /* EMC_XM2CLKPADCTRL */
+                                       0x00000101 /* EMC_XM2CLKPADCTRL2 */
+                                       0x81f1f108 /* EMC_XM2COMPPADCTRL */
+                                       0x07070004 /* EMC_XM2VTTGENPADCTRL */
+                                       0x00000000 /* EMC_XM2VTTGENPADCTRL2 */
+                                       0x016eeeee /* EMC_XM2VTTGENPADCTRL3 */
+                                       0x51451420 /* EMC_XM2DQSPADCTRL3 */
+                                       0x00514514 /* EMC_XM2DQSPADCTRL4 */
+                                       0x00514514 /* EMC_XM2DQSPADCTRL5 */
+                                       0x51451400 /* EMC_XM2DQSPADCTRL6 */
+                                       0x0000003f /* EMC_DSR_VTTGEN_DRV */
+                                       0x00000096 /* EMC_TXDSRVTTGEN */
+                                       0x00000000 /* EMC_FBIO_SPARE */
+                                       0x00000100 /* EMC_ZCAL_WAIT_CNT */
+                                       0x0174000c /* EMC_MRS_WAIT_CNT2 */
+                                       0x00000000 /* EMC_CTT */
+                                       0x00000003 /* EMC_CTT_DURATION */
+                                       0x000052a3 /* EMC_CFG_PIPE */
+                                       0x800012d7 /* EMC_DYN_SELF_REF_CONTROL */
+                                       0x00000009 /* EMC_QPOP */
                                >;
                        };
 
                                nvidia,emc-zcal-interval = <0x00020000>;
 
                                nvidia,emc-configuration = <
-                                       0x00000012
-                                       0x00000065
-                                       0x00000000
-                                       0x0000000c
-                                       0x00000004
-                                       0x00000005
-                                       0x00000008
-                                       0x00000002
-                                       0x0000000a
-                                       0x00000004
-                                       0x00000004
-                                       0x00000002
-                                       0x00000002
-                                       0x00000000
-                                       0x00000003
-                                       0x00000003
-                                       0x00000005
-                                       0x00000002
-                                       0x00000000
-                                       0x00000001
-                                       0x00000008
-                                       0x00020000
-                                       0x00000003
-                                       0x00000000
-                                       0x00000000
-                                       0x00000000
-                                       0x00000000
-                                       0x00000000
-                                       0x0000000f
-                                       0x00000010
-                                       0x00000012
-                                       0x00000bd1
-                                       0x00000000
-                                       0x000002f4
-                                       0x00000001
-                                       0x00000008
-                                       0x00000001
-                                       0x00000000
-                                       0x00000063
-                                       0x0000000f
-                                       0x0000006b
-                                       0x00000200
-                                       0x00000004
-                                       0x00000005
-                                       0x00000004
-                                       0x0000000d
-                                       0x00000000
-                                       0x00000005
-                                       0x00000005
-                                       0x00000c11
-                                       0x00000000
-                                       0x00000000
-                                       0x00000000
-                                       0x104ab098
-                                       0x002c00a0
-                                       0x00008000
-                                       0x00030000
-                                       0x00030000
-                                       0x00030000
-                                       0x00030000
-                                       0x00030000
-                                       0x00030000
-                                       0x00030000
-                                       0x00030000
-                                       0x00030000
-                                       0x00030000
-                                       0x00030000
-                                       0x00030000
-                                       0x00030000
-                                       0x00030000
-                                       0x00030000
-                                       0x00030000
-                                       0x00000000
-                                       0x00000000
-                                       0x00000000
-                                       0x00000000
-                                       0x00000000
-                                       0x00000000
-                                       0x00000000
-                                       0x00000000
-                                       0x00070000
-                                       0x00070000
-                                       0x00000000
-                                       0x00070000
-                                       0x00070000
-                                       0x00000000
-                                       0x00000000
-                                       0x00000000
-                                       0x00000000
-                                       0x00000000
-                                       0x00000000
-                                       0x00000000
-                                       0x00000000
-                                       0x00000000
-                                       0x00000000
-                                       0x00000000
-                                       0x00000000
-                                       0x00000000
-                                       0x00000000
-                                       0x00000000
-                                       0x00000000
-                                       0x00000000
-                                       0x00000000
-                                       0x00000000
-                                       0x00000000
-                                       0x00000000
-                                       0x00000000
-                                       0x00000000
-                                       0x00000000
-                                       0x00000000
-                                       0x00048000
-                                       0x00048000
-                                       0x00048000
-                                       0x00048000
-                                       0x00004800
-                                       0x00004800
-                                       0x00004800
-                                       0x00004800
-                                       0x10000280
-                                       0x00000000
-                                       0x00111111
-                                       0x00000000
-                                       0x00000000
-                                       0x77ffc081
-                                       0x00000101
-                                       0x81f1f108
-                                       0x07070004
-                                       0x00000000
-                                       0x016eeeee
-                                       0x51451420
-                                       0x00514514
-                                       0x00514514
-                                       0x51451400
-                                       0x0000003f
-                                       0x000000c6
-                                       0x00000000
-                                       0x00000100
-                                       0x015b000c
-                                       0x00000000
-                                       0x00000003
-                                       0x000052a3
-                                       0x8000188b
-                                       0x00000009
+                                       0x00000012 /* EMC_RC */
+                                       0x00000065 /* EMC_RFC */
+                                       0x00000000 /* EMC_RFC_SLR */
+                                       0x0000000c /* EMC_RAS */
+                                       0x00000004 /* EMC_RP */
+                                       0x00000005 /* EMC_R2W */
+                                       0x00000008 /* EMC_W2R */
+                                       0x00000002 /* EMC_R2P */
+                                       0x0000000a /* EMC_W2P */
+                                       0x00000004 /* EMC_RD_RCD */
+                                       0x00000004 /* EMC_WR_RCD */
+                                       0x00000002 /* EMC_RRD */
+                                       0x00000002 /* EMC_REXT */
+                                       0x00000000 /* EMC_WEXT */
+                                       0x00000003 /* EMC_WDV */
+                                       0x00000003 /* EMC_WDV_MASK */
+                                       0x00000005 /* EMC_QUSE */
+                                       0x00000002 /* EMC_QUSE_WIDTH */
+                                       0x00000000 /* EMC_IBDLY */
+                                       0x00000001 /* EMC_EINPUT */
+                                       0x00000008 /* EMC_EINPUT_DURATION */
+                                       0x00020000 /* EMC_PUTERM_EXTRA */
+                                       0x00000003 /* EMC_PUTERM_WIDTH */
+                                       0x00000000 /* EMC_PUTERM_ADJ */
+                                       0x00000000 /* EMC_CDB_CNTL_1 */
+                                       0x00000000 /* EMC_CDB_CNTL_2 */
+                                       0x00000000 /* EMC_CDB_CNTL_3 */
+                                       0x00000000 /* EMC_QRST */
+                                       0x0000000f /* EMC_QSAFE */
+                                       0x00000010 /* EMC_RDV */
+                                       0x00000012 /* EMC_RDV_MASK */
+                                       0x00000bd1 /* EMC_REFRESH */
+                                       0x00000000 /* EMC_BURST_REFRESH_NUM */
+                                       0x000002f4 /* EMC_PRE_REFRESH_REQ_CNT */
+                                       0x00000001 /* EMC_PDEX2WR */
+                                       0x00000008 /* EMC_PDEX2RD */
+                                       0x00000001 /* EMC_PCHG2PDEN */
+                                       0x00000000 /* EMC_ACT2PDEN */
+                                       0x00000063 /* EMC_AR2PDEN */
+                                       0x0000000f /* EMC_RW2PDEN */
+                                       0x0000006b /* EMC_TXSR */
+                                       0x00000200 /* EMC_TXSRDLL */
+                                       0x00000004 /* EMC_TCKE */
+                                       0x00000005 /* EMC_TCKESR */
+                                       0x00000004 /* EMC_TPD */
+                                       0x0000000d /* EMC_TFAW */
+                                       0x00000000 /* EMC_TRPAB */
+                                       0x00000005 /* EMC_TCLKSTABLE */
+                                       0x00000005 /* EMC_TCLKSTOP */
+                                       0x00000c11 /* EMC_TREFBW */
+                                       0x00000000 /* EMC_FBIO_CFG6 */
+                                       0x00000000 /* EMC_ODT_WRITE */
+                                       0x00000000 /* EMC_ODT_READ */
+                                       0x104ab098 /* EMC_FBIO_CFG5 */
+                                       0x002c00a0 /* EMC_CFG_DIG_DLL */
+                                       0x00008000 /* EMC_CFG_DIG_DLL_PERIOD */
+                                       0x00030000 /* EMC_DLL_XFORM_DQS0 */
+                                       0x00030000 /* EMC_DLL_XFORM_DQS1 */
+                                       0x00030000 /* EMC_DLL_XFORM_DQS2 */
+                                       0x00030000 /* EMC_DLL_XFORM_DQS3 */
+                                       0x00030000 /* EMC_DLL_XFORM_DQS4 */
+                                       0x00030000 /* EMC_DLL_XFORM_DQS5 */
+                                       0x00030000 /* EMC_DLL_XFORM_DQS6 */
+                                       0x00030000 /* EMC_DLL_XFORM_DQS7 */
+                                       0x00030000 /* EMC_DLL_XFORM_DQS8 */
+                                       0x00030000 /* EMC_DLL_XFORM_DQS9 */
+                                       0x00030000 /* EMC_DLL_XFORM_DQS10 */
+                                       0x00030000 /* EMC_DLL_XFORM_DQS11 */
+                                       0x00030000 /* EMC_DLL_XFORM_DQS12 */
+                                       0x00030000 /* EMC_DLL_XFORM_DQS13 */
+                                       0x00030000 /* EMC_DLL_XFORM_DQS14 */
+                                       0x00030000 /* EMC_DLL_XFORM_DQS15 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE0 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE1 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE2 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE3 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE4 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE5 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE6 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE7 */
+                                       0x00070000 /* EMC_DLL_XFORM_ADDR0 */
+                                       0x00070000 /* EMC_DLL_XFORM_ADDR1 */
+                                       0x00000000 /* EMC_DLL_XFORM_ADDR2 */
+                                       0x00070000 /* EMC_DLL_XFORM_ADDR3 */
+                                       0x00070000 /* EMC_DLL_XFORM_ADDR4 */
+                                       0x00000000 /* EMC_DLL_XFORM_ADDR5 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE8 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE9 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE10 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE11 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE12 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE13 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE14 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE15 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS0 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS1 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS2 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS3 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS4 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS5 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS6 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS7 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS8 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS9 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS10 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS11 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS12 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS13 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS14 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS15 */
+                                       0x00048000 /* EMC_DLL_XFORM_DQ0 */
+                                       0x00048000 /* EMC_DLL_XFORM_DQ1 */
+                                       0x00048000 /* EMC_DLL_XFORM_DQ2 */
+                                       0x00048000 /* EMC_DLL_XFORM_DQ3 */
+                                       0x00004800 /* EMC_DLL_XFORM_DQ4 */
+                                       0x00004800 /* EMC_DLL_XFORM_DQ5 */
+                                       0x00004800 /* EMC_DLL_XFORM_DQ6 */
+                                       0x00004800 /* EMC_DLL_XFORM_DQ7 */
+                                       0x10000280 /* EMC_XM2CMDPADCTRL */
+                                       0x00000000 /* EMC_XM2CMDPADCTRL4 */
+                                       0x00111111 /* EMC_XM2CMDPADCTRL5 */
+                                       0x00000000 /* EMC_XM2DQPADCTRL2 */
+                                       0x00000000 /* EMC_XM2DQPADCTRL3 */
+                                       0x77ffc081 /* EMC_XM2CLKPADCTRL */
+                                       0x00000101 /* EMC_XM2CLKPADCTRL2 */
+                                       0x81f1f108 /* EMC_XM2COMPPADCTRL */
+                                       0x07070004 /* EMC_XM2VTTGENPADCTRL */
+                                       0x00000000 /* EMC_XM2VTTGENPADCTRL2 */
+                                       0x016eeeee /* EMC_XM2VTTGENPADCTRL3 */
+                                       0x51451420 /* EMC_XM2DQSPADCTRL3 */
+                                       0x00514514 /* EMC_XM2DQSPADCTRL4 */
+                                       0x00514514 /* EMC_XM2DQSPADCTRL5 */
+                                       0x51451400 /* EMC_XM2DQSPADCTRL6 */
+                                       0x0000003f /* EMC_DSR_VTTGEN_DRV */
+                                       0x000000c6 /* EMC_TXDSRVTTGEN */
+                                       0x00000000 /* EMC_FBIO_SPARE */
+                                       0x00000100 /* EMC_ZCAL_WAIT_CNT */
+                                       0x015b000c /* EMC_MRS_WAIT_CNT2 */
+                                       0x00000000 /* EMC_CTT */
+                                       0x00000003 /* EMC_CTT_DURATION */
+                                       0x000052a3 /* EMC_CFG_PIPE */
+                                       0x8000188b /* EMC_DYN_SELF_REF_CONTROL */
+                                       0x00000009 /* EMC_QPOP */
+                               >;
+                       };
+
+                       timing-528000000 {
+                               clock-frequency = <528000000>;
+
+                               nvidia,emc-auto-cal-config = <0xa1430000>;
+                               nvidia,emc-auto-cal-config2 = <0x00000000>;
+                               nvidia,emc-auto-cal-config3 = <0x00000000>;
+                               nvidia,emc-auto-cal-interval = <0x001fffff>;
+                               nvidia,emc-bgbias-ctl0 = <0x00000000>;
+                               nvidia,emc-cfg = <0x73300000>;
+                               nvidia,emc-cfg-2 = <0x0000089d>;
+                               nvidia,emc-ctt-term-ctrl = <0x00000802>;
+                               nvidia,emc-mode-1 = <0x80100002>;
+                               nvidia,emc-mode-2 = <0x80200008>;
+                               nvidia,emc-mode-4 = <0x00000000>;
+                               nvidia,emc-mode-reset = <0x80000941>;
+                               nvidia,emc-mrs-wait-cnt = <0x013a000c>;
+                               nvidia,emc-sel-dpd-ctrl = <0x00040008>;
+                               nvidia,emc-xm2dqspadctrl2 = <0x0123133d>;
+                               nvidia,emc-zcal-cnt-long = <0x00000042>;
+                               nvidia,emc-zcal-interval = <0x00020000>;
+
+                               nvidia,emc-configuration = <
+                                       0x00000018 /* EMC_RC */
+                                       0x00000088 /* EMC_RFC */
+                                       0x00000000 /* EMC_RFC_SLR */
+                                       0x00000011 /* EMC_RAS */
+                                       0x00000006 /* EMC_RP */
+                                       0x00000006 /* EMC_R2W */
+                                       0x00000009 /* EMC_W2R */
+                                       0x00000002 /* EMC_R2P */
+                                       0x0000000d /* EMC_W2P */
+                                       0x00000006 /* EMC_RD_RCD */
+                                       0x00000006 /* EMC_WR_RCD */
+                                       0x00000002 /* EMC_RRD */
+                                       0x00000002 /* EMC_REXT */
+                                       0x00000000 /* EMC_WEXT */
+                                       0x00000003 /* EMC_WDV */
+                                       0x00000003 /* EMC_WDV_MASK */
+                                       0x00000007 /* EMC_QUSE */
+                                       0x00000002 /* EMC_QUSE_WIDTH */
+                                       0x00000000 /* EMC_IBDLY */
+                                       0x00000002 /* EMC_EINPUT */
+                                       0x00000009 /* EMC_EINPUT_DURATION */
+                                       0x00040000 /* EMC_PUTERM_EXTRA */
+                                       0x00000003 /* EMC_PUTERM_WIDTH */
+                                       0x00000000 /* EMC_PUTERM_ADJ */
+                                       0x00000000 /* EMC_CDB_CNTL_1 */
+                                       0x00000000 /* EMC_CDB_CNTL_2 */
+                                       0x00000000 /* EMC_CDB_CNTL_3 */
+                                       0x00000001 /* EMC_QRST */
+                                       0x00000010 /* EMC_QSAFE */
+                                       0x00000013 /* EMC_RDV */
+                                       0x00000015 /* EMC_RDV_MASK */
+                                       0x00000fd6 /* EMC_REFRESH */
+                                       0x00000000 /* EMC_BURST_REFRESH_NUM */
+                                       0x000003f5 /* EMC_PRE_REFRESH_REQ_CNT */
+                                       0x00000002 /* EMC_PDEX2WR */
+                                       0x0000000b /* EMC_PDEX2RD */
+                                       0x00000001 /* EMC_PCHG2PDEN */
+                                       0x00000000 /* EMC_ACT2PDEN */
+                                       0x00000084 /* EMC_AR2PDEN */
+                                       0x00000012 /* EMC_RW2PDEN */
+                                       0x0000008f /* EMC_TXSR */
+                                       0x00000200 /* EMC_TXSRDLL */
+                                       0x00000004 /* EMC_TCKE */
+                                       0x00000005 /* EMC_TCKESR */
+                                       0x00000004 /* EMC_TPD */
+                                       0x00000013 /* EMC_TFAW */
+                                       0x00000000 /* EMC_TRPAB */
+                                       0x00000006 /* EMC_TCLKSTABLE */
+                                       0x00000006 /* EMC_TCLKSTOP */
+                                       0x00001017 /* EMC_TREFBW */
+                                       0x00000000 /* EMC_FBIO_CFG6 */
+                                       0x00000000 /* EMC_ODT_WRITE */
+                                       0x00000000 /* EMC_ODT_READ */
+                                       0x104ab098 /* EMC_FBIO_CFG5 */
+                                       0xe01200b1 /* EMC_CFG_DIG_DLL */
+                                       0x00008000 /* EMC_CFG_DIG_DLL_PERIOD */
+                                       0x0000000a /* EMC_DLL_XFORM_DQS0 */
+                                       0x0000000a /* EMC_DLL_XFORM_DQS1 */
+                                       0x0000000a /* EMC_DLL_XFORM_DQS2 */
+                                       0x0000000a /* EMC_DLL_XFORM_DQS3 */
+                                       0x0000000a /* EMC_DLL_XFORM_DQS4 */
+                                       0x0000000a /* EMC_DLL_XFORM_DQS5 */
+                                       0x0000000a /* EMC_DLL_XFORM_DQS6 */
+                                       0x0000000a /* EMC_DLL_XFORM_DQS7 */
+                                       0x0000000a /* EMC_DLL_XFORM_DQS8 */
+                                       0x0000000a /* EMC_DLL_XFORM_DQS9 */
+                                       0x0000000a /* EMC_DLL_XFORM_DQS10 */
+                                       0x0000000a /* EMC_DLL_XFORM_DQS11 */
+                                       0x0000000a /* EMC_DLL_XFORM_DQS12 */
+                                       0x0000000a /* EMC_DLL_XFORM_DQS13 */
+                                       0x0000000a /* EMC_DLL_XFORM_DQS14 */
+                                       0x0000000a /* EMC_DLL_XFORM_DQS15 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE0 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE1 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE2 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE3 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE4 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE5 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE6 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE7 */
+                                       0x00050000 /* EMC_DLL_XFORM_ADDR0 */
+                                       0x00050000 /* EMC_DLL_XFORM_ADDR1 */
+                                       0x00000000 /* EMC_DLL_XFORM_ADDR2 */
+                                       0x00050000 /* EMC_DLL_XFORM_ADDR3 */
+                                       0x00050000 /* EMC_DLL_XFORM_ADDR4 */
+                                       0x00000000 /* EMC_DLL_XFORM_ADDR5 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE8 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE9 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE10 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE11 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE12 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE13 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE14 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE15 */
+                                       0x00000002 /* EMC_DLI_TRIM_TXDQS0 */
+                                       0x00000002 /* EMC_DLI_TRIM_TXDQS1 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS2 */
+                                       0x00000003 /* EMC_DLI_TRIM_TXDQS3 */
+                                       0x00000004 /* EMC_DLI_TRIM_TXDQS4 */
+                                       0x00000001 /* EMC_DLI_TRIM_TXDQS5 */
+                                       0x00000004 /* EMC_DLI_TRIM_TXDQS6 */
+                                       0x00000003 /* EMC_DLI_TRIM_TXDQS7 */
+                                       0x00000002 /* EMC_DLI_TRIM_TXDQS8 */
+                                       0x00000002 /* EMC_DLI_TRIM_TXDQS9 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS10 */
+                                       0x00000003 /* EMC_DLI_TRIM_TXDQS11 */
+                                       0x00000004 /* EMC_DLI_TRIM_TXDQS12 */
+                                       0x00000001 /* EMC_DLI_TRIM_TXDQS13 */
+                                       0x00000004 /* EMC_DLI_TRIM_TXDQS14 */
+                                       0x00000003 /* EMC_DLI_TRIM_TXDQS15 */
+                                       0x0000000e /* EMC_DLL_XFORM_DQ0 */
+                                       0x0000000e /* EMC_DLL_XFORM_DQ1 */
+                                       0x0000000e /* EMC_DLL_XFORM_DQ2 */
+                                       0x0000000e /* EMC_DLL_XFORM_DQ3 */
+                                       0x0000000e /* EMC_DLL_XFORM_DQ4 */
+                                       0x0000000e /* EMC_DLL_XFORM_DQ5 */
+                                       0x0000000e /* EMC_DLL_XFORM_DQ6 */
+                                       0x0000000e /* EMC_DLL_XFORM_DQ7 */
+                                       0x100002a0 /* EMC_XM2CMDPADCTRL */
+                                       0x00000000 /* EMC_XM2CMDPADCTRL4 */
+                                       0x00111111 /* EMC_XM2CMDPADCTRL5 */
+                                       0x00000000 /* EMC_XM2DQPADCTRL2 */
+                                       0x00000000 /* EMC_XM2DQPADCTRL3 */
+                                       0x77ffc085 /* EMC_XM2CLKPADCTRL */
+                                       0x00000101 /* EMC_XM2CLKPADCTRL2 */
+                                       0x81f1f108 /* EMC_XM2COMPPADCTRL */
+                                       0x07070004 /* EMC_XM2VTTGENPADCTRL */
+                                       0x00000000 /* EMC_XM2VTTGENPADCTRL2 */
+                                       0x016eeeee /* EMC_XM2VTTGENPADCTRL3 */
+                                       0x51451420 /* EMC_XM2DQSPADCTRL3 */
+                                       0x00514514 /* EMC_XM2DQSPADCTRL4 */
+                                       0x00514514 /* EMC_XM2DQSPADCTRL5 */
+                                       0x51451400 /* EMC_XM2DQSPADCTRL6 */
+                                       0x0606003f /* EMC_DSR_VTTGEN_DRV */
+                                       0x00000000 /* EMC_TXDSRVTTGEN */
+                                       0x00000000 /* EMC_FBIO_SPARE */
+                                       0x00000100 /* EMC_ZCAL_WAIT_CNT */
+                                       0x013a000c /* EMC_MRS_WAIT_CNT2 */
+                                       0x00000000 /* EMC_CTT */
+                                       0x00000003 /* EMC_CTT_DURATION */
+                                       0x000042a0 /* EMC_CFG_PIPE */
+                                       0x80002062 /* EMC_DYN_SELF_REF_CONTROL */
+                                       0x0000000b /* EMC_QPOP */
                                >;
                        };
 
                                nvidia,emc-zcal-interval = <0x00020000>;
 
                                nvidia,emc-configuration = <
-                                       0x0000001c
-                                       0x0000009a
-                                       0x00000000
-                                       0x00000013
-                                       0x00000007
-                                       0x00000007
-                                       0x0000000b
-                                       0x00000003
-                                       0x00000010
-                                       0x00000007
-                                       0x00000007
-                                       0x00000002
-                                       0x00000002
-                                       0x00000000
-                                       0x00000005
-                                       0x00000005
-                                       0x0000000a
-                                       0x00000002
-                                       0x00000000
-                                       0x00000003
-                                       0x0000000b
-                                       0x00070000
-                                       0x00000003
-                                       0x00000000
-                                       0x00000000
-                                       0x00000000
-                                       0x00000000
-                                       0x00000002
-                                       0x00000012
-                                       0x00000016
-                                       0x00000018
-                                       0x00001208
-                                       0x00000000
-                                       0x00000482
-                                       0x00000002
-                                       0x0000000d
-                                       0x00000001
-                                       0x00000000
-                                       0x00000096
-                                       0x00000015
-                                       0x000000a2
-                                       0x00000200
-                                       0x00000004
-                                       0x00000005
-                                       0x00000004
-                                       0x00000015
-                                       0x00000000
-                                       0x00000006
-                                       0x00000006
-                                       0x00001249
-                                       0x00000000
-                                       0x00000000
-                                       0x00000000
-                                       0x104ab098
-                                       0xe00e00b1
-                                       0x00008000
-                                       0x0000000a
-                                       0x0000000a
-                                       0x0000000a
-                                       0x0000000a
-                                       0x0000000a
-                                       0x0000000a
-                                       0x0000000a
-                                       0x0000000a
-                                       0x0000000a
-                                       0x0000000a
-                                       0x0000000a
-                                       0x0000000a
-                                       0x0000000a
-                                       0x0000000a
-                                       0x0000000a
-                                       0x0000000a
-                                       0x00000000
-                                       0x00000000
-                                       0x00000000
-                                       0x00000000
-                                       0x00000000
-                                       0x00000000
-                                       0x00000000
-                                       0x00000000
-                                       0x00048000
-                                       0x00048000
-                                       0x00000000
-                                       0x00048000
-                                       0x00048000
-                                       0x00000000
-                                       0x00000000
-                                       0x00000000
-                                       0x00000000
-                                       0x00000000
-                                       0x00000000
-                                       0x00000000
-                                       0x00000000
-                                       0x00000000
-                                       0x00000004
-                                       0x00000004
-                                       0x00000002
-                                       0x00000005
-                                       0x00000006
-                                       0x00000003
-                                       0x00000006
-                                       0x00000005
-                                       0x00000004
-                                       0x00000004
-                                       0x00000002
-                                       0x00000005
-                                       0x00000006
-                                       0x00000003
-                                       0x00000006
-                                       0x00000005
-                                       0x0000000e
-                                       0x0000000e
-                                       0x0000000e
-                                       0x0000000e
-                                       0x0000000e
-                                       0x0000000e
-                                       0x0000000e
-                                       0x0000000e
-                                       0x100002a0
-                                       0x00000000
-                                       0x00111111
-                                       0x00000000
-                                       0x00000000
-                                       0x77ffc085
-                                       0x00000101
-                                       0x81f1f108
-                                       0x07070004
-                                       0x00000000
-                                       0x016eeeee
-                                       0x51451420
-                                       0x00514514
-                                       0x00514514
-                                       0x51451400
-                                       0x0606003f
-                                       0x00000000
-                                       0x00000000
-                                       0x00000100
-                                       0x0128000c
-                                       0x00000000
-                                       0x00000003
-                                       0x000040a0
-                                       0x800024aa
-                                       0x0000000e
+                                       0x0000001c /* EMC_RC */
+                                       0x0000009a /* EMC_RFC */
+                                       0x00000000 /* EMC_RFC_SLR */
+                                       0x00000013 /* EMC_RAS */
+                                       0x00000007 /* EMC_RP */
+                                       0x00000007 /* EMC_R2W */
+                                       0x0000000b /* EMC_W2R */
+                                       0x00000003 /* EMC_R2P */
+                                       0x00000010 /* EMC_W2P */
+                                       0x00000007 /* EMC_RD_RCD */
+                                       0x00000007 /* EMC_WR_RCD */
+                                       0x00000002 /* EMC_RRD */
+                                       0x00000002 /* EMC_REXT */
+                                       0x00000000 /* EMC_WEXT */
+                                       0x00000005 /* EMC_WDV */
+                                       0x00000005 /* EMC_WDV_MASK */
+                                       0x0000000a /* EMC_QUSE */
+                                       0x00000002 /* EMC_QUSE_WIDTH */
+                                       0x00000000 /* EMC_IBDLY */
+                                       0x00000003 /* EMC_EINPUT */
+                                       0x0000000b /* EMC_EINPUT_DURATION */
+                                       0x00070000 /* EMC_PUTERM_EXTRA */
+                                       0x00000003 /* EMC_PUTERM_WIDTH */
+                                       0x00000000 /* EMC_PUTERM_ADJ */
+                                       0x00000000 /* EMC_CDB_CNTL_1 */
+                                       0x00000000 /* EMC_CDB_CNTL_2 */
+                                       0x00000000 /* EMC_CDB_CNTL_3 */
+                                       0x00000002 /* EMC_QRST */
+                                       0x00000012 /* EMC_QSAFE */
+                                       0x00000016 /* EMC_RDV */
+                                       0x00000018 /* EMC_RDV_MASK */
+                                       0x00001208 /* EMC_REFRESH */
+                                       0x00000000 /* EMC_BURST_REFRESH_NUM */
+                                       0x00000482 /* EMC_PRE_REFRESH_REQ_CNT */
+                                       0x00000002 /* EMC_PDEX2WR */
+                                       0x0000000d /* EMC_PDEX2RD */
+                                       0x00000001 /* EMC_PCHG2PDEN */
+                                       0x00000000 /* EMC_ACT2PDEN */
+                                       0x00000096 /* EMC_AR2PDEN */
+                                       0x00000015 /* EMC_RW2PDEN */
+                                       0x000000a2 /* EMC_TXSR */
+                                       0x00000200 /* EMC_TXSRDLL */
+                                       0x00000004 /* EMC_TCKE */
+                                       0x00000005 /* EMC_TCKESR */
+                                       0x00000004 /* EMC_TPD */
+                                       0x00000015 /* EMC_TFAW */
+                                       0x00000000 /* EMC_TRPAB */
+                                       0x00000006 /* EMC_TCLKSTABLE */
+                                       0x00000006 /* EMC_TCLKSTOP */
+                                       0x00001249 /* EMC_TREFBW */
+                                       0x00000000 /* EMC_FBIO_CFG6 */
+                                       0x00000000 /* EMC_ODT_WRITE */
+                                       0x00000000 /* EMC_ODT_READ */
+                                       0x104ab098 /* EMC_FBIO_CFG5 */
+                                       0xe00e00b1 /* EMC_CFG_DIG_DLL */
+                                       0x00008000 /* EMC_CFG_DIG_DLL_PERIOD */
+                                       0x0000000a /* EMC_DLL_XFORM_DQS0 */
+                                       0x0000000a /* EMC_DLL_XFORM_DQS1 */
+                                       0x0000000a /* EMC_DLL_XFORM_DQS2 */
+                                       0x0000000a /* EMC_DLL_XFORM_DQS3 */
+                                       0x0000000a /* EMC_DLL_XFORM_DQS4 */
+                                       0x0000000a /* EMC_DLL_XFORM_DQS5 */
+                                       0x0000000a /* EMC_DLL_XFORM_DQS6 */
+                                       0x0000000a /* EMC_DLL_XFORM_DQS7 */
+                                       0x0000000a /* EMC_DLL_XFORM_DQS8 */
+                                       0x0000000a /* EMC_DLL_XFORM_DQS9 */
+                                       0x0000000a /* EMC_DLL_XFORM_DQS10 */
+                                       0x0000000a /* EMC_DLL_XFORM_DQS11 */
+                                       0x0000000a /* EMC_DLL_XFORM_DQS12 */
+                                       0x0000000a /* EMC_DLL_XFORM_DQS13 */
+                                       0x0000000a /* EMC_DLL_XFORM_DQS14 */
+                                       0x0000000a /* EMC_DLL_XFORM_DQS15 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE0 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE1 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE2 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE3 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE4 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE5 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE6 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE7 */
+                                       0x00048000 /* EMC_DLL_XFORM_ADDR0 */
+                                       0x00048000 /* EMC_DLL_XFORM_ADDR1 */
+                                       0x00000000 /* EMC_DLL_XFORM_ADDR2 */
+                                       0x00048000 /* EMC_DLL_XFORM_ADDR3 */
+                                       0x00048000 /* EMC_DLL_XFORM_ADDR4 */
+                                       0x00000000 /* EMC_DLL_XFORM_ADDR5 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE8 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE9 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE10 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE11 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE12 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE13 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE14 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE15 */
+                                       0x00000004 /* EMC_DLI_TRIM_TXDQS0 */
+                                       0x00000004 /* EMC_DLI_TRIM_TXDQS1 */
+                                       0x00000002 /* EMC_DLI_TRIM_TXDQS2 */
+                                       0x00000005 /* EMC_DLI_TRIM_TXDQS3 */
+                                       0x00000006 /* EMC_DLI_TRIM_TXDQS4 */
+                                       0x00000003 /* EMC_DLI_TRIM_TXDQS5 */
+                                       0x00000006 /* EMC_DLI_TRIM_TXDQS6 */
+                                       0x00000005 /* EMC_DLI_TRIM_TXDQS7 */
+                                       0x00000004 /* EMC_DLI_TRIM_TXDQS8 */
+                                       0x00000004 /* EMC_DLI_TRIM_TXDQS9 */
+                                       0x00000002 /* EMC_DLI_TRIM_TXDQS10 */
+                                       0x00000005 /* EMC_DLI_TRIM_TXDQS11 */
+                                       0x00000006 /* EMC_DLI_TRIM_TXDQS12 */
+                                       0x00000003 /* EMC_DLI_TRIM_TXDQS13 */
+                                       0x00000006 /* EMC_DLI_TRIM_TXDQS14 */
+                                       0x00000005 /* EMC_DLI_TRIM_TXDQS15 */
+                                       0x0000000e /* EMC_DLL_XFORM_DQ0 */
+                                       0x0000000e /* EMC_DLL_XFORM_DQ1 */
+                                       0x0000000e /* EMC_DLL_XFORM_DQ2 */
+                                       0x0000000e /* EMC_DLL_XFORM_DQ3 */
+                                       0x0000000e /* EMC_DLL_XFORM_DQ4 */
+                                       0x0000000e /* EMC_DLL_XFORM_DQ5 */
+                                       0x0000000e /* EMC_DLL_XFORM_DQ6 */
+                                       0x0000000e /* EMC_DLL_XFORM_DQ7 */
+                                       0x100002a0 /* EMC_XM2CMDPADCTRL */
+                                       0x00000000 /* EMC_XM2CMDPADCTRL4 */
+                                       0x00111111 /* EMC_XM2CMDPADCTRL5 */
+                                       0x00000000 /* EMC_XM2DQPADCTRL2 */
+                                       0x00000000 /* EMC_XM2DQPADCTRL3 */
+                                       0x77ffc085 /* EMC_XM2CLKPADCTRL */
+                                       0x00000101 /* EMC_XM2CLKPADCTRL2 */
+                                       0x81f1f108 /* EMC_XM2COMPPADCTRL */
+                                       0x07070004 /* EMC_XM2VTTGENPADCTRL */
+                                       0x00000000 /* EMC_XM2VTTGENPADCTRL2 */
+                                       0x016eeeee /* EMC_XM2VTTGENPADCTRL3 */
+                                       0x51451420 /* EMC_XM2DQSPADCTRL3 */
+                                       0x00514514 /* EMC_XM2DQSPADCTRL4 */
+                                       0x00514514 /* EMC_XM2DQSPADCTRL5 */
+                                       0x51451400 /* EMC_XM2DQSPADCTRL6 */
+                                       0x0606003f /* EMC_DSR_VTTGEN_DRV */
+                                       0x00000000 /* EMC_TXDSRVTTGEN */
+                                       0x00000000 /* EMC_FBIO_SPARE */
+                                       0x00000100 /* EMC_ZCAL_WAIT_CNT */
+                                       0x0128000c /* EMC_MRS_WAIT_CNT2 */
+                                       0x00000000 /* EMC_CTT */
+                                       0x00000003 /* EMC_CTT_DURATION */
+                                       0x000040a0 /* EMC_CFG_PIPE */
+                                       0x800024aa /* EMC_DYN_SELF_REF_CONTROL */
+                                       0x0000000e /* EMC_QPOP */
                                >;
                        };
 
                                nvidia,emc-zcal-interval = <0x00020000>;
 
                                nvidia,emc-configuration = <
-                                       0x00000025
-                                       0x000000cc
-                                       0x00000000
-                                       0x0000001a
-                                       0x00000009
-                                       0x00000008
-                                       0x0000000d
-                                       0x00000004
-                                       0x00000013
-                                       0x00000009
-                                       0x00000009
-                                       0x00000003
-                                       0x00000002
-                                       0x00000000
-                                       0x00000006
-                                       0x00000006
-                                       0x0000000b
-                                       0x00000002
-                                       0x00000000
-                                       0x00000002
-                                       0x0000000d
-                                       0x00080000
-                                       0x00000004
-                                       0x00000000
-                                       0x00000000
-                                       0x00000000
-                                       0x00000000
-                                       0x00000001
-                                       0x00000014
-                                       0x00000018
-                                       0x0000001a
-                                       0x000017e2
-                                       0x00000000
-                                       0x000005f8
-                                       0x00000003
-                                       0x00000011
-                                       0x00000001
-                                       0x00000000
-                                       0x000000c6
-                                       0x00000018
-                                       0x000000d6
-                                       0x00000200
-                                       0x00000005
-                                       0x00000006
-                                       0x00000005
-                                       0x0000001d
-                                       0x00000000
-                                       0x00000008
-                                       0x00000008
-                                       0x00001822
-                                       0x00000000
-                                       0x80000005
-                                       0x00000000
-                                       0x104ab198
-                                       0xe00700b1
-                                       0x00008000
-                                       0x00000005
-                                       0x00000005
-                                       0x00000005
-                                       0x00000005
-                                       0x00000005
-                                       0x00000005
-                                       0x00000005
-                                       0x00000005
-                                       0x00000005
-                                       0x00000005
-                                       0x00000005
-                                       0x00000005
-                                       0x00000005
-                                       0x00000005
-                                       0x00000005
-                                       0x00000005
-                                       0x00000000
-                                       0x00000000
-                                       0x00000000
-                                       0x00000000
-                                       0x00000000
-                                       0x00000000
-                                       0x00000000
-                                       0x00000000
-                                       0x00034000
-                                       0x00034000
-                                       0x00000000
-                                       0x00034000
-                                       0x00034000
-                                       0x00000000
-                                       0x00000000
-                                       0x00000000
-                                       0x00000000
-                                       0x00000000
-                                       0x00000000
-                                       0x00000000
-                                       0x00000000
-                                       0x00000000
-                                       0x00000008
-                                       0x00000008
-                                       0x00000005
-                                       0x00000009
-                                       0x00000009
-                                       0x00000007
-                                       0x00000009
-                                       0x00000008
-                                       0x00000008
-                                       0x00000008
-                                       0x00000005
-                                       0x00000009
-                                       0x00000009
-                                       0x00000007
-                                       0x00000009
-                                       0x00000008
-                                       0x0000000a
-                                       0x0000000a
-                                       0x0000000a
-                                       0x0000000a
-                                       0x0000000a
-                                       0x0000000a
-                                       0x0000000a
-                                       0x0000000a
-                                       0x100002a0
-                                       0x00000000
-                                       0x00111111
-                                       0x00000000
-                                       0x00000000
-                                       0x77ffc085
-                                       0x00000101
-                                       0x81f1f108
-                                       0x07070004
-                                       0x00000000
-                                       0x016eeeee
-                                       0x61861820
-                                       0x00514514
-                                       0x00514514
-                                       0x61861800
-                                       0x0606003f
-                                       0x00000000
-                                       0x00000000
-                                       0x00000100
-                                       0x00f8000c
-                                       0x00000007
-                                       0x00000004
-                                       0x00004080
-                                       0x80003012
-                                       0x0000000f
+                                       0x00000025 /* EMC_RC */
+                                       0x000000cc /* EMC_RFC */
+                                       0x00000000 /* EMC_RFC_SLR */
+                                       0x0000001a /* EMC_RAS */
+                                       0x00000009 /* EMC_RP */
+                                       0x00000008 /* EMC_R2W */
+                                       0x0000000d /* EMC_W2R */
+                                       0x00000004 /* EMC_R2P */
+                                       0x00000013 /* EMC_W2P */
+                                       0x00000009 /* EMC_RD_RCD */
+                                       0x00000009 /* EMC_WR_RCD */
+                                       0x00000003 /* EMC_RRD */
+                                       0x00000002 /* EMC_REXT */
+                                       0x00000000 /* EMC_WEXT */
+                                       0x00000006 /* EMC_WDV */
+                                       0x00000006 /* EMC_WDV_MASK */
+                                       0x0000000b /* EMC_QUSE */
+                                       0x00000002 /* EMC_QUSE_WIDTH */
+                                       0x00000000 /* EMC_IBDLY */
+                                       0x00000002 /* EMC_EINPUT */
+                                       0x0000000d /* EMC_EINPUT_DURATION */
+                                       0x00080000 /* EMC_PUTERM_EXTRA */
+                                       0x00000004 /* EMC_PUTERM_WIDTH */
+                                       0x00000000 /* EMC_PUTERM_ADJ */
+                                       0x00000000 /* EMC_CDB_CNTL_1 */
+                                       0x00000000 /* EMC_CDB_CNTL_2 */
+                                       0x00000000 /* EMC_CDB_CNTL_3 */
+                                       0x00000001 /* EMC_QRST */
+                                       0x00000014 /* EMC_QSAFE */
+                                       0x00000018 /* EMC_RDV */
+                                       0x0000001a /* EMC_RDV_MASK */
+                                       0x000017e2 /* EMC_REFRESH */
+                                       0x00000000 /* EMC_BURST_REFRESH_NUM */
+                                       0x000005f8 /* EMC_PRE_REFRESH_REQ_CNT */
+                                       0x00000003 /* EMC_PDEX2WR */
+                                       0x00000011 /* EMC_PDEX2RD */
+                                       0x00000001 /* EMC_PCHG2PDEN */
+                                       0x00000000 /* EMC_ACT2PDEN */
+                                       0x000000c6 /* EMC_AR2PDEN */
+                                       0x00000018 /* EMC_RW2PDEN */
+                                       0x000000d6 /* EMC_TXSR */
+                                       0x00000200 /* EMC_TXSRDLL */
+                                       0x00000005 /* EMC_TCKE */
+                                       0x00000006 /* EMC_TCKESR */
+                                       0x00000005 /* EMC_TPD */
+                                       0x0000001d /* EMC_TFAW */
+                                       0x00000000 /* EMC_TRPAB */
+                                       0x00000008 /* EMC_TCLKSTABLE */
+                                       0x00000008 /* EMC_TCLKSTOP */
+                                       0x00001822 /* EMC_TREFBW */
+                                       0x00000000 /* EMC_FBIO_CFG6 */
+                                       0x80000005 /* EMC_ODT_WRITE */
+                                       0x00000000 /* EMC_ODT_READ */
+                                       0x104ab198 /* EMC_FBIO_CFG5 */
+                                       0xe00700b1 /* EMC_CFG_DIG_DLL */
+                                       0x00008000 /* EMC_CFG_DIG_DLL_PERIOD */
+                                       0x00000005 /* EMC_DLL_XFORM_DQS0 */
+                                       0x00000005 /* EMC_DLL_XFORM_DQS1 */
+                                       0x00000005 /* EMC_DLL_XFORM_DQS2 */
+                                       0x00000005 /* EMC_DLL_XFORM_DQS3 */
+                                       0x00000005 /* EMC_DLL_XFORM_DQS4 */
+                                       0x00000005 /* EMC_DLL_XFORM_DQS5 */
+                                       0x00000005 /* EMC_DLL_XFORM_DQS6 */
+                                       0x00000005 /* EMC_DLL_XFORM_DQS7 */
+                                       0x00000005 /* EMC_DLL_XFORM_DQS8 */
+                                       0x00000005 /* EMC_DLL_XFORM_DQS9 */
+                                       0x00000005 /* EMC_DLL_XFORM_DQS10 */
+                                       0x00000005 /* EMC_DLL_XFORM_DQS11 */
+                                       0x00000005 /* EMC_DLL_XFORM_DQS12 */
+                                       0x00000005 /* EMC_DLL_XFORM_DQS13 */
+                                       0x00000005 /* EMC_DLL_XFORM_DQS14 */
+                                       0x00000005 /* EMC_DLL_XFORM_DQS15 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE0 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE1 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE2 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE3 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE4 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE5 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE6 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE7 */
+                                       0x00034000 /* EMC_DLL_XFORM_ADDR0 */
+                                       0x00034000 /* EMC_DLL_XFORM_ADDR1 */
+                                       0x00000000 /* EMC_DLL_XFORM_ADDR2 */
+                                       0x00034000 /* EMC_DLL_XFORM_ADDR3 */
+                                       0x00034000 /* EMC_DLL_XFORM_ADDR4 */
+                                       0x00000000 /* EMC_DLL_XFORM_ADDR5 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE8 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE9 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE10 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE11 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE12 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE13 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE14 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE15 */
+                                       0x00000008 /* EMC_DLI_TRIM_TXDQS0 */
+                                       0x00000008 /* EMC_DLI_TRIM_TXDQS1 */
+                                       0x00000005 /* EMC_DLI_TRIM_TXDQS2 */
+                                       0x00000009 /* EMC_DLI_TRIM_TXDQS3 */
+                                       0x00000009 /* EMC_DLI_TRIM_TXDQS4 */
+                                       0x00000007 /* EMC_DLI_TRIM_TXDQS5 */
+                                       0x00000009 /* EMC_DLI_TRIM_TXDQS6 */
+                                       0x00000008 /* EMC_DLI_TRIM_TXDQS7 */
+                                       0x00000008 /* EMC_DLI_TRIM_TXDQS8 */
+                                       0x00000008 /* EMC_DLI_TRIM_TXDQS9 */
+                                       0x00000005 /* EMC_DLI_TRIM_TXDQS10 */
+                                       0x00000009 /* EMC_DLI_TRIM_TXDQS11 */
+                                       0x00000009 /* EMC_DLI_TRIM_TXDQS12 */
+                                       0x00000007 /* EMC_DLI_TRIM_TXDQS13 */
+                                       0x00000009 /* EMC_DLI_TRIM_TXDQS14 */
+                                       0x00000008 /* EMC_DLI_TRIM_TXDQS15 */
+                                       0x0000000a /* EMC_DLL_XFORM_DQ0 */
+                                       0x0000000a /* EMC_DLL_XFORM_DQ1 */
+                                       0x0000000a /* EMC_DLL_XFORM_DQ2 */
+                                       0x0000000a /* EMC_DLL_XFORM_DQ3 */
+                                       0x0000000a /* EMC_DLL_XFORM_DQ4 */
+                                       0x0000000a /* EMC_DLL_XFORM_DQ5 */
+                                       0x0000000a /* EMC_DLL_XFORM_DQ6 */
+                                       0x0000000a /* EMC_DLL_XFORM_DQ7 */
+                                       0x100002a0 /* EMC_XM2CMDPADCTRL */
+                                       0x00000000 /* EMC_XM2CMDPADCTRL4 */
+                                       0x00111111 /* EMC_XM2CMDPADCTRL5 */
+                                       0x00000000 /* EMC_XM2DQPADCTRL2 */
+                                       0x00000000 /* EMC_XM2DQPADCTRL3 */
+                                       0x77ffc085 /* EMC_XM2CLKPADCTRL */
+                                       0x00000101 /* EMC_XM2CLKPADCTRL2 */
+                                       0x81f1f108 /* EMC_XM2COMPPADCTRL */
+                                       0x07070004 /* EMC_XM2VTTGENPADCTRL */
+                                       0x00000000 /* EMC_XM2VTTGENPADCTRL2 */
+                                       0x016eeeee /* EMC_XM2VTTGENPADCTRL3 */
+                                       0x61861820 /* EMC_XM2DQSPADCTRL3 */
+                                       0x00514514 /* EMC_XM2DQSPADCTRL4 */
+                                       0x00514514 /* EMC_XM2DQSPADCTRL5 */
+                                       0x61861800 /* EMC_XM2DQSPADCTRL6 */
+                                       0x0606003f /* EMC_DSR_VTTGEN_DRV */
+                                       0x00000000 /* EMC_TXDSRVTTGEN */
+                                       0x00000000 /* EMC_FBIO_SPARE */
+                                       0x00000100 /* EMC_ZCAL_WAIT_CNT */
+                                       0x00f8000c /* EMC_MRS_WAIT_CNT2 */
+                                       0x00000007 /* EMC_CTT */
+                                       0x00000004 /* EMC_CTT_DURATION */
+                                       0x00004080 /* EMC_CFG_PIPE */
+                                       0x80003012 /* EMC_DYN_SELF_REF_CONTROL */
+                                       0x0000000f /* EMC_QPOP */
                                >;
                        };
-
                };
-       };
-
-       memory-controller@70019000 {
-               emc-timings-1 {
-                       nvidia,ram-code = <1>;
 
+               emc-timings-4 {
+                       nvidia,ram-code = <4>;
 
                        timing-12750000 {
                                clock-frequency = <12750000>;
 
-                               nvidia,emem-configuration = <
-                                       0x40040001
-                                       0x8000000a
-                                       0x00000001
-                                       0x00000001
-                                       0x00000002
-                                       0x00000000
-                                       0x00000002
-                                       0x00000001
-                                       0x00000002
-                                       0x00000008
-                                       0x00000003
-                                       0x00000002
-                                       0x00000003
-                                       0x00000006
-                                       0x06030203
-                                       0x000a0402
-                                       0x77e30303
-                                       0x70000f03
-                                       0x001f0000
+                               nvidia,emc-auto-cal-config = <0xa1430000>;
+                               nvidia,emc-auto-cal-config2 = <0x00000000>;
+                               nvidia,emc-auto-cal-config3 = <0x00000000>;
+                               nvidia,emc-auto-cal-interval = <0x001fffff>;
+                               nvidia,emc-bgbias-ctl0 = <0x00000008>;
+                               nvidia,emc-cfg = <0x73240000>;
+                               nvidia,emc-cfg-2 = <0x000008c5>;
+                               nvidia,emc-ctt-term-ctrl = <0x00000802>;
+                               nvidia,emc-mode-1 = <0x00100003>;
+                               nvidia,emc-mode-2 = <0x00200008>;
+                               nvidia,emc-mode-4 = <0x00000000>;
+                               nvidia,emc-mode-reset = <0x00001221>;
+                               nvidia,emc-mrs-wait-cnt = <0x000e000e>;
+                               nvidia,emc-sel-dpd-ctrl = <0x00040128>;
+                               nvidia,emc-xm2dqspadctrl2 = <0x0130b118>;
+                               nvidia,emc-zcal-cnt-long = <0x00000042>;
+                               nvidia,emc-zcal-interval = <0x00000000>;
+
+                               nvidia,emc-configuration = <
+                                       0x00000000 /* EMC_RC */
+                                       0x00000004 /* EMC_RFC */
+                                       0x00000000 /* EMC_RFC_SLR */
+                                       0x00000000 /* EMC_RAS */
+                                       0x00000000 /* EMC_RP */
+                                       0x00000004 /* EMC_R2W */
+                                       0x0000000a /* EMC_W2R */
+                                       0x00000005 /* EMC_R2P */
+                                       0x0000000b /* EMC_W2P */
+                                       0x00000000 /* EMC_RD_RCD */
+                                       0x00000000 /* EMC_WR_RCD */
+                                       0x00000003 /* EMC_RRD */
+                                       0x00000003 /* EMC_REXT */
+                                       0x00000000 /* EMC_WEXT */
+                                       0x00000006 /* EMC_WDV */
+                                       0x00000006 /* EMC_WDV_MASK */
+                                       0x00000006 /* EMC_QUSE */
+                                       0x00000002 /* EMC_QUSE_WIDTH */
+                                       0x00000000 /* EMC_IBDLY */
+                                       0x00000005 /* EMC_EINPUT */
+                                       0x00000005 /* EMC_EINPUT_DURATION */
+                                       0x00010000 /* EMC_PUTERM_EXTRA */
+                                       0x00000003 /* EMC_PUTERM_WIDTH */
+                                       0x00000000 /* EMC_PUTERM_ADJ */
+                                       0x00000000 /* EMC_CDB_CNTL_1 */
+                                       0x00000000 /* EMC_CDB_CNTL_2 */
+                                       0x00000000 /* EMC_CDB_CNTL_3 */
+                                       0x00000004 /* EMC_QRST */
+                                       0x0000000c /* EMC_QSAFE */
+                                       0x0000000d /* EMC_RDV */
+                                       0x0000000f /* EMC_RDV_MASK */
+                                       0x00000060 /* EMC_REFRESH */
+                                       0x00000000 /* EMC_BURST_REFRESH_NUM */
+                                       0x00000018 /* EMC_PRE_REFRESH_REQ_CNT */
+                                       0x00000002 /* EMC_PDEX2WR */
+                                       0x00000002 /* EMC_PDEX2RD */
+                                       0x00000001 /* EMC_PCHG2PDEN */
+                                       0x00000000 /* EMC_ACT2PDEN */
+                                       0x00000007 /* EMC_AR2PDEN */
+                                       0x0000000f /* EMC_RW2PDEN */
+                                       0x00000005 /* EMC_TXSR */
+                                       0x00000005 /* EMC_TXSRDLL */
+                                       0x00000004 /* EMC_TCKE */
+                                       0x00000005 /* EMC_TCKESR */
+                                       0x00000004 /* EMC_TPD */
+                                       0x00000000 /* EMC_TFAW */
+                                       0x00000000 /* EMC_TRPAB */
+                                       0x00000005 /* EMC_TCLKSTABLE */
+                                       0x00000005 /* EMC_TCLKSTOP */
+                                       0x00000064 /* EMC_TREFBW */
+                                       0x00000000 /* EMC_FBIO_CFG6 */
+                                       0x00000000 /* EMC_ODT_WRITE */
+                                       0x00000000 /* EMC_ODT_READ */
+                                       0x106aa298 /* EMC_FBIO_CFG5 */
+                                       0x002c00a0 /* EMC_CFG_DIG_DLL */
+                                       0x00008000 /* EMC_CFG_DIG_DLL_PERIOD */
+                                       0x00064000 /* EMC_DLL_XFORM_DQS0 */
+                                       0x00064000 /* EMC_DLL_XFORM_DQS1 */
+                                       0x00064000 /* EMC_DLL_XFORM_DQS2 */
+                                       0x00064000 /* EMC_DLL_XFORM_DQS3 */
+                                       0x00064000 /* EMC_DLL_XFORM_DQS4 */
+                                       0x00064000 /* EMC_DLL_XFORM_DQS5 */
+                                       0x00064000 /* EMC_DLL_XFORM_DQS6 */
+                                       0x00064000 /* EMC_DLL_XFORM_DQS7 */
+                                       0x00064000 /* EMC_DLL_XFORM_DQS8 */
+                                       0x00064000 /* EMC_DLL_XFORM_DQS9 */
+                                       0x00064000 /* EMC_DLL_XFORM_DQS10 */
+                                       0x00064000 /* EMC_DLL_XFORM_DQS11 */
+                                       0x00064000 /* EMC_DLL_XFORM_DQS12 */
+                                       0x00064000 /* EMC_DLL_XFORM_DQS13 */
+                                       0x00064000 /* EMC_DLL_XFORM_DQS14 */
+                                       0x00064000 /* EMC_DLL_XFORM_DQS15 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE0 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE1 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE2 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE3 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE4 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE5 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE6 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE7 */
+                                       0x00000000 /* EMC_DLL_XFORM_ADDR0 */
+                                       0x00000000 /* EMC_DLL_XFORM_ADDR1 */
+                                       0x00004000 /* EMC_DLL_XFORM_ADDR2 */
+                                       0x00000000 /* EMC_DLL_XFORM_ADDR3 */
+                                       0x00000000 /* EMC_DLL_XFORM_ADDR4 */
+                                       0x00004000 /* EMC_DLL_XFORM_ADDR5 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE8 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE9 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE10 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE11 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE12 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE13 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE14 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE15 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS0 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS1 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS2 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS3 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS4 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS5 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS6 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS7 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS8 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS9 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS10 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS11 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS12 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS13 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS14 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS15 */
+                                       0x00080000 /* EMC_DLL_XFORM_DQ0 */
+                                       0x00080000 /* EMC_DLL_XFORM_DQ1 */
+                                       0x00080000 /* EMC_DLL_XFORM_DQ2 */
+                                       0x00080000 /* EMC_DLL_XFORM_DQ3 */
+                                       0x00008000 /* EMC_DLL_XFORM_DQ4 */
+                                       0x00008000 /* EMC_DLL_XFORM_DQ5 */
+                                       0x00008000 /* EMC_DLL_XFORM_DQ6 */
+                                       0x00008000 /* EMC_DLL_XFORM_DQ7 */
+                                       0x10000280 /* EMC_XM2CMDPADCTRL */
+                                       0x00000000 /* EMC_XM2CMDPADCTRL4 */
+                                       0x00111111 /* EMC_XM2CMDPADCTRL5 */
+                                       0x00000000 /* EMC_XM2DQPADCTRL2 */
+                                       0x00000000 /* EMC_XM2DQPADCTRL3 */
+                                       0x77ffc081 /* EMC_XM2CLKPADCTRL */
+                                       0x00000303 /* EMC_XM2CLKPADCTRL2 */
+                                       0x81f1f108 /* EMC_XM2COMPPADCTRL */
+                                       0x07070004 /* EMC_XM2VTTGENPADCTRL */
+                                       0x0000003f /* EMC_XM2VTTGENPADCTRL2 */
+                                       0x016eeeee /* EMC_XM2VTTGENPADCTRL3 */
+                                       0x51451400 /* EMC_XM2DQSPADCTRL3 */
+                                       0x00514514 /* EMC_XM2DQSPADCTRL4 */
+                                       0x00514514 /* EMC_XM2DQSPADCTRL5 */
+                                       0x51451400 /* EMC_XM2DQSPADCTRL6 */
+                                       0x0000003f /* EMC_DSR_VTTGEN_DRV */
+                                       0x00000007 /* EMC_TXDSRVTTGEN */
+                                       0x00000000 /* EMC_FBIO_SPARE */
+                                       0x00000042 /* EMC_ZCAL_WAIT_CNT */
+                                       0x000e000e /* EMC_MRS_WAIT_CNT2 */
+                                       0x00000000 /* EMC_CTT */
+                                       0x00000003 /* EMC_CTT_DURATION */
+                                       0x0000f2f3 /* EMC_CFG_PIPE */
+                                       0x800001c5 /* EMC_DYN_SELF_REF_CONTROL */
+                                       0x0000000a /* EMC_QPOP */
                                >;
                        };
 
                        timing-20400000 {
                                clock-frequency = <20400000>;
 
-                               nvidia,emem-configuration = <
-                                       0x40020001
-                                       0x80000012
-                                       0x00000001
-                                       0x00000001
-                                       0x00000002
-                                       0x00000000
-                                       0x00000002
-                                       0x00000001
-                                       0x00000002
-                                       0x00000008
-                                       0x00000003
-                                       0x00000002
-                                       0x00000003
-                                       0x00000006
-                                       0x06030203
-                                       0x000a0402
-                                       0x76230303
-                                       0x70000f03
-                                       0x001f0000
+                               nvidia,emc-auto-cal-config = <0xa1430000>;
+                               nvidia,emc-auto-cal-config2 = <0x00000000>;
+                               nvidia,emc-auto-cal-config3 = <0x00000000>;
+                               nvidia,emc-auto-cal-interval = <0x001fffff>;
+                               nvidia,emc-bgbias-ctl0 = <0x00000008>;
+                               nvidia,emc-cfg = <0x73240000>;
+                               nvidia,emc-cfg-2 = <0x000008c5>;
+                               nvidia,emc-ctt-term-ctrl = <0x00000802>;
+                               nvidia,emc-mode-1 = <0x00100003>;
+                               nvidia,emc-mode-2 = <0x00200008>;
+                               nvidia,emc-mode-4 = <0x00000000>;
+                               nvidia,emc-mode-reset = <0x00001221>;
+                               nvidia,emc-mrs-wait-cnt = <0x000e000e>;
+                               nvidia,emc-sel-dpd-ctrl = <0x00040128>;
+                               nvidia,emc-xm2dqspadctrl2 = <0x0130b118>;
+                               nvidia,emc-zcal-cnt-long = <0x00000042>;
+                               nvidia,emc-zcal-interval = <0x00000000>;
+
+                               nvidia,emc-configuration = <
+                                       0x00000000 /* EMC_RC */
+                                       0x00000007 /* EMC_RFC */
+                                       0x00000000 /* EMC_RFC_SLR */
+                                       0x00000000 /* EMC_RAS */
+                                       0x00000000 /* EMC_RP */
+                                       0x00000004 /* EMC_R2W */
+                                       0x0000000a /* EMC_W2R */
+                                       0x00000005 /* EMC_R2P */
+                                       0x0000000b /* EMC_W2P */
+                                       0x00000000 /* EMC_RD_RCD */
+                                       0x00000000 /* EMC_WR_RCD */
+                                       0x00000003 /* EMC_RRD */
+                                       0x00000003 /* EMC_REXT */
+                                       0x00000000 /* EMC_WEXT */
+                                       0x00000006 /* EMC_WDV */
+                                       0x00000006 /* EMC_WDV_MASK */
+                                       0x00000006 /* EMC_QUSE */
+                                       0x00000002 /* EMC_QUSE_WIDTH */
+                                       0x00000000 /* EMC_IBDLY */
+                                       0x00000005 /* EMC_EINPUT */
+                                       0x00000005 /* EMC_EINPUT_DURATION */
+                                       0x00010000 /* EMC_PUTERM_EXTRA */
+                                       0x00000003 /* EMC_PUTERM_WIDTH */
+                                       0x00000000 /* EMC_PUTERM_ADJ */
+                                       0x00000000 /* EMC_CDB_CNTL_1 */
+                                       0x00000000 /* EMC_CDB_CNTL_2 */
+                                       0x00000000 /* EMC_CDB_CNTL_3 */
+                                       0x00000004 /* EMC_QRST */
+                                       0x0000000c /* EMC_QSAFE */
+                                       0x0000000d /* EMC_RDV */
+                                       0x0000000f /* EMC_RDV_MASK */
+                                       0x0000009a /* EMC_REFRESH */
+                                       0x00000000 /* EMC_BURST_REFRESH_NUM */
+                                       0x00000026 /* EMC_PRE_REFRESH_REQ_CNT */
+                                       0x00000002 /* EMC_PDEX2WR */
+                                       0x00000002 /* EMC_PDEX2RD */
+                                       0x00000001 /* EMC_PCHG2PDEN */
+                                       0x00000000 /* EMC_ACT2PDEN */
+                                       0x00000007 /* EMC_AR2PDEN */
+                                       0x0000000f /* EMC_RW2PDEN */
+                                       0x00000008 /* EMC_TXSR */
+                                       0x00000008 /* EMC_TXSRDLL */
+                                       0x00000004 /* EMC_TCKE */
+                                       0x00000005 /* EMC_TCKESR */
+                                       0x00000004 /* EMC_TPD */
+                                       0x00000000 /* EMC_TFAW */
+                                       0x00000000 /* EMC_TRPAB */
+                                       0x00000005 /* EMC_TCLKSTABLE */
+                                       0x00000005 /* EMC_TCLKSTOP */
+                                       0x000000a0 /* EMC_TREFBW */
+                                       0x00000000 /* EMC_FBIO_CFG6 */
+                                       0x00000000 /* EMC_ODT_WRITE */
+                                       0x00000000 /* EMC_ODT_READ */
+                                       0x106aa298 /* EMC_FBIO_CFG5 */
+                                       0x002c00a0 /* EMC_CFG_DIG_DLL */
+                                       0x00008000 /* EMC_CFG_DIG_DLL_PERIOD */
+                                       0x00064000 /* EMC_DLL_XFORM_DQS0 */
+                                       0x00064000 /* EMC_DLL_XFORM_DQS1 */
+                                       0x00064000 /* EMC_DLL_XFORM_DQS2 */
+                                       0x00064000 /* EMC_DLL_XFORM_DQS3 */
+                                       0x00064000 /* EMC_DLL_XFORM_DQS4 */
+                                       0x00064000 /* EMC_DLL_XFORM_DQS5 */
+                                       0x00064000 /* EMC_DLL_XFORM_DQS6 */
+                                       0x00064000 /* EMC_DLL_XFORM_DQS7 */
+                                       0x00064000 /* EMC_DLL_XFORM_DQS8 */
+                                       0x00064000 /* EMC_DLL_XFORM_DQS9 */
+                                       0x00064000 /* EMC_DLL_XFORM_DQS10 */
+                                       0x00064000 /* EMC_DLL_XFORM_DQS11 */
+                                       0x00064000 /* EMC_DLL_XFORM_DQS12 */
+                                       0x00064000 /* EMC_DLL_XFORM_DQS13 */
+                                       0x00064000 /* EMC_DLL_XFORM_DQS14 */
+                                       0x00064000 /* EMC_DLL_XFORM_DQS15 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE0 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE1 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE2 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE3 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE4 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE5 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE6 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE7 */
+                                       0x00000000 /* EMC_DLL_XFORM_ADDR0 */
+                                       0x00000000 /* EMC_DLL_XFORM_ADDR1 */
+                                       0x00004000 /* EMC_DLL_XFORM_ADDR2 */
+                                       0x00000000 /* EMC_DLL_XFORM_ADDR3 */
+                                       0x00000000 /* EMC_DLL_XFORM_ADDR4 */
+                                       0x00004000 /* EMC_DLL_XFORM_ADDR5 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE8 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE9 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE10 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE11 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE12 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE13 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE14 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE15 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS0 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS1 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS2 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS3 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS4 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS5 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS6 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS7 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS8 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS9 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS10 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS11 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS12 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS13 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS14 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS15 */
+                                       0x00080000 /* EMC_DLL_XFORM_DQ0 */
+                                       0x00080000 /* EMC_DLL_XFORM_DQ1 */
+                                       0x00080000 /* EMC_DLL_XFORM_DQ2 */
+                                       0x00080000 /* EMC_DLL_XFORM_DQ3 */
+                                       0x00008000 /* EMC_DLL_XFORM_DQ4 */
+                                       0x00008000 /* EMC_DLL_XFORM_DQ5 */
+                                       0x00008000 /* EMC_DLL_XFORM_DQ6 */
+                                       0x00008000 /* EMC_DLL_XFORM_DQ7 */
+                                       0x10000280 /* EMC_XM2CMDPADCTRL */
+                                       0x00000000 /* EMC_XM2CMDPADCTRL4 */
+                                       0x00111111 /* EMC_XM2CMDPADCTRL5 */
+                                       0x00000000 /* EMC_XM2DQPADCTRL2 */
+                                       0x00000000 /* EMC_XM2DQPADCTRL3 */
+                                       0x77ffc081 /* EMC_XM2CLKPADCTRL */
+                                       0x00000303 /* EMC_XM2CLKPADCTRL2 */
+                                       0x81f1f108 /* EMC_XM2COMPPADCTRL */
+                                       0x07070004 /* EMC_XM2VTTGENPADCTRL */
+                                       0x0000003f /* EMC_XM2VTTGENPADCTRL2 */
+                                       0x016eeeee /* EMC_XM2VTTGENPADCTRL3 */
+                                       0x51451400 /* EMC_XM2DQSPADCTRL3 */
+                                       0x00514514 /* EMC_XM2DQSPADCTRL4 */
+                                       0x00514514 /* EMC_XM2DQSPADCTRL5 */
+                                       0x51451400 /* EMC_XM2DQSPADCTRL6 */
+                                       0x0000003f /* EMC_DSR_VTTGEN_DRV */
+                                       0x0000000b /* EMC_TXDSRVTTGEN */
+                                       0x00000000 /* EMC_FBIO_SPARE */
+                                       0x00000042 /* EMC_ZCAL_WAIT_CNT */
+                                       0x000e000e /* EMC_MRS_WAIT_CNT2 */
+                                       0x00000000 /* EMC_CTT */
+                                       0x00000003 /* EMC_CTT_DURATION */
+                                       0x0000f2f3 /* EMC_CFG_PIPE */
+                                       0x8000023a /* EMC_DYN_SELF_REF_CONTROL */
+                                       0x0000000a /* EMC_QPOP */
                                >;
                        };
 
                        timing-40800000 {
                                clock-frequency = <40800000>;
 
-                               nvidia,emem-configuration = <
-                                       0xa0000001
-                                       0x80000017
-                                       0x00000001
-                                       0x00000001
-                                       0x00000002
-                                       0x00000000
-                                       0x00000002
-                                       0x00000001
-                                       0x00000002
-                                       0x00000008
-                                       0x00000003
-                                       0x00000002
-                                       0x00000003
-                                       0x00000006
-                                       0x06030203
-                                       0x000a0402
-                                       0x74a30303
-                                       0x70000f03
-                                       0x001f0000
+                               nvidia,emc-auto-cal-config = <0xa1430000>;
+                               nvidia,emc-auto-cal-config2 = <0x00000000>;
+                               nvidia,emc-auto-cal-config3 = <0x00000000>;
+                               nvidia,emc-auto-cal-interval = <0x001fffff>;
+                               nvidia,emc-bgbias-ctl0 = <0x00000008>;
+                               nvidia,emc-cfg = <0x73240000>;
+                               nvidia,emc-cfg-2 = <0x000008c5>;
+                               nvidia,emc-ctt-term-ctrl = <0x00000802>;
+                               nvidia,emc-mode-1 = <0x00100003>;
+                               nvidia,emc-mode-2 = <0x00200008>;
+                               nvidia,emc-mode-4 = <0x00000000>;
+                               nvidia,emc-mode-reset = <0x00001221>;
+                               nvidia,emc-mrs-wait-cnt = <0x000e000e>;
+                               nvidia,emc-sel-dpd-ctrl = <0x00040128>;
+                               nvidia,emc-xm2dqspadctrl2 = <0x0130b118>;
+                               nvidia,emc-zcal-cnt-long = <0x00000042>;
+                               nvidia,emc-zcal-interval = <0x00000000>;
+
+                               nvidia,emc-configuration = <
+                                       0x00000001 /* EMC_RC */
+                                       0x0000000e /* EMC_RFC */
+                                       0x00000000 /* EMC_RFC_SLR */
+                                       0x00000001 /* EMC_RAS */
+                                       0x00000000 /* EMC_RP */
+                                       0x00000004 /* EMC_R2W */
+                                       0x0000000a /* EMC_W2R */
+                                       0x00000005 /* EMC_R2P */
+                                       0x0000000b /* EMC_W2P */
+                                       0x00000000 /* EMC_RD_RCD */
+                                       0x00000000 /* EMC_WR_RCD */
+                                       0x00000003 /* EMC_RRD */
+                                       0x00000003 /* EMC_REXT */
+                                       0x00000000 /* EMC_WEXT */
+                                       0x00000006 /* EMC_WDV */
+                                       0x00000006 /* EMC_WDV_MASK */
+                                       0x00000006 /* EMC_QUSE */
+                                       0x00000002 /* EMC_QUSE_WIDTH */
+                                       0x00000000 /* EMC_IBDLY */
+                                       0x00000005 /* EMC_EINPUT */
+                                       0x00000005 /* EMC_EINPUT_DURATION */
+                                       0x00010000 /* EMC_PUTERM_EXTRA */
+                                       0x00000003 /* EMC_PUTERM_WIDTH */
+                                       0x00000000 /* EMC_PUTERM_ADJ */
+                                       0x00000000 /* EMC_CDB_CNTL_1 */
+                                       0x00000000 /* EMC_CDB_CNTL_2 */
+                                       0x00000000 /* EMC_CDB_CNTL_3 */
+                                       0x00000004 /* EMC_QRST */
+                                       0x0000000c /* EMC_QSAFE */
+                                       0x0000000d /* EMC_RDV */
+                                       0x0000000f /* EMC_RDV_MASK */
+                                       0x00000134 /* EMC_REFRESH */
+                                       0x00000000 /* EMC_BURST_REFRESH_NUM */
+                                       0x0000004d /* EMC_PRE_REFRESH_REQ_CNT */
+                                       0x00000002 /* EMC_PDEX2WR */
+                                       0x00000002 /* EMC_PDEX2RD */
+                                       0x00000001 /* EMC_PCHG2PDEN */
+                                       0x00000000 /* EMC_ACT2PDEN */
+                                       0x0000000c /* EMC_AR2PDEN */
+                                       0x0000000f /* EMC_RW2PDEN */
+                                       0x0000000f /* EMC_TXSR */
+                                       0x0000000f /* EMC_TXSRDLL */
+                                       0x00000004 /* EMC_TCKE */
+                                       0x00000005 /* EMC_TCKESR */
+                                       0x00000004 /* EMC_TPD */
+                                       0x00000000 /* EMC_TFAW */
+                                       0x00000000 /* EMC_TRPAB */
+                                       0x00000005 /* EMC_TCLKSTABLE */
+                                       0x00000005 /* EMC_TCLKSTOP */
+                                       0x0000013f /* EMC_TREFBW */
+                                       0x00000000 /* EMC_FBIO_CFG6 */
+                                       0x00000000 /* EMC_ODT_WRITE */
+                                       0x00000000 /* EMC_ODT_READ */
+                                       0x106aa298 /* EMC_FBIO_CFG5 */
+                                       0x002c00a0 /* EMC_CFG_DIG_DLL */
+                                       0x00008000 /* EMC_CFG_DIG_DLL_PERIOD */
+                                       0x00064000 /* EMC_DLL_XFORM_DQS0 */
+                                       0x00064000 /* EMC_DLL_XFORM_DQS1 */
+                                       0x00064000 /* EMC_DLL_XFORM_DQS2 */
+                                       0x00064000 /* EMC_DLL_XFORM_DQS3 */
+                                       0x00064000 /* EMC_DLL_XFORM_DQS4 */
+                                       0x00064000 /* EMC_DLL_XFORM_DQS5 */
+                                       0x00064000 /* EMC_DLL_XFORM_DQS6 */
+                                       0x00064000 /* EMC_DLL_XFORM_DQS7 */
+                                       0x00064000 /* EMC_DLL_XFORM_DQS8 */
+                                       0x00064000 /* EMC_DLL_XFORM_DQS9 */
+                                       0x00064000 /* EMC_DLL_XFORM_DQS10 */
+                                       0x00064000 /* EMC_DLL_XFORM_DQS11 */
+                                       0x00064000 /* EMC_DLL_XFORM_DQS12 */
+                                       0x00064000 /* EMC_DLL_XFORM_DQS13 */
+                                       0x00064000 /* EMC_DLL_XFORM_DQS14 */
+                                       0x00064000 /* EMC_DLL_XFORM_DQS15 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE0 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE1 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE2 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE3 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE4 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE5 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE6 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE7 */
+                                       0x00000000 /* EMC_DLL_XFORM_ADDR0 */
+                                       0x00000000 /* EMC_DLL_XFORM_ADDR1 */
+                                       0x00004000 /* EMC_DLL_XFORM_ADDR2 */
+                                       0x00000000 /* EMC_DLL_XFORM_ADDR3 */
+                                       0x00000000 /* EMC_DLL_XFORM_ADDR4 */
+                                       0x00004000 /* EMC_DLL_XFORM_ADDR5 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE8 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE9 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE10 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE11 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE12 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE13 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE14 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE15 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS0 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS1 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS2 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS3 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS4 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS5 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS6 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS7 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS8 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS9 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS10 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS11 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS12 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS13 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS14 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS15 */
+                                       0x00080000 /* EMC_DLL_XFORM_DQ0 */
+                                       0x00080000 /* EMC_DLL_XFORM_DQ1 */
+                                       0x00080000 /* EMC_DLL_XFORM_DQ2 */
+                                       0x00080000 /* EMC_DLL_XFORM_DQ3 */
+                                       0x00008000 /* EMC_DLL_XFORM_DQ4 */
+                                       0x00008000 /* EMC_DLL_XFORM_DQ5 */
+                                       0x00008000 /* EMC_DLL_XFORM_DQ6 */
+                                       0x00008000 /* EMC_DLL_XFORM_DQ7 */
+                                       0x10000280 /* EMC_XM2CMDPADCTRL */
+                                       0x00000000 /* EMC_XM2CMDPADCTRL4 */
+                                       0x00111111 /* EMC_XM2CMDPADCTRL5 */
+                                       0x00000000 /* EMC_XM2DQPADCTRL2 */
+                                       0x00000000 /* EMC_XM2DQPADCTRL3 */
+                                       0x77ffc081 /* EMC_XM2CLKPADCTRL */
+                                       0x00000303 /* EMC_XM2CLKPADCTRL2 */
+                                       0x81f1f108 /* EMC_XM2COMPPADCTRL */
+                                       0x07070004 /* EMC_XM2VTTGENPADCTRL */
+                                       0x0000003f /* EMC_XM2VTTGENPADCTRL2 */
+                                       0x016eeeee /* EMC_XM2VTTGENPADCTRL3 */
+                                       0x51451400 /* EMC_XM2DQSPADCTRL3 */
+                                       0x00514514 /* EMC_XM2DQSPADCTRL4 */
+                                       0x00514514 /* EMC_XM2DQSPADCTRL5 */
+                                       0x51451400 /* EMC_XM2DQSPADCTRL6 */
+                                       0x0000003f /* EMC_DSR_VTTGEN_DRV */
+                                       0x00000015 /* EMC_TXDSRVTTGEN */
+                                       0x00000000 /* EMC_FBIO_SPARE */
+                                       0x00000042 /* EMC_ZCAL_WAIT_CNT */
+                                       0x000e000e /* EMC_MRS_WAIT_CNT2 */
+                                       0x00000000 /* EMC_CTT */
+                                       0x00000003 /* EMC_CTT_DURATION */
+                                       0x0000f2f3 /* EMC_CFG_PIPE */
+                                       0x80000370 /* EMC_DYN_SELF_REF_CONTROL */
+                                       0x0000000a /* EMC_QPOP */
                                >;
                        };
 
                        timing-68000000 {
                                clock-frequency = <68000000>;
 
-                               nvidia,emem-configuration = <
-                                       0x00000001
-                                       0x8000001e
-                                       0x00000001
-                                       0x00000001
-                                       0x00000002
-                                       0x00000000
-                                       0x00000002
-                                       0x00000001
-                                       0x00000002
-                                       0x00000008
-                                       0x00000003
-                                       0x00000002
-                                       0x00000003
-                                       0x00000006
-                                       0x06030203
-                                       0x000a0402
-                                       0x74230403
-                                       0x70000f03
-                                       0x001f0000
+                               nvidia,emc-auto-cal-config = <0xa1430000>;
+                               nvidia,emc-auto-cal-config2 = <0x00000000>;
+                               nvidia,emc-auto-cal-config3 = <0x00000000>;
+                               nvidia,emc-auto-cal-interval = <0x001fffff>;
+                               nvidia,emc-bgbias-ctl0 = <0x00000008>;
+                               nvidia,emc-cfg = <0x73240000>;
+                               nvidia,emc-cfg-2 = <0x000008c5>;
+                               nvidia,emc-ctt-term-ctrl = <0x00000802>;
+                               nvidia,emc-mode-1 = <0x00100003>;
+                               nvidia,emc-mode-2 = <0x00200008>;
+                               nvidia,emc-mode-4 = <0x00000000>;
+                               nvidia,emc-mode-reset = <0x00001221>;
+                               nvidia,emc-mrs-wait-cnt = <0x000e000e>;
+                               nvidia,emc-sel-dpd-ctrl = <0x00040128>;
+                               nvidia,emc-xm2dqspadctrl2 = <0x0130b118>;
+                               nvidia,emc-zcal-cnt-long = <0x00000042>;
+                               nvidia,emc-zcal-interval = <0x00000000>;
+
+                               nvidia,emc-configuration = <
+                                       0x00000003 /* EMC_RC */
+                                       0x00000017 /* EMC_RFC */
+                                       0x00000000 /* EMC_RFC_SLR */
+                                       0x00000002 /* EMC_RAS */
+                                       0x00000000 /* EMC_RP */
+                                       0x00000004 /* EMC_R2W */
+                                       0x0000000a /* EMC_W2R */
+                                       0x00000005 /* EMC_R2P */
+                                       0x0000000b /* EMC_W2P */
+                                       0x00000000 /* EMC_RD_RCD */
+                                       0x00000000 /* EMC_WR_RCD */
+                                       0x00000003 /* EMC_RRD */
+                                       0x00000003 /* EMC_REXT */
+                                       0x00000000 /* EMC_WEXT */
+                                       0x00000006 /* EMC_WDV */
+                                       0x00000006 /* EMC_WDV_MASK */
+                                       0x00000006 /* EMC_QUSE */
+                                       0x00000002 /* EMC_QUSE_WIDTH */
+                                       0x00000000 /* EMC_IBDLY */
+                                       0x00000005 /* EMC_EINPUT */
+                                       0x00000005 /* EMC_EINPUT_DURATION */
+                                       0x00010000 /* EMC_PUTERM_EXTRA */
+                                       0x00000003 /* EMC_PUTERM_WIDTH */
+                                       0x00000000 /* EMC_PUTERM_ADJ */
+                                       0x00000000 /* EMC_CDB_CNTL_1 */
+                                       0x00000000 /* EMC_CDB_CNTL_2 */
+                                       0x00000000 /* EMC_CDB_CNTL_3 */
+                                       0x00000004 /* EMC_QRST */
+                                       0x0000000c /* EMC_QSAFE */
+                                       0x0000000d /* EMC_RDV */
+                                       0x0000000f /* EMC_RDV_MASK */
+                                       0x00000202 /* EMC_REFRESH */
+                                       0x00000000 /* EMC_BURST_REFRESH_NUM */
+                                       0x00000080 /* EMC_PRE_REFRESH_REQ_CNT */
+                                       0x00000002 /* EMC_PDEX2WR */
+                                       0x00000002 /* EMC_PDEX2RD */
+                                       0x00000001 /* EMC_PCHG2PDEN */
+                                       0x00000000 /* EMC_ACT2PDEN */
+                                       0x00000015 /* EMC_AR2PDEN */
+                                       0x0000000f /* EMC_RW2PDEN */
+                                       0x00000019 /* EMC_TXSR */
+                                       0x00000019 /* EMC_TXSRDLL */
+                                       0x00000004 /* EMC_TCKE */
+                                       0x00000005 /* EMC_TCKESR */
+                                       0x00000004 /* EMC_TPD */
+                                       0x00000001 /* EMC_TFAW */
+                                       0x00000000 /* EMC_TRPAB */
+                                       0x00000005 /* EMC_TCLKSTABLE */
+                                       0x00000005 /* EMC_TCLKSTOP */
+                                       0x00000213 /* EMC_TREFBW */
+                                       0x00000000 /* EMC_FBIO_CFG6 */
+                                       0x00000000 /* EMC_ODT_WRITE */
+                                       0x00000000 /* EMC_ODT_READ */
+                                       0x106aa298 /* EMC_FBIO_CFG5 */
+                                       0x002c00a0 /* EMC_CFG_DIG_DLL */
+                                       0x00008000 /* EMC_CFG_DIG_DLL_PERIOD */
+                                       0x00064000 /* EMC_DLL_XFORM_DQS0 */
+                                       0x00064000 /* EMC_DLL_XFORM_DQS1 */
+                                       0x00064000 /* EMC_DLL_XFORM_DQS2 */
+                                       0x00064000 /* EMC_DLL_XFORM_DQS3 */
+                                       0x00064000 /* EMC_DLL_XFORM_DQS4 */
+                                       0x00064000 /* EMC_DLL_XFORM_DQS5 */
+                                       0x00064000 /* EMC_DLL_XFORM_DQS6 */
+                                       0x00064000 /* EMC_DLL_XFORM_DQS7 */
+                                       0x00064000 /* EMC_DLL_XFORM_DQS8 */
+                                       0x00064000 /* EMC_DLL_XFORM_DQS9 */
+                                       0x00064000 /* EMC_DLL_XFORM_DQS10 */
+                                       0x00064000 /* EMC_DLL_XFORM_DQS11 */
+                                       0x00064000 /* EMC_DLL_XFORM_DQS12 */
+                                       0x00064000 /* EMC_DLL_XFORM_DQS13 */
+                                       0x00064000 /* EMC_DLL_XFORM_DQS14 */
+                                       0x00064000 /* EMC_DLL_XFORM_DQS15 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE0 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE1 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE2 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE3 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE4 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE5 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE6 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE7 */
+                                       0x00000000 /* EMC_DLL_XFORM_ADDR0 */
+                                       0x00000000 /* EMC_DLL_XFORM_ADDR1 */
+                                       0x00004000 /* EMC_DLL_XFORM_ADDR2 */
+                                       0x00000000 /* EMC_DLL_XFORM_ADDR3 */
+                                       0x00000000 /* EMC_DLL_XFORM_ADDR4 */
+                                       0x00004000 /* EMC_DLL_XFORM_ADDR5 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE8 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE9 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE10 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE11 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE12 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE13 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE14 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE15 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS0 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS1 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS2 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS3 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS4 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS5 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS6 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS7 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS8 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS9 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS10 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS11 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS12 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS13 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS14 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS15 */
+                                       0x00080000 /* EMC_DLL_XFORM_DQ0 */
+                                       0x00080000 /* EMC_DLL_XFORM_DQ1 */
+                                       0x00080000 /* EMC_DLL_XFORM_DQ2 */
+                                       0x00080000 /* EMC_DLL_XFORM_DQ3 */
+                                       0x00008000 /* EMC_DLL_XFORM_DQ4 */
+                                       0x00008000 /* EMC_DLL_XFORM_DQ5 */
+                                       0x00008000 /* EMC_DLL_XFORM_DQ6 */
+                                       0x00008000 /* EMC_DLL_XFORM_DQ7 */
+                                       0x10000280 /* EMC_XM2CMDPADCTRL */
+                                       0x00000000 /* EMC_XM2CMDPADCTRL4 */
+                                       0x00111111 /* EMC_XM2CMDPADCTRL5 */
+                                       0x00000000 /* EMC_XM2DQPADCTRL2 */
+                                       0x00000000 /* EMC_XM2DQPADCTRL3 */
+                                       0x77ffc081 /* EMC_XM2CLKPADCTRL */
+                                       0x00000303 /* EMC_XM2CLKPADCTRL2 */
+                                       0x81f1f108 /* EMC_XM2COMPPADCTRL */
+                                       0x07070004 /* EMC_XM2VTTGENPADCTRL */
+                                       0x0000003f /* EMC_XM2VTTGENPADCTRL2 */
+                                       0x016eeeee /* EMC_XM2VTTGENPADCTRL3 */
+                                       0x51451400 /* EMC_XM2DQSPADCTRL3 */
+                                       0x00514514 /* EMC_XM2DQSPADCTRL4 */
+                                       0x00514514 /* EMC_XM2DQSPADCTRL5 */
+                                       0x51451400 /* EMC_XM2DQSPADCTRL6 */
+                                       0x0000003f /* EMC_DSR_VTTGEN_DRV */
+                                       0x00000022 /* EMC_TXDSRVTTGEN */
+                                       0x00000000 /* EMC_FBIO_SPARE */
+                                       0x00000042 /* EMC_ZCAL_WAIT_CNT */
+                                       0x000e000e /* EMC_MRS_WAIT_CNT2 */
+                                       0x00000000 /* EMC_CTT */
+                                       0x00000003 /* EMC_CTT_DURATION */
+                                       0x0000f2f3 /* EMC_CFG_PIPE */
+                                       0x8000050e /* EMC_DYN_SELF_REF_CONTROL */
+                                       0x0000000a /* EMC_QPOP */
                                >;
                        };
 
                        timing-102000000 {
                                clock-frequency = <102000000>;
 
-                               nvidia,emem-configuration = <
-                                       0x08000001
-                                       0x80000026
-                                       0x00000001
-                                       0x00000001
-                                       0x00000003
-                                       0x00000000
-                                       0x00000002
-                                       0x00000001
-                                       0x00000002
-                                       0x00000008
-                                       0x00000003
-                                       0x00000002
-                                       0x00000003
-                                       0x00000006
-                                       0x06030203
-                                       0x000a0403
-                                       0x73c30504
-                                       0x70000f03
-                                       0x001f0000
+                               nvidia,emc-auto-cal-config = <0xa1430000>;
+                               nvidia,emc-auto-cal-config2 = <0x00000000>;
+                               nvidia,emc-auto-cal-config3 = <0x00000000>;
+                               nvidia,emc-auto-cal-interval = <0x001fffff>;
+                               nvidia,emc-bgbias-ctl0 = <0x00000008>;
+                               nvidia,emc-cfg = <0x73240000>;
+                               nvidia,emc-cfg-2 = <0x000008c5>;
+                               nvidia,emc-ctt-term-ctrl = <0x00000802>;
+                               nvidia,emc-mode-1 = <0x00100003>;
+                               nvidia,emc-mode-2 = <0x00200008>;
+                               nvidia,emc-mode-4 = <0x00000000>;
+                               nvidia,emc-mode-reset = <0x00001221>;
+                               nvidia,emc-mrs-wait-cnt = <0x000e000e>;
+                               nvidia,emc-sel-dpd-ctrl = <0x00040128>;
+                               nvidia,emc-xm2dqspadctrl2 = <0x0130b118>;
+                               nvidia,emc-zcal-cnt-long = <0x00000042>;
+                               nvidia,emc-zcal-interval = <0x00000000>;
+
+                               nvidia,emc-configuration = <
+                                       0x00000004 /* EMC_RC */
+                                       0x00000023 /* EMC_RFC */
+                                       0x00000000 /* EMC_RFC_SLR */
+                                       0x00000003 /* EMC_RAS */
+                                       0x00000001 /* EMC_RP */
+                                       0x00000004 /* EMC_R2W */
+                                       0x0000000a /* EMC_W2R */
+                                       0x00000005 /* EMC_R2P */
+                                       0x0000000b /* EMC_W2P */
+                                       0x00000001 /* EMC_RD_RCD */
+                                       0x00000001 /* EMC_WR_RCD */
+                                       0x00000003 /* EMC_RRD */
+                                       0x00000003 /* EMC_REXT */
+                                       0x00000000 /* EMC_WEXT */
+                                       0x00000006 /* EMC_WDV */
+                                       0x00000006 /* EMC_WDV_MASK */
+                                       0x00000006 /* EMC_QUSE */
+                                       0x00000002 /* EMC_QUSE_WIDTH */
+                                       0x00000000 /* EMC_IBDLY */
+                                       0x00000005 /* EMC_EINPUT */
+                                       0x00000005 /* EMC_EINPUT_DURATION */
+                                       0x00010000 /* EMC_PUTERM_EXTRA */
+                                       0x00000003 /* EMC_PUTERM_WIDTH */
+                                       0x00000000 /* EMC_PUTERM_ADJ */
+                                       0x00000000 /* EMC_CDB_CNTL_1 */
+                                       0x00000000 /* EMC_CDB_CNTL_2 */
+                                       0x00000000 /* EMC_CDB_CNTL_3 */
+                                       0x00000004 /* EMC_QRST */
+                                       0x0000000c /* EMC_QSAFE */
+                                       0x0000000d /* EMC_RDV */
+                                       0x0000000f /* EMC_RDV_MASK */
+                                       0x00000304 /* EMC_REFRESH */
+                                       0x00000000 /* EMC_BURST_REFRESH_NUM */
+                                       0x000000c1 /* EMC_PRE_REFRESH_REQ_CNT */
+                                       0x00000002 /* EMC_PDEX2WR */
+                                       0x00000002 /* EMC_PDEX2RD */
+                                       0x00000001 /* EMC_PCHG2PDEN */
+                                       0x00000000 /* EMC_ACT2PDEN */
+                                       0x00000021 /* EMC_AR2PDEN */
+                                       0x0000000f /* EMC_RW2PDEN */
+                                       0x00000025 /* EMC_TXSR */
+                                       0x00000025 /* EMC_TXSRDLL */
+                                       0x00000004 /* EMC_TCKE */
+                                       0x00000005 /* EMC_TCKESR */
+                                       0x00000004 /* EMC_TPD */
+                                       0x00000003 /* EMC_TFAW */
+                                       0x00000000 /* EMC_TRPAB */
+                                       0x00000005 /* EMC_TCLKSTABLE */
+                                       0x00000005 /* EMC_TCLKSTOP */
+                                       0x0000031c /* EMC_TREFBW */
+                                       0x00000000 /* EMC_FBIO_CFG6 */
+                                       0x00000000 /* EMC_ODT_WRITE */
+                                       0x00000000 /* EMC_ODT_READ */
+                                       0x106aa298 /* EMC_FBIO_CFG5 */
+                                       0x002c00a0 /* EMC_CFG_DIG_DLL */
+                                       0x00008000 /* EMC_CFG_DIG_DLL_PERIOD */
+                                       0x00064000 /* EMC_DLL_XFORM_DQS0 */
+                                       0x00064000 /* EMC_DLL_XFORM_DQS1 */
+                                       0x00064000 /* EMC_DLL_XFORM_DQS2 */
+                                       0x00064000 /* EMC_DLL_XFORM_DQS3 */
+                                       0x00064000 /* EMC_DLL_XFORM_DQS4 */
+                                       0x00064000 /* EMC_DLL_XFORM_DQS5 */
+                                       0x00064000 /* EMC_DLL_XFORM_DQS6 */
+                                       0x00064000 /* EMC_DLL_XFORM_DQS7 */
+                                       0x00064000 /* EMC_DLL_XFORM_DQS8 */
+                                       0x00064000 /* EMC_DLL_XFORM_DQS9 */
+                                       0x00064000 /* EMC_DLL_XFORM_DQS10 */
+                                       0x00064000 /* EMC_DLL_XFORM_DQS11 */
+                                       0x00064000 /* EMC_DLL_XFORM_DQS12 */
+                                       0x00064000 /* EMC_DLL_XFORM_DQS13 */
+                                       0x00064000 /* EMC_DLL_XFORM_DQS14 */
+                                       0x00064000 /* EMC_DLL_XFORM_DQS15 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE0 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE1 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE2 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE3 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE4 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE5 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE6 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE7 */
+                                       0x00000000 /* EMC_DLL_XFORM_ADDR0 */
+                                       0x00000000 /* EMC_DLL_XFORM_ADDR1 */
+                                       0x00004000 /* EMC_DLL_XFORM_ADDR2 */
+                                       0x00000000 /* EMC_DLL_XFORM_ADDR3 */
+                                       0x00000000 /* EMC_DLL_XFORM_ADDR4 */
+                                       0x00004000 /* EMC_DLL_XFORM_ADDR5 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE8 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE9 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE10 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE11 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE12 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE13 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE14 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE15 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS0 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS1 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS2 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS3 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS4 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS5 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS6 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS7 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS8 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS9 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS10 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS11 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS12 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS13 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS14 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS15 */
+                                       0x00080000 /* EMC_DLL_XFORM_DQ0 */
+                                       0x00080000 /* EMC_DLL_XFORM_DQ1 */
+                                       0x00080000 /* EMC_DLL_XFORM_DQ2 */
+                                       0x00080000 /* EMC_DLL_XFORM_DQ3 */
+                                       0x00008000 /* EMC_DLL_XFORM_DQ4 */
+                                       0x00008000 /* EMC_DLL_XFORM_DQ5 */
+                                       0x00008000 /* EMC_DLL_XFORM_DQ6 */
+                                       0x00008000 /* EMC_DLL_XFORM_DQ7 */
+                                       0x10000280 /* EMC_XM2CMDPADCTRL */
+                                       0x00000000 /* EMC_XM2CMDPADCTRL4 */
+                                       0x00111111 /* EMC_XM2CMDPADCTRL5 */
+                                       0x00000000 /* EMC_XM2DQPADCTRL2 */
+                                       0x00000000 /* EMC_XM2DQPADCTRL3 */
+                                       0x77ffc081 /* EMC_XM2CLKPADCTRL */
+                                       0x00000303 /* EMC_XM2CLKPADCTRL2 */
+                                       0x81f1f108 /* EMC_XM2COMPPADCTRL */
+                                       0x07070004 /* EMC_XM2VTTGENPADCTRL */
+                                       0x0000003f /* EMC_XM2VTTGENPADCTRL2 */
+                                       0x016eeeee /* EMC_XM2VTTGENPADCTRL3 */
+                                       0x51451400 /* EMC_XM2DQSPADCTRL3 */
+                                       0x00514514 /* EMC_XM2DQSPADCTRL4 */
+                                       0x00514514 /* EMC_XM2DQSPADCTRL5 */
+                                       0x51451400 /* EMC_XM2DQSPADCTRL6 */
+                                       0x0000003f /* EMC_DSR_VTTGEN_DRV */
+                                       0x00000033 /* EMC_TXDSRVTTGEN */
+                                       0x00000000 /* EMC_FBIO_SPARE */
+                                       0x00000042 /* EMC_ZCAL_WAIT_CNT */
+                                       0x000e000e /* EMC_MRS_WAIT_CNT2 */
+                                       0x00000000 /* EMC_CTT */
+                                       0x00000003 /* EMC_CTT_DURATION */
+                                       0x0000f2f3 /* EMC_CFG_PIPE */
+                                       0x80000713 /* EMC_DYN_SELF_REF_CONTROL */
+                                       0x0000000a /* EMC_QPOP */
                                >;
                        };
 
                        timing-204000000 {
                                clock-frequency = <204000000>;
 
-                               nvidia,emem-configuration = <
-                                       0x01000003
-                                       0x80000040
-                                       0x00000001
-                                       0x00000001
-                                       0x00000005
-                                       0x00000002
-                                       0x00000004
-                                       0x00000001
-                                       0x00000002
-                                       0x00000008
-                                       0x00000003
-                                       0x00000002
-                                       0x00000004
-                                       0x00000006
-                                       0x06040203
-                                       0x000a0405
-                                       0x73840a06
-                                       0x70000f03
-                                       0x001f0000
-                               >;
-                       };
-
-                       timing-300000000 {
-                               clock-frequency = <300000000>;
-
-                               nvidia,emem-configuration = <
-                                       0x08000004
-                                       0x80000040
-                                       0x00000001
-                                       0x00000002
-                                       0x00000007
-                                       0x00000004
-                                       0x00000005
-                                       0x00000001
-                                       0x00000002
-                                       0x00000007
-                                       0x00000002
-                                       0x00000002
-                                       0x00000004
-                                       0x00000006
-                                       0x06040202
-                                       0x000b0607
-                                       0x77450e08
-                                       0x70000f03
-                                       0x001f0000
-                               >;
-                       };
-
-                       timing-396000000 {
-                               clock-frequency = <396000000>;
+                               nvidia,emc-auto-cal-config = <0xa1430000>;
+                               nvidia,emc-auto-cal-config2 = <0x00000000>;
+                               nvidia,emc-auto-cal-config3 = <0x00000000>;
+                               nvidia,emc-auto-cal-interval = <0x001fffff>;
+                               nvidia,emc-bgbias-ctl0 = <0x00000008>;
+                               nvidia,emc-cfg = <0x73240000>;
+                               nvidia,emc-cfg-2 = <0x0000088d>;
+                               nvidia,emc-ctt-term-ctrl = <0x00000802>;
+                               nvidia,emc-mode-1 = <0x00100003>;
+                               nvidia,emc-mode-2 = <0x00200008>;
+                               nvidia,emc-mode-4 = <0x00000000>;
+                               nvidia,emc-mode-reset = <0x00001221>;
+                               nvidia,emc-mrs-wait-cnt = <0x000e000e>;
+                               nvidia,emc-sel-dpd-ctrl = <0x00040008>;
+                               nvidia,emc-xm2dqspadctrl2 = <0x0130b118>;
+                               nvidia,emc-zcal-cnt-long = <0x00000042>;
+                               nvidia,emc-zcal-interval = <0x00020000>;
+
+                               nvidia,emc-configuration = <
+                                       0x00000009 /* EMC_RC */
+                                       0x00000047 /* EMC_RFC */
+                                       0x00000000 /* EMC_RFC_SLR */
+                                       0x00000006 /* EMC_RAS */
+                                       0x00000002 /* EMC_RP */
+                                       0x00000005 /* EMC_R2W */
+                                       0x0000000a /* EMC_W2R */
+                                       0x00000005 /* EMC_R2P */
+                                       0x0000000b /* EMC_W2P */
+                                       0x00000002 /* EMC_RD_RCD */
+                                       0x00000002 /* EMC_WR_RCD */
+                                       0x00000003 /* EMC_RRD */
+                                       0x00000003 /* EMC_REXT */
+                                       0x00000000 /* EMC_WEXT */
+                                       0x00000005 /* EMC_WDV */
+                                       0x00000005 /* EMC_WDV_MASK */
+                                       0x00000006 /* EMC_QUSE */
+                                       0x00000002 /* EMC_QUSE_WIDTH */
+                                       0x00000000 /* EMC_IBDLY */
+                                       0x00000004 /* EMC_EINPUT */
+                                       0x00000006 /* EMC_EINPUT_DURATION */
+                                       0x00010000 /* EMC_PUTERM_EXTRA */
+                                       0x00000003 /* EMC_PUTERM_WIDTH */
+                                       0x00000000 /* EMC_PUTERM_ADJ */
+                                       0x00000000 /* EMC_CDB_CNTL_1 */
+                                       0x00000000 /* EMC_CDB_CNTL_2 */
+                                       0x00000000 /* EMC_CDB_CNTL_3 */
+                                       0x00000003 /* EMC_QRST */
+                                       0x0000000d /* EMC_QSAFE */
+                                       0x0000000f /* EMC_RDV */
+                                       0x00000011 /* EMC_RDV_MASK */
+                                       0x00000607 /* EMC_REFRESH */
+                                       0x00000000 /* EMC_BURST_REFRESH_NUM */
+                                       0x00000181 /* EMC_PRE_REFRESH_REQ_CNT */
+                                       0x00000002 /* EMC_PDEX2WR */
+                                       0x00000002 /* EMC_PDEX2RD */
+                                       0x00000001 /* EMC_PCHG2PDEN */
+                                       0x00000000 /* EMC_ACT2PDEN */
+                                       0x00000044 /* EMC_AR2PDEN */
+                                       0x0000000f /* EMC_RW2PDEN */
+                                       0x0000004a /* EMC_TXSR */
+                                       0x0000004a /* EMC_TXSRDLL */
+                                       0x00000004 /* EMC_TCKE */
+                                       0x00000005 /* EMC_TCKESR */
+                                       0x00000004 /* EMC_TPD */
+                                       0x00000007 /* EMC_TFAW */
+                                       0x00000000 /* EMC_TRPAB */
+                                       0x00000005 /* EMC_TCLKSTABLE */
+                                       0x00000005 /* EMC_TCLKSTOP */
+                                       0x00000638 /* EMC_TREFBW */
+                                       0x00000000 /* EMC_FBIO_CFG6 */
+                                       0x00000000 /* EMC_ODT_WRITE */
+                                       0x00000000 /* EMC_ODT_READ */
+                                       0x106aa298 /* EMC_FBIO_CFG5 */
+                                       0x002c00a0 /* EMC_CFG_DIG_DLL */
+                                       0x00008000 /* EMC_CFG_DIG_DLL_PERIOD */
+                                       0x00064000 /* EMC_DLL_XFORM_DQS0 */
+                                       0x00064000 /* EMC_DLL_XFORM_DQS1 */
+                                       0x00064000 /* EMC_DLL_XFORM_DQS2 */
+                                       0x00064000 /* EMC_DLL_XFORM_DQS3 */
+                                       0x00064000 /* EMC_DLL_XFORM_DQS4 */
+                                       0x00064000 /* EMC_DLL_XFORM_DQS5 */
+                                       0x00064000 /* EMC_DLL_XFORM_DQS6 */
+                                       0x00064000 /* EMC_DLL_XFORM_DQS7 */
+                                       0x00064000 /* EMC_DLL_XFORM_DQS8 */
+                                       0x00064000 /* EMC_DLL_XFORM_DQS9 */
+                                       0x00064000 /* EMC_DLL_XFORM_DQS10 */
+                                       0x00064000 /* EMC_DLL_XFORM_DQS11 */
+                                       0x00064000 /* EMC_DLL_XFORM_DQS12 */
+                                       0x00064000 /* EMC_DLL_XFORM_DQS13 */
+                                       0x00064000 /* EMC_DLL_XFORM_DQS14 */
+                                       0x00064000 /* EMC_DLL_XFORM_DQS15 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE0 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE1 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE2 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE3 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE4 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE5 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE6 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE7 */
+                                       0x00000000 /* EMC_DLL_XFORM_ADDR0 */
+                                       0x00000000 /* EMC_DLL_XFORM_ADDR1 */
+                                       0x00004000 /* EMC_DLL_XFORM_ADDR2 */
+                                       0x00000000 /* EMC_DLL_XFORM_ADDR3 */
+                                       0x00000000 /* EMC_DLL_XFORM_ADDR4 */
+                                       0x00004000 /* EMC_DLL_XFORM_ADDR5 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE8 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE9 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE10 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE11 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE12 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE13 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE14 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE15 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS0 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS1 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS2 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS3 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS4 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS5 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS6 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS7 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS8 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS9 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS10 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS11 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS12 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS13 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS14 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS15 */
+                                       0x00090000 /* EMC_DLL_XFORM_DQ0 */
+                                       0x00090000 /* EMC_DLL_XFORM_DQ1 */
+                                       0x00094000 /* EMC_DLL_XFORM_DQ2 */
+                                       0x00094000 /* EMC_DLL_XFORM_DQ3 */
+                                       0x00009400 /* EMC_DLL_XFORM_DQ4 */
+                                       0x00009000 /* EMC_DLL_XFORM_DQ5 */
+                                       0x00009000 /* EMC_DLL_XFORM_DQ6 */
+                                       0x00009000 /* EMC_DLL_XFORM_DQ7 */
+                                       0x10000280 /* EMC_XM2CMDPADCTRL */
+                                       0x00000000 /* EMC_XM2CMDPADCTRL4 */
+                                       0x00111111 /* EMC_XM2CMDPADCTRL5 */
+                                       0x00000000 /* EMC_XM2DQPADCTRL2 */
+                                       0x00000000 /* EMC_XM2DQPADCTRL3 */
+                                       0x77ffc081 /* EMC_XM2CLKPADCTRL */
+                                       0x00000303 /* EMC_XM2CLKPADCTRL2 */
+                                       0x81f1f108 /* EMC_XM2COMPPADCTRL */
+                                       0x07070004 /* EMC_XM2VTTGENPADCTRL */
+                                       0x0000003f /* EMC_XM2VTTGENPADCTRL2 */
+                                       0x016eeeee /* EMC_XM2VTTGENPADCTRL3 */
+                                       0x51451400 /* EMC_XM2DQSPADCTRL3 */
+                                       0x00514514 /* EMC_XM2DQSPADCTRL4 */
+                                       0x00514514 /* EMC_XM2DQSPADCTRL5 */
+                                       0x51451400 /* EMC_XM2DQSPADCTRL6 */
+                                       0x0000003f /* EMC_DSR_VTTGEN_DRV */
+                                       0x00000066 /* EMC_TXDSRVTTGEN */
+                                       0x00000000 /* EMC_FBIO_SPARE */
+                                       0x00000100 /* EMC_ZCAL_WAIT_CNT */
+                                       0x000e000e /* EMC_MRS_WAIT_CNT2 */
+                                       0x00000000 /* EMC_CTT */
+                                       0x00000003 /* EMC_CTT_DURATION */
+                                       0x0000d2b3 /* EMC_CFG_PIPE */
+                                       0x80000d22 /* EMC_DYN_SELF_REF_CONTROL */
+                                       0x0000000a /* EMC_QPOP */
+                               >;
+                       };
+
+                       timing-300000000 {
+                               clock-frequency = <300000000>;
+
+                               nvidia,emc-auto-cal-config = <0xa1430000>;
+                               nvidia,emc-auto-cal-config2 = <0x00000000>;
+                               nvidia,emc-auto-cal-config3 = <0x00000000>;
+                               nvidia,emc-auto-cal-interval = <0x001fffff>;
+                               nvidia,emc-bgbias-ctl0 = <0x00000000>;
+                               nvidia,emc-cfg = <0x73340000>;
+                               nvidia,emc-cfg-2 = <0x000008d5>;
+                               nvidia,emc-ctt-term-ctrl = <0x00000802>;
+                               nvidia,emc-mode-1 = <0x00100002>;
+                               nvidia,emc-mode-2 = <0x00200000>;
+                               nvidia,emc-mode-4 = <0x00000000>;
+                               nvidia,emc-mode-reset = <0x00000321>;
+                               nvidia,emc-mrs-wait-cnt = <0x0117000e>;
+                               nvidia,emc-sel-dpd-ctrl = <0x00040128>;
+                               nvidia,emc-xm2dqspadctrl2 = <0x01231339>;
+                               nvidia,emc-zcal-cnt-long = <0x00000042>;
+                               nvidia,emc-zcal-interval = <0x00020000>;
+
+                               nvidia,emc-configuration = <
+                                       0x0000000d /* EMC_RC */
+                                       0x00000067 /* EMC_RFC */
+                                       0x00000000 /* EMC_RFC_SLR */
+                                       0x00000009 /* EMC_RAS */
+                                       0x00000003 /* EMC_RP */
+                                       0x00000004 /* EMC_R2W */
+                                       0x00000008 /* EMC_W2R */
+                                       0x00000002 /* EMC_R2P */
+                                       0x00000009 /* EMC_W2P */
+                                       0x00000003 /* EMC_RD_RCD */
+                                       0x00000003 /* EMC_WR_RCD */
+                                       0x00000002 /* EMC_RRD */
+                                       0x00000002 /* EMC_REXT */
+                                       0x00000000 /* EMC_WEXT */
+                                       0x00000003 /* EMC_WDV */
+                                       0x00000003 /* EMC_WDV_MASK */
+                                       0x00000005 /* EMC_QUSE */
+                                       0x00000002 /* EMC_QUSE_WIDTH */
+                                       0x00000000 /* EMC_IBDLY */
+                                       0x00000002 /* EMC_EINPUT */
+                                       0x00000007 /* EMC_EINPUT_DURATION */
+                                       0x00020000 /* EMC_PUTERM_EXTRA */
+                                       0x00000003 /* EMC_PUTERM_WIDTH */
+                                       0x00000000 /* EMC_PUTERM_ADJ */
+                                       0x00000000 /* EMC_CDB_CNTL_1 */
+                                       0x00000000 /* EMC_CDB_CNTL_2 */
+                                       0x00000000 /* EMC_CDB_CNTL_3 */
+                                       0x00000001 /* EMC_QRST */
+                                       0x0000000e /* EMC_QSAFE */
+                                       0x00000010 /* EMC_RDV */
+                                       0x00000012 /* EMC_RDV_MASK */
+                                       0x000008e4 /* EMC_REFRESH */
+                                       0x00000000 /* EMC_BURST_REFRESH_NUM */
+                                       0x00000239 /* EMC_PRE_REFRESH_REQ_CNT */
+                                       0x00000001 /* EMC_PDEX2WR */
+                                       0x00000008 /* EMC_PDEX2RD */
+                                       0x00000001 /* EMC_PCHG2PDEN */
+                                       0x00000000 /* EMC_ACT2PDEN */
+                                       0x00000065 /* EMC_AR2PDEN */
+                                       0x0000000e /* EMC_RW2PDEN */
+                                       0x0000006c /* EMC_TXSR */
+                                       0x00000200 /* EMC_TXSRDLL */
+                                       0x00000004 /* EMC_TCKE */
+                                       0x00000005 /* EMC_TCKESR */
+                                       0x00000004 /* EMC_TPD */
+                                       0x00000009 /* EMC_TFAW */
+                                       0x00000000 /* EMC_TRPAB */
+                                       0x00000005 /* EMC_TCLKSTABLE */
+                                       0x00000005 /* EMC_TCLKSTOP */
+                                       0x00000924 /* EMC_TREFBW */
+                                       0x00000000 /* EMC_FBIO_CFG6 */
+                                       0x00000000 /* EMC_ODT_WRITE */
+                                       0x00000000 /* EMC_ODT_READ */
+                                       0x104ab098 /* EMC_FBIO_CFG5 */
+                                       0x002c00a0 /* EMC_CFG_DIG_DLL */
+                                       0x00008000 /* EMC_CFG_DIG_DLL_PERIOD */
+                                       0x00030000 /* EMC_DLL_XFORM_DQS0 */
+                                       0x00030000 /* EMC_DLL_XFORM_DQS1 */
+                                       0x00030000 /* EMC_DLL_XFORM_DQS2 */
+                                       0x00030000 /* EMC_DLL_XFORM_DQS3 */
+                                       0x00030000 /* EMC_DLL_XFORM_DQS4 */
+                                       0x00030000 /* EMC_DLL_XFORM_DQS5 */
+                                       0x00030000 /* EMC_DLL_XFORM_DQS6 */
+                                       0x00030000 /* EMC_DLL_XFORM_DQS7 */
+                                       0x00030000 /* EMC_DLL_XFORM_DQS8 */
+                                       0x00030000 /* EMC_DLL_XFORM_DQS9 */
+                                       0x00030000 /* EMC_DLL_XFORM_DQS10 */
+                                       0x00030000 /* EMC_DLL_XFORM_DQS11 */
+                                       0x00030000 /* EMC_DLL_XFORM_DQS12 */
+                                       0x00030000 /* EMC_DLL_XFORM_DQS13 */
+                                       0x00030000 /* EMC_DLL_XFORM_DQS14 */
+                                       0x00030000 /* EMC_DLL_XFORM_DQS15 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE0 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE1 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE2 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE3 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE4 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE5 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE6 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE7 */
+                                       0x00098000 /* EMC_DLL_XFORM_ADDR0 */
+                                       0x00098000 /* EMC_DLL_XFORM_ADDR1 */
+                                       0x00000000 /* EMC_DLL_XFORM_ADDR2 */
+                                       0x00098000 /* EMC_DLL_XFORM_ADDR3 */
+                                       0x00098000 /* EMC_DLL_XFORM_ADDR4 */
+                                       0x00000000 /* EMC_DLL_XFORM_ADDR5 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE8 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE9 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE10 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE11 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE12 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE13 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE14 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE15 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS0 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS1 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS2 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS3 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS4 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS5 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS6 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS7 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS8 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS9 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS10 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS11 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS12 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS13 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS14 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS15 */
+                                       0x00060000 /* EMC_DLL_XFORM_DQ0 */
+                                       0x00060000 /* EMC_DLL_XFORM_DQ1 */
+                                       0x00060000 /* EMC_DLL_XFORM_DQ2 */
+                                       0x00060000 /* EMC_DLL_XFORM_DQ3 */
+                                       0x00006000 /* EMC_DLL_XFORM_DQ4 */
+                                       0x00006000 /* EMC_DLL_XFORM_DQ5 */
+                                       0x00006000 /* EMC_DLL_XFORM_DQ6 */
+                                       0x00006000 /* EMC_DLL_XFORM_DQ7 */
+                                       0x10000280 /* EMC_XM2CMDPADCTRL */
+                                       0x00000000 /* EMC_XM2CMDPADCTRL4 */
+                                       0x00111111 /* EMC_XM2CMDPADCTRL5 */
+                                       0x00000000 /* EMC_XM2DQPADCTRL2 */
+                                       0x00000000 /* EMC_XM2DQPADCTRL3 */
+                                       0x77ffc081 /* EMC_XM2CLKPADCTRL */
+                                       0x00000101 /* EMC_XM2CLKPADCTRL2 */
+                                       0x81f1f108 /* EMC_XM2COMPPADCTRL */
+                                       0x07070004 /* EMC_XM2VTTGENPADCTRL */
+                                       0x00000000 /* EMC_XM2VTTGENPADCTRL2 */
+                                       0x016eeeee /* EMC_XM2VTTGENPADCTRL3 */
+                                       0x51451420 /* EMC_XM2DQSPADCTRL3 */
+                                       0x00514514 /* EMC_XM2DQSPADCTRL4 */
+                                       0x00514514 /* EMC_XM2DQSPADCTRL5 */
+                                       0x51451400 /* EMC_XM2DQSPADCTRL6 */
+                                       0x0000003f /* EMC_DSR_VTTGEN_DRV */
+                                       0x00000096 /* EMC_TXDSRVTTGEN */
+                                       0x00000000 /* EMC_FBIO_SPARE */
+                                       0x00000100 /* EMC_ZCAL_WAIT_CNT */
+                                       0x0117000e /* EMC_MRS_WAIT_CNT2 */
+                                       0x00000000 /* EMC_CTT */
+                                       0x00000003 /* EMC_CTT_DURATION */
+                                       0x000052a3 /* EMC_CFG_PIPE */
+                                       0x800012d7 /* EMC_DYN_SELF_REF_CONTROL */
+                                       0x00000009 /* EMC_QPOP */
+                               >;
+                       };
+
+                       timing-396000000 {
+                               clock-frequency = <396000000>;
+
+                               nvidia,emc-auto-cal-config = <0xa1430000>;
+                               nvidia,emc-auto-cal-config2 = <0x00000000>;
+                               nvidia,emc-auto-cal-config3 = <0x00000000>;
+                               nvidia,emc-auto-cal-interval = <0x001fffff>;
+                               nvidia,emc-bgbias-ctl0 = <0x00000000>;
+                               nvidia,emc-cfg = <0x73340000>;
+                               nvidia,emc-cfg-2 = <0x00000895>;
+                               nvidia,emc-ctt-term-ctrl = <0x00000802>;
+                               nvidia,emc-mode-1 = <0x00100002>;
+                               nvidia,emc-mode-2 = <0x00200000>;
+                               nvidia,emc-mode-4 = <0x00000000>;
+                               nvidia,emc-mode-reset = <0x00000521>;
+                               nvidia,emc-mrs-wait-cnt = <0x00f5000e>;
+                               nvidia,emc-sel-dpd-ctrl = <0x00040008>;
+                               nvidia,emc-xm2dqspadctrl2 = <0x01231339>;
+                               nvidia,emc-zcal-cnt-long = <0x00000042>;
+                               nvidia,emc-zcal-interval = <0x00020000>;
+
+                               nvidia,emc-configuration = <
+                                       0x00000011 /* EMC_RC */
+                                       0x00000089 /* EMC_RFC */
+                                       0x00000000 /* EMC_RFC_SLR */
+                                       0x0000000c /* EMC_RAS */
+                                       0x00000004 /* EMC_RP */
+                                       0x00000005 /* EMC_R2W */
+                                       0x00000008 /* EMC_W2R */
+                                       0x00000002 /* EMC_R2P */
+                                       0x0000000a /* EMC_W2P */
+                                       0x00000004 /* EMC_RD_RCD */
+                                       0x00000004 /* EMC_WR_RCD */
+                                       0x00000002 /* EMC_RRD */
+                                       0x00000002 /* EMC_REXT */
+                                       0x00000000 /* EMC_WEXT */
+                                       0x00000003 /* EMC_WDV */
+                                       0x00000003 /* EMC_WDV_MASK */
+                                       0x00000005 /* EMC_QUSE */
+                                       0x00000002 /* EMC_QUSE_WIDTH */
+                                       0x00000000 /* EMC_IBDLY */
+                                       0x00000001 /* EMC_EINPUT */
+                                       0x00000008 /* EMC_EINPUT_DURATION */
+                                       0x00020000 /* EMC_PUTERM_EXTRA */
+                                       0x00000003 /* EMC_PUTERM_WIDTH */
+                                       0x00000000 /* EMC_PUTERM_ADJ */
+                                       0x00000000 /* EMC_CDB_CNTL_1 */
+                                       0x00000000 /* EMC_CDB_CNTL_2 */
+                                       0x00000000 /* EMC_CDB_CNTL_3 */
+                                       0x00000000 /* EMC_QRST */
+                                       0x0000000f /* EMC_QSAFE */
+                                       0x00000010 /* EMC_RDV */
+                                       0x00000012 /* EMC_RDV_MASK */
+                                       0x00000bd1 /* EMC_REFRESH */
+                                       0x00000000 /* EMC_BURST_REFRESH_NUM */
+                                       0x000002f4 /* EMC_PRE_REFRESH_REQ_CNT */
+                                       0x00000001 /* EMC_PDEX2WR */
+                                       0x00000008 /* EMC_PDEX2RD */
+                                       0x00000001 /* EMC_PCHG2PDEN */
+                                       0x00000000 /* EMC_ACT2PDEN */
+                                       0x00000087 /* EMC_AR2PDEN */
+                                       0x0000000f /* EMC_RW2PDEN */
+                                       0x0000008f /* EMC_TXSR */
+                                       0x00000200 /* EMC_TXSRDLL */
+                                       0x00000004 /* EMC_TCKE */
+                                       0x00000005 /* EMC_TCKESR */
+                                       0x00000004 /* EMC_TPD */
+                                       0x0000000d /* EMC_TFAW */
+                                       0x00000000 /* EMC_TRPAB */
+                                       0x00000005 /* EMC_TCLKSTABLE */
+                                       0x00000005 /* EMC_TCLKSTOP */
+                                       0x00000c11 /* EMC_TREFBW */
+                                       0x00000000 /* EMC_FBIO_CFG6 */
+                                       0x00000000 /* EMC_ODT_WRITE */
+                                       0x00000000 /* EMC_ODT_READ */
+                                       0x104ab098 /* EMC_FBIO_CFG5 */
+                                       0x002c00a0 /* EMC_CFG_DIG_DLL */
+                                       0x00008000 /* EMC_CFG_DIG_DLL_PERIOD */
+                                       0x00030000 /* EMC_DLL_XFORM_DQS0 */
+                                       0x00030000 /* EMC_DLL_XFORM_DQS1 */
+                                       0x00030000 /* EMC_DLL_XFORM_DQS2 */
+                                       0x00030000 /* EMC_DLL_XFORM_DQS3 */
+                                       0x00030000 /* EMC_DLL_XFORM_DQS4 */
+                                       0x00030000 /* EMC_DLL_XFORM_DQS5 */
+                                       0x00030000 /* EMC_DLL_XFORM_DQS6 */
+                                       0x00030000 /* EMC_DLL_XFORM_DQS7 */
+                                       0x00030000 /* EMC_DLL_XFORM_DQS8 */
+                                       0x00030000 /* EMC_DLL_XFORM_DQS9 */
+                                       0x00030000 /* EMC_DLL_XFORM_DQS10 */
+                                       0x00030000 /* EMC_DLL_XFORM_DQS11 */
+                                       0x00030000 /* EMC_DLL_XFORM_DQS12 */
+                                       0x00030000 /* EMC_DLL_XFORM_DQS13 */
+                                       0x00030000 /* EMC_DLL_XFORM_DQS14 */
+                                       0x00030000 /* EMC_DLL_XFORM_DQS15 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE0 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE1 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE2 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE3 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE4 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE5 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE6 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE7 */
+                                       0x00070000 /* EMC_DLL_XFORM_ADDR0 */
+                                       0x00070000 /* EMC_DLL_XFORM_ADDR1 */
+                                       0x00000000 /* EMC_DLL_XFORM_ADDR2 */
+                                       0x00070000 /* EMC_DLL_XFORM_ADDR3 */
+                                       0x00070000 /* EMC_DLL_XFORM_ADDR4 */
+                                       0x00000000 /* EMC_DLL_XFORM_ADDR5 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE8 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE9 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE10 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE11 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE12 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE13 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE14 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE15 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS0 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS1 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS2 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS3 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS4 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS5 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS6 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS7 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS8 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS9 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS10 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS11 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS12 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS13 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS14 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS15 */
+                                       0x00048000 /* EMC_DLL_XFORM_DQ0 */
+                                       0x00048000 /* EMC_DLL_XFORM_DQ1 */
+                                       0x00048000 /* EMC_DLL_XFORM_DQ2 */
+                                       0x00048000 /* EMC_DLL_XFORM_DQ3 */
+                                       0x00004800 /* EMC_DLL_XFORM_DQ4 */
+                                       0x00004800 /* EMC_DLL_XFORM_DQ5 */
+                                       0x00004800 /* EMC_DLL_XFORM_DQ6 */
+                                       0x00004800 /* EMC_DLL_XFORM_DQ7 */
+                                       0x10000280 /* EMC_XM2CMDPADCTRL */
+                                       0x00000000 /* EMC_XM2CMDPADCTRL4 */
+                                       0x00111111 /* EMC_XM2CMDPADCTRL5 */
+                                       0x00000000 /* EMC_XM2DQPADCTRL2 */
+                                       0x00000000 /* EMC_XM2DQPADCTRL3 */
+                                       0x77ffc081 /* EMC_XM2CLKPADCTRL */
+                                       0x00000101 /* EMC_XM2CLKPADCTRL2 */
+                                       0x81f1f108 /* EMC_XM2COMPPADCTRL */
+                                       0x07070004 /* EMC_XM2VTTGENPADCTRL */
+                                       0x00000000 /* EMC_XM2VTTGENPADCTRL2 */
+                                       0x016eeeee /* EMC_XM2VTTGENPADCTRL3 */
+                                       0x51451420 /* EMC_XM2DQSPADCTRL3 */
+                                       0x00514514 /* EMC_XM2DQSPADCTRL4 */
+                                       0x00514514 /* EMC_XM2DQSPADCTRL5 */
+                                       0x51451400 /* EMC_XM2DQSPADCTRL6 */
+                                       0x0000003f /* EMC_DSR_VTTGEN_DRV */
+                                       0x000000c6 /* EMC_TXDSRVTTGEN */
+                                       0x00000000 /* EMC_FBIO_SPARE */
+                                       0x00000100 /* EMC_ZCAL_WAIT_CNT */
+                                       0x00f5000e /* EMC_MRS_WAIT_CNT2 */
+                                       0x00000000 /* EMC_CTT */
+                                       0x00000003 /* EMC_CTT_DURATION */
+                                       0x000052a3 /* EMC_CFG_PIPE */
+                                       0x8000188b /* EMC_DYN_SELF_REF_CONTROL */
+                                       0x00000009 /* EMC_QPOP */
+                               >;
+                       };
+
+                       timing-528000000 {
+                               clock-frequency = <528000000>;
+
+                               nvidia,emc-auto-cal-config = <0xa1430000>;
+                               nvidia,emc-auto-cal-config2 = <0x00000000>;
+                               nvidia,emc-auto-cal-config3 = <0x00000000>;
+                               nvidia,emc-auto-cal-interval = <0x001fffff>;
+                               nvidia,emc-bgbias-ctl0 = <0x00000000>;
+                               nvidia,emc-cfg = <0x73300000>;
+                               nvidia,emc-cfg-2 = <0x0000089d>;
+                               nvidia,emc-ctt-term-ctrl = <0x00000802>;
+                               nvidia,emc-mode-1 = <0x00100002>;
+                               nvidia,emc-mode-2 = <0x00200008>;
+                               nvidia,emc-mode-4 = <0x00000000>;
+                               nvidia,emc-mode-reset = <0x00000941>;
+                               nvidia,emc-mrs-wait-cnt = <0x00c8000e>;
+                               nvidia,emc-sel-dpd-ctrl = <0x00040008>;
+                               nvidia,emc-xm2dqspadctrl2 = <0x0123133d>;
+                               nvidia,emc-zcal-cnt-long = <0x00000042>;
+                               nvidia,emc-zcal-interval = <0x00020000>;
+
+                               nvidia,emc-configuration = <
+                                       0x00000018 /* EMC_RC */
+                                       0x000000b7 /* EMC_RFC */
+                                       0x00000000 /* EMC_RFC_SLR */
+                                       0x00000010 /* EMC_RAS */
+                                       0x00000006 /* EMC_RP */
+                                       0x00000006 /* EMC_R2W */
+                                       0x00000009 /* EMC_W2R */
+                                       0x00000002 /* EMC_R2P */
+                                       0x0000000d /* EMC_W2P */
+                                       0x00000006 /* EMC_RD_RCD */
+                                       0x00000006 /* EMC_WR_RCD */
+                                       0x00000002 /* EMC_RRD */
+                                       0x00000002 /* EMC_REXT */
+                                       0x00000000 /* EMC_WEXT */
+                                       0x00000003 /* EMC_WDV */
+                                       0x00000003 /* EMC_WDV_MASK */
+                                       0x00000007 /* EMC_QUSE */
+                                       0x00000002 /* EMC_QUSE_WIDTH */
+                                       0x00000000 /* EMC_IBDLY */
+                                       0x00000002 /* EMC_EINPUT */
+                                       0x00000009 /* EMC_EINPUT_DURATION */
+                                       0x00040000 /* EMC_PUTERM_EXTRA */
+                                       0x00000003 /* EMC_PUTERM_WIDTH */
+                                       0x00000000 /* EMC_PUTERM_ADJ */
+                                       0x00000000 /* EMC_CDB_CNTL_1 */
+                                       0x00000000 /* EMC_CDB_CNTL_2 */
+                                       0x00000000 /* EMC_CDB_CNTL_3 */
+                                       0x00000001 /* EMC_QRST */
+                                       0x00000010 /* EMC_QSAFE */
+                                       0x00000013 /* EMC_RDV */
+                                       0x00000015 /* EMC_RDV_MASK */
+                                       0x00000fd6 /* EMC_REFRESH */
+                                       0x00000000 /* EMC_BURST_REFRESH_NUM */
+                                       0x000003f5 /* EMC_PRE_REFRESH_REQ_CNT */
+                                       0x00000002 /* EMC_PDEX2WR */
+                                       0x0000000b /* EMC_PDEX2RD */
+                                       0x00000001 /* EMC_PCHG2PDEN */
+                                       0x00000000 /* EMC_ACT2PDEN */
+                                       0x000000b4 /* EMC_AR2PDEN */
+                                       0x00000012 /* EMC_RW2PDEN */
+                                       0x000000bf /* EMC_TXSR */
+                                       0x00000200 /* EMC_TXSRDLL */
+                                       0x00000004 /* EMC_TCKE */
+                                       0x00000005 /* EMC_TCKESR */
+                                       0x00000004 /* EMC_TPD */
+                                       0x00000013 /* EMC_TFAW */
+                                       0x00000000 /* EMC_TRPAB */
+                                       0x00000006 /* EMC_TCLKSTABLE */
+                                       0x00000006 /* EMC_TCLKSTOP */
+                                       0x00001017 /* EMC_TREFBW */
+                                       0x00000000 /* EMC_FBIO_CFG6 */
+                                       0x00000000 /* EMC_ODT_WRITE */
+                                       0x00000000 /* EMC_ODT_READ */
+                                       0x104ab098 /* EMC_FBIO_CFG5 */
+                                       0xe01200b1 /* EMC_CFG_DIG_DLL */
+                                       0x00008000 /* EMC_CFG_DIG_DLL_PERIOD */
+                                       0x0000000a /* EMC_DLL_XFORM_DQS0 */
+                                       0x0000000a /* EMC_DLL_XFORM_DQS1 */
+                                       0x0000000a /* EMC_DLL_XFORM_DQS2 */
+                                       0x0000000a /* EMC_DLL_XFORM_DQS3 */
+                                       0x0000000a /* EMC_DLL_XFORM_DQS4 */
+                                       0x0000000a /* EMC_DLL_XFORM_DQS5 */
+                                       0x0000000a /* EMC_DLL_XFORM_DQS6 */
+                                       0x0000000a /* EMC_DLL_XFORM_DQS7 */
+                                       0x0000000a /* EMC_DLL_XFORM_DQS8 */
+                                       0x0000000a /* EMC_DLL_XFORM_DQS9 */
+                                       0x0000000a /* EMC_DLL_XFORM_DQS10 */
+                                       0x0000000a /* EMC_DLL_XFORM_DQS11 */
+                                       0x0000000a /* EMC_DLL_XFORM_DQS12 */
+                                       0x0000000a /* EMC_DLL_XFORM_DQS13 */
+                                       0x0000000a /* EMC_DLL_XFORM_DQS14 */
+                                       0x0000000a /* EMC_DLL_XFORM_DQS15 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE0 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE1 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE2 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE3 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE4 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE5 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE6 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE7 */
+                                       0x00050000 /* EMC_DLL_XFORM_ADDR0 */
+                                       0x00050000 /* EMC_DLL_XFORM_ADDR1 */
+                                       0x00000000 /* EMC_DLL_XFORM_ADDR2 */
+                                       0x00050000 /* EMC_DLL_XFORM_ADDR3 */
+                                       0x00050000 /* EMC_DLL_XFORM_ADDR4 */
+                                       0x00000000 /* EMC_DLL_XFORM_ADDR5 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE8 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE9 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE10 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE11 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE12 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE13 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE14 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE15 */
+                                       0x00000002 /* EMC_DLI_TRIM_TXDQS0 */
+                                       0x00000002 /* EMC_DLI_TRIM_TXDQS1 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS2 */
+                                       0x00000003 /* EMC_DLI_TRIM_TXDQS3 */
+                                       0x00000004 /* EMC_DLI_TRIM_TXDQS4 */
+                                       0x00000001 /* EMC_DLI_TRIM_TXDQS5 */
+                                       0x00000004 /* EMC_DLI_TRIM_TXDQS6 */
+                                       0x00000003 /* EMC_DLI_TRIM_TXDQS7 */
+                                       0x00000002 /* EMC_DLI_TRIM_TXDQS8 */
+                                       0x00000002 /* EMC_DLI_TRIM_TXDQS9 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS10 */
+                                       0x00000003 /* EMC_DLI_TRIM_TXDQS11 */
+                                       0x00000004 /* EMC_DLI_TRIM_TXDQS12 */
+                                       0x00000001 /* EMC_DLI_TRIM_TXDQS13 */
+                                       0x00000004 /* EMC_DLI_TRIM_TXDQS14 */
+                                       0x00000003 /* EMC_DLI_TRIM_TXDQS15 */
+                                       0x0000000e /* EMC_DLL_XFORM_DQ0 */
+                                       0x0000000e /* EMC_DLL_XFORM_DQ1 */
+                                       0x0000000e /* EMC_DLL_XFORM_DQ2 */
+                                       0x0000000e /* EMC_DLL_XFORM_DQ3 */
+                                       0x0000000e /* EMC_DLL_XFORM_DQ4 */
+                                       0x0000000e /* EMC_DLL_XFORM_DQ5 */
+                                       0x0000000e /* EMC_DLL_XFORM_DQ6 */
+                                       0x0000000e /* EMC_DLL_XFORM_DQ7 */
+                                       0x100002a0 /* EMC_XM2CMDPADCTRL */
+                                       0x00000000 /* EMC_XM2CMDPADCTRL4 */
+                                       0x00111111 /* EMC_XM2CMDPADCTRL5 */
+                                       0x00000000 /* EMC_XM2DQPADCTRL2 */
+                                       0x00000000 /* EMC_XM2DQPADCTRL3 */
+                                       0x77ffc085 /* EMC_XM2CLKPADCTRL */
+                                       0x00000101 /* EMC_XM2CLKPADCTRL2 */
+                                       0x81f1f108 /* EMC_XM2COMPPADCTRL */
+                                       0x07070004 /* EMC_XM2VTTGENPADCTRL */
+                                       0x00000000 /* EMC_XM2VTTGENPADCTRL2 */
+                                       0x016eeeee /* EMC_XM2VTTGENPADCTRL3 */
+                                       0x51451420 /* EMC_XM2DQSPADCTRL3 */
+                                       0x00514514 /* EMC_XM2DQSPADCTRL4 */
+                                       0x00514514 /* EMC_XM2DQSPADCTRL5 */
+                                       0x51451400 /* EMC_XM2DQSPADCTRL6 */
+                                       0x0606003f /* EMC_DSR_VTTGEN_DRV */
+                                       0x00000000 /* EMC_TXDSRVTTGEN */
+                                       0x00000000 /* EMC_FBIO_SPARE */
+                                       0x00000100 /* EMC_ZCAL_WAIT_CNT */
+                                       0x00c8000e /* EMC_MRS_WAIT_CNT2 */
+                                       0x00000000 /* EMC_CTT */
+                                       0x00000003 /* EMC_CTT_DURATION */
+                                       0x000042a0 /* EMC_CFG_PIPE */
+                                       0x80002062 /* EMC_DYN_SELF_REF_CONTROL */
+                                       0x0000000b /* EMC_QPOP */
+                               >;
+                       };
+
+                       timing-600000000 {
+                               clock-frequency = <600000000>;
+
+                               nvidia,emc-auto-cal-config = <0xa1430000>;
+                               nvidia,emc-auto-cal-config2 = <0x00000000>;
+                               nvidia,emc-auto-cal-config3 = <0x00000000>;
+                               nvidia,emc-auto-cal-interval = <0x001fffff>;
+                               nvidia,emc-bgbias-ctl0 = <0x00000000>;
+                               nvidia,emc-cfg = <0x73300000>;
+                               nvidia,emc-cfg-2 = <0x0000089d>;
+                               nvidia,emc-ctt-term-ctrl = <0x00000802>;
+                               nvidia,emc-mode-1 = <0x00100002>;
+                               nvidia,emc-mode-2 = <0x00200010>;
+                               nvidia,emc-mode-4 = <0x00000000>;
+                               nvidia,emc-mode-reset = <0x00000b61>;
+                               nvidia,emc-mrs-wait-cnt = <0x00b0000e>;
+                               nvidia,emc-sel-dpd-ctrl = <0x00040008>;
+                               nvidia,emc-xm2dqspadctrl2 = <0x0121113d>;
+                               nvidia,emc-zcal-cnt-long = <0x00000042>;
+                               nvidia,emc-zcal-interval = <0x00020000>;
+
+                               nvidia,emc-configuration = <
+                                       0x0000001b /* EMC_RC */
+                                       0x000000d0 /* EMC_RFC */
+                                       0x00000000 /* EMC_RFC_SLR */
+                                       0x00000013 /* EMC_RAS */
+                                       0x00000007 /* EMC_RP */
+                                       0x00000007 /* EMC_R2W */
+                                       0x0000000b /* EMC_W2R */
+                                       0x00000003 /* EMC_R2P */
+                                       0x00000010 /* EMC_W2P */
+                                       0x00000007 /* EMC_RD_RCD */
+                                       0x00000007 /* EMC_WR_RCD */
+                                       0x00000002 /* EMC_RRD */
+                                       0x00000002 /* EMC_REXT */
+                                       0x00000000 /* EMC_WEXT */
+                                       0x00000005 /* EMC_WDV */
+                                       0x00000005 /* EMC_WDV_MASK */
+                                       0x0000000a /* EMC_QUSE */
+                                       0x00000002 /* EMC_QUSE_WIDTH */
+                                       0x00000000 /* EMC_IBDLY */
+                                       0x00000003 /* EMC_EINPUT */
+                                       0x0000000b /* EMC_EINPUT_DURATION */
+                                       0x00070000 /* EMC_PUTERM_EXTRA */
+                                       0x00000003 /* EMC_PUTERM_WIDTH */
+                                       0x00000000 /* EMC_PUTERM_ADJ */
+                                       0x00000000 /* EMC_CDB_CNTL_1 */
+                                       0x00000000 /* EMC_CDB_CNTL_2 */
+                                       0x00000000 /* EMC_CDB_CNTL_3 */
+                                       0x00000002 /* EMC_QRST */
+                                       0x00000012 /* EMC_QSAFE */
+                                       0x00000016 /* EMC_RDV */
+                                       0x00000018 /* EMC_RDV_MASK */
+                                       0x00001208 /* EMC_REFRESH */
+                                       0x00000000 /* EMC_BURST_REFRESH_NUM */
+                                       0x00000482 /* EMC_PRE_REFRESH_REQ_CNT */
+                                       0x00000002 /* EMC_PDEX2WR */
+                                       0x0000000d /* EMC_PDEX2RD */
+                                       0x00000001 /* EMC_PCHG2PDEN */
+                                       0x00000000 /* EMC_ACT2PDEN */
+                                       0x000000cc /* EMC_AR2PDEN */
+                                       0x00000015 /* EMC_RW2PDEN */
+                                       0x000000d8 /* EMC_TXSR */
+                                       0x00000200 /* EMC_TXSRDLL */
+                                       0x00000004 /* EMC_TCKE */
+                                       0x00000005 /* EMC_TCKESR */
+                                       0x00000004 /* EMC_TPD */
+                                       0x00000015 /* EMC_TFAW */
+                                       0x00000000 /* EMC_TRPAB */
+                                       0x00000006 /* EMC_TCLKSTABLE */
+                                       0x00000006 /* EMC_TCLKSTOP */
+                                       0x00001249 /* EMC_TREFBW */
+                                       0x00000000 /* EMC_FBIO_CFG6 */
+                                       0x00000000 /* EMC_ODT_WRITE */
+                                       0x00000000 /* EMC_ODT_READ */
+                                       0x104ab098 /* EMC_FBIO_CFG5 */
+                                       0xe00e00b1 /* EMC_CFG_DIG_DLL */
+                                       0x00008000 /* EMC_CFG_DIG_DLL_PERIOD */
+                                       0x0000000a /* EMC_DLL_XFORM_DQS0 */
+                                       0x0000000a /* EMC_DLL_XFORM_DQS1 */
+                                       0x0000000a /* EMC_DLL_XFORM_DQS2 */
+                                       0x0000000a /* EMC_DLL_XFORM_DQS3 */
+                                       0x0000000a /* EMC_DLL_XFORM_DQS4 */
+                                       0x0000000a /* EMC_DLL_XFORM_DQS5 */
+                                       0x0000000a /* EMC_DLL_XFORM_DQS6 */
+                                       0x0000000a /* EMC_DLL_XFORM_DQS7 */
+                                       0x0000000a /* EMC_DLL_XFORM_DQS8 */
+                                       0x0000000a /* EMC_DLL_XFORM_DQS9 */
+                                       0x0000000a /* EMC_DLL_XFORM_DQS10 */
+                                       0x0000000a /* EMC_DLL_XFORM_DQS11 */
+                                       0x0000000a /* EMC_DLL_XFORM_DQS12 */
+                                       0x0000000a /* EMC_DLL_XFORM_DQS13 */
+                                       0x0000000a /* EMC_DLL_XFORM_DQS14 */
+                                       0x0000000a /* EMC_DLL_XFORM_DQS15 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE0 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE1 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE2 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE3 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE4 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE5 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE6 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE7 */
+                                       0x00048000 /* EMC_DLL_XFORM_ADDR0 */
+                                       0x00048000 /* EMC_DLL_XFORM_ADDR1 */
+                                       0x00000000 /* EMC_DLL_XFORM_ADDR2 */
+                                       0x00048000 /* EMC_DLL_XFORM_ADDR3 */
+                                       0x00048000 /* EMC_DLL_XFORM_ADDR4 */
+                                       0x00000000 /* EMC_DLL_XFORM_ADDR5 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE8 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE9 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE10 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE11 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE12 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE13 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE14 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE15 */
+                                       0x00000004 /* EMC_DLI_TRIM_TXDQS0 */
+                                       0x00000004 /* EMC_DLI_TRIM_TXDQS1 */
+                                       0x00000002 /* EMC_DLI_TRIM_TXDQS2 */
+                                       0x00000005 /* EMC_DLI_TRIM_TXDQS3 */
+                                       0x00000006 /* EMC_DLI_TRIM_TXDQS4 */
+                                       0x00000003 /* EMC_DLI_TRIM_TXDQS5 */
+                                       0x00000006 /* EMC_DLI_TRIM_TXDQS6 */
+                                       0x00000005 /* EMC_DLI_TRIM_TXDQS7 */
+                                       0x00000004 /* EMC_DLI_TRIM_TXDQS8 */
+                                       0x00000004 /* EMC_DLI_TRIM_TXDQS9 */
+                                       0x00000002 /* EMC_DLI_TRIM_TXDQS10 */
+                                       0x00000005 /* EMC_DLI_TRIM_TXDQS11 */
+                                       0x00000006 /* EMC_DLI_TRIM_TXDQS12 */
+                                       0x00000003 /* EMC_DLI_TRIM_TXDQS13 */
+                                       0x00000006 /* EMC_DLI_TRIM_TXDQS14 */
+                                       0x00000005 /* EMC_DLI_TRIM_TXDQS15 */
+                                       0x0000000e /* EMC_DLL_XFORM_DQ0 */
+                                       0x0000000e /* EMC_DLL_XFORM_DQ1 */
+                                       0x0000000e /* EMC_DLL_XFORM_DQ2 */
+                                       0x0000000e /* EMC_DLL_XFORM_DQ3 */
+                                       0x0000000e /* EMC_DLL_XFORM_DQ4 */
+                                       0x0000000e /* EMC_DLL_XFORM_DQ5 */
+                                       0x0000000e /* EMC_DLL_XFORM_DQ6 */
+                                       0x0000000e /* EMC_DLL_XFORM_DQ7 */
+                                       0x100002a0 /* EMC_XM2CMDPADCTRL */
+                                       0x00000000 /* EMC_XM2CMDPADCTRL4 */
+                                       0x00111111 /* EMC_XM2CMDPADCTRL5 */
+                                       0x00000000 /* EMC_XM2DQPADCTRL2 */
+                                       0x00000000 /* EMC_XM2DQPADCTRL3 */
+                                       0x77ffc085 /* EMC_XM2CLKPADCTRL */
+                                       0x00000101 /* EMC_XM2CLKPADCTRL2 */
+                                       0x81f1f108 /* EMC_XM2COMPPADCTRL */
+                                       0x07070004 /* EMC_XM2VTTGENPADCTRL */
+                                       0x00000000 /* EMC_XM2VTTGENPADCTRL2 */
+                                       0x016eeeee /* EMC_XM2VTTGENPADCTRL3 */
+                                       0x51451420 /* EMC_XM2DQSPADCTRL3 */
+                                       0x00514514 /* EMC_XM2DQSPADCTRL4 */
+                                       0x00514514 /* EMC_XM2DQSPADCTRL5 */
+                                       0x51451400 /* EMC_XM2DQSPADCTRL6 */
+                                       0x0606003f /* EMC_DSR_VTTGEN_DRV */
+                                       0x00000000 /* EMC_TXDSRVTTGEN */
+                                       0x00000000 /* EMC_FBIO_SPARE */
+                                       0x00000100 /* EMC_ZCAL_WAIT_CNT */
+                                       0x00b0000e /* EMC_MRS_WAIT_CNT2 */
+                                       0x00000000 /* EMC_CTT */
+                                       0x00000003 /* EMC_CTT_DURATION */
+                                       0x000040a0 /* EMC_CFG_PIPE */
+                                       0x800024aa /* EMC_DYN_SELF_REF_CONTROL */
+                                       0x0000000e /* EMC_QPOP */
+                               >;
+                       };
+
+                       timing-792000000 {
+                               clock-frequency = <792000000>;
+
+                               nvidia,emc-auto-cal-config = <0xa1430000>;
+                               nvidia,emc-auto-cal-config2 = <0x00000000>;
+                               nvidia,emc-auto-cal-config3 = <0x00000000>;
+                               nvidia,emc-auto-cal-interval = <0x001fffff>;
+                               nvidia,emc-bgbias-ctl0 = <0x00000000>;
+                               nvidia,emc-cfg = <0x73300000>;
+                               nvidia,emc-cfg-2 = <0x0080089d>;
+                               nvidia,emc-ctt-term-ctrl = <0x00000802>;
+                               nvidia,emc-mode-1 = <0x00100002>;
+                               nvidia,emc-mode-2 = <0x00200418>;
+                               nvidia,emc-mode-4 = <0x00000000>;
+                               nvidia,emc-mode-reset = <0x00000d71>;
+                               nvidia,emc-mrs-wait-cnt = <0x006f000e>;
+                               nvidia,emc-sel-dpd-ctrl = <0x00040000>;
+                               nvidia,emc-xm2dqspadctrl2 = <0x0120113d>;
+                               nvidia,emc-zcal-cnt-long = <0x00000042>;
+                               nvidia,emc-zcal-interval = <0x00020000>;
+
+                               nvidia,emc-configuration = <
+                                       0x00000024 /* EMC_RC */
+                                       0x00000114 /* EMC_RFC */
+                                       0x00000000 /* EMC_RFC_SLR */
+                                       0x00000019 /* EMC_RAS */
+                                       0x0000000a /* EMC_RP */
+                                       0x00000008 /* EMC_R2W */
+                                       0x0000000d /* EMC_W2R */
+                                       0x00000004 /* EMC_R2P */
+                                       0x00000013 /* EMC_W2P */
+                                       0x0000000a /* EMC_RD_RCD */
+                                       0x0000000a /* EMC_WR_RCD */
+                                       0x00000003 /* EMC_RRD */
+                                       0x00000002 /* EMC_REXT */
+                                       0x00000000 /* EMC_WEXT */
+                                       0x00000006 /* EMC_WDV */
+                                       0x00000006 /* EMC_WDV_MASK */
+                                       0x0000000b /* EMC_QUSE */
+                                       0x00000002 /* EMC_QUSE_WIDTH */
+                                       0x00000000 /* EMC_IBDLY */
+                                       0x00000002 /* EMC_EINPUT */
+                                       0x0000000d /* EMC_EINPUT_DURATION */
+                                       0x00080000 /* EMC_PUTERM_EXTRA */
+                                       0x00000004 /* EMC_PUTERM_WIDTH */
+                                       0x00000000 /* EMC_PUTERM_ADJ */
+                                       0x00000000 /* EMC_CDB_CNTL_1 */
+                                       0x00000000 /* EMC_CDB_CNTL_2 */
+                                       0x00000000 /* EMC_CDB_CNTL_3 */
+                                       0x00000001 /* EMC_QRST */
+                                       0x00000014 /* EMC_QSAFE */
+                                       0x00000018 /* EMC_RDV */
+                                       0x0000001a /* EMC_RDV_MASK */
+                                       0x000017e2 /* EMC_REFRESH */
+                                       0x00000000 /* EMC_BURST_REFRESH_NUM */
+                                       0x000005f8 /* EMC_PRE_REFRESH_REQ_CNT */
+                                       0x00000003 /* EMC_PDEX2WR */
+                                       0x00000011 /* EMC_PDEX2RD */
+                                       0x00000001 /* EMC_PCHG2PDEN */
+                                       0x00000000 /* EMC_ACT2PDEN */
+                                       0x0000010d /* EMC_AR2PDEN */
+                                       0x00000018 /* EMC_RW2PDEN */
+                                       0x0000011e /* EMC_TXSR */
+                                       0x00000200 /* EMC_TXSRDLL */
+                                       0x00000005 /* EMC_TCKE */
+                                       0x00000006 /* EMC_TCKESR */
+                                       0x00000005 /* EMC_TPD */
+                                       0x0000001d /* EMC_TFAW */
+                                       0x00000000 /* EMC_TRPAB */
+                                       0x00000008 /* EMC_TCLKSTABLE */
+                                       0x00000008 /* EMC_TCLKSTOP */
+                                       0x00001822 /* EMC_TREFBW */
+                                       0x00000000 /* EMC_FBIO_CFG6 */
+                                       0x80000005 /* EMC_ODT_WRITE */
+                                       0x00000000 /* EMC_ODT_READ */
+                                       0x104ab198 /* EMC_FBIO_CFG5 */
+                                       0xe00700b1 /* EMC_CFG_DIG_DLL */
+                                       0x00008000 /* EMC_CFG_DIG_DLL_PERIOD */
+                                       0x007fc007 /* EMC_DLL_XFORM_DQS0 */
+                                       0x007fc008 /* EMC_DLL_XFORM_DQS1 */
+                                       0x007f400c /* EMC_DLL_XFORM_DQS2 */
+                                       0x007fc007 /* EMC_DLL_XFORM_DQS3 */
+                                       0x007f4006 /* EMC_DLL_XFORM_DQS4 */
+                                       0x007f8004 /* EMC_DLL_XFORM_DQS5 */
+                                       0x007f8005 /* EMC_DLL_XFORM_DQS6 */
+                                       0x007f8004 /* EMC_DLL_XFORM_DQS7 */
+                                       0x007fc007 /* EMC_DLL_XFORM_DQS8 */
+                                       0x007fc008 /* EMC_DLL_XFORM_DQS9 */
+                                       0x007f400c /* EMC_DLL_XFORM_DQS10 */
+                                       0x007fc007 /* EMC_DLL_XFORM_DQS11 */
+                                       0x007f4006 /* EMC_DLL_XFORM_DQS12 */
+                                       0x007f8004 /* EMC_DLL_XFORM_DQS13 */
+                                       0x007f8005 /* EMC_DLL_XFORM_DQS14 */
+                                       0x007f8004 /* EMC_DLL_XFORM_DQS15 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE0 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE1 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE2 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE3 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE4 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE5 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE6 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE7 */
+                                       0x00034000 /* EMC_DLL_XFORM_ADDR0 */
+                                       0x00034000 /* EMC_DLL_XFORM_ADDR1 */
+                                       0x00000000 /* EMC_DLL_XFORM_ADDR2 */
+                                       0x00034000 /* EMC_DLL_XFORM_ADDR3 */
+                                       0x00034000 /* EMC_DLL_XFORM_ADDR4 */
+                                       0x00000000 /* EMC_DLL_XFORM_ADDR5 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE8 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE9 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE10 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE11 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE12 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE13 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE14 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE15 */
+                                       0x00000006 /* EMC_DLI_TRIM_TXDQS0 */
+                                       0x00000008 /* EMC_DLI_TRIM_TXDQS1 */
+                                       0x00000005 /* EMC_DLI_TRIM_TXDQS2 */
+                                       0x00000009 /* EMC_DLI_TRIM_TXDQS3 */
+                                       0x00000006 /* EMC_DLI_TRIM_TXDQS4 */
+                                       0x00000007 /* EMC_DLI_TRIM_TXDQS5 */
+                                       0x00000006 /* EMC_DLI_TRIM_TXDQS6 */
+                                       0x00000006 /* EMC_DLI_TRIM_TXDQS7 */
+                                       0x00000008 /* EMC_DLI_TRIM_TXDQS8 */
+                                       0x00000008 /* EMC_DLI_TRIM_TXDQS9 */
+                                       0x00000005 /* EMC_DLI_TRIM_TXDQS10 */
+                                       0x00000009 /* EMC_DLI_TRIM_TXDQS11 */
+                                       0x00000006 /* EMC_DLI_TRIM_TXDQS12 */
+                                       0x00000007 /* EMC_DLI_TRIM_TXDQS13 */
+                                       0x00000006 /* EMC_DLI_TRIM_TXDQS14 */
+                                       0x00000008 /* EMC_DLI_TRIM_TXDQS15 */
+                                       0x0000000e /* EMC_DLL_XFORM_DQ0 */
+                                       0x0000000e /* EMC_DLL_XFORM_DQ1 */
+                                       0x0000000e /* EMC_DLL_XFORM_DQ2 */
+                                       0x0000000e /* EMC_DLL_XFORM_DQ3 */
+                                       0x0000000e /* EMC_DLL_XFORM_DQ4 */
+                                       0x0000000e /* EMC_DLL_XFORM_DQ5 */
+                                       0x0000000e /* EMC_DLL_XFORM_DQ6 */
+                                       0x0000000e /* EMC_DLL_XFORM_DQ7 */
+                                       0x100002a0 /* EMC_XM2CMDPADCTRL */
+                                       0x00000000 /* EMC_XM2CMDPADCTRL4 */
+                                       0x00111111 /* EMC_XM2CMDPADCTRL5 */
+                                       0x00000000 /* EMC_XM2DQPADCTRL2 */
+                                       0x00000000 /* EMC_XM2DQPADCTRL3 */
+                                       0x77ffc085 /* EMC_XM2CLKPADCTRL */
+                                       0x00000101 /* EMC_XM2CLKPADCTRL2 */
+                                       0x81f1f108 /* EMC_XM2COMPPADCTRL */
+                                       0x07070004 /* EMC_XM2VTTGENPADCTRL */
+                                       0x00000000 /* EMC_XM2VTTGENPADCTRL2 */
+                                       0x016eeeee /* EMC_XM2VTTGENPADCTRL3 */
+                                       0x61861820 /* EMC_XM2DQSPADCTRL3 */
+                                       0x00492492 /* EMC_XM2DQSPADCTRL4 */
+                                       0x00492492 /* EMC_XM2DQSPADCTRL5 */
+                                       0x61861800 /* EMC_XM2DQSPADCTRL6 */
+                                       0x0606003f /* EMC_DSR_VTTGEN_DRV */
+                                       0x00000000 /* EMC_TXDSRVTTGEN */
+                                       0x00000000 /* EMC_FBIO_SPARE */
+                                       0x00000100 /* EMC_ZCAL_WAIT_CNT */
+                                       0x006f000e /* EMC_MRS_WAIT_CNT2 */
+                                       0x00000007 /* EMC_CTT */
+                                       0x00000004 /* EMC_CTT_DURATION */
+                                       0x00004080 /* EMC_CFG_PIPE */
+                                       0x80003012 /* EMC_DYN_SELF_REF_CONTROL */
+                                       0x0000000f /* EMC_QPOP */
+                               >;
+                       };
+               };
+
+               emc-timings-6 {
+                       nvidia,ram-code = <6>;
+
+                       timing-12750000 {
+                               clock-frequency = <12750000>;
+
+                               nvidia,emc-auto-cal-config = <0xa1430000>;
+                               nvidia,emc-auto-cal-config2 = <0x00000000>;
+                               nvidia,emc-auto-cal-config3 = <0x00000000>;
+                               nvidia,emc-auto-cal-interval = <0x001fffff>;
+                               nvidia,emc-bgbias-ctl0 = <0x00000008>;
+                               nvidia,emc-cfg = <0x73240000>;
+                               nvidia,emc-cfg-2 = <0x000008c5>;
+                               nvidia,emc-ctt-term-ctrl = <0x00000802>;
+                               nvidia,emc-mode-1 = <0x80100003>;
+                               nvidia,emc-mode-2 = <0x80200008>;
+                               nvidia,emc-mode-4 = <0x00000000>;
+                               nvidia,emc-mode-reset = <0x80001221>;
+                               nvidia,emc-mrs-wait-cnt = <0x000c000c>;
+                               nvidia,emc-sel-dpd-ctrl = <0x00040128>;
+                               nvidia,emc-xm2dqspadctrl2 = <0x0130b118>;
+                               nvidia,emc-zcal-cnt-long = <0x00000042>;
+                               nvidia,emc-zcal-interval = <0x00000000>;
+
+                               nvidia,emc-configuration = <
+                                       0x00000000 /* EMC_RC */
+                                       0x00000003 /* EMC_RFC */
+                                       0x00000000 /* EMC_RFC_SLR */
+                                       0x00000000 /* EMC_RAS */
+                                       0x00000000 /* EMC_RP */
+                                       0x00000004 /* EMC_R2W */
+                                       0x0000000a /* EMC_W2R */
+                                       0x00000003 /* EMC_R2P */
+                                       0x0000000b /* EMC_W2P */
+                                       0x00000000 /* EMC_RD_RCD */
+                                       0x00000000 /* EMC_WR_RCD */
+                                       0x00000003 /* EMC_RRD */
+                                       0x00000003 /* EMC_REXT */
+                                       0x00000000 /* EMC_WEXT */
+                                       0x00000006 /* EMC_WDV */
+                                       0x00000006 /* EMC_WDV_MASK */
+                                       0x00000006 /* EMC_QUSE */
+                                       0x00000002 /* EMC_QUSE_WIDTH */
+                                       0x00000000 /* EMC_IBDLY */
+                                       0x00000005 /* EMC_EINPUT */
+                                       0x00000005 /* EMC_EINPUT_DURATION */
+                                       0x00010000 /* EMC_PUTERM_EXTRA */
+                                       0x00000003 /* EMC_PUTERM_WIDTH */
+                                       0x00000000 /* EMC_PUTERM_ADJ */
+                                       0x00000000 /* EMC_CDB_CNTL_1 */
+                                       0x00000000 /* EMC_CDB_CNTL_2 */
+                                       0x00000000 /* EMC_CDB_CNTL_3 */
+                                       0x00000004 /* EMC_QRST */
+                                       0x0000000c /* EMC_QSAFE */
+                                       0x0000000d /* EMC_RDV */
+                                       0x0000000f /* EMC_RDV_MASK */
+                                       0x00000060 /* EMC_REFRESH */
+                                       0x00000000 /* EMC_BURST_REFRESH_NUM */
+                                       0x00000018 /* EMC_PRE_REFRESH_REQ_CNT */
+                                       0x00000002 /* EMC_PDEX2WR */
+                                       0x00000002 /* EMC_PDEX2RD */
+                                       0x00000001 /* EMC_PCHG2PDEN */
+                                       0x00000000 /* EMC_ACT2PDEN */
+                                       0x00000007 /* EMC_AR2PDEN */
+                                       0x0000000f /* EMC_RW2PDEN */
+                                       0x00000005 /* EMC_TXSR */
+                                       0x00000005 /* EMC_TXSRDLL */
+                                       0x00000004 /* EMC_TCKE */
+                                       0x00000005 /* EMC_TCKESR */
+                                       0x00000004 /* EMC_TPD */
+                                       0x00000000 /* EMC_TFAW */
+                                       0x00000000 /* EMC_TRPAB */
+                                       0x00000005 /* EMC_TCLKSTABLE */
+                                       0x00000005 /* EMC_TCLKSTOP */
+                                       0x00000064 /* EMC_TREFBW */
+                                       0x00000000 /* EMC_FBIO_CFG6 */
+                                       0x00000000 /* EMC_ODT_WRITE */
+                                       0x00000000 /* EMC_ODT_READ */
+                                       0x106aa298 /* EMC_FBIO_CFG5 */
+                                       0x002c00a0 /* EMC_CFG_DIG_DLL */
+                                       0x00008000 /* EMC_CFG_DIG_DLL_PERIOD */
+                                       0x00064000 /* EMC_DLL_XFORM_DQS0 */
+                                       0x00064000 /* EMC_DLL_XFORM_DQS1 */
+                                       0x00064000 /* EMC_DLL_XFORM_DQS2 */
+                                       0x00064000 /* EMC_DLL_XFORM_DQS3 */
+                                       0x00064000 /* EMC_DLL_XFORM_DQS4 */
+                                       0x00064000 /* EMC_DLL_XFORM_DQS5 */
+                                       0x00064000 /* EMC_DLL_XFORM_DQS6 */
+                                       0x00064000 /* EMC_DLL_XFORM_DQS7 */
+                                       0x00064000 /* EMC_DLL_XFORM_DQS8 */
+                                       0x00064000 /* EMC_DLL_XFORM_DQS9 */
+                                       0x00064000 /* EMC_DLL_XFORM_DQS10 */
+                                       0x00064000 /* EMC_DLL_XFORM_DQS11 */
+                                       0x00064000 /* EMC_DLL_XFORM_DQS12 */
+                                       0x00064000 /* EMC_DLL_XFORM_DQS13 */
+                                       0x00064000 /* EMC_DLL_XFORM_DQS14 */
+                                       0x00064000 /* EMC_DLL_XFORM_DQS15 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE0 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE1 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE2 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE3 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE4 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE5 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE6 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE7 */
+                                       0x00000000 /* EMC_DLL_XFORM_ADDR0 */
+                                       0x00000000 /* EMC_DLL_XFORM_ADDR1 */
+                                       0x00004000 /* EMC_DLL_XFORM_ADDR2 */
+                                       0x00000000 /* EMC_DLL_XFORM_ADDR3 */
+                                       0x00000000 /* EMC_DLL_XFORM_ADDR4 */
+                                       0x00004000 /* EMC_DLL_XFORM_ADDR5 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE8 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE9 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE10 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE11 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE12 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE13 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE14 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE15 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS0 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS1 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS2 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS3 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS4 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS5 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS6 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS7 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS8 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS9 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS10 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS11 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS12 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS13 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS14 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS15 */
+                                       0x000fc000 /* EMC_DLL_XFORM_DQ0 */
+                                       0x000fc000 /* EMC_DLL_XFORM_DQ1 */
+                                       0x000fc000 /* EMC_DLL_XFORM_DQ2 */
+                                       0x000fc000 /* EMC_DLL_XFORM_DQ3 */
+                                       0x0000fc00 /* EMC_DLL_XFORM_DQ4 */
+                                       0x0000fc00 /* EMC_DLL_XFORM_DQ5 */
+                                       0x0000fc00 /* EMC_DLL_XFORM_DQ6 */
+                                       0x0000fc00 /* EMC_DLL_XFORM_DQ7 */
+                                       0x10000280 /* EMC_XM2CMDPADCTRL */
+                                       0x00000000 /* EMC_XM2CMDPADCTRL4 */
+                                       0x00111111 /* EMC_XM2CMDPADCTRL5 */
+                                       0x00000000 /* EMC_XM2DQPADCTRL2 */
+                                       0x00000000 /* EMC_XM2DQPADCTRL3 */
+                                       0x77ffc081 /* EMC_XM2CLKPADCTRL */
+                                       0x00000303 /* EMC_XM2CLKPADCTRL2 */
+                                       0x81f1f108 /* EMC_XM2COMPPADCTRL */
+                                       0x07070004 /* EMC_XM2VTTGENPADCTRL */
+                                       0x0000003f /* EMC_XM2VTTGENPADCTRL2 */
+                                       0x016eeeee /* EMC_XM2VTTGENPADCTRL3 */
+                                       0x51451400 /* EMC_XM2DQSPADCTRL3 */
+                                       0x00514514 /* EMC_XM2DQSPADCTRL4 */
+                                       0x00514514 /* EMC_XM2DQSPADCTRL5 */
+                                       0x51451400 /* EMC_XM2DQSPADCTRL6 */
+                                       0x0000003f /* EMC_DSR_VTTGEN_DRV */
+                                       0x00000007 /* EMC_TXDSRVTTGEN */
+                                       0x00000000 /* EMC_FBIO_SPARE */
+                                       0x00000042 /* EMC_ZCAL_WAIT_CNT */
+                                       0x000c000c /* EMC_MRS_WAIT_CNT2 */
+                                       0x00000000 /* EMC_CTT */
+                                       0x00000003 /* EMC_CTT_DURATION */
+                                       0x0000f2f3 /* EMC_CFG_PIPE */
+                                       0x800001c5 /* EMC_DYN_SELF_REF_CONTROL */
+                                       0x0000000a /* EMC_QPOP */
+                               >;
+                       };
+
+                       timing-20400000 {
+                               clock-frequency = <20400000>;
+
+                               nvidia,emc-auto-cal-config = <0xa1430000>;
+                               nvidia,emc-auto-cal-config2 = <0x00000000>;
+                               nvidia,emc-auto-cal-config3 = <0x00000000>;
+                               nvidia,emc-auto-cal-interval = <0x001fffff>;
+                               nvidia,emc-bgbias-ctl0 = <0x00000008>;
+                               nvidia,emc-cfg = <0x73240000>;
+                               nvidia,emc-cfg-2 = <0x000008c5>;
+                               nvidia,emc-ctt-term-ctrl = <0x00000802>;
+                               nvidia,emc-mode-1 = <0x80100003>;
+                               nvidia,emc-mode-2 = <0x80200008>;
+                               nvidia,emc-mode-4 = <0x00000000>;
+                               nvidia,emc-mode-reset = <0x80001221>;
+                               nvidia,emc-mrs-wait-cnt = <0x000c000c>;
+                               nvidia,emc-sel-dpd-ctrl = <0x00040128>;
+                               nvidia,emc-xm2dqspadctrl2 = <0x0130b118>;
+                               nvidia,emc-zcal-cnt-long = <0x00000042>;
+                               nvidia,emc-zcal-interval = <0x00000000>;
+
+                               nvidia,emc-configuration = <
+                                       0x00000000 /* EMC_RC */
+                                       0x00000005 /* EMC_RFC */
+                                       0x00000000 /* EMC_RFC_SLR */
+                                       0x00000000 /* EMC_RAS */
+                                       0x00000000 /* EMC_RP */
+                                       0x00000004 /* EMC_R2W */
+                                       0x0000000a /* EMC_W2R */
+                                       0x00000003 /* EMC_R2P */
+                                       0x0000000b /* EMC_W2P */
+                                       0x00000000 /* EMC_RD_RCD */
+                                       0x00000000 /* EMC_WR_RCD */
+                                       0x00000003 /* EMC_RRD */
+                                       0x00000003 /* EMC_REXT */
+                                       0x00000000 /* EMC_WEXT */
+                                       0x00000006 /* EMC_WDV */
+                                       0x00000006 /* EMC_WDV_MASK */
+                                       0x00000006 /* EMC_QUSE */
+                                       0x00000002 /* EMC_QUSE_WIDTH */
+                                       0x00000000 /* EMC_IBDLY */
+                                       0x00000005 /* EMC_EINPUT */
+                                       0x00000005 /* EMC_EINPUT_DURATION */
+                                       0x00010000 /* EMC_PUTERM_EXTRA */
+                                       0x00000003 /* EMC_PUTERM_WIDTH */
+                                       0x00000000 /* EMC_PUTERM_ADJ */
+                                       0x00000000 /* EMC_CDB_CNTL_1 */
+                                       0x00000000 /* EMC_CDB_CNTL_2 */
+                                       0x00000000 /* EMC_CDB_CNTL_3 */
+                                       0x00000004 /* EMC_QRST */
+                                       0x0000000c /* EMC_QSAFE */
+                                       0x0000000d /* EMC_RDV */
+                                       0x0000000f /* EMC_RDV_MASK */
+                                       0x0000009a /* EMC_REFRESH */
+                                       0x00000000 /* EMC_BURST_REFRESH_NUM */
+                                       0x00000026 /* EMC_PRE_REFRESH_REQ_CNT */
+                                       0x00000002 /* EMC_PDEX2WR */
+                                       0x00000002 /* EMC_PDEX2RD */
+                                       0x00000001 /* EMC_PCHG2PDEN */
+                                       0x00000000 /* EMC_ACT2PDEN */
+                                       0x00000007 /* EMC_AR2PDEN */
+                                       0x0000000f /* EMC_RW2PDEN */
+                                       0x00000006 /* EMC_TXSR */
+                                       0x00000006 /* EMC_TXSRDLL */
+                                       0x00000004 /* EMC_TCKE */
+                                       0x00000005 /* EMC_TCKESR */
+                                       0x00000004 /* EMC_TPD */
+                                       0x00000000 /* EMC_TFAW */
+                                       0x00000000 /* EMC_TRPAB */
+                                       0x00000005 /* EMC_TCLKSTABLE */
+                                       0x00000005 /* EMC_TCLKSTOP */
+                                       0x000000a0 /* EMC_TREFBW */
+                                       0x00000000 /* EMC_FBIO_CFG6 */
+                                       0x00000000 /* EMC_ODT_WRITE */
+                                       0x00000000 /* EMC_ODT_READ */
+                                       0x106aa298 /* EMC_FBIO_CFG5 */
+                                       0x002c00a0 /* EMC_CFG_DIG_DLL */
+                                       0x00008000 /* EMC_CFG_DIG_DLL_PERIOD */
+                                       0x00064000 /* EMC_DLL_XFORM_DQS0 */
+                                       0x00064000 /* EMC_DLL_XFORM_DQS1 */
+                                       0x00064000 /* EMC_DLL_XFORM_DQS2 */
+                                       0x00064000 /* EMC_DLL_XFORM_DQS3 */
+                                       0x00064000 /* EMC_DLL_XFORM_DQS4 */
+                                       0x00064000 /* EMC_DLL_XFORM_DQS5 */
+                                       0x00064000 /* EMC_DLL_XFORM_DQS6 */
+                                       0x00064000 /* EMC_DLL_XFORM_DQS7 */
+                                       0x00064000 /* EMC_DLL_XFORM_DQS8 */
+                                       0x00064000 /* EMC_DLL_XFORM_DQS9 */
+                                       0x00064000 /* EMC_DLL_XFORM_DQS10 */
+                                       0x00064000 /* EMC_DLL_XFORM_DQS11 */
+                                       0x00064000 /* EMC_DLL_XFORM_DQS12 */
+                                       0x00064000 /* EMC_DLL_XFORM_DQS13 */
+                                       0x00064000 /* EMC_DLL_XFORM_DQS14 */
+                                       0x00064000 /* EMC_DLL_XFORM_DQS15 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE0 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE1 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE2 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE3 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE4 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE5 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE6 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE7 */
+                                       0x00000000 /* EMC_DLL_XFORM_ADDR0 */
+                                       0x00000000 /* EMC_DLL_XFORM_ADDR1 */
+                                       0x00004000 /* EMC_DLL_XFORM_ADDR2 */
+                                       0x00000000 /* EMC_DLL_XFORM_ADDR3 */
+                                       0x00000000 /* EMC_DLL_XFORM_ADDR4 */
+                                       0x00004000 /* EMC_DLL_XFORM_ADDR5 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE8 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE9 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE10 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE11 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE12 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE13 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE14 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE15 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS0 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS1 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS2 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS3 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS4 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS5 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS6 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS7 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS8 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS9 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS10 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS11 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS12 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS13 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS14 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS15 */
+                                       0x000fc000 /* EMC_DLL_XFORM_DQ0 */
+                                       0x000fc000 /* EMC_DLL_XFORM_DQ1 */
+                                       0x000fc000 /* EMC_DLL_XFORM_DQ2 */
+                                       0x000fc000 /* EMC_DLL_XFORM_DQ3 */
+                                       0x0000fc00 /* EMC_DLL_XFORM_DQ4 */
+                                       0x0000fc00 /* EMC_DLL_XFORM_DQ5 */
+                                       0x0000fc00 /* EMC_DLL_XFORM_DQ6 */
+                                       0x0000fc00 /* EMC_DLL_XFORM_DQ7 */
+                                       0x10000280 /* EMC_XM2CMDPADCTRL */
+                                       0x00000000 /* EMC_XM2CMDPADCTRL4 */
+                                       0x00111111 /* EMC_XM2CMDPADCTRL5 */
+                                       0x00000000 /* EMC_XM2DQPADCTRL2 */
+                                       0x00000000 /* EMC_XM2DQPADCTRL3 */
+                                       0x77ffc081 /* EMC_XM2CLKPADCTRL */
+                                       0x00000303 /* EMC_XM2CLKPADCTRL2 */
+                                       0x81f1f108 /* EMC_XM2COMPPADCTRL */
+                                       0x07070004 /* EMC_XM2VTTGENPADCTRL */
+                                       0x0000003f /* EMC_XM2VTTGENPADCTRL2 */
+                                       0x016eeeee /* EMC_XM2VTTGENPADCTRL3 */
+                                       0x51451400 /* EMC_XM2DQSPADCTRL3 */
+                                       0x00514514 /* EMC_XM2DQSPADCTRL4 */
+                                       0x00514514 /* EMC_XM2DQSPADCTRL5 */
+                                       0x51451400 /* EMC_XM2DQSPADCTRL6 */
+                                       0x0000003f /* EMC_DSR_VTTGEN_DRV */
+                                       0x0000000b /* EMC_TXDSRVTTGEN */
+                                       0x00000000 /* EMC_FBIO_SPARE */
+                                       0x00000042 /* EMC_ZCAL_WAIT_CNT */
+                                       0x000c000c /* EMC_MRS_WAIT_CNT2 */
+                                       0x00000000 /* EMC_CTT */
+                                       0x00000003 /* EMC_CTT_DURATION */
+                                       0x0000f2f3 /* EMC_CFG_PIPE */
+                                       0x8000023a /* EMC_DYN_SELF_REF_CONTROL */
+                                       0x0000000a /* EMC_QPOP */
+                               >;
+                       };
+
+                       timing-40800000 {
+                               clock-frequency = <40800000>;
+
+                               nvidia,emc-auto-cal-config = <0xa1430000>;
+                               nvidia,emc-auto-cal-config2 = <0x00000000>;
+                               nvidia,emc-auto-cal-config3 = <0x00000000>;
+                               nvidia,emc-auto-cal-interval = <0x001fffff>;
+                               nvidia,emc-bgbias-ctl0 = <0x00000008>;
+                               nvidia,emc-cfg = <0x73240000>;
+                               nvidia,emc-cfg-2 = <0x000008c5>;
+                               nvidia,emc-ctt-term-ctrl = <0x00000802>;
+                               nvidia,emc-mode-1 = <0x80100003>;
+                               nvidia,emc-mode-2 = <0x80200008>;
+                               nvidia,emc-mode-4 = <0x00000000>;
+                               nvidia,emc-mode-reset = <0x80001221>;
+                               nvidia,emc-mrs-wait-cnt = <0x000c000c>;
+                               nvidia,emc-sel-dpd-ctrl = <0x00040128>;
+                               nvidia,emc-xm2dqspadctrl2 = <0x0130b118>;
+                               nvidia,emc-zcal-cnt-long = <0x00000042>;
+                               nvidia,emc-zcal-interval = <0x00000000>;
+
+                               nvidia,emc-configuration = <
+                                       0x00000001 /* EMC_RC */
+                                       0x0000000a /* EMC_RFC */
+                                       0x00000000 /* EMC_RFC_SLR */
+                                       0x00000001 /* EMC_RAS */
+                                       0x00000000 /* EMC_RP */
+                                       0x00000004 /* EMC_R2W */
+                                       0x0000000a /* EMC_W2R */
+                                       0x00000003 /* EMC_R2P */
+                                       0x0000000b /* EMC_W2P */
+                                       0x00000000 /* EMC_RD_RCD */
+                                       0x00000000 /* EMC_WR_RCD */
+                                       0x00000003 /* EMC_RRD */
+                                       0x00000003 /* EMC_REXT */
+                                       0x00000000 /* EMC_WEXT */
+                                       0x00000006 /* EMC_WDV */
+                                       0x00000006 /* EMC_WDV_MASK */
+                                       0x00000006 /* EMC_QUSE */
+                                       0x00000002 /* EMC_QUSE_WIDTH */
+                                       0x00000000 /* EMC_IBDLY */
+                                       0x00000005 /* EMC_EINPUT */
+                                       0x00000005 /* EMC_EINPUT_DURATION */
+                                       0x00010000 /* EMC_PUTERM_EXTRA */
+                                       0x00000003 /* EMC_PUTERM_WIDTH */
+                                       0x00000000 /* EMC_PUTERM_ADJ */
+                                       0x00000000 /* EMC_CDB_CNTL_1 */
+                                       0x00000000 /* EMC_CDB_CNTL_2 */
+                                       0x00000000 /* EMC_CDB_CNTL_3 */
+                                       0x00000004 /* EMC_QRST */
+                                       0x0000000c /* EMC_QSAFE */
+                                       0x0000000d /* EMC_RDV */
+                                       0x0000000f /* EMC_RDV_MASK */
+                                       0x00000134 /* EMC_REFRESH */
+                                       0x00000000 /* EMC_BURST_REFRESH_NUM */
+                                       0x0000004d /* EMC_PRE_REFRESH_REQ_CNT */
+                                       0x00000002 /* EMC_PDEX2WR */
+                                       0x00000002 /* EMC_PDEX2RD */
+                                       0x00000001 /* EMC_PCHG2PDEN */
+                                       0x00000000 /* EMC_ACT2PDEN */
+                                       0x00000008 /* EMC_AR2PDEN */
+                                       0x0000000f /* EMC_RW2PDEN */
+                                       0x0000000c /* EMC_TXSR */
+                                       0x0000000c /* EMC_TXSRDLL */
+                                       0x00000004 /* EMC_TCKE */
+                                       0x00000005 /* EMC_TCKESR */
+                                       0x00000004 /* EMC_TPD */
+                                       0x00000000 /* EMC_TFAW */
+                                       0x00000000 /* EMC_TRPAB */
+                                       0x00000005 /* EMC_TCLKSTABLE */
+                                       0x00000005 /* EMC_TCLKSTOP */
+                                       0x0000013f /* EMC_TREFBW */
+                                       0x00000000 /* EMC_FBIO_CFG6 */
+                                       0x00000000 /* EMC_ODT_WRITE */
+                                       0x00000000 /* EMC_ODT_READ */
+                                       0x106aa298 /* EMC_FBIO_CFG5 */
+                                       0x002c00a0 /* EMC_CFG_DIG_DLL */
+                                       0x00008000 /* EMC_CFG_DIG_DLL_PERIOD */
+                                       0x00064000 /* EMC_DLL_XFORM_DQS0 */
+                                       0x00064000 /* EMC_DLL_XFORM_DQS1 */
+                                       0x00064000 /* EMC_DLL_XFORM_DQS2 */
+                                       0x00064000 /* EMC_DLL_XFORM_DQS3 */
+                                       0x00064000 /* EMC_DLL_XFORM_DQS4 */
+                                       0x00064000 /* EMC_DLL_XFORM_DQS5 */
+                                       0x00064000 /* EMC_DLL_XFORM_DQS6 */
+                                       0x00064000 /* EMC_DLL_XFORM_DQS7 */
+                                       0x00064000 /* EMC_DLL_XFORM_DQS8 */
+                                       0x00064000 /* EMC_DLL_XFORM_DQS9 */
+                                       0x00064000 /* EMC_DLL_XFORM_DQS10 */
+                                       0x00064000 /* EMC_DLL_XFORM_DQS11 */
+                                       0x00064000 /* EMC_DLL_XFORM_DQS12 */
+                                       0x00064000 /* EMC_DLL_XFORM_DQS13 */
+                                       0x00064000 /* EMC_DLL_XFORM_DQS14 */
+                                       0x00064000 /* EMC_DLL_XFORM_DQS15 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE0 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE1 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE2 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE3 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE4 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE5 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE6 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE7 */
+                                       0x00000000 /* EMC_DLL_XFORM_ADDR0 */
+                                       0x00000000 /* EMC_DLL_XFORM_ADDR1 */
+                                       0x00004000 /* EMC_DLL_XFORM_ADDR2 */
+                                       0x00000000 /* EMC_DLL_XFORM_ADDR3 */
+                                       0x00000000 /* EMC_DLL_XFORM_ADDR4 */
+                                       0x00004000 /* EMC_DLL_XFORM_ADDR5 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE8 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE9 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE10 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE11 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE12 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE13 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE14 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE15 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS0 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS1 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS2 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS3 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS4 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS5 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS6 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS7 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS8 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS9 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS10 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS11 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS12 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS13 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS14 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS15 */
+                                       0x000fc000 /* EMC_DLL_XFORM_DQ0 */
+                                       0x000fc000 /* EMC_DLL_XFORM_DQ1 */
+                                       0x000fc000 /* EMC_DLL_XFORM_DQ2 */
+                                       0x000fc000 /* EMC_DLL_XFORM_DQ3 */
+                                       0x0000fc00 /* EMC_DLL_XFORM_DQ4 */
+                                       0x0000fc00 /* EMC_DLL_XFORM_DQ5 */
+                                       0x0000fc00 /* EMC_DLL_XFORM_DQ6 */
+                                       0x0000fc00 /* EMC_DLL_XFORM_DQ7 */
+                                       0x10000280 /* EMC_XM2CMDPADCTRL */
+                                       0x00000000 /* EMC_XM2CMDPADCTRL4 */
+                                       0x00111111 /* EMC_XM2CMDPADCTRL5 */
+                                       0x00000000 /* EMC_XM2DQPADCTRL2 */
+                                       0x00000000 /* EMC_XM2DQPADCTRL3 */
+                                       0x77ffc081 /* EMC_XM2CLKPADCTRL */
+                                       0x00000303 /* EMC_XM2CLKPADCTRL2 */
+                                       0x81f1f108 /* EMC_XM2COMPPADCTRL */
+                                       0x07070004 /* EMC_XM2VTTGENPADCTRL */
+                                       0x0000003f /* EMC_XM2VTTGENPADCTRL2 */
+                                       0x016eeeee /* EMC_XM2VTTGENPADCTRL3 */
+                                       0x51451400 /* EMC_XM2DQSPADCTRL3 */
+                                       0x00514514 /* EMC_XM2DQSPADCTRL4 */
+                                       0x00514514 /* EMC_XM2DQSPADCTRL5 */
+                                       0x51451400 /* EMC_XM2DQSPADCTRL6 */
+                                       0x0000003f /* EMC_DSR_VTTGEN_DRV */
+                                       0x00000015 /* EMC_TXDSRVTTGEN */
+                                       0x00000000 /* EMC_FBIO_SPARE */
+                                       0x00000042 /* EMC_ZCAL_WAIT_CNT */
+                                       0x000c000c /* EMC_MRS_WAIT_CNT2 */
+                                       0x00000000 /* EMC_CTT */
+                                       0x00000003 /* EMC_CTT_DURATION */
+                                       0x0000f2f3 /* EMC_CFG_PIPE */
+                                       0x80000370 /* EMC_DYN_SELF_REF_CONTROL */
+                                       0x0000000a /* EMC_QPOP */
+                               >;
+                       };
+
+                       timing-68000000 {
+                               clock-frequency = <68000000>;
+
+                               nvidia,emc-auto-cal-config = <0xa1430000>;
+                               nvidia,emc-auto-cal-config2 = <0x00000000>;
+                               nvidia,emc-auto-cal-config3 = <0x00000000>;
+                               nvidia,emc-auto-cal-interval = <0x001fffff>;
+                               nvidia,emc-bgbias-ctl0 = <0x00000008>;
+                               nvidia,emc-cfg = <0x73240000>;
+                               nvidia,emc-cfg-2 = <0x000008c5>;
+                               nvidia,emc-ctt-term-ctrl = <0x00000802>;
+                               nvidia,emc-mode-1 = <0x80100003>;
+                               nvidia,emc-mode-2 = <0x80200008>;
+                               nvidia,emc-mode-4 = <0x00000000>;
+                               nvidia,emc-mode-reset = <0x80001221>;
+                               nvidia,emc-mrs-wait-cnt = <0x000c000c>;
+                               nvidia,emc-sel-dpd-ctrl = <0x00040128>;
+                               nvidia,emc-xm2dqspadctrl2 = <0x0130b118>;
+                               nvidia,emc-zcal-cnt-long = <0x00000042>;
+                               nvidia,emc-zcal-interval = <0x00000000>;
+
+                               nvidia,emc-configuration = <
+                                       0x00000003 /* EMC_RC */
+                                       0x00000011 /* EMC_RFC */
+                                       0x00000000 /* EMC_RFC_SLR */
+                                       0x00000002 /* EMC_RAS */
+                                       0x00000000 /* EMC_RP */
+                                       0x00000004 /* EMC_R2W */
+                                       0x0000000a /* EMC_W2R */
+                                       0x00000003 /* EMC_R2P */
+                                       0x0000000b /* EMC_W2P */
+                                       0x00000000 /* EMC_RD_RCD */
+                                       0x00000000 /* EMC_WR_RCD */
+                                       0x00000003 /* EMC_RRD */
+                                       0x00000003 /* EMC_REXT */
+                                       0x00000000 /* EMC_WEXT */
+                                       0x00000006 /* EMC_WDV */
+                                       0x00000006 /* EMC_WDV_MASK */
+                                       0x00000006 /* EMC_QUSE */
+                                       0x00000002 /* EMC_QUSE_WIDTH */
+                                       0x00000000 /* EMC_IBDLY */
+                                       0x00000005 /* EMC_EINPUT */
+                                       0x00000005 /* EMC_EINPUT_DURATION */
+                                       0x00010000 /* EMC_PUTERM_EXTRA */
+                                       0x00000003 /* EMC_PUTERM_WIDTH */
+                                       0x00000000 /* EMC_PUTERM_ADJ */
+                                       0x00000000 /* EMC_CDB_CNTL_1 */
+                                       0x00000000 /* EMC_CDB_CNTL_2 */
+                                       0x00000000 /* EMC_CDB_CNTL_3 */
+                                       0x00000004 /* EMC_QRST */
+                                       0x0000000c /* EMC_QSAFE */
+                                       0x0000000d /* EMC_RDV */
+                                       0x0000000f /* EMC_RDV_MASK */
+                                       0x00000202 /* EMC_REFRESH */
+                                       0x00000000 /* EMC_BURST_REFRESH_NUM */
+                                       0x00000080 /* EMC_PRE_REFRESH_REQ_CNT */
+                                       0x00000002 /* EMC_PDEX2WR */
+                                       0x00000002 /* EMC_PDEX2RD */
+                                       0x00000001 /* EMC_PCHG2PDEN */
+                                       0x00000000 /* EMC_ACT2PDEN */
+                                       0x0000000f /* EMC_AR2PDEN */
+                                       0x0000000f /* EMC_RW2PDEN */
+                                       0x00000013 /* EMC_TXSR */
+                                       0x00000013 /* EMC_TXSRDLL */
+                                       0x00000004 /* EMC_TCKE */
+                                       0x00000005 /* EMC_TCKESR */
+                                       0x00000004 /* EMC_TPD */
+                                       0x00000001 /* EMC_TFAW */
+                                       0x00000000 /* EMC_TRPAB */
+                                       0x00000005 /* EMC_TCLKSTABLE */
+                                       0x00000005 /* EMC_TCLKSTOP */
+                                       0x00000213 /* EMC_TREFBW */
+                                       0x00000000 /* EMC_FBIO_CFG6 */
+                                       0x00000000 /* EMC_ODT_WRITE */
+                                       0x00000000 /* EMC_ODT_READ */
+                                       0x106aa298 /* EMC_FBIO_CFG5 */
+                                       0x002c00a0 /* EMC_CFG_DIG_DLL */
+                                       0x00008000 /* EMC_CFG_DIG_DLL_PERIOD */
+                                       0x00064000 /* EMC_DLL_XFORM_DQS0 */
+                                       0x00064000 /* EMC_DLL_XFORM_DQS1 */
+                                       0x00064000 /* EMC_DLL_XFORM_DQS2 */
+                                       0x00064000 /* EMC_DLL_XFORM_DQS3 */
+                                       0x00064000 /* EMC_DLL_XFORM_DQS4 */
+                                       0x00064000 /* EMC_DLL_XFORM_DQS5 */
+                                       0x00064000 /* EMC_DLL_XFORM_DQS6 */
+                                       0x00064000 /* EMC_DLL_XFORM_DQS7 */
+                                       0x00064000 /* EMC_DLL_XFORM_DQS8 */
+                                       0x00064000 /* EMC_DLL_XFORM_DQS9 */
+                                       0x00064000 /* EMC_DLL_XFORM_DQS10 */
+                                       0x00064000 /* EMC_DLL_XFORM_DQS11 */
+                                       0x00064000 /* EMC_DLL_XFORM_DQS12 */
+                                       0x00064000 /* EMC_DLL_XFORM_DQS13 */
+                                       0x00064000 /* EMC_DLL_XFORM_DQS14 */
+                                       0x00064000 /* EMC_DLL_XFORM_DQS15 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE0 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE1 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE2 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE3 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE4 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE5 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE6 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE7 */
+                                       0x00000000 /* EMC_DLL_XFORM_ADDR0 */
+                                       0x00000000 /* EMC_DLL_XFORM_ADDR1 */
+                                       0x00004000 /* EMC_DLL_XFORM_ADDR2 */
+                                       0x00000000 /* EMC_DLL_XFORM_ADDR3 */
+                                       0x00000000 /* EMC_DLL_XFORM_ADDR4 */
+                                       0x00004000 /* EMC_DLL_XFORM_ADDR5 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE8 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE9 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE10 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE11 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE12 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE13 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE14 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE15 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS0 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS1 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS2 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS3 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS4 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS5 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS6 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS7 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS8 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS9 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS10 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS11 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS12 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS13 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS14 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS15 */
+                                       0x000fc000 /* EMC_DLL_XFORM_DQ0 */
+                                       0x000fc000 /* EMC_DLL_XFORM_DQ1 */
+                                       0x000fc000 /* EMC_DLL_XFORM_DQ2 */
+                                       0x000fc000 /* EMC_DLL_XFORM_DQ3 */
+                                       0x0000fc00 /* EMC_DLL_XFORM_DQ4 */
+                                       0x0000fc00 /* EMC_DLL_XFORM_DQ5 */
+                                       0x0000fc00 /* EMC_DLL_XFORM_DQ6 */
+                                       0x0000fc00 /* EMC_DLL_XFORM_DQ7 */
+                                       0x10000280 /* EMC_XM2CMDPADCTRL */
+                                       0x00000000 /* EMC_XM2CMDPADCTRL4 */
+                                       0x00111111 /* EMC_XM2CMDPADCTRL5 */
+                                       0x00000000 /* EMC_XM2DQPADCTRL2 */
+                                       0x00000000 /* EMC_XM2DQPADCTRL3 */
+                                       0x77ffc081 /* EMC_XM2CLKPADCTRL */
+                                       0x00000303 /* EMC_XM2CLKPADCTRL2 */
+                                       0x81f1f108 /* EMC_XM2COMPPADCTRL */
+                                       0x07070004 /* EMC_XM2VTTGENPADCTRL */
+                                       0x0000003f /* EMC_XM2VTTGENPADCTRL2 */
+                                       0x016eeeee /* EMC_XM2VTTGENPADCTRL3 */
+                                       0x51451400 /* EMC_XM2DQSPADCTRL3 */
+                                       0x00514514 /* EMC_XM2DQSPADCTRL4 */
+                                       0x00514514 /* EMC_XM2DQSPADCTRL5 */
+                                       0x51451400 /* EMC_XM2DQSPADCTRL6 */
+                                       0x0000003f /* EMC_DSR_VTTGEN_DRV */
+                                       0x00000022 /* EMC_TXDSRVTTGEN */
+                                       0x00000000 /* EMC_FBIO_SPARE */
+                                       0x00000042 /* EMC_ZCAL_WAIT_CNT */
+                                       0x000c000c /* EMC_MRS_WAIT_CNT2 */
+                                       0x00000000 /* EMC_CTT */
+                                       0x00000003 /* EMC_CTT_DURATION */
+                                       0x0000f2f3 /* EMC_CFG_PIPE */
+                                       0x8000050e /* EMC_DYN_SELF_REF_CONTROL */
+                                       0x0000000a /* EMC_QPOP */
+                               >;
+                       };
+
+                       timing-102000000 {
+                               clock-frequency = <102000000>;
+
+                               nvidia,emc-auto-cal-config = <0xa1430000>;
+                               nvidia,emc-auto-cal-config2 = <0x00000000>;
+                               nvidia,emc-auto-cal-config3 = <0x00000000>;
+                               nvidia,emc-auto-cal-interval = <0x001fffff>;
+                               nvidia,emc-bgbias-ctl0 = <0x00000008>;
+                               nvidia,emc-cfg = <0x73240000>;
+                               nvidia,emc-cfg-2 = <0x000008c5>;
+                               nvidia,emc-ctt-term-ctrl = <0x00000802>;
+                               nvidia,emc-mode-1 = <0x80100003>;
+                               nvidia,emc-mode-2 = <0x80200008>;
+                               nvidia,emc-mode-4 = <0x00000000>;
+                               nvidia,emc-mode-reset = <0x80001221>;
+                               nvidia,emc-mrs-wait-cnt = <0x000c000c>;
+                               nvidia,emc-sel-dpd-ctrl = <0x00040128>;
+                               nvidia,emc-xm2dqspadctrl2 = <0x0130b118>;
+                               nvidia,emc-zcal-cnt-long = <0x00000042>;
+                               nvidia,emc-zcal-interval = <0x00000000>;
+
+                               nvidia,emc-configuration = <
+                                       0x00000004 /* EMC_RC */
+                                       0x0000001a /* EMC_RFC */
+                                       0x00000000 /* EMC_RFC_SLR */
+                                       0x00000003 /* EMC_RAS */
+                                       0x00000001 /* EMC_RP */
+                                       0x00000004 /* EMC_R2W */
+                                       0x0000000a /* EMC_W2R */
+                                       0x00000003 /* EMC_R2P */
+                                       0x0000000b /* EMC_W2P */
+                                       0x00000001 /* EMC_RD_RCD */
+                                       0x00000001 /* EMC_WR_RCD */
+                                       0x00000003 /* EMC_RRD */
+                                       0x00000003 /* EMC_REXT */
+                                       0x00000000 /* EMC_WEXT */
+                                       0x00000006 /* EMC_WDV */
+                                       0x00000006 /* EMC_WDV_MASK */
+                                       0x00000006 /* EMC_QUSE */
+                                       0x00000002 /* EMC_QUSE_WIDTH */
+                                       0x00000000 /* EMC_IBDLY */
+                                       0x00000005 /* EMC_EINPUT */
+                                       0x00000005 /* EMC_EINPUT_DURATION */
+                                       0x00010000 /* EMC_PUTERM_EXTRA */
+                                       0x00000003 /* EMC_PUTERM_WIDTH */
+                                       0x00000000 /* EMC_PUTERM_ADJ */
+                                       0x00000000 /* EMC_CDB_CNTL_1 */
+                                       0x00000000 /* EMC_CDB_CNTL_2 */
+                                       0x00000000 /* EMC_CDB_CNTL_3 */
+                                       0x00000004 /* EMC_QRST */
+                                       0x0000000c /* EMC_QSAFE */
+                                       0x0000000d /* EMC_RDV */
+                                       0x0000000f /* EMC_RDV_MASK */
+                                       0x00000304 /* EMC_REFRESH */
+                                       0x00000000 /* EMC_BURST_REFRESH_NUM */
+                                       0x000000c1 /* EMC_PRE_REFRESH_REQ_CNT */
+                                       0x00000002 /* EMC_PDEX2WR */
+                                       0x00000002 /* EMC_PDEX2RD */
+                                       0x00000001 /* EMC_PCHG2PDEN */
+                                       0x00000000 /* EMC_ACT2PDEN */
+                                       0x00000018 /* EMC_AR2PDEN */
+                                       0x0000000f /* EMC_RW2PDEN */
+                                       0x0000001c /* EMC_TXSR */
+                                       0x0000001c /* EMC_TXSRDLL */
+                                       0x00000004 /* EMC_TCKE */
+                                       0x00000005 /* EMC_TCKESR */
+                                       0x00000004 /* EMC_TPD */
+                                       0x00000003 /* EMC_TFAW */
+                                       0x00000000 /* EMC_TRPAB */
+                                       0x00000005 /* EMC_TCLKSTABLE */
+                                       0x00000005 /* EMC_TCLKSTOP */
+                                       0x0000031c /* EMC_TREFBW */
+                                       0x00000000 /* EMC_FBIO_CFG6 */
+                                       0x00000000 /* EMC_ODT_WRITE */
+                                       0x00000000 /* EMC_ODT_READ */
+                                       0x106aa298 /* EMC_FBIO_CFG5 */
+                                       0x002c00a0 /* EMC_CFG_DIG_DLL */
+                                       0x00008000 /* EMC_CFG_DIG_DLL_PERIOD */
+                                       0x00064000 /* EMC_DLL_XFORM_DQS0 */
+                                       0x00064000 /* EMC_DLL_XFORM_DQS1 */
+                                       0x00064000 /* EMC_DLL_XFORM_DQS2 */
+                                       0x00064000 /* EMC_DLL_XFORM_DQS3 */
+                                       0x00064000 /* EMC_DLL_XFORM_DQS4 */
+                                       0x00064000 /* EMC_DLL_XFORM_DQS5 */
+                                       0x00064000 /* EMC_DLL_XFORM_DQS6 */
+                                       0x00064000 /* EMC_DLL_XFORM_DQS7 */
+                                       0x00064000 /* EMC_DLL_XFORM_DQS8 */
+                                       0x00064000 /* EMC_DLL_XFORM_DQS9 */
+                                       0x00064000 /* EMC_DLL_XFORM_DQS10 */
+                                       0x00064000 /* EMC_DLL_XFORM_DQS11 */
+                                       0x00064000 /* EMC_DLL_XFORM_DQS12 */
+                                       0x00064000 /* EMC_DLL_XFORM_DQS13 */
+                                       0x00064000 /* EMC_DLL_XFORM_DQS14 */
+                                       0x00064000 /* EMC_DLL_XFORM_DQS15 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE0 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE1 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE2 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE3 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE4 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE5 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE6 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE7 */
+                                       0x00000000 /* EMC_DLL_XFORM_ADDR0 */
+                                       0x00000000 /* EMC_DLL_XFORM_ADDR1 */
+                                       0x00004000 /* EMC_DLL_XFORM_ADDR2 */
+                                       0x00000000 /* EMC_DLL_XFORM_ADDR3 */
+                                       0x00000000 /* EMC_DLL_XFORM_ADDR4 */
+                                       0x00004000 /* EMC_DLL_XFORM_ADDR5 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE8 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE9 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE10 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE11 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE12 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE13 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE14 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE15 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS0 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS1 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS2 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS3 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS4 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS5 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS6 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS7 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS8 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS9 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS10 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS11 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS12 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS13 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS14 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS15 */
+                                       0x000fc000 /* EMC_DLL_XFORM_DQ0 */
+                                       0x000fc000 /* EMC_DLL_XFORM_DQ1 */
+                                       0x000fc000 /* EMC_DLL_XFORM_DQ2 */
+                                       0x000fc000 /* EMC_DLL_XFORM_DQ3 */
+                                       0x0000fc00 /* EMC_DLL_XFORM_DQ4 */
+                                       0x0000fc00 /* EMC_DLL_XFORM_DQ5 */
+                                       0x0000fc00 /* EMC_DLL_XFORM_DQ6 */
+                                       0x0000fc00 /* EMC_DLL_XFORM_DQ7 */
+                                       0x10000280 /* EMC_XM2CMDPADCTRL */
+                                       0x00000000 /* EMC_XM2CMDPADCTRL4 */
+                                       0x00111111 /* EMC_XM2CMDPADCTRL5 */
+                                       0x00000000 /* EMC_XM2DQPADCTRL2 */
+                                       0x00000000 /* EMC_XM2DQPADCTRL3 */
+                                       0x77ffc081 /* EMC_XM2CLKPADCTRL */
+                                       0x00000303 /* EMC_XM2CLKPADCTRL2 */
+                                       0x81f1f108 /* EMC_XM2COMPPADCTRL */
+                                       0x07070004 /* EMC_XM2VTTGENPADCTRL */
+                                       0x0000003f /* EMC_XM2VTTGENPADCTRL2 */
+                                       0x016eeeee /* EMC_XM2VTTGENPADCTRL3 */
+                                       0x51451400 /* EMC_XM2DQSPADCTRL3 */
+                                       0x00514514 /* EMC_XM2DQSPADCTRL4 */
+                                       0x00514514 /* EMC_XM2DQSPADCTRL5 */
+                                       0x51451400 /* EMC_XM2DQSPADCTRL6 */
+                                       0x0000003f /* EMC_DSR_VTTGEN_DRV */
+                                       0x00000033 /* EMC_TXDSRVTTGEN */
+                                       0x00000000 /* EMC_FBIO_SPARE */
+                                       0x00000042 /* EMC_ZCAL_WAIT_CNT */
+                                       0x000c000c /* EMC_MRS_WAIT_CNT2 */
+                                       0x00000000 /* EMC_CTT */
+                                       0x00000003 /* EMC_CTT_DURATION */
+                                       0x0000f2f3 /* EMC_CFG_PIPE */
+                                       0x80000713 /* EMC_DYN_SELF_REF_CONTROL */
+                                       0x0000000a /* EMC_QPOP */
+                               >;
+                       };
+
+                       timing-204000000 {
+                               clock-frequency = <204000000>;
+
+                               nvidia,emc-auto-cal-config = <0xa1430000>;
+                               nvidia,emc-auto-cal-config2 = <0x00000000>;
+                               nvidia,emc-auto-cal-config3 = <0x00000000>;
+                               nvidia,emc-auto-cal-interval = <0x001fffff>;
+                               nvidia,emc-bgbias-ctl0 = <0x00000008>;
+                               nvidia,emc-cfg = <0x73240000>;
+                               nvidia,emc-cfg-2 = <0x0000088d>;
+                               nvidia,emc-ctt-term-ctrl = <0x00000802>;
+                               nvidia,emc-mode-1 = <0x80100003>;
+                               nvidia,emc-mode-2 = <0x80200008>;
+                               nvidia,emc-mode-4 = <0x00000000>;
+                               nvidia,emc-mode-reset = <0x80001221>;
+                               nvidia,emc-mrs-wait-cnt = <0x000c000c>;
+                               nvidia,emc-sel-dpd-ctrl = <0x00040008>;
+                               nvidia,emc-xm2dqspadctrl2 = <0x0130b118>;
+                               nvidia,emc-zcal-cnt-long = <0x00000042>;
+                               nvidia,emc-zcal-interval = <0x00020000>;
+
+                               nvidia,emc-configuration = <
+                                       0x00000009 /* EMC_RC */
+                                       0x00000035 /* EMC_RFC */
+                                       0x00000000 /* EMC_RFC_SLR */
+                                       0x00000007 /* EMC_RAS */
+                                       0x00000002 /* EMC_RP */
+                                       0x00000005 /* EMC_R2W */
+                                       0x0000000a /* EMC_W2R */
+                                       0x00000003 /* EMC_R2P */
+                                       0x0000000b /* EMC_W2P */
+                                       0x00000002 /* EMC_RD_RCD */
+                                       0x00000002 /* EMC_WR_RCD */
+                                       0x00000003 /* EMC_RRD */
+                                       0x00000003 /* EMC_REXT */
+                                       0x00000000 /* EMC_WEXT */
+                                       0x00000005 /* EMC_WDV */
+                                       0x00000005 /* EMC_WDV_MASK */
+                                       0x00000006 /* EMC_QUSE */
+                                       0x00000002 /* EMC_QUSE_WIDTH */
+                                       0x00000000 /* EMC_IBDLY */
+                                       0x00000004 /* EMC_EINPUT */
+                                       0x00000006 /* EMC_EINPUT_DURATION */
+                                       0x00010000 /* EMC_PUTERM_EXTRA */
+                                       0x00000003 /* EMC_PUTERM_WIDTH */
+                                       0x00000000 /* EMC_PUTERM_ADJ */
+                                       0x00000000 /* EMC_CDB_CNTL_1 */
+                                       0x00000000 /* EMC_CDB_CNTL_2 */
+                                       0x00000000 /* EMC_CDB_CNTL_3 */
+                                       0x00000003 /* EMC_QRST */
+                                       0x0000000d /* EMC_QSAFE */
+                                       0x0000000f /* EMC_RDV */
+                                       0x00000011 /* EMC_RDV_MASK */
+                                       0x00000607 /* EMC_REFRESH */
+                                       0x00000000 /* EMC_BURST_REFRESH_NUM */
+                                       0x00000181 /* EMC_PRE_REFRESH_REQ_CNT */
+                                       0x00000002 /* EMC_PDEX2WR */
+                                       0x00000002 /* EMC_PDEX2RD */
+                                       0x00000001 /* EMC_PCHG2PDEN */
+                                       0x00000000 /* EMC_ACT2PDEN */
+                                       0x00000032 /* EMC_AR2PDEN */
+                                       0x0000000f /* EMC_RW2PDEN */
+                                       0x00000038 /* EMC_TXSR */
+                                       0x00000038 /* EMC_TXSRDLL */
+                                       0x00000004 /* EMC_TCKE */
+                                       0x00000005 /* EMC_TCKESR */
+                                       0x00000004 /* EMC_TPD */
+                                       0x00000007 /* EMC_TFAW */
+                                       0x00000000 /* EMC_TRPAB */
+                                       0x00000005 /* EMC_TCLKSTABLE */
+                                       0x00000005 /* EMC_TCLKSTOP */
+                                       0x00000638 /* EMC_TREFBW */
+                                       0x00000000 /* EMC_FBIO_CFG6 */
+                                       0x00000000 /* EMC_ODT_WRITE */
+                                       0x00000000 /* EMC_ODT_READ */
+                                       0x106aa298 /* EMC_FBIO_CFG5 */
+                                       0x002c00a0 /* EMC_CFG_DIG_DLL */
+                                       0x00008000 /* EMC_CFG_DIG_DLL_PERIOD */
+                                       0x00064000 /* EMC_DLL_XFORM_DQS0 */
+                                       0x00064000 /* EMC_DLL_XFORM_DQS1 */
+                                       0x00064000 /* EMC_DLL_XFORM_DQS2 */
+                                       0x00064000 /* EMC_DLL_XFORM_DQS3 */
+                                       0x00064000 /* EMC_DLL_XFORM_DQS4 */
+                                       0x00064000 /* EMC_DLL_XFORM_DQS5 */
+                                       0x00064000 /* EMC_DLL_XFORM_DQS6 */
+                                       0x00064000 /* EMC_DLL_XFORM_DQS7 */
+                                       0x00064000 /* EMC_DLL_XFORM_DQS8 */
+                                       0x00064000 /* EMC_DLL_XFORM_DQS9 */
+                                       0x00064000 /* EMC_DLL_XFORM_DQS10 */
+                                       0x00064000 /* EMC_DLL_XFORM_DQS11 */
+                                       0x00064000 /* EMC_DLL_XFORM_DQS12 */
+                                       0x00064000 /* EMC_DLL_XFORM_DQS13 */
+                                       0x00064000 /* EMC_DLL_XFORM_DQS14 */
+                                       0x00064000 /* EMC_DLL_XFORM_DQS15 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE0 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE1 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE2 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE3 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE4 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE5 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE6 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE7 */
+                                       0x00000000 /* EMC_DLL_XFORM_ADDR0 */
+                                       0x00000000 /* EMC_DLL_XFORM_ADDR1 */
+                                       0x00004000 /* EMC_DLL_XFORM_ADDR2 */
+                                       0x00000000 /* EMC_DLL_XFORM_ADDR3 */
+                                       0x00000000 /* EMC_DLL_XFORM_ADDR4 */
+                                       0x00004000 /* EMC_DLL_XFORM_ADDR5 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE8 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE9 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE10 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE11 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE12 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE13 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE14 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE15 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS0 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS1 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS2 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS3 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS4 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS5 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS6 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS7 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS8 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS9 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS10 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS11 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS12 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS13 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS14 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS15 */
+                                       0x00090000 /* EMC_DLL_XFORM_DQ0 */
+                                       0x00090000 /* EMC_DLL_XFORM_DQ1 */
+                                       0x00094000 /* EMC_DLL_XFORM_DQ2 */
+                                       0x00094000 /* EMC_DLL_XFORM_DQ3 */
+                                       0x00009400 /* EMC_DLL_XFORM_DQ4 */
+                                       0x00009000 /* EMC_DLL_XFORM_DQ5 */
+                                       0x00009000 /* EMC_DLL_XFORM_DQ6 */
+                                       0x00009000 /* EMC_DLL_XFORM_DQ7 */
+                                       0x10000280 /* EMC_XM2CMDPADCTRL */
+                                       0x00000000 /* EMC_XM2CMDPADCTRL4 */
+                                       0x00111111 /* EMC_XM2CMDPADCTRL5 */
+                                       0x00000000 /* EMC_XM2DQPADCTRL2 */
+                                       0x00000000 /* EMC_XM2DQPADCTRL3 */
+                                       0x77ffc081 /* EMC_XM2CLKPADCTRL */
+                                       0x00000303 /* EMC_XM2CLKPADCTRL2 */
+                                       0x81f1f108 /* EMC_XM2COMPPADCTRL */
+                                       0x07070004 /* EMC_XM2VTTGENPADCTRL */
+                                       0x0000003f /* EMC_XM2VTTGENPADCTRL2 */
+                                       0x016eeeee /* EMC_XM2VTTGENPADCTRL3 */
+                                       0x51451400 /* EMC_XM2DQSPADCTRL3 */
+                                       0x00514514 /* EMC_XM2DQSPADCTRL4 */
+                                       0x00514514 /* EMC_XM2DQSPADCTRL5 */
+                                       0x51451400 /* EMC_XM2DQSPADCTRL6 */
+                                       0x0000003f /* EMC_DSR_VTTGEN_DRV */
+                                       0x00000066 /* EMC_TXDSRVTTGEN */
+                                       0x00000000 /* EMC_FBIO_SPARE */
+                                       0x00000100 /* EMC_ZCAL_WAIT_CNT */
+                                       0x000c000c /* EMC_MRS_WAIT_CNT2 */
+                                       0x00000000 /* EMC_CTT */
+                                       0x00000003 /* EMC_CTT_DURATION */
+                                       0x0000d2b3 /* EMC_CFG_PIPE */
+                                       0x80000d22 /* EMC_DYN_SELF_REF_CONTROL */
+                                       0x0000000a /* EMC_QPOP */
+                               >;
+                       };
+
+                       timing-300000000 {
+                               clock-frequency = <300000000>;
+
+                               nvidia,emc-auto-cal-config = <0xa1430000>;
+                               nvidia,emc-auto-cal-config2 = <0x00000000>;
+                               nvidia,emc-auto-cal-config3 = <0x00000000>;
+                               nvidia,emc-auto-cal-interval = <0x001fffff>;
+                               nvidia,emc-bgbias-ctl0 = <0x00000000>;
+                               nvidia,emc-cfg = <0x73340000>;
+                               nvidia,emc-cfg-2 = <0x000008d5>;
+                               nvidia,emc-ctt-term-ctrl = <0x00000802>;
+                               nvidia,emc-mode-1 = <0x80100002>;
+                               nvidia,emc-mode-2 = <0x80200000>;
+                               nvidia,emc-mode-4 = <0x00000000>;
+                               nvidia,emc-mode-reset = <0x80000321>;
+                               nvidia,emc-mrs-wait-cnt = <0x0174000c>;
+                               nvidia,emc-sel-dpd-ctrl = <0x00040128>;
+                               nvidia,emc-xm2dqspadctrl2 = <0x01231339>;
+                               nvidia,emc-zcal-cnt-long = <0x00000042>;
+                               nvidia,emc-zcal-interval = <0x00020000>;
+
+                               nvidia,emc-configuration = <
+                                       0x0000000d /* EMC_RC */
+                                       0x0000004c /* EMC_RFC */
+                                       0x00000000 /* EMC_RFC_SLR */
+                                       0x00000009 /* EMC_RAS */
+                                       0x00000003 /* EMC_RP */
+                                       0x00000004 /* EMC_R2W */
+                                       0x00000008 /* EMC_W2R */
+                                       0x00000002 /* EMC_R2P */
+                                       0x00000009 /* EMC_W2P */
+                                       0x00000003 /* EMC_RD_RCD */
+                                       0x00000003 /* EMC_WR_RCD */
+                                       0x00000002 /* EMC_RRD */
+                                       0x00000002 /* EMC_REXT */
+                                       0x00000000 /* EMC_WEXT */
+                                       0x00000003 /* EMC_WDV */
+                                       0x00000003 /* EMC_WDV_MASK */
+                                       0x00000005 /* EMC_QUSE */
+                                       0x00000002 /* EMC_QUSE_WIDTH */
+                                       0x00000000 /* EMC_IBDLY */
+                                       0x00000002 /* EMC_EINPUT */
+                                       0x00000007 /* EMC_EINPUT_DURATION */
+                                       0x00020000 /* EMC_PUTERM_EXTRA */
+                                       0x00000003 /* EMC_PUTERM_WIDTH */
+                                       0x00000000 /* EMC_PUTERM_ADJ */
+                                       0x00000000 /* EMC_CDB_CNTL_1 */
+                                       0x00000000 /* EMC_CDB_CNTL_2 */
+                                       0x00000000 /* EMC_CDB_CNTL_3 */
+                                       0x00000001 /* EMC_QRST */
+                                       0x0000000e /* EMC_QSAFE */
+                                       0x00000010 /* EMC_RDV */
+                                       0x00000012 /* EMC_RDV_MASK */
+                                       0x000008e4 /* EMC_REFRESH */
+                                       0x00000000 /* EMC_BURST_REFRESH_NUM */
+                                       0x00000239 /* EMC_PRE_REFRESH_REQ_CNT */
+                                       0x00000001 /* EMC_PDEX2WR */
+                                       0x00000008 /* EMC_PDEX2RD */
+                                       0x00000001 /* EMC_PCHG2PDEN */
+                                       0x00000000 /* EMC_ACT2PDEN */
+                                       0x0000004a /* EMC_AR2PDEN */
+                                       0x0000000e /* EMC_RW2PDEN */
+                                       0x00000051 /* EMC_TXSR */
+                                       0x00000200 /* EMC_TXSRDLL */
+                                       0x00000004 /* EMC_TCKE */
+                                       0x00000005 /* EMC_TCKESR */
+                                       0x00000004 /* EMC_TPD */
+                                       0x00000009 /* EMC_TFAW */
+                                       0x00000000 /* EMC_TRPAB */
+                                       0x00000005 /* EMC_TCLKSTABLE */
+                                       0x00000005 /* EMC_TCLKSTOP */
+                                       0x00000924 /* EMC_TREFBW */
+                                       0x00000000 /* EMC_FBIO_CFG6 */
+                                       0x00000000 /* EMC_ODT_WRITE */
+                                       0x00000000 /* EMC_ODT_READ */
+                                       0x104ab098 /* EMC_FBIO_CFG5 */
+                                       0x002c00a0 /* EMC_CFG_DIG_DLL */
+                                       0x00008000 /* EMC_CFG_DIG_DLL_PERIOD */
+                                       0x00030000 /* EMC_DLL_XFORM_DQS0 */
+                                       0x00030000 /* EMC_DLL_XFORM_DQS1 */
+                                       0x00030000 /* EMC_DLL_XFORM_DQS2 */
+                                       0x00030000 /* EMC_DLL_XFORM_DQS3 */
+                                       0x00030000 /* EMC_DLL_XFORM_DQS4 */
+                                       0x00030000 /* EMC_DLL_XFORM_DQS5 */
+                                       0x00030000 /* EMC_DLL_XFORM_DQS6 */
+                                       0x00030000 /* EMC_DLL_XFORM_DQS7 */
+                                       0x00030000 /* EMC_DLL_XFORM_DQS8 */
+                                       0x00030000 /* EMC_DLL_XFORM_DQS9 */
+                                       0x00030000 /* EMC_DLL_XFORM_DQS10 */
+                                       0x00030000 /* EMC_DLL_XFORM_DQS11 */
+                                       0x00030000 /* EMC_DLL_XFORM_DQS12 */
+                                       0x00030000 /* EMC_DLL_XFORM_DQS13 */
+                                       0x00030000 /* EMC_DLL_XFORM_DQS14 */
+                                       0x00030000 /* EMC_DLL_XFORM_DQS15 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE0 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE1 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE2 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE3 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE4 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE5 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE6 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE7 */
+                                       0x00098000 /* EMC_DLL_XFORM_ADDR0 */
+                                       0x00098000 /* EMC_DLL_XFORM_ADDR1 */
+                                       0x00000000 /* EMC_DLL_XFORM_ADDR2 */
+                                       0x00098000 /* EMC_DLL_XFORM_ADDR3 */
+                                       0x00098000 /* EMC_DLL_XFORM_ADDR4 */
+                                       0x00000000 /* EMC_DLL_XFORM_ADDR5 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE8 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE9 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE10 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE11 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE12 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE13 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE14 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE15 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS0 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS1 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS2 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS3 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS4 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS5 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS6 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS7 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS8 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS9 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS10 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS11 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS12 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS13 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS14 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS15 */
+                                       0x00060000 /* EMC_DLL_XFORM_DQ0 */
+                                       0x00060000 /* EMC_DLL_XFORM_DQ1 */
+                                       0x00060000 /* EMC_DLL_XFORM_DQ2 */
+                                       0x00060000 /* EMC_DLL_XFORM_DQ3 */
+                                       0x00006000 /* EMC_DLL_XFORM_DQ4 */
+                                       0x00006000 /* EMC_DLL_XFORM_DQ5 */
+                                       0x00006000 /* EMC_DLL_XFORM_DQ6 */
+                                       0x00006000 /* EMC_DLL_XFORM_DQ7 */
+                                       0x10000280 /* EMC_XM2CMDPADCTRL */
+                                       0x00000000 /* EMC_XM2CMDPADCTRL4 */
+                                       0x00111111 /* EMC_XM2CMDPADCTRL5 */
+                                       0x00000000 /* EMC_XM2DQPADCTRL2 */
+                                       0x00000000 /* EMC_XM2DQPADCTRL3 */
+                                       0x77ffc081 /* EMC_XM2CLKPADCTRL */
+                                       0x00000101 /* EMC_XM2CLKPADCTRL2 */
+                                       0x81f1f108 /* EMC_XM2COMPPADCTRL */
+                                       0x07070004 /* EMC_XM2VTTGENPADCTRL */
+                                       0x00000000 /* EMC_XM2VTTGENPADCTRL2 */
+                                       0x016eeeee /* EMC_XM2VTTGENPADCTRL3 */
+                                       0x51451420 /* EMC_XM2DQSPADCTRL3 */
+                                       0x00514514 /* EMC_XM2DQSPADCTRL4 */
+                                       0x00514514 /* EMC_XM2DQSPADCTRL5 */
+                                       0x51451400 /* EMC_XM2DQSPADCTRL6 */
+                                       0x0000003f /* EMC_DSR_VTTGEN_DRV */
+                                       0x00000096 /* EMC_TXDSRVTTGEN */
+                                       0x00000000 /* EMC_FBIO_SPARE */
+                                       0x00000100 /* EMC_ZCAL_WAIT_CNT */
+                                       0x0174000c /* EMC_MRS_WAIT_CNT2 */
+                                       0x00000000 /* EMC_CTT */
+                                       0x00000003 /* EMC_CTT_DURATION */
+                                       0x000052a3 /* EMC_CFG_PIPE */
+                                       0x800012d7 /* EMC_DYN_SELF_REF_CONTROL */
+                                       0x00000009 /* EMC_QPOP */
+                               >;
+                       };
+
+                       timing-396000000 {
+                               clock-frequency = <396000000>;
+
+                               nvidia,emc-auto-cal-config = <0xa1430000>;
+                               nvidia,emc-auto-cal-config2 = <0x00000000>;
+                               nvidia,emc-auto-cal-config3 = <0x00000000>;
+                               nvidia,emc-auto-cal-interval = <0x001fffff>;
+                               nvidia,emc-bgbias-ctl0 = <0x00000000>;
+                               nvidia,emc-cfg = <0x73340000>;
+                               nvidia,emc-cfg-2 = <0x00000895>;
+                               nvidia,emc-ctt-term-ctrl = <0x00000802>;
+                               nvidia,emc-mode-1 = <0x80100002>;
+                               nvidia,emc-mode-2 = <0x80200000>;
+                               nvidia,emc-mode-4 = <0x00000000>;
+                               nvidia,emc-mode-reset = <0x80000521>;
+                               nvidia,emc-mrs-wait-cnt = <0x015b000c>;
+                               nvidia,emc-sel-dpd-ctrl = <0x00040008>;
+                               nvidia,emc-xm2dqspadctrl2 = <0x01231339>;
+                               nvidia,emc-zcal-cnt-long = <0x00000042>;
+                               nvidia,emc-zcal-interval = <0x00020000>;
+
+                               nvidia,emc-configuration = <
+                                       0x00000012 /* EMC_RC */
+                                       0x00000065 /* EMC_RFC */
+                                       0x00000000 /* EMC_RFC_SLR */
+                                       0x0000000c /* EMC_RAS */
+                                       0x00000004 /* EMC_RP */
+                                       0x00000005 /* EMC_R2W */
+                                       0x00000008 /* EMC_W2R */
+                                       0x00000002 /* EMC_R2P */
+                                       0x0000000a /* EMC_W2P */
+                                       0x00000004 /* EMC_RD_RCD */
+                                       0x00000004 /* EMC_WR_RCD */
+                                       0x00000002 /* EMC_RRD */
+                                       0x00000002 /* EMC_REXT */
+                                       0x00000000 /* EMC_WEXT */
+                                       0x00000003 /* EMC_WDV */
+                                       0x00000003 /* EMC_WDV_MASK */
+                                       0x00000005 /* EMC_QUSE */
+                                       0x00000002 /* EMC_QUSE_WIDTH */
+                                       0x00000000 /* EMC_IBDLY */
+                                       0x00000001 /* EMC_EINPUT */
+                                       0x00000008 /* EMC_EINPUT_DURATION */
+                                       0x00020000 /* EMC_PUTERM_EXTRA */
+                                       0x00000003 /* EMC_PUTERM_WIDTH */
+                                       0x00000000 /* EMC_PUTERM_ADJ */
+                                       0x00000000 /* EMC_CDB_CNTL_1 */
+                                       0x00000000 /* EMC_CDB_CNTL_2 */
+                                       0x00000000 /* EMC_CDB_CNTL_3 */
+                                       0x00000000 /* EMC_QRST */
+                                       0x0000000f /* EMC_QSAFE */
+                                       0x00000010 /* EMC_RDV */
+                                       0x00000012 /* EMC_RDV_MASK */
+                                       0x00000bd1 /* EMC_REFRESH */
+                                       0x00000000 /* EMC_BURST_REFRESH_NUM */
+                                       0x000002f4 /* EMC_PRE_REFRESH_REQ_CNT */
+                                       0x00000001 /* EMC_PDEX2WR */
+                                       0x00000008 /* EMC_PDEX2RD */
+                                       0x00000001 /* EMC_PCHG2PDEN */
+                                       0x00000000 /* EMC_ACT2PDEN */
+                                       0x00000063 /* EMC_AR2PDEN */
+                                       0x0000000f /* EMC_RW2PDEN */
+                                       0x0000006b /* EMC_TXSR */
+                                       0x00000200 /* EMC_TXSRDLL */
+                                       0x00000004 /* EMC_TCKE */
+                                       0x00000005 /* EMC_TCKESR */
+                                       0x00000004 /* EMC_TPD */
+                                       0x0000000d /* EMC_TFAW */
+                                       0x00000000 /* EMC_TRPAB */
+                                       0x00000005 /* EMC_TCLKSTABLE */
+                                       0x00000005 /* EMC_TCLKSTOP */
+                                       0x00000c11 /* EMC_TREFBW */
+                                       0x00000000 /* EMC_FBIO_CFG6 */
+                                       0x00000000 /* EMC_ODT_WRITE */
+                                       0x00000000 /* EMC_ODT_READ */
+                                       0x104ab098 /* EMC_FBIO_CFG5 */
+                                       0x002c00a0 /* EMC_CFG_DIG_DLL */
+                                       0x00008000 /* EMC_CFG_DIG_DLL_PERIOD */
+                                       0x00030000 /* EMC_DLL_XFORM_DQS0 */
+                                       0x00030000 /* EMC_DLL_XFORM_DQS1 */
+                                       0x00030000 /* EMC_DLL_XFORM_DQS2 */
+                                       0x00030000 /* EMC_DLL_XFORM_DQS3 */
+                                       0x00030000 /* EMC_DLL_XFORM_DQS4 */
+                                       0x00030000 /* EMC_DLL_XFORM_DQS5 */
+                                       0x00030000 /* EMC_DLL_XFORM_DQS6 */
+                                       0x00030000 /* EMC_DLL_XFORM_DQS7 */
+                                       0x00030000 /* EMC_DLL_XFORM_DQS8 */
+                                       0x00030000 /* EMC_DLL_XFORM_DQS9 */
+                                       0x00030000 /* EMC_DLL_XFORM_DQS10 */
+                                       0x00030000 /* EMC_DLL_XFORM_DQS11 */
+                                       0x00030000 /* EMC_DLL_XFORM_DQS12 */
+                                       0x00030000 /* EMC_DLL_XFORM_DQS13 */
+                                       0x00030000 /* EMC_DLL_XFORM_DQS14 */
+                                       0x00030000 /* EMC_DLL_XFORM_DQS15 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE0 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE1 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE2 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE3 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE4 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE5 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE6 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE7 */
+                                       0x00070000 /* EMC_DLL_XFORM_ADDR0 */
+                                       0x00070000 /* EMC_DLL_XFORM_ADDR1 */
+                                       0x00000000 /* EMC_DLL_XFORM_ADDR2 */
+                                       0x00070000 /* EMC_DLL_XFORM_ADDR3 */
+                                       0x00070000 /* EMC_DLL_XFORM_ADDR4 */
+                                       0x00000000 /* EMC_DLL_XFORM_ADDR5 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE8 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE9 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE10 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE11 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE12 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE13 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE14 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE15 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS0 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS1 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS2 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS3 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS4 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS5 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS6 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS7 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS8 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS9 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS10 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS11 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS12 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS13 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS14 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS15 */
+                                       0x00048000 /* EMC_DLL_XFORM_DQ0 */
+                                       0x00048000 /* EMC_DLL_XFORM_DQ1 */
+                                       0x00048000 /* EMC_DLL_XFORM_DQ2 */
+                                       0x00048000 /* EMC_DLL_XFORM_DQ3 */
+                                       0x00004800 /* EMC_DLL_XFORM_DQ4 */
+                                       0x00004800 /* EMC_DLL_XFORM_DQ5 */
+                                       0x00004800 /* EMC_DLL_XFORM_DQ6 */
+                                       0x00004800 /* EMC_DLL_XFORM_DQ7 */
+                                       0x10000280 /* EMC_XM2CMDPADCTRL */
+                                       0x00000000 /* EMC_XM2CMDPADCTRL4 */
+                                       0x00111111 /* EMC_XM2CMDPADCTRL5 */
+                                       0x00000000 /* EMC_XM2DQPADCTRL2 */
+                                       0x00000000 /* EMC_XM2DQPADCTRL3 */
+                                       0x77ffc081 /* EMC_XM2CLKPADCTRL */
+                                       0x00000101 /* EMC_XM2CLKPADCTRL2 */
+                                       0x81f1f108 /* EMC_XM2COMPPADCTRL */
+                                       0x07070004 /* EMC_XM2VTTGENPADCTRL */
+                                       0x00000000 /* EMC_XM2VTTGENPADCTRL2 */
+                                       0x016eeeee /* EMC_XM2VTTGENPADCTRL3 */
+                                       0x51451420 /* EMC_XM2DQSPADCTRL3 */
+                                       0x00514514 /* EMC_XM2DQSPADCTRL4 */
+                                       0x00514514 /* EMC_XM2DQSPADCTRL5 */
+                                       0x51451400 /* EMC_XM2DQSPADCTRL6 */
+                                       0x0000003f /* EMC_DSR_VTTGEN_DRV */
+                                       0x000000c6 /* EMC_TXDSRVTTGEN */
+                                       0x00000000 /* EMC_FBIO_SPARE */
+                                       0x00000100 /* EMC_ZCAL_WAIT_CNT */
+                                       0x015b000c /* EMC_MRS_WAIT_CNT2 */
+                                       0x00000000 /* EMC_CTT */
+                                       0x00000003 /* EMC_CTT_DURATION */
+                                       0x000052a3 /* EMC_CFG_PIPE */
+                                       0x8000188b /* EMC_DYN_SELF_REF_CONTROL */
+                                       0x00000009 /* EMC_QPOP */
+                               >;
+                       };
+
+                       timing-528000000 {
+                               clock-frequency = <528000000>;
+
+                               nvidia,emc-auto-cal-config = <0xa1430000>;
+                               nvidia,emc-auto-cal-config2 = <0x00000000>;
+                               nvidia,emc-auto-cal-config3 = <0x00000000>;
+                               nvidia,emc-auto-cal-interval = <0x001fffff>;
+                               nvidia,emc-bgbias-ctl0 = <0x00000000>;
+                               nvidia,emc-cfg = <0x73300000>;
+                               nvidia,emc-cfg-2 = <0x0000089d>;
+                               nvidia,emc-ctt-term-ctrl = <0x00000802>;
+                               nvidia,emc-mode-1 = <0x80100002>;
+                               nvidia,emc-mode-2 = <0x80200008>;
+                               nvidia,emc-mode-4 = <0x00000000>;
+                               nvidia,emc-mode-reset = <0x80000941>;
+                               nvidia,emc-mrs-wait-cnt = <0x013a000c>;
+                               nvidia,emc-sel-dpd-ctrl = <0x00040008>;
+                               nvidia,emc-xm2dqspadctrl2 = <0x0123133d>;
+                               nvidia,emc-zcal-cnt-long = <0x00000042>;
+                               nvidia,emc-zcal-interval = <0x00020000>;
+
+                               nvidia,emc-configuration = <
+                                       0x00000018 /* EMC_RC */
+                                       0x00000088 /* EMC_RFC */
+                                       0x00000000 /* EMC_RFC_SLR */
+                                       0x00000011 /* EMC_RAS */
+                                       0x00000006 /* EMC_RP */
+                                       0x00000006 /* EMC_R2W */
+                                       0x00000009 /* EMC_W2R */
+                                       0x00000002 /* EMC_R2P */
+                                       0x0000000d /* EMC_W2P */
+                                       0x00000006 /* EMC_RD_RCD */
+                                       0x00000006 /* EMC_WR_RCD */
+                                       0x00000002 /* EMC_RRD */
+                                       0x00000002 /* EMC_REXT */
+                                       0x00000000 /* EMC_WEXT */
+                                       0x00000003 /* EMC_WDV */
+                                       0x00000003 /* EMC_WDV_MASK */
+                                       0x00000007 /* EMC_QUSE */
+                                       0x00000002 /* EMC_QUSE_WIDTH */
+                                       0x00000000 /* EMC_IBDLY */
+                                       0x00000002 /* EMC_EINPUT */
+                                       0x00000009 /* EMC_EINPUT_DURATION */
+                                       0x00040000 /* EMC_PUTERM_EXTRA */
+                                       0x00000003 /* EMC_PUTERM_WIDTH */
+                                       0x00000000 /* EMC_PUTERM_ADJ */
+                                       0x00000000 /* EMC_CDB_CNTL_1 */
+                                       0x00000000 /* EMC_CDB_CNTL_2 */
+                                       0x00000000 /* EMC_CDB_CNTL_3 */
+                                       0x00000001 /* EMC_QRST */
+                                       0x00000010 /* EMC_QSAFE */
+                                       0x00000013 /* EMC_RDV */
+                                       0x00000015 /* EMC_RDV_MASK */
+                                       0x00000fd6 /* EMC_REFRESH */
+                                       0x00000000 /* EMC_BURST_REFRESH_NUM */
+                                       0x000003f5 /* EMC_PRE_REFRESH_REQ_CNT */
+                                       0x00000002 /* EMC_PDEX2WR */
+                                       0x0000000b /* EMC_PDEX2RD */
+                                       0x00000001 /* EMC_PCHG2PDEN */
+                                       0x00000000 /* EMC_ACT2PDEN */
+                                       0x00000084 /* EMC_AR2PDEN */
+                                       0x00000012 /* EMC_RW2PDEN */
+                                       0x0000008f /* EMC_TXSR */
+                                       0x00000200 /* EMC_TXSRDLL */
+                                       0x00000004 /* EMC_TCKE */
+                                       0x00000005 /* EMC_TCKESR */
+                                       0x00000004 /* EMC_TPD */
+                                       0x00000013 /* EMC_TFAW */
+                                       0x00000000 /* EMC_TRPAB */
+                                       0x00000006 /* EMC_TCLKSTABLE */
+                                       0x00000006 /* EMC_TCLKSTOP */
+                                       0x00001017 /* EMC_TREFBW */
+                                       0x00000000 /* EMC_FBIO_CFG6 */
+                                       0x00000000 /* EMC_ODT_WRITE */
+                                       0x00000000 /* EMC_ODT_READ */
+                                       0x104ab098 /* EMC_FBIO_CFG5 */
+                                       0xe01200b1 /* EMC_CFG_DIG_DLL */
+                                       0x00008000 /* EMC_CFG_DIG_DLL_PERIOD */
+                                       0x0000000a /* EMC_DLL_XFORM_DQS0 */
+                                       0x0000000a /* EMC_DLL_XFORM_DQS1 */
+                                       0x0000000a /* EMC_DLL_XFORM_DQS2 */
+                                       0x0000000a /* EMC_DLL_XFORM_DQS3 */
+                                       0x0000000a /* EMC_DLL_XFORM_DQS4 */
+                                       0x0000000a /* EMC_DLL_XFORM_DQS5 */
+                                       0x0000000a /* EMC_DLL_XFORM_DQS6 */
+                                       0x0000000a /* EMC_DLL_XFORM_DQS7 */
+                                       0x0000000a /* EMC_DLL_XFORM_DQS8 */
+                                       0x0000000a /* EMC_DLL_XFORM_DQS9 */
+                                       0x0000000a /* EMC_DLL_XFORM_DQS10 */
+                                       0x0000000a /* EMC_DLL_XFORM_DQS11 */
+                                       0x0000000a /* EMC_DLL_XFORM_DQS12 */
+                                       0x0000000a /* EMC_DLL_XFORM_DQS13 */
+                                       0x0000000a /* EMC_DLL_XFORM_DQS14 */
+                                       0x0000000a /* EMC_DLL_XFORM_DQS15 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE0 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE1 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE2 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE3 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE4 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE5 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE6 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE7 */
+                                       0x00050000 /* EMC_DLL_XFORM_ADDR0 */
+                                       0x00050000 /* EMC_DLL_XFORM_ADDR1 */
+                                       0x00000000 /* EMC_DLL_XFORM_ADDR2 */
+                                       0x00050000 /* EMC_DLL_XFORM_ADDR3 */
+                                       0x00050000 /* EMC_DLL_XFORM_ADDR4 */
+                                       0x00000000 /* EMC_DLL_XFORM_ADDR5 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE8 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE9 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE10 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE11 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE12 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE13 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE14 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE15 */
+                                       0x00000002 /* EMC_DLI_TRIM_TXDQS0 */
+                                       0x00000002 /* EMC_DLI_TRIM_TXDQS1 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS2 */
+                                       0x00000003 /* EMC_DLI_TRIM_TXDQS3 */
+                                       0x00000004 /* EMC_DLI_TRIM_TXDQS4 */
+                                       0x00000001 /* EMC_DLI_TRIM_TXDQS5 */
+                                       0x00000004 /* EMC_DLI_TRIM_TXDQS6 */
+                                       0x00000003 /* EMC_DLI_TRIM_TXDQS7 */
+                                       0x00000002 /* EMC_DLI_TRIM_TXDQS8 */
+                                       0x00000002 /* EMC_DLI_TRIM_TXDQS9 */
+                                       0x00000000 /* EMC_DLI_TRIM_TXDQS10 */
+                                       0x00000003 /* EMC_DLI_TRIM_TXDQS11 */
+                                       0x00000004 /* EMC_DLI_TRIM_TXDQS12 */
+                                       0x00000001 /* EMC_DLI_TRIM_TXDQS13 */
+                                       0x00000004 /* EMC_DLI_TRIM_TXDQS14 */
+                                       0x00000003 /* EMC_DLI_TRIM_TXDQS15 */
+                                       0x0000000e /* EMC_DLL_XFORM_DQ0 */
+                                       0x0000000e /* EMC_DLL_XFORM_DQ1 */
+                                       0x0000000e /* EMC_DLL_XFORM_DQ2 */
+                                       0x0000000e /* EMC_DLL_XFORM_DQ3 */
+                                       0x0000000e /* EMC_DLL_XFORM_DQ4 */
+                                       0x0000000e /* EMC_DLL_XFORM_DQ5 */
+                                       0x0000000e /* EMC_DLL_XFORM_DQ6 */
+                                       0x0000000e /* EMC_DLL_XFORM_DQ7 */
+                                       0x100002a0 /* EMC_XM2CMDPADCTRL */
+                                       0x00000000 /* EMC_XM2CMDPADCTRL4 */
+                                       0x00111111 /* EMC_XM2CMDPADCTRL5 */
+                                       0x00000000 /* EMC_XM2DQPADCTRL2 */
+                                       0x00000000 /* EMC_XM2DQPADCTRL3 */
+                                       0x77ffc085 /* EMC_XM2CLKPADCTRL */
+                                       0x00000101 /* EMC_XM2CLKPADCTRL2 */
+                                       0x81f1f108 /* EMC_XM2COMPPADCTRL */
+                                       0x07070004 /* EMC_XM2VTTGENPADCTRL */
+                                       0x00000000 /* EMC_XM2VTTGENPADCTRL2 */
+                                       0x016eeeee /* EMC_XM2VTTGENPADCTRL3 */
+                                       0x51451420 /* EMC_XM2DQSPADCTRL3 */
+                                       0x00514514 /* EMC_XM2DQSPADCTRL4 */
+                                       0x00514514 /* EMC_XM2DQSPADCTRL5 */
+                                       0x51451400 /* EMC_XM2DQSPADCTRL6 */
+                                       0x0606003f /* EMC_DSR_VTTGEN_DRV */
+                                       0x00000000 /* EMC_TXDSRVTTGEN */
+                                       0x00000000 /* EMC_FBIO_SPARE */
+                                       0x00000100 /* EMC_ZCAL_WAIT_CNT */
+                                       0x013a000c /* EMC_MRS_WAIT_CNT2 */
+                                       0x00000000 /* EMC_CTT */
+                                       0x00000003 /* EMC_CTT_DURATION */
+                                       0x000042a0 /* EMC_CFG_PIPE */
+                                       0x80002062 /* EMC_DYN_SELF_REF_CONTROL */
+                                       0x0000000b /* EMC_QPOP */
+                               >;
+                       };
+
+                       timing-600000000 {
+                               clock-frequency = <600000000>;
+
+                               nvidia,emc-auto-cal-config = <0xa1430000>;
+                               nvidia,emc-auto-cal-config2 = <0x00000000>;
+                               nvidia,emc-auto-cal-config3 = <0x00000000>;
+                               nvidia,emc-auto-cal-interval = <0x001fffff>;
+                               nvidia,emc-bgbias-ctl0 = <0x00000000>;
+                               nvidia,emc-cfg = <0x73300000>;
+                               nvidia,emc-cfg-2 = <0x0000089d>;
+                               nvidia,emc-ctt-term-ctrl = <0x00000802>;
+                               nvidia,emc-mode-1 = <0x80100002>;
+                               nvidia,emc-mode-2 = <0x80200010>;
+                               nvidia,emc-mode-4 = <0x00000000>;
+                               nvidia,emc-mode-reset = <0x80000b61>;
+                               nvidia,emc-mrs-wait-cnt = <0x0128000c>;
+                               nvidia,emc-sel-dpd-ctrl = <0x00040008>;
+                               nvidia,emc-xm2dqspadctrl2 = <0x0121113d>;
+                               nvidia,emc-zcal-cnt-long = <0x00000042>;
+                               nvidia,emc-zcal-interval = <0x00020000>;
+
+                               nvidia,emc-configuration = <
+                                       0x0000001c /* EMC_RC */
+                                       0x0000009a /* EMC_RFC */
+                                       0x00000000 /* EMC_RFC_SLR */
+                                       0x00000013 /* EMC_RAS */
+                                       0x00000007 /* EMC_RP */
+                                       0x00000007 /* EMC_R2W */
+                                       0x0000000b /* EMC_W2R */
+                                       0x00000003 /* EMC_R2P */
+                                       0x00000010 /* EMC_W2P */
+                                       0x00000007 /* EMC_RD_RCD */
+                                       0x00000007 /* EMC_WR_RCD */
+                                       0x00000003 /* EMC_RRD */
+                                       0x00000002 /* EMC_REXT */
+                                       0x00000000 /* EMC_WEXT */
+                                       0x00000005 /* EMC_WDV */
+                                       0x00000005 /* EMC_WDV_MASK */
+                                       0x0000000a /* EMC_QUSE */
+                                       0x00000002 /* EMC_QUSE_WIDTH */
+                                       0x00000000 /* EMC_IBDLY */
+                                       0x00000003 /* EMC_EINPUT */
+                                       0x0000000b /* EMC_EINPUT_DURATION */
+                                       0x00070000 /* EMC_PUTERM_EXTRA */
+                                       0x00000003 /* EMC_PUTERM_WIDTH */
+                                       0x00000000 /* EMC_PUTERM_ADJ */
+                                       0x00000000 /* EMC_CDB_CNTL_1 */
+                                       0x00000000 /* EMC_CDB_CNTL_2 */
+                                       0x00000000 /* EMC_CDB_CNTL_3 */
+                                       0x00000002 /* EMC_QRST */
+                                       0x00000012 /* EMC_QSAFE */
+                                       0x00000016 /* EMC_RDV */
+                                       0x00000018 /* EMC_RDV_MASK */
+                                       0x00001208 /* EMC_REFRESH */
+                                       0x00000000 /* EMC_BURST_REFRESH_NUM */
+                                       0x00000482 /* EMC_PRE_REFRESH_REQ_CNT */
+                                       0x00000002 /* EMC_PDEX2WR */
+                                       0x0000000d /* EMC_PDEX2RD */
+                                       0x00000001 /* EMC_PCHG2PDEN */
+                                       0x00000000 /* EMC_ACT2PDEN */
+                                       0x00000096 /* EMC_AR2PDEN */
+                                       0x00000015 /* EMC_RW2PDEN */
+                                       0x000000a2 /* EMC_TXSR */
+                                       0x00000200 /* EMC_TXSRDLL */
+                                       0x00000004 /* EMC_TCKE */
+                                       0x00000005 /* EMC_TCKESR */
+                                       0x00000004 /* EMC_TPD */
+                                       0x00000015 /* EMC_TFAW */
+                                       0x00000000 /* EMC_TRPAB */
+                                       0x00000006 /* EMC_TCLKSTABLE */
+                                       0x00000006 /* EMC_TCLKSTOP */
+                                       0x00001249 /* EMC_TREFBW */
+                                       0x00000000 /* EMC_FBIO_CFG6 */
+                                       0x00000000 /* EMC_ODT_WRITE */
+                                       0x00000000 /* EMC_ODT_READ */
+                                       0x104ab098 /* EMC_FBIO_CFG5 */
+                                       0xe00e00b1 /* EMC_CFG_DIG_DLL */
+                                       0x00008000 /* EMC_CFG_DIG_DLL_PERIOD */
+                                       0x0000000a /* EMC_DLL_XFORM_DQS0 */
+                                       0x0000000a /* EMC_DLL_XFORM_DQS1 */
+                                       0x0000000a /* EMC_DLL_XFORM_DQS2 */
+                                       0x0000000a /* EMC_DLL_XFORM_DQS3 */
+                                       0x0000000a /* EMC_DLL_XFORM_DQS4 */
+                                       0x0000000a /* EMC_DLL_XFORM_DQS5 */
+                                       0x0000000a /* EMC_DLL_XFORM_DQS6 */
+                                       0x0000000a /* EMC_DLL_XFORM_DQS7 */
+                                       0x0000000a /* EMC_DLL_XFORM_DQS8 */
+                                       0x0000000a /* EMC_DLL_XFORM_DQS9 */
+                                       0x0000000a /* EMC_DLL_XFORM_DQS10 */
+                                       0x0000000a /* EMC_DLL_XFORM_DQS11 */
+                                       0x0000000a /* EMC_DLL_XFORM_DQS12 */
+                                       0x0000000a /* EMC_DLL_XFORM_DQS13 */
+                                       0x0000000a /* EMC_DLL_XFORM_DQS14 */
+                                       0x0000000a /* EMC_DLL_XFORM_DQS15 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE0 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE1 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE2 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE3 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE4 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE5 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE6 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE7 */
+                                       0x00048000 /* EMC_DLL_XFORM_ADDR0 */
+                                       0x00048000 /* EMC_DLL_XFORM_ADDR1 */
+                                       0x00000000 /* EMC_DLL_XFORM_ADDR2 */
+                                       0x00048000 /* EMC_DLL_XFORM_ADDR3 */
+                                       0x00048000 /* EMC_DLL_XFORM_ADDR4 */
+                                       0x00000000 /* EMC_DLL_XFORM_ADDR5 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE8 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE9 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE10 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE11 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE12 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE13 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE14 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE15 */
+                                       0x00000004 /* EMC_DLI_TRIM_TXDQS0 */
+                                       0x00000004 /* EMC_DLI_TRIM_TXDQS1 */
+                                       0x00000002 /* EMC_DLI_TRIM_TXDQS2 */
+                                       0x00000005 /* EMC_DLI_TRIM_TXDQS3 */
+                                       0x00000006 /* EMC_DLI_TRIM_TXDQS4 */
+                                       0x00000003 /* EMC_DLI_TRIM_TXDQS5 */
+                                       0x00000006 /* EMC_DLI_TRIM_TXDQS6 */
+                                       0x00000005 /* EMC_DLI_TRIM_TXDQS7 */
+                                       0x00000004 /* EMC_DLI_TRIM_TXDQS8 */
+                                       0x00000004 /* EMC_DLI_TRIM_TXDQS9 */
+                                       0x00000002 /* EMC_DLI_TRIM_TXDQS10 */
+                                       0x00000005 /* EMC_DLI_TRIM_TXDQS11 */
+                                       0x00000006 /* EMC_DLI_TRIM_TXDQS12 */
+                                       0x00000003 /* EMC_DLI_TRIM_TXDQS13 */
+                                       0x00000006 /* EMC_DLI_TRIM_TXDQS14 */
+                                       0x00000005 /* EMC_DLI_TRIM_TXDQS15 */
+                                       0x0000000e /* EMC_DLL_XFORM_DQ0 */
+                                       0x0000000e /* EMC_DLL_XFORM_DQ1 */
+                                       0x0000000e /* EMC_DLL_XFORM_DQ2 */
+                                       0x0000000e /* EMC_DLL_XFORM_DQ3 */
+                                       0x0000000e /* EMC_DLL_XFORM_DQ4 */
+                                       0x0000000e /* EMC_DLL_XFORM_DQ5 */
+                                       0x0000000e /* EMC_DLL_XFORM_DQ6 */
+                                       0x0000000e /* EMC_DLL_XFORM_DQ7 */
+                                       0x100002a0 /* EMC_XM2CMDPADCTRL */
+                                       0x00000000 /* EMC_XM2CMDPADCTRL4 */
+                                       0x00111111 /* EMC_XM2CMDPADCTRL5 */
+                                       0x00000000 /* EMC_XM2DQPADCTRL2 */
+                                       0x00000000 /* EMC_XM2DQPADCTRL3 */
+                                       0x77ffc085 /* EMC_XM2CLKPADCTRL */
+                                       0x00000101 /* EMC_XM2CLKPADCTRL2 */
+                                       0x81f1f108 /* EMC_XM2COMPPADCTRL */
+                                       0x07070004 /* EMC_XM2VTTGENPADCTRL */
+                                       0x00000000 /* EMC_XM2VTTGENPADCTRL2 */
+                                       0x016eeeee /* EMC_XM2VTTGENPADCTRL3 */
+                                       0x51451420 /* EMC_XM2DQSPADCTRL3 */
+                                       0x00514514 /* EMC_XM2DQSPADCTRL4 */
+                                       0x00514514 /* EMC_XM2DQSPADCTRL5 */
+                                       0x51451400 /* EMC_XM2DQSPADCTRL6 */
+                                       0x0606003f /* EMC_DSR_VTTGEN_DRV */
+                                       0x00000000 /* EMC_TXDSRVTTGEN */
+                                       0x00000000 /* EMC_FBIO_SPARE */
+                                       0x00000100 /* EMC_ZCAL_WAIT_CNT */
+                                       0x0128000c /* EMC_MRS_WAIT_CNT2 */
+                                       0x00000000 /* EMC_CTT */
+                                       0x00000003 /* EMC_CTT_DURATION */
+                                       0x000040a0 /* EMC_CFG_PIPE */
+                                       0x800024aa /* EMC_DYN_SELF_REF_CONTROL */
+                                       0x0000000e /* EMC_QPOP */
+                               >;
+                       };
+
+                       timing-792000000 {
+                               clock-frequency = <792000000>;
+
+                               nvidia,emc-auto-cal-config = <0xa1430000>;
+                               nvidia,emc-auto-cal-config2 = <0x00000000>;
+                               nvidia,emc-auto-cal-config3 = <0x00000000>;
+                               nvidia,emc-auto-cal-interval = <0x001fffff>;
+                               nvidia,emc-bgbias-ctl0 = <0x00000000>;
+                               nvidia,emc-cfg = <0x73300000>;
+                               nvidia,emc-cfg-2 = <0x0080089d>;
+                               nvidia,emc-ctt-term-ctrl = <0x00000802>;
+                               nvidia,emc-mode-1 = <0x80100002>;
+                               nvidia,emc-mode-2 = <0x80200418>;
+                               nvidia,emc-mode-4 = <0x00000000>;
+                               nvidia,emc-mode-reset = <0x80000d71>;
+                               nvidia,emc-mrs-wait-cnt = <0x00f8000c>;
+                               nvidia,emc-sel-dpd-ctrl = <0x00040000>;
+                               nvidia,emc-xm2dqspadctrl2 = <0x0120113d>;
+                               nvidia,emc-zcal-cnt-long = <0x00000042>;
+                               nvidia,emc-zcal-interval = <0x00020000>;
+
+                               nvidia,emc-configuration = <
+                                       0x00000025 /* EMC_RC */
+                                       0x000000cc /* EMC_RFC */
+                                       0x00000000 /* EMC_RFC_SLR */
+                                       0x0000001a /* EMC_RAS */
+                                       0x00000009 /* EMC_RP */
+                                       0x00000008 /* EMC_R2W */
+                                       0x0000000d /* EMC_W2R */
+                                       0x00000004 /* EMC_R2P */
+                                       0x00000013 /* EMC_W2P */
+                                       0x00000009 /* EMC_RD_RCD */
+                                       0x00000009 /* EMC_WR_RCD */
+                                       0x00000004 /* EMC_RRD */
+                                       0x00000002 /* EMC_REXT */
+                                       0x00000000 /* EMC_WEXT */
+                                       0x00000006 /* EMC_WDV */
+                                       0x00000006 /* EMC_WDV_MASK */
+                                       0x0000000b /* EMC_QUSE */
+                                       0x00000002 /* EMC_QUSE_WIDTH */
+                                       0x00000000 /* EMC_IBDLY */
+                                       0x00000002 /* EMC_EINPUT */
+                                       0x0000000d /* EMC_EINPUT_DURATION */
+                                       0x00080000 /* EMC_PUTERM_EXTRA */
+                                       0x00000004 /* EMC_PUTERM_WIDTH */
+                                       0x00000000 /* EMC_PUTERM_ADJ */
+                                       0x00000000 /* EMC_CDB_CNTL_1 */
+                                       0x00000000 /* EMC_CDB_CNTL_2 */
+                                       0x00000000 /* EMC_CDB_CNTL_3 */
+                                       0x00000001 /* EMC_QRST */
+                                       0x00000014 /* EMC_QSAFE */
+                                       0x00000018 /* EMC_RDV */
+                                       0x0000001a /* EMC_RDV_MASK */
+                                       0x000017e2 /* EMC_REFRESH */
+                                       0x00000000 /* EMC_BURST_REFRESH_NUM */
+                                       0x000005f8 /* EMC_PRE_REFRESH_REQ_CNT */
+                                       0x00000003 /* EMC_PDEX2WR */
+                                       0x00000011 /* EMC_PDEX2RD */
+                                       0x00000001 /* EMC_PCHG2PDEN */
+                                       0x00000000 /* EMC_ACT2PDEN */
+                                       0x000000c6 /* EMC_AR2PDEN */
+                                       0x00000018 /* EMC_RW2PDEN */
+                                       0x000000d6 /* EMC_TXSR */
+                                       0x00000200 /* EMC_TXSRDLL */
+                                       0x00000005 /* EMC_TCKE */
+                                       0x00000006 /* EMC_TCKESR */
+                                       0x00000005 /* EMC_TPD */
+                                       0x0000001d /* EMC_TFAW */
+                                       0x00000000 /* EMC_TRPAB */
+                                       0x00000008 /* EMC_TCLKSTABLE */
+                                       0x00000008 /* EMC_TCLKSTOP */
+                                       0x00001822 /* EMC_TREFBW */
+                                       0x00000000 /* EMC_FBIO_CFG6 */
+                                       0x80000005 /* EMC_ODT_WRITE */
+                                       0x00000000 /* EMC_ODT_READ */
+                                       0x104ab198 /* EMC_FBIO_CFG5 */
+                                       0xe00700b1 /* EMC_CFG_DIG_DLL */
+                                       0x00008000 /* EMC_CFG_DIG_DLL_PERIOD */
+                                       0x00000009 /* EMC_DLL_XFORM_DQS0 */
+                                       0x00000009 /* EMC_DLL_XFORM_DQS1 */
+                                       0x00000009 /* EMC_DLL_XFORM_DQS2 */
+                                       0x00000007 /* EMC_DLL_XFORM_DQS3 */
+                                       0x00000006 /* EMC_DLL_XFORM_DQS4 */
+                                       0x00000006 /* EMC_DLL_XFORM_DQS5 */
+                                       0x007fc009 /* EMC_DLL_XFORM_DQS6 */
+                                       0x00000006 /* EMC_DLL_XFORM_DQS7 */
+                                       0x00000009 /* EMC_DLL_XFORM_DQS8 */
+                                       0x00000009 /* EMC_DLL_XFORM_DQS9 */
+                                       0x00000009 /* EMC_DLL_XFORM_DQS10 */
+                                       0x00000007 /* EMC_DLL_XFORM_DQS11 */
+                                       0x00000006 /* EMC_DLL_XFORM_DQS12 */
+                                       0x00000007 /* EMC_DLL_XFORM_DQS13 */
+                                       0x00000009 /* EMC_DLL_XFORM_DQS14 */
+                                       0x00000007 /* EMC_DLL_XFORM_DQS15 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE0 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE1 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE2 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE3 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE4 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE5 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE6 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE7 */
+                                       0x00034002 /* EMC_DLL_XFORM_ADDR0 */
+                                       0x00034002 /* EMC_DLL_XFORM_ADDR1 */
+                                       0x00000000 /* EMC_DLL_XFORM_ADDR2 */
+                                       0x00034002 /* EMC_DLL_XFORM_ADDR3 */
+                                       0x00034002 /* EMC_DLL_XFORM_ADDR4 */
+                                       0x00000000 /* EMC_DLL_XFORM_ADDR5 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE8 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE9 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE10 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE11 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE12 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE13 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE14 */
+                                       0x00000000 /* EMC_DLL_XFORM_QUSE15 */
+                                       0x00000008 /* EMC_DLI_TRIM_TXDQS0 */
+                                       0x00000008 /* EMC_DLI_TRIM_TXDQS1 */
+                                       0x00000005 /* EMC_DLI_TRIM_TXDQS2 */
+                                       0x00000009 /* EMC_DLI_TRIM_TXDQS3 */
+                                       0x00000009 /* EMC_DLI_TRIM_TXDQS4 */
+                                       0x00000007 /* EMC_DLI_TRIM_TXDQS5 */
+                                       0x00000009 /* EMC_DLI_TRIM_TXDQS6 */
+                                       0x00000008 /* EMC_DLI_TRIM_TXDQS7 */
+                                       0x00000008 /* EMC_DLI_TRIM_TXDQS8 */
+                                       0x00000008 /* EMC_DLI_TRIM_TXDQS9 */
+                                       0x00000005 /* EMC_DLI_TRIM_TXDQS10 */
+                                       0x00000009 /* EMC_DLI_TRIM_TXDQS11 */
+                                       0x00000009 /* EMC_DLI_TRIM_TXDQS12 */
+                                       0x00000007 /* EMC_DLI_TRIM_TXDQS13 */
+                                       0x00000009 /* EMC_DLI_TRIM_TXDQS14 */
+                                       0x00000008 /* EMC_DLI_TRIM_TXDQS15 */
+                                       0x0000000e /* EMC_DLL_XFORM_DQ0 */
+                                       0x0000000e /* EMC_DLL_XFORM_DQ1 */
+                                       0x0000000e /* EMC_DLL_XFORM_DQ2 */
+                                       0x0000000e /* EMC_DLL_XFORM_DQ3 */
+                                       0x0000000e /* EMC_DLL_XFORM_DQ4 */
+                                       0x0000000e /* EMC_DLL_XFORM_DQ5 */
+                                       0x0000000e /* EMC_DLL_XFORM_DQ6 */
+                                       0x0000000e /* EMC_DLL_XFORM_DQ7 */
+                                       0x100002a0 /* EMC_XM2CMDPADCTRL */
+                                       0x00000000 /* EMC_XM2CMDPADCTRL4 */
+                                       0x00111111 /* EMC_XM2CMDPADCTRL5 */
+                                       0x00000000 /* EMC_XM2DQPADCTRL2 */
+                                       0x00000000 /* EMC_XM2DQPADCTRL3 */
+                                       0x77ffc085 /* EMC_XM2CLKPADCTRL */
+                                       0x00000101 /* EMC_XM2CLKPADCTRL2 */
+                                       0x81f1f108 /* EMC_XM2COMPPADCTRL */
+                                       0x07070004 /* EMC_XM2VTTGENPADCTRL */
+                                       0x00000000 /* EMC_XM2VTTGENPADCTRL2 */
+                                       0x016eeeee /* EMC_XM2VTTGENPADCTRL3 */
+                                       0x61861820 /* EMC_XM2DQSPADCTRL3 */
+                                       0x004d34d3 /* EMC_XM2DQSPADCTRL4 */
+                                       0x004d34d3 /* EMC_XM2DQSPADCTRL5 */
+                                       0x61861800 /* EMC_XM2DQSPADCTRL6 */
+                                       0x0606003f /* EMC_DSR_VTTGEN_DRV */
+                                       0x00000000 /* EMC_TXDSRVTTGEN */
+                                       0x00000000 /* EMC_FBIO_SPARE */
+                                       0x00000100 /* EMC_ZCAL_WAIT_CNT */
+                                       0x00f8000c /* EMC_MRS_WAIT_CNT2 */
+                                       0x00000007 /* EMC_CTT */
+                                       0x00000004 /* EMC_CTT_DURATION */
+                                       0x00004080 /* EMC_CFG_PIPE */
+                                       0x80003012 /* EMC_DYN_SELF_REF_CONTROL */
+                                       0x0000000f /* EMC_QPOP */
+                               >;
+                       };
+               };
+       };
+
+       memory-controller@70019000 {
+               emc-timings-1 {
+                       nvidia,ram-code = <1>;
+
+                       timing-12750000 {
+                               clock-frequency = <12750000>;
+
+                               nvidia,emem-configuration = <
+                                       0x40040001 /* MC_EMEM_ARB_CFG */
+                                       0x8000000a /* MC_EMEM_ARB_OUTSTANDING_REQ */
+                                       0x00000001 /* MC_EMEM_ARB_TIMING_RCD */
+                                       0x00000001 /* MC_EMEM_ARB_TIMING_RP */
+                                       0x00000002 /* MC_EMEM_ARB_TIMING_RC */
+                                       0x00000000 /* MC_EMEM_ARB_TIMING_RAS */
+                                       0x00000002 /* MC_EMEM_ARB_TIMING_FAW */
+                                       0x00000001 /* MC_EMEM_ARB_TIMING_RRD */
+                                       0x00000002 /* MC_EMEM_ARB_TIMING_RAP2PRE */
+                                       0x00000008 /* MC_EMEM_ARB_TIMING_WAP2PRE */
+                                       0x00000003 /* MC_EMEM_ARB_TIMING_R2R */
+                                       0x00000002 /* MC_EMEM_ARB_TIMING_W2W */
+                                       0x00000003 /* MC_EMEM_ARB_TIMING_R2W */
+                                       0x00000006 /* MC_EMEM_ARB_TIMING_W2R */
+                                       0x06030203 /* MC_EMEM_ARB_DA_TURNS */
+                                       0x000a0402 /* MC_EMEM_ARB_DA_COVERS */
+                                       0x77e30303 /* MC_EMEM_ARB_MISC0 */
+                                       0x70000f03 /* MC_EMEM_ARB_MISC1 */
+                                       0x001f0000 /* MC_EMEM_ARB_RING1_THROTTLE */
+                               >;
+                       };
+
+                       timing-20400000 {
+                               clock-frequency = <20400000>;
+
+                               nvidia,emem-configuration = <
+                                       0x40020001 /* MC_EMEM_ARB_CFG */
+                                       0x80000012 /* MC_EMEM_ARB_OUTSTANDING_REQ */
+                                       0x00000001 /* MC_EMEM_ARB_TIMING_RCD */
+                                       0x00000001 /* MC_EMEM_ARB_TIMING_RP */
+                                       0x00000002 /* MC_EMEM_ARB_TIMING_RC */
+                                       0x00000000 /* MC_EMEM_ARB_TIMING_RAS */
+                                       0x00000002 /* MC_EMEM_ARB_TIMING_FAW */
+                                       0x00000001 /* MC_EMEM_ARB_TIMING_RRD */
+                                       0x00000002 /* MC_EMEM_ARB_TIMING_RAP2PRE */
+                                       0x00000008 /* MC_EMEM_ARB_TIMING_WAP2PRE */
+                                       0x00000003 /* MC_EMEM_ARB_TIMING_R2R */
+                                       0x00000002 /* MC_EMEM_ARB_TIMING_W2W */
+                                       0x00000003 /* MC_EMEM_ARB_TIMING_R2W */
+                                       0x00000006 /* MC_EMEM_ARB_TIMING_W2R */
+                                       0x06030203 /* MC_EMEM_ARB_DA_TURNS */
+                                       0x000a0402 /* MC_EMEM_ARB_DA_COVERS */
+                                       0x76230303 /* MC_EMEM_ARB_MISC0 */
+                                       0x70000f03 /* MC_EMEM_ARB_MISC1 */
+                                       0x001f0000 /* MC_EMEM_ARB_RING1_THROTTLE */
+                               >;
+                       };
+
+                       timing-40800000 {
+                               clock-frequency = <40800000>;
+
+                               nvidia,emem-configuration = <
+                                       0xa0000001 /* MC_EMEM_ARB_CFG */
+                                       0x80000017 /* MC_EMEM_ARB_OUTSTANDING_REQ */
+                                       0x00000001 /* MC_EMEM_ARB_TIMING_RCD */
+                                       0x00000001 /* MC_EMEM_ARB_TIMING_RP */
+                                       0x00000002 /* MC_EMEM_ARB_TIMING_RC */
+                                       0x00000000 /* MC_EMEM_ARB_TIMING_RAS */
+                                       0x00000002 /* MC_EMEM_ARB_TIMING_FAW */
+                                       0x00000001 /* MC_EMEM_ARB_TIMING_RRD */
+                                       0x00000002 /* MC_EMEM_ARB_TIMING_RAP2PRE */
+                                       0x00000008 /* MC_EMEM_ARB_TIMING_WAP2PRE */
+                                       0x00000003 /* MC_EMEM_ARB_TIMING_R2R */
+                                       0x00000002 /* MC_EMEM_ARB_TIMING_W2W */
+                                       0x00000003 /* MC_EMEM_ARB_TIMING_R2W */
+                                       0x00000006 /* MC_EMEM_ARB_TIMING_W2R */
+                                       0x06030203 /* MC_EMEM_ARB_DA_TURNS */
+                                       0x000a0402 /* MC_EMEM_ARB_DA_COVERS */
+                                       0x74a30303 /* MC_EMEM_ARB_MISC0 */
+                                       0x70000f03 /* MC_EMEM_ARB_MISC1 */
+                                       0x001f0000 /* MC_EMEM_ARB_RING1_THROTTLE */
+                               >;
+                       };
+
+                       timing-68000000 {
+                               clock-frequency = <68000000>;
+
+                               nvidia,emem-configuration = <
+                                       0x00000001 /* MC_EMEM_ARB_CFG */
+                                       0x8000001e /* MC_EMEM_ARB_OUTSTANDING_REQ */
+                                       0x00000001 /* MC_EMEM_ARB_TIMING_RCD */
+                                       0x00000001 /* MC_EMEM_ARB_TIMING_RP */
+                                       0x00000002 /* MC_EMEM_ARB_TIMING_RC */
+                                       0x00000000 /* MC_EMEM_ARB_TIMING_RAS */
+                                       0x00000002 /* MC_EMEM_ARB_TIMING_FAW */
+                                       0x00000001 /* MC_EMEM_ARB_TIMING_RRD */
+                                       0x00000002 /* MC_EMEM_ARB_TIMING_RAP2PRE */
+                                       0x00000008 /* MC_EMEM_ARB_TIMING_WAP2PRE */
+                                       0x00000003 /* MC_EMEM_ARB_TIMING_R2R */
+                                       0x00000002 /* MC_EMEM_ARB_TIMING_W2W */
+                                       0x00000003 /* MC_EMEM_ARB_TIMING_R2W */
+                                       0x00000006 /* MC_EMEM_ARB_TIMING_W2R */
+                                       0x06030203 /* MC_EMEM_ARB_DA_TURNS */
+                                       0x000a0402 /* MC_EMEM_ARB_DA_COVERS */
+                                       0x74230403 /* MC_EMEM_ARB_MISC0 */
+                                       0x70000f03 /* MC_EMEM_ARB_MISC1 */
+                                       0x001f0000 /* MC_EMEM_ARB_RING1_THROTTLE */
+                               >;
+                       };
+
+                       timing-102000000 {
+                               clock-frequency = <102000000>;
+
+                               nvidia,emem-configuration = <
+                                       0x08000001 /* MC_EMEM_ARB_CFG */
+                                       0x80000026 /* MC_EMEM_ARB_OUTSTANDING_REQ */
+                                       0x00000001 /* MC_EMEM_ARB_TIMING_RCD */
+                                       0x00000001 /* MC_EMEM_ARB_TIMING_RP */
+                                       0x00000003 /* MC_EMEM_ARB_TIMING_RC */
+                                       0x00000000 /* MC_EMEM_ARB_TIMING_RAS */
+                                       0x00000002 /* MC_EMEM_ARB_TIMING_FAW */
+                                       0x00000001 /* MC_EMEM_ARB_TIMING_RRD */
+                                       0x00000002 /* MC_EMEM_ARB_TIMING_RAP2PRE */
+                                       0x00000008 /* MC_EMEM_ARB_TIMING_WAP2PRE */
+                                       0x00000003 /* MC_EMEM_ARB_TIMING_R2R */
+                                       0x00000002 /* MC_EMEM_ARB_TIMING_W2W */
+                                       0x00000003 /* MC_EMEM_ARB_TIMING_R2W */
+                                       0x00000006 /* MC_EMEM_ARB_TIMING_W2R */
+                                       0x06030203 /* MC_EMEM_ARB_DA_TURNS */
+                                       0x000a0403 /* MC_EMEM_ARB_DA_COVERS */
+                                       0x73c30504 /* MC_EMEM_ARB_MISC0 */
+                                       0x70000f03 /* MC_EMEM_ARB_MISC1 */
+                                       0x001f0000 /* MC_EMEM_ARB_RING1_THROTTLE */
+                               >;
+                       };
+
+                       timing-204000000 {
+                               clock-frequency = <204000000>;
+
+                               nvidia,emem-configuration = <
+                                       0x01000003 /* MC_EMEM_ARB_CFG */
+                                       0x80000040 /* MC_EMEM_ARB_OUTSTANDING_REQ */
+                                       0x00000001 /* MC_EMEM_ARB_TIMING_RCD */
+                                       0x00000001 /* MC_EMEM_ARB_TIMING_RP */
+                                       0x00000005 /* MC_EMEM_ARB_TIMING_RC */
+                                       0x00000002 /* MC_EMEM_ARB_TIMING_RAS */
+                                       0x00000004 /* MC_EMEM_ARB_TIMING_FAW */
+                                       0x00000001 /* MC_EMEM_ARB_TIMING_RRD */
+                                       0x00000002 /* MC_EMEM_ARB_TIMING_RAP2PRE */
+                                       0x00000008 /* MC_EMEM_ARB_TIMING_WAP2PRE */
+                                       0x00000003 /* MC_EMEM_ARB_TIMING_R2R */
+                                       0x00000002 /* MC_EMEM_ARB_TIMING_W2W */
+                                       0x00000004 /* MC_EMEM_ARB_TIMING_R2W */
+                                       0x00000006 /* MC_EMEM_ARB_TIMING_W2R */
+                                       0x06040203 /* MC_EMEM_ARB_DA_TURNS */
+                                       0x000a0405 /* MC_EMEM_ARB_DA_COVERS */
+                                       0x73840a06 /* MC_EMEM_ARB_MISC0 */
+                                       0x70000f03 /* MC_EMEM_ARB_MISC1 */
+                                       0x001f0000 /* MC_EMEM_ARB_RING1_THROTTLE */
+                               >;
+                       };
+
+                       timing-300000000 {
+                               clock-frequency = <300000000>;
+
+                               nvidia,emem-configuration = <
+                                       0x08000004 /* MC_EMEM_ARB_CFG */
+                                       0x80000040 /* MC_EMEM_ARB_OUTSTANDING_REQ */
+                                       0x00000001 /* MC_EMEM_ARB_TIMING_RCD */
+                                       0x00000002 /* MC_EMEM_ARB_TIMING_RP */
+                                       0x00000007 /* MC_EMEM_ARB_TIMING_RC */
+                                       0x00000004 /* MC_EMEM_ARB_TIMING_RAS */
+                                       0x00000005 /* MC_EMEM_ARB_TIMING_FAW */
+                                       0x00000001 /* MC_EMEM_ARB_TIMING_RRD */
+                                       0x00000002 /* MC_EMEM_ARB_TIMING_RAP2PRE */
+                                       0x00000007 /* MC_EMEM_ARB_TIMING_WAP2PRE */
+                                       0x00000002 /* MC_EMEM_ARB_TIMING_R2R */
+                                       0x00000002 /* MC_EMEM_ARB_TIMING_W2W */
+                                       0x00000004 /* MC_EMEM_ARB_TIMING_R2W */
+                                       0x00000006 /* MC_EMEM_ARB_TIMING_W2R */
+                                       0x06040202 /* MC_EMEM_ARB_DA_TURNS */
+                                       0x000b0607 /* MC_EMEM_ARB_DA_COVERS */
+                                       0x77450e08 /* MC_EMEM_ARB_MISC0 */
+                                       0x70000f03 /* MC_EMEM_ARB_MISC1 */
+                                       0x001f0000 /* MC_EMEM_ARB_RING1_THROTTLE */
+                               >;
+                       };
+
+                       timing-396000000 {
+                               clock-frequency = <396000000>;
+
+                               nvidia,emem-configuration = <
+                                       0x0f000005 /* MC_EMEM_ARB_CFG */
+                                       0x80000040 /* MC_EMEM_ARB_OUTSTANDING_REQ */
+                                       0x00000001 /* MC_EMEM_ARB_TIMING_RCD */
+                                       0x00000002 /* MC_EMEM_ARB_TIMING_RP */
+                                       0x00000009 /* MC_EMEM_ARB_TIMING_RC */
+                                       0x00000005 /* MC_EMEM_ARB_TIMING_RAS */
+                                       0x00000007 /* MC_EMEM_ARB_TIMING_FAW */
+                                       0x00000001 /* MC_EMEM_ARB_TIMING_RRD */
+                                       0x00000002 /* MC_EMEM_ARB_TIMING_RAP2PRE */
+                                       0x00000008 /* MC_EMEM_ARB_TIMING_WAP2PRE */
+                                       0x00000002 /* MC_EMEM_ARB_TIMING_R2R */
+                                       0x00000002 /* MC_EMEM_ARB_TIMING_W2W */
+                                       0x00000004 /* MC_EMEM_ARB_TIMING_R2W */
+                                       0x00000006 /* MC_EMEM_ARB_TIMING_W2R */
+                                       0x06040202 /* MC_EMEM_ARB_DA_TURNS */
+                                       0x000d0709 /* MC_EMEM_ARB_DA_COVERS */
+                                       0x7586120a /* MC_EMEM_ARB_MISC0 */
+                                       0x70000f03 /* MC_EMEM_ARB_MISC1 */
+                                       0x001f0000 /* MC_EMEM_ARB_RING1_THROTTLE */
+                               >;
+                       };
+
+                       timing-528000000 {
+                               clock-frequency = <528000000>;
+
+                               nvidia,emem-configuration = <
+                                       0x0f000007 /* MC_EMEM_ARB_CFG */
+                                       0x80000040 /* MC_EMEM_ARB_OUTSTANDING_REQ */
+                                       0x00000002 /* MC_EMEM_ARB_TIMING_RCD */
+                                       0x00000003 /* MC_EMEM_ARB_TIMING_RP */
+                                       0x0000000d /* MC_EMEM_ARB_TIMING_RC */
+                                       0x00000008 /* MC_EMEM_ARB_TIMING_RAS */
+                                       0x0000000a /* MC_EMEM_ARB_TIMING_FAW */
+                                       0x00000001 /* MC_EMEM_ARB_TIMING_RRD */
+                                       0x00000002 /* MC_EMEM_ARB_TIMING_RAP2PRE */
+                                       0x00000009 /* MC_EMEM_ARB_TIMING_WAP2PRE */
+                                       0x00000002 /* MC_EMEM_ARB_TIMING_R2R */
+                                       0x00000002 /* MC_EMEM_ARB_TIMING_W2W */
+                                       0x00000005 /* MC_EMEM_ARB_TIMING_R2W */
+                                       0x00000006 /* MC_EMEM_ARB_TIMING_W2R */
+                                       0x06050202 /* MC_EMEM_ARB_DA_TURNS */
+                                       0x0010090d /* MC_EMEM_ARB_DA_COVERS */
+                                       0x7428180e /* MC_EMEM_ARB_MISC0 */
+                                       0x70000f03 /* MC_EMEM_ARB_MISC1 */
+                                       0x001f0000 /* MC_EMEM_ARB_RING1_THROTTLE */
+                               >;
+                       };
+
+                       timing-600000000 {
+                               clock-frequency = <600000000>;
+
+                               nvidia,emem-configuration = <
+                                       0x00000009 /* MC_EMEM_ARB_CFG */
+                                       0x80000040 /* MC_EMEM_ARB_OUTSTANDING_REQ */
+                                       0x00000003 /* MC_EMEM_ARB_TIMING_RCD */
+                                       0x00000004 /* MC_EMEM_ARB_TIMING_RP */
+                                       0x0000000e /* MC_EMEM_ARB_TIMING_RC */
+                                       0x00000009 /* MC_EMEM_ARB_TIMING_RAS */
+                                       0x0000000b /* MC_EMEM_ARB_TIMING_FAW */
+                                       0x00000001 /* MC_EMEM_ARB_TIMING_RRD */
+                                       0x00000003 /* MC_EMEM_ARB_TIMING_RAP2PRE */
+                                       0x0000000b /* MC_EMEM_ARB_TIMING_WAP2PRE */
+                                       0x00000002 /* MC_EMEM_ARB_TIMING_R2R */
+                                       0x00000002 /* MC_EMEM_ARB_TIMING_W2W */
+                                       0x00000005 /* MC_EMEM_ARB_TIMING_R2W */
+                                       0x00000007 /* MC_EMEM_ARB_TIMING_W2R */
+                                       0x07050202 /* MC_EMEM_ARB_DA_TURNS */
+                                       0x00130b0e /* MC_EMEM_ARB_DA_COVERS */
+                                       0x73a91b0f /* MC_EMEM_ARB_MISC0 */
+                                       0x70000f03 /* MC_EMEM_ARB_MISC1 */
+                                       0x001f0000 /* MC_EMEM_ARB_RING1_THROTTLE */
+                               >;
+                       };
+
+                       timing-792000000 {
+                               clock-frequency = <792000000>;
+
+                               nvidia,emem-configuration = <
+                                       0x0e00000b /* MC_EMEM_ARB_CFG */
+                                       0x80000040 /* MC_EMEM_ARB_OUTSTANDING_REQ */
+                                       0x00000004 /* MC_EMEM_ARB_TIMING_RCD */
+                                       0x00000005 /* MC_EMEM_ARB_TIMING_RP */
+                                       0x00000013 /* MC_EMEM_ARB_TIMING_RC */
+                                       0x0000000c /* MC_EMEM_ARB_TIMING_RAS */
+                                       0x0000000f /* MC_EMEM_ARB_TIMING_FAW */
+                                       0x00000002 /* MC_EMEM_ARB_TIMING_RRD */
+                                       0x00000003 /* MC_EMEM_ARB_TIMING_RAP2PRE */
+                                       0x0000000c /* MC_EMEM_ARB_TIMING_WAP2PRE */
+                                       0x00000002 /* MC_EMEM_ARB_TIMING_R2R */
+                                       0x00000002 /* MC_EMEM_ARB_TIMING_W2W */
+                                       0x00000006 /* MC_EMEM_ARB_TIMING_R2W */
+                                       0x00000008 /* MC_EMEM_ARB_TIMING_W2R */
+                                       0x08060202 /* MC_EMEM_ARB_DA_TURNS */
+                                       0x00160d13 /* MC_EMEM_ARB_DA_COVERS */
+                                       0x734c2414 /* MC_EMEM_ARB_MISC0 */
+                                       0x70000f02 /* MC_EMEM_ARB_MISC1 */
+                                       0x001f0000 /* MC_EMEM_ARB_RING1_THROTTLE */
+                               >;
+                       };
+               };
+
+               emc-timings-4 {
+                       nvidia,ram-code = <4>;
+
+                       timing-12750000 {
+                               clock-frequency = <12750000>;
+
+                               nvidia,emem-configuration = <
+                                       0x40040001 /* MC_EMEM_ARB_CFG */
+                                       0x8000000a /* MC_EMEM_ARB_OUTSTANDING_REQ */
+                                       0x00000001 /* MC_EMEM_ARB_TIMING_RCD */
+                                       0x00000001 /* MC_EMEM_ARB_TIMING_RP */
+                                       0x00000002 /* MC_EMEM_ARB_TIMING_RC */
+                                       0x00000000 /* MC_EMEM_ARB_TIMING_RAS */
+                                       0x00000002 /* MC_EMEM_ARB_TIMING_FAW */
+                                       0x00000001 /* MC_EMEM_ARB_TIMING_RRD */
+                                       0x00000003 /* MC_EMEM_ARB_TIMING_RAP2PRE */
+                                       0x00000008 /* MC_EMEM_ARB_TIMING_WAP2PRE */
+                                       0x00000003 /* MC_EMEM_ARB_TIMING_R2R */
+                                       0x00000002 /* MC_EMEM_ARB_TIMING_W2W */
+                                       0x00000003 /* MC_EMEM_ARB_TIMING_R2W */
+                                       0x00000006 /* MC_EMEM_ARB_TIMING_W2R */
+                                       0x06030203 /* MC_EMEM_ARB_DA_TURNS */
+                                       0x000a0502 /* MC_EMEM_ARB_DA_COVERS */
+                                       0x77e30303 /* MC_EMEM_ARB_MISC0 */
+                                       0x70000f03 /* MC_EMEM_ARB_MISC1 */
+                                       0x001f0000 /* MC_EMEM_ARB_RING1_THROTTLE */
+                               >;
+                       };
+
+                       timing-20400000 {
+                               clock-frequency = <20400000>;
+
+                               nvidia,emem-configuration = <
+                                       0x40020001 /* MC_EMEM_ARB_CFG */
+                                       0x80000012 /* MC_EMEM_ARB_OUTSTANDING_REQ */
+                                       0x00000001 /* MC_EMEM_ARB_TIMING_RCD */
+                                       0x00000001 /* MC_EMEM_ARB_TIMING_RP */
+                                       0x00000002 /* MC_EMEM_ARB_TIMING_RC */
+                                       0x00000000 /* MC_EMEM_ARB_TIMING_RAS */
+                                       0x00000002 /* MC_EMEM_ARB_TIMING_FAW */
+                                       0x00000001 /* MC_EMEM_ARB_TIMING_RRD */
+                                       0x00000003 /* MC_EMEM_ARB_TIMING_RAP2PRE */
+                                       0x00000008 /* MC_EMEM_ARB_TIMING_WAP2PRE */
+                                       0x00000003 /* MC_EMEM_ARB_TIMING_R2R */
+                                       0x00000002 /* MC_EMEM_ARB_TIMING_W2W */
+                                       0x00000003 /* MC_EMEM_ARB_TIMING_R2W */
+                                       0x00000006 /* MC_EMEM_ARB_TIMING_W2R */
+                                       0x06030203 /* MC_EMEM_ARB_DA_TURNS */
+                                       0x000a0502 /* MC_EMEM_ARB_DA_COVERS */
+                                       0x77430303 /* MC_EMEM_ARB_MISC0 */
+                                       0x70000f03 /* MC_EMEM_ARB_MISC1 */
+                                       0x001f0000 /* MC_EMEM_ARB_RING1_THROTTLE */
+                               >;
+                       };
+
+                       timing-40800000 {
+                               clock-frequency = <40800000>;
+
+                               nvidia,emem-configuration = <
+                                       0xa0000001 /* MC_EMEM_ARB_CFG */
+                                       0x80000017 /* MC_EMEM_ARB_OUTSTANDING_REQ */
+                                       0x00000001 /* MC_EMEM_ARB_TIMING_RCD */
+                                       0x00000001 /* MC_EMEM_ARB_TIMING_RP */
+                                       0x00000002 /* MC_EMEM_ARB_TIMING_RC */
+                                       0x00000000 /* MC_EMEM_ARB_TIMING_RAS */
+                                       0x00000002 /* MC_EMEM_ARB_TIMING_FAW */
+                                       0x00000001 /* MC_EMEM_ARB_TIMING_RRD */
+                                       0x00000003 /* MC_EMEM_ARB_TIMING_RAP2PRE */
+                                       0x00000008 /* MC_EMEM_ARB_TIMING_WAP2PRE */
+                                       0x00000003 /* MC_EMEM_ARB_TIMING_R2R */
+                                       0x00000002 /* MC_EMEM_ARB_TIMING_W2W */
+                                       0x00000003 /* MC_EMEM_ARB_TIMING_R2W */
+                                       0x00000006 /* MC_EMEM_ARB_TIMING_W2R */
+                                       0x06030203 /* MC_EMEM_ARB_DA_TURNS */
+                                       0x000a0502 /* MC_EMEM_ARB_DA_COVERS */
+                                       0x75e30303 /* MC_EMEM_ARB_MISC0 */
+                                       0x70000f03 /* MC_EMEM_ARB_MISC1 */
+                                       0x001f0000 /* MC_EMEM_ARB_RING1_THROTTLE */
+                               >;
+                       };
+
+                       timing-68000000 {
+                               clock-frequency = <68000000>;
+
+                               nvidia,emem-configuration = <
+                                       0x00000001 /* MC_EMEM_ARB_CFG */
+                                       0x8000001e /* MC_EMEM_ARB_OUTSTANDING_REQ */
+                                       0x00000001 /* MC_EMEM_ARB_TIMING_RCD */
+                                       0x00000001 /* MC_EMEM_ARB_TIMING_RP */
+                                       0x00000002 /* MC_EMEM_ARB_TIMING_RC */
+                                       0x00000000 /* MC_EMEM_ARB_TIMING_RAS */
+                                       0x00000002 /* MC_EMEM_ARB_TIMING_FAW */
+                                       0x00000001 /* MC_EMEM_ARB_TIMING_RRD */
+                                       0x00000003 /* MC_EMEM_ARB_TIMING_RAP2PRE */
+                                       0x00000008 /* MC_EMEM_ARB_TIMING_WAP2PRE */
+                                       0x00000003 /* MC_EMEM_ARB_TIMING_R2R */
+                                       0x00000002 /* MC_EMEM_ARB_TIMING_W2W */
+                                       0x00000003 /* MC_EMEM_ARB_TIMING_R2W */
+                                       0x00000006 /* MC_EMEM_ARB_TIMING_W2R */
+                                       0x06030203 /* MC_EMEM_ARB_DA_TURNS */
+                                       0x000a0502 /* MC_EMEM_ARB_DA_COVERS */
+                                       0x75430403 /* MC_EMEM_ARB_MISC0 */
+                                       0x70000f03 /* MC_EMEM_ARB_MISC1 */
+                                       0x001f0000 /* MC_EMEM_ARB_RING1_THROTTLE */
+                               >;
+                       };
+
+                       timing-102000000 {
+                               clock-frequency = <102000000>;
+
+                               nvidia,emem-configuration = <
+                                       0x08000001 /* MC_EMEM_ARB_CFG */
+                                       0x80000026 /* MC_EMEM_ARB_OUTSTANDING_REQ */
+                                       0x00000001 /* MC_EMEM_ARB_TIMING_RCD */
+                                       0x00000001 /* MC_EMEM_ARB_TIMING_RP */
+                                       0x00000003 /* MC_EMEM_ARB_TIMING_RC */
+                                       0x00000000 /* MC_EMEM_ARB_TIMING_RAS */
+                                       0x00000002 /* MC_EMEM_ARB_TIMING_FAW */
+                                       0x00000001 /* MC_EMEM_ARB_TIMING_RRD */
+                                       0x00000003 /* MC_EMEM_ARB_TIMING_RAP2PRE */
+                                       0x00000008 /* MC_EMEM_ARB_TIMING_WAP2PRE */
+                                       0x00000003 /* MC_EMEM_ARB_TIMING_R2R */
+                                       0x00000002 /* MC_EMEM_ARB_TIMING_W2W */
+                                       0x00000003 /* MC_EMEM_ARB_TIMING_R2W */
+                                       0x00000006 /* MC_EMEM_ARB_TIMING_W2R */
+                                       0x06030203 /* MC_EMEM_ARB_DA_TURNS */
+                                       0x000a0503 /* MC_EMEM_ARB_DA_COVERS */
+                                       0x74e30504 /* MC_EMEM_ARB_MISC0 */
+                                       0x70000f03 /* MC_EMEM_ARB_MISC1 */
+                                       0x001f0000 /* MC_EMEM_ARB_RING1_THROTTLE */
+                               >;
+                       };
+
+                       timing-204000000 {
+                               clock-frequency = <204000000>;
+
+                               nvidia,emem-configuration = <
+                                       0x01000003 /* MC_EMEM_ARB_CFG */
+                                       0x80000040 /* MC_EMEM_ARB_OUTSTANDING_REQ */
+                                       0x00000001 /* MC_EMEM_ARB_TIMING_RCD */
+                                       0x00000001 /* MC_EMEM_ARB_TIMING_RP */
+                                       0x00000004 /* MC_EMEM_ARB_TIMING_RC */
+                                       0x00000002 /* MC_EMEM_ARB_TIMING_RAS */
+                                       0x00000004 /* MC_EMEM_ARB_TIMING_FAW */
+                                       0x00000001 /* MC_EMEM_ARB_TIMING_RRD */
+                                       0x00000003 /* MC_EMEM_ARB_TIMING_RAP2PRE */
+                                       0x00000008 /* MC_EMEM_ARB_TIMING_WAP2PRE */
+                                       0x00000003 /* MC_EMEM_ARB_TIMING_R2R */
+                                       0x00000002 /* MC_EMEM_ARB_TIMING_W2W */
+                                       0x00000004 /* MC_EMEM_ARB_TIMING_R2W */
+                                       0x00000006 /* MC_EMEM_ARB_TIMING_W2R */
+                                       0x06040203 /* MC_EMEM_ARB_DA_TURNS */
+                                       0x000a0504 /* MC_EMEM_ARB_DA_COVERS */
+                                       0x74a40a05 /* MC_EMEM_ARB_MISC0 */
+                                       0x70000f03 /* MC_EMEM_ARB_MISC1 */
+                                       0x001f0000 /* MC_EMEM_ARB_RING1_THROTTLE */
+                               >;
+                       };
+
+                       timing-300000000 {
+                               clock-frequency = <300000000>;
+
+                               nvidia,emem-configuration = <
+                                       0x08000004 /* MC_EMEM_ARB_CFG */
+                                       0x80000040 /* MC_EMEM_ARB_OUTSTANDING_REQ */
+                                       0x00000001 /* MC_EMEM_ARB_TIMING_RCD */
+                                       0x00000002 /* MC_EMEM_ARB_TIMING_RP */
+                                       0x00000007 /* MC_EMEM_ARB_TIMING_RC */
+                                       0x00000004 /* MC_EMEM_ARB_TIMING_RAS */
+                                       0x00000005 /* MC_EMEM_ARB_TIMING_FAW */
+                                       0x00000001 /* MC_EMEM_ARB_TIMING_RRD */
+                                       0x00000002 /* MC_EMEM_ARB_TIMING_RAP2PRE */
+                                       0x00000007 /* MC_EMEM_ARB_TIMING_WAP2PRE */
+                                       0x00000002 /* MC_EMEM_ARB_TIMING_R2R */
+                                       0x00000002 /* MC_EMEM_ARB_TIMING_W2W */
+                                       0x00000004 /* MC_EMEM_ARB_TIMING_R2W */
+                                       0x00000006 /* MC_EMEM_ARB_TIMING_W2R */
+                                       0x06040202 /* MC_EMEM_ARB_DA_TURNS */
+                                       0x000b0607 /* MC_EMEM_ARB_DA_COVERS */
+                                       0x77450e08 /* MC_EMEM_ARB_MISC0 */
+                                       0x70000f03 /* MC_EMEM_ARB_MISC1 */
+                                       0x001f0000 /* MC_EMEM_ARB_RING1_THROTTLE */
+                               >;
+                       };
+
+                       timing-396000000 {
+                               clock-frequency = <396000000>;
+
+                               nvidia,emem-configuration = <
+                                       0x0f000005 /* MC_EMEM_ARB_CFG */
+                                       0x80000040 /* MC_EMEM_ARB_OUTSTANDING_REQ */
+                                       0x00000001 /* MC_EMEM_ARB_TIMING_RCD */
+                                       0x00000002 /* MC_EMEM_ARB_TIMING_RP */
+                                       0x00000009 /* MC_EMEM_ARB_TIMING_RC */
+                                       0x00000005 /* MC_EMEM_ARB_TIMING_RAS */
+                                       0x00000007 /* MC_EMEM_ARB_TIMING_FAW */
+                                       0x00000001 /* MC_EMEM_ARB_TIMING_RRD */
+                                       0x00000002 /* MC_EMEM_ARB_TIMING_RAP2PRE */
+                                       0x00000008 /* MC_EMEM_ARB_TIMING_WAP2PRE */
+                                       0x00000002 /* MC_EMEM_ARB_TIMING_R2R */
+                                       0x00000002 /* MC_EMEM_ARB_TIMING_W2W */
+                                       0x00000004 /* MC_EMEM_ARB_TIMING_R2W */
+                                       0x00000006 /* MC_EMEM_ARB_TIMING_W2R */
+                                       0x06040202 /* MC_EMEM_ARB_DA_TURNS */
+                                       0x000d0709 /* MC_EMEM_ARB_DA_COVERS */
+                                       0x7586120a /* MC_EMEM_ARB_MISC0 */
+                                       0x70000f03 /* MC_EMEM_ARB_MISC1 */
+                                       0x001f0000 /* MC_EMEM_ARB_RING1_THROTTLE */
+                               >;
+                       };
+
+                       timing-528000000 {
+                               clock-frequency = <528000000>;
+
+                               nvidia,emem-configuration = <
+                                       0x0f000007 /* MC_EMEM_ARB_CFG */
+                                       0x80000040 /* MC_EMEM_ARB_OUTSTANDING_REQ */
+                                       0x00000002 /* MC_EMEM_ARB_TIMING_RCD */
+                                       0x00000003 /* MC_EMEM_ARB_TIMING_RP */
+                                       0x0000000c /* MC_EMEM_ARB_TIMING_RC */
+                                       0x00000007 /* MC_EMEM_ARB_TIMING_RAS */
+                                       0x0000000a /* MC_EMEM_ARB_TIMING_FAW */
+                                       0x00000001 /* MC_EMEM_ARB_TIMING_RRD */
+                                       0x00000002 /* MC_EMEM_ARB_TIMING_RAP2PRE */
+                                       0x00000009 /* MC_EMEM_ARB_TIMING_WAP2PRE */
+                                       0x00000002 /* MC_EMEM_ARB_TIMING_R2R */
+                                       0x00000002 /* MC_EMEM_ARB_TIMING_W2W */
+                                       0x00000005 /* MC_EMEM_ARB_TIMING_R2W */
+                                       0x00000006 /* MC_EMEM_ARB_TIMING_W2R */
+                                       0x06050202 /* MC_EMEM_ARB_DA_TURNS */
+                                       0x0010090c /* MC_EMEM_ARB_DA_COVERS */
+                                       0x7488180d /* MC_EMEM_ARB_MISC0 */
+                                       0x70000f03 /* MC_EMEM_ARB_MISC1 */
+                                       0x001f0000 /* MC_EMEM_ARB_RING1_THROTTLE */
+                               >;
+                       };
+
+                       timing-600000000 {
+                               clock-frequency = <600000000>;
+
+                               nvidia,emem-configuration = <
+                                       0x00000009 /* MC_EMEM_ARB_CFG */
+                                       0x80000040 /* MC_EMEM_ARB_OUTSTANDING_REQ */
+                                       0x00000003 /* MC_EMEM_ARB_TIMING_RCD */
+                                       0x00000004 /* MC_EMEM_ARB_TIMING_RP */
+                                       0x0000000e /* MC_EMEM_ARB_TIMING_RC */
+                                       0x00000009 /* MC_EMEM_ARB_TIMING_RAS */
+                                       0x0000000b /* MC_EMEM_ARB_TIMING_FAW */
+                                       0x00000001 /* MC_EMEM_ARB_TIMING_RRD */
+                                       0x00000003 /* MC_EMEM_ARB_TIMING_RAP2PRE */
+                                       0x0000000b /* MC_EMEM_ARB_TIMING_WAP2PRE */
+                                       0x00000002 /* MC_EMEM_ARB_TIMING_R2R */
+                                       0x00000002 /* MC_EMEM_ARB_TIMING_W2W */
+                                       0x00000005 /* MC_EMEM_ARB_TIMING_R2W */
+                                       0x00000007 /* MC_EMEM_ARB_TIMING_W2R */
+                                       0x07050202 /* MC_EMEM_ARB_DA_TURNS */
+                                       0x00130b0e /* MC_EMEM_ARB_DA_COVERS */
+                                       0x74691b0f /* MC_EMEM_ARB_MISC0 */
+                                       0x70000f03 /* MC_EMEM_ARB_MISC1 */
+                                       0x001f0000 /* MC_EMEM_ARB_RING1_THROTTLE */
+                               >;
+                       };
+
+                       timing-792000000 {
+                               clock-frequency = <792000000>;
+
+                               nvidia,emem-configuration = <
+                                       0x0e00000b /* MC_EMEM_ARB_CFG */
+                                       0x80000040 /* MC_EMEM_ARB_OUTSTANDING_REQ */
+                                       0x00000004 /* MC_EMEM_ARB_TIMING_RCD */
+                                       0x00000005 /* MC_EMEM_ARB_TIMING_RP */
+                                       0x00000013 /* MC_EMEM_ARB_TIMING_RC */
+                                       0x0000000c /* MC_EMEM_ARB_TIMING_RAS */
+                                       0x0000000f /* MC_EMEM_ARB_TIMING_FAW */
+                                       0x00000002 /* MC_EMEM_ARB_TIMING_RRD */
+                                       0x00000003 /* MC_EMEM_ARB_TIMING_RAP2PRE */
+                                       0x0000000c /* MC_EMEM_ARB_TIMING_WAP2PRE */
+                                       0x00000002 /* MC_EMEM_ARB_TIMING_R2R */
+                                       0x00000002 /* MC_EMEM_ARB_TIMING_W2W */
+                                       0x00000006 /* MC_EMEM_ARB_TIMING_R2W */
+                                       0x00000008 /* MC_EMEM_ARB_TIMING_W2R */
+                                       0x08060202 /* MC_EMEM_ARB_DA_TURNS */
+                                       0x00170e13 /* MC_EMEM_ARB_DA_COVERS */
+                                       0x746c2414 /* MC_EMEM_ARB_MISC0 */
+                                       0x70000f02 /* MC_EMEM_ARB_MISC1 */
+                                       0x001f0000 /* MC_EMEM_ARB_RING1_THROTTLE */
+                               >;
+                       };
+               };
+
+               emc-timings-6 {
+                       nvidia,ram-code = <6>;
+
+                       timing-12750000 {
+                               clock-frequency = <12750000>;
+
+                               nvidia,emem-configuration = <
+                                       0x40040001 /* MC_EMEM_ARB_CFG */
+                                       0x8000000a /* MC_EMEM_ARB_OUTSTANDING_REQ */
+                                       0x00000001 /* MC_EMEM_ARB_TIMING_RCD */
+                                       0x00000001 /* MC_EMEM_ARB_TIMING_RP */
+                                       0x00000002 /* MC_EMEM_ARB_TIMING_RC */
+                                       0x00000000 /* MC_EMEM_ARB_TIMING_RAS */
+                                       0x00000002 /* MC_EMEM_ARB_TIMING_FAW */
+                                       0x00000001 /* MC_EMEM_ARB_TIMING_RRD */
+                                       0x00000002 /* MC_EMEM_ARB_TIMING_RAP2PRE */
+                                       0x00000008 /* MC_EMEM_ARB_TIMING_WAP2PRE */
+                                       0x00000003 /* MC_EMEM_ARB_TIMING_R2R */
+                                       0x00000002 /* MC_EMEM_ARB_TIMING_W2W */
+                                       0x00000003 /* MC_EMEM_ARB_TIMING_R2W */
+                                       0x00000006 /* MC_EMEM_ARB_TIMING_W2R */
+                                       0x06030203 /* MC_EMEM_ARB_DA_TURNS */
+                                       0x000a0402 /* MC_EMEM_ARB_DA_COVERS */
+                                       0x77e30303 /* MC_EMEM_ARB_MISC0 */
+                                       0x70000f03 /* MC_EMEM_ARB_MISC1 */
+                                       0x001f0000 /* MC_EMEM_ARB_RING1_THROTTLE */
+                               >;
+                       };
+
+                       timing-20400000 {
+                               clock-frequency = <20400000>;
+
+                               nvidia,emem-configuration = <
+                                       0x40020001 /* MC_EMEM_ARB_CFG */
+                                       0x80000012 /* MC_EMEM_ARB_OUTSTANDING_REQ */
+                                       0x00000001 /* MC_EMEM_ARB_TIMING_RCD */
+                                       0x00000001 /* MC_EMEM_ARB_TIMING_RP */
+                                       0x00000002 /* MC_EMEM_ARB_TIMING_RC */
+                                       0x00000000 /* MC_EMEM_ARB_TIMING_RAS */
+                                       0x00000002 /* MC_EMEM_ARB_TIMING_FAW */
+                                       0x00000001 /* MC_EMEM_ARB_TIMING_RRD */
+                                       0x00000002 /* MC_EMEM_ARB_TIMING_RAP2PRE */
+                                       0x00000008 /* MC_EMEM_ARB_TIMING_WAP2PRE */
+                                       0x00000003 /* MC_EMEM_ARB_TIMING_R2R */
+                                       0x00000002 /* MC_EMEM_ARB_TIMING_W2W */
+                                       0x00000003 /* MC_EMEM_ARB_TIMING_R2W */
+                                       0x00000006 /* MC_EMEM_ARB_TIMING_W2R */
+                                       0x06030203 /* MC_EMEM_ARB_DA_TURNS */
+                                       0x000a0402 /* MC_EMEM_ARB_DA_COVERS */
+                                       0x76230303 /* MC_EMEM_ARB_MISC0 */
+                                       0x70000f03 /* MC_EMEM_ARB_MISC1 */
+                                       0x001f0000 /* MC_EMEM_ARB_RING1_THROTTLE */
+                               >;
+                       };
+
+                       timing-40800000 {
+                               clock-frequency = <40800000>;
+
+                               nvidia,emem-configuration = <
+                                       0xa0000001 /* MC_EMEM_ARB_CFG */
+                                       0x80000017 /* MC_EMEM_ARB_OUTSTANDING_REQ */
+                                       0x00000001 /* MC_EMEM_ARB_TIMING_RCD */
+                                       0x00000001 /* MC_EMEM_ARB_TIMING_RP */
+                                       0x00000002 /* MC_EMEM_ARB_TIMING_RC */
+                                       0x00000000 /* MC_EMEM_ARB_TIMING_RAS */
+                                       0x00000002 /* MC_EMEM_ARB_TIMING_FAW */
+                                       0x00000001 /* MC_EMEM_ARB_TIMING_RRD */
+                                       0x00000002 /* MC_EMEM_ARB_TIMING_RAP2PRE */
+                                       0x00000008 /* MC_EMEM_ARB_TIMING_WAP2PRE */
+                                       0x00000003 /* MC_EMEM_ARB_TIMING_R2R */
+                                       0x00000002 /* MC_EMEM_ARB_TIMING_W2W */
+                                       0x00000003 /* MC_EMEM_ARB_TIMING_R2W */
+                                       0x00000006 /* MC_EMEM_ARB_TIMING_W2R */
+                                       0x06030203 /* MC_EMEM_ARB_DA_TURNS */
+                                       0x000a0402 /* MC_EMEM_ARB_DA_COVERS */
+                                       0x74a30303 /* MC_EMEM_ARB_MISC0 */
+                                       0x70000f03 /* MC_EMEM_ARB_MISC1 */
+                                       0x001f0000 /* MC_EMEM_ARB_RING1_THROTTLE */
+                               >;
+                       };
+
+                       timing-68000000 {
+                               clock-frequency = <68000000>;
+
+                               nvidia,emem-configuration = <
+                                       0x00000001 /* MC_EMEM_ARB_CFG */
+                                       0x8000001e /* MC_EMEM_ARB_OUTSTANDING_REQ */
+                                       0x00000001 /* MC_EMEM_ARB_TIMING_RCD */
+                                       0x00000001 /* MC_EMEM_ARB_TIMING_RP */
+                                       0x00000002 /* MC_EMEM_ARB_TIMING_RC */
+                                       0x00000000 /* MC_EMEM_ARB_TIMING_RAS */
+                                       0x00000002 /* MC_EMEM_ARB_TIMING_FAW */
+                                       0x00000001 /* MC_EMEM_ARB_TIMING_RRD */
+                                       0x00000002 /* MC_EMEM_ARB_TIMING_RAP2PRE */
+                                       0x00000008 /* MC_EMEM_ARB_TIMING_WAP2PRE */
+                                       0x00000003 /* MC_EMEM_ARB_TIMING_R2R */
+                                       0x00000002 /* MC_EMEM_ARB_TIMING_W2W */
+                                       0x00000003 /* MC_EMEM_ARB_TIMING_R2W */
+                                       0x00000006 /* MC_EMEM_ARB_TIMING_W2R */
+                                       0x06030203 /* MC_EMEM_ARB_DA_TURNS */
+                                       0x000a0402 /* MC_EMEM_ARB_DA_COVERS */
+                                       0x74230403 /* MC_EMEM_ARB_MISC0 */
+                                       0x70000f03 /* MC_EMEM_ARB_MISC1 */
+                                       0x001f0000 /* MC_EMEM_ARB_RING1_THROTTLE */
+                               >;
+                       };
+
+                       timing-102000000 {
+                               clock-frequency = <102000000>;
+
+                               nvidia,emem-configuration = <
+                                       0x08000001 /* MC_EMEM_ARB_CFG */
+                                       0x80000026 /* MC_EMEM_ARB_OUTSTANDING_REQ */
+                                       0x00000001 /* MC_EMEM_ARB_TIMING_RCD */
+                                       0x00000001 /* MC_EMEM_ARB_TIMING_RP */
+                                       0x00000003 /* MC_EMEM_ARB_TIMING_RC */
+                                       0x00000000 /* MC_EMEM_ARB_TIMING_RAS */
+                                       0x00000002 /* MC_EMEM_ARB_TIMING_FAW */
+                                       0x00000001 /* MC_EMEM_ARB_TIMING_RRD */
+                                       0x00000002 /* MC_EMEM_ARB_TIMING_RAP2PRE */
+                                       0x00000008 /* MC_EMEM_ARB_TIMING_WAP2PRE */
+                                       0x00000003 /* MC_EMEM_ARB_TIMING_R2R */
+                                       0x00000002 /* MC_EMEM_ARB_TIMING_W2W */
+                                       0x00000003 /* MC_EMEM_ARB_TIMING_R2W */
+                                       0x00000006 /* MC_EMEM_ARB_TIMING_W2R */
+                                       0x06030203 /* MC_EMEM_ARB_DA_TURNS */
+                                       0x000a0403 /* MC_EMEM_ARB_DA_COVERS */
+                                       0x73c30504 /* MC_EMEM_ARB_MISC0 */
+                                       0x70000f03 /* MC_EMEM_ARB_MISC1 */
+                                       0x001f0000 /* MC_EMEM_ARB_RING1_THROTTLE */
+                               >;
+                       };
+
+                       timing-204000000 {
+                               clock-frequency = <204000000>;
+
+                               nvidia,emem-configuration = <
+                                       0x01000003 /* MC_EMEM_ARB_CFG */
+                                       0x80000040 /* MC_EMEM_ARB_OUTSTANDING_REQ */
+                                       0x00000001 /* MC_EMEM_ARB_TIMING_RCD */
+                                       0x00000001 /* MC_EMEM_ARB_TIMING_RP */
+                                       0x00000005 /* MC_EMEM_ARB_TIMING_RC */
+                                       0x00000002 /* MC_EMEM_ARB_TIMING_RAS */
+                                       0x00000004 /* MC_EMEM_ARB_TIMING_FAW */
+                                       0x00000001 /* MC_EMEM_ARB_TIMING_RRD */
+                                       0x00000002 /* MC_EMEM_ARB_TIMING_RAP2PRE */
+                                       0x00000008 /* MC_EMEM_ARB_TIMING_WAP2PRE */
+                                       0x00000003 /* MC_EMEM_ARB_TIMING_R2R */
+                                       0x00000002 /* MC_EMEM_ARB_TIMING_W2W */
+                                       0x00000004 /* MC_EMEM_ARB_TIMING_R2W */
+                                       0x00000006 /* MC_EMEM_ARB_TIMING_W2R */
+                                       0x06040203 /* MC_EMEM_ARB_DA_TURNS */
+                                       0x000a0405 /* MC_EMEM_ARB_DA_COVERS */
+                                       0x73840a06 /* MC_EMEM_ARB_MISC0 */
+                                       0x70000f03 /* MC_EMEM_ARB_MISC1 */
+                                       0x001f0000 /* MC_EMEM_ARB_RING1_THROTTLE */
+                               >;
+                       };
+
+                       timing-300000000 {
+                               clock-frequency = <300000000>;
+
+                               nvidia,emem-configuration = <
+                                       0x08000004 /* MC_EMEM_ARB_CFG */
+                                       0x80000040 /* MC_EMEM_ARB_OUTSTANDING_REQ */
+                                       0x00000001 /* MC_EMEM_ARB_TIMING_RCD */
+                                       0x00000002 /* MC_EMEM_ARB_TIMING_RP */
+                                       0x00000007 /* MC_EMEM_ARB_TIMING_RC */
+                                       0x00000004 /* MC_EMEM_ARB_TIMING_RAS */
+                                       0x00000005 /* MC_EMEM_ARB_TIMING_FAW */
+                                       0x00000001 /* MC_EMEM_ARB_TIMING_RRD */
+                                       0x00000002 /* MC_EMEM_ARB_TIMING_RAP2PRE */
+                                       0x00000007 /* MC_EMEM_ARB_TIMING_WAP2PRE */
+                                       0x00000002 /* MC_EMEM_ARB_TIMING_R2R */
+                                       0x00000002 /* MC_EMEM_ARB_TIMING_W2W */
+                                       0x00000004 /* MC_EMEM_ARB_TIMING_R2W */
+                                       0x00000006 /* MC_EMEM_ARB_TIMING_W2R */
+                                       0x06040202 /* MC_EMEM_ARB_DA_TURNS */
+                                       0x000b0607 /* MC_EMEM_ARB_DA_COVERS */
+                                       0x77450e08 /* MC_EMEM_ARB_MISC0 */
+                                       0x70000f03 /* MC_EMEM_ARB_MISC1 */
+                                       0x001f0000 /* MC_EMEM_ARB_RING1_THROTTLE */
+                               >;
+                       };
+
+                       timing-396000000 {
+                               clock-frequency = <396000000>;
+
+                               nvidia,emem-configuration = <
+                                       0x0f000005 /* MC_EMEM_ARB_CFG */
+                                       0x80000040 /* MC_EMEM_ARB_OUTSTANDING_REQ */
+                                       0x00000001 /* MC_EMEM_ARB_TIMING_RCD */
+                                       0x00000002 /* MC_EMEM_ARB_TIMING_RP */
+                                       0x00000009 /* MC_EMEM_ARB_TIMING_RC */
+                                       0x00000005 /* MC_EMEM_ARB_TIMING_RAS */
+                                       0x00000007 /* MC_EMEM_ARB_TIMING_FAW */
+                                       0x00000001 /* MC_EMEM_ARB_TIMING_RRD */
+                                       0x00000002 /* MC_EMEM_ARB_TIMING_RAP2PRE */
+                                       0x00000008 /* MC_EMEM_ARB_TIMING_WAP2PRE */
+                                       0x00000002 /* MC_EMEM_ARB_TIMING_R2R */
+                                       0x00000002 /* MC_EMEM_ARB_TIMING_W2W */
+                                       0x00000004 /* MC_EMEM_ARB_TIMING_R2W */
+                                       0x00000006 /* MC_EMEM_ARB_TIMING_W2R */
+                                       0x06040202 /* MC_EMEM_ARB_DA_TURNS */
+                                       0x000d0709 /* MC_EMEM_ARB_DA_COVERS */
+                                       0x7586120a /* MC_EMEM_ARB_MISC0 */
+                                       0x70000f03 /* MC_EMEM_ARB_MISC1 */
+                                       0x001f0000 /* MC_EMEM_ARB_RING1_THROTTLE */
+                               >;
+                       };
+
+                       timing-528000000 {
+                               clock-frequency = <528000000>;
 
                                nvidia,emem-configuration = <
-                                       0x0f000005
-                                       0x80000040
-                                       0x00000001
-                                       0x00000002
-                                       0x00000009
-                                       0x00000005
-                                       0x00000007
-                                       0x00000001
-                                       0x00000002
-                                       0x00000008
-                                       0x00000002
-                                       0x00000002
-                                       0x00000004
-                                       0x00000006
-                                       0x06040202
-                                       0x000d0709
-                                       0x7586120a
-                                       0x70000f03
-                                       0x001f0000
+                                       0x0f000007 /* MC_EMEM_ARB_CFG */
+                                       0x80000040 /* MC_EMEM_ARB_OUTSTANDING_REQ */
+                                       0x00000002 /* MC_EMEM_ARB_TIMING_RCD */
+                                       0x00000003 /* MC_EMEM_ARB_TIMING_RP */
+                                       0x0000000d /* MC_EMEM_ARB_TIMING_RC */
+                                       0x00000008 /* MC_EMEM_ARB_TIMING_RAS */
+                                       0x0000000a /* MC_EMEM_ARB_TIMING_FAW */
+                                       0x00000001 /* MC_EMEM_ARB_TIMING_RRD */
+                                       0x00000002 /* MC_EMEM_ARB_TIMING_RAP2PRE */
+                                       0x00000009 /* MC_EMEM_ARB_TIMING_WAP2PRE */
+                                       0x00000002 /* MC_EMEM_ARB_TIMING_R2R */
+                                       0x00000002 /* MC_EMEM_ARB_TIMING_W2W */
+                                       0x00000005 /* MC_EMEM_ARB_TIMING_R2W */
+                                       0x00000006 /* MC_EMEM_ARB_TIMING_W2R */
+                                       0x06050202 /* MC_EMEM_ARB_DA_TURNS */
+                                       0x0010090d /* MC_EMEM_ARB_DA_COVERS */
+                                       0x7428180e /* MC_EMEM_ARB_MISC0 */
+                                       0x70000f03 /* MC_EMEM_ARB_MISC1 */
+                                       0x001f0000 /* MC_EMEM_ARB_RING1_THROTTLE */
                                >;
                        };
 
                                clock-frequency = <600000000>;
 
                                nvidia,emem-configuration = <
-                                       0x00000009
-                                       0x80000040
-                                       0x00000003
-                                       0x00000004
-                                       0x0000000e
-                                       0x00000009
-                                       0x0000000b
-                                       0x00000001
-                                       0x00000003
-                                       0x0000000b
-                                       0x00000002
-                                       0x00000002
-                                       0x00000005
-                                       0x00000007
-                                       0x07050202
-                                       0x00130b0e
-                                       0x73a91b0f
-                                       0x70000f03
-                                       0x001f0000
+                                       0x00000009 /* MC_EMEM_ARB_CFG */
+                                       0x80000040 /* MC_EMEM_ARB_OUTSTANDING_REQ */
+                                       0x00000003 /* MC_EMEM_ARB_TIMING_RCD */
+                                       0x00000004 /* MC_EMEM_ARB_TIMING_RP */
+                                       0x0000000e /* MC_EMEM_ARB_TIMING_RC */
+                                       0x00000009 /* MC_EMEM_ARB_TIMING_RAS */
+                                       0x0000000b /* MC_EMEM_ARB_TIMING_FAW */
+                                       0x00000002 /* MC_EMEM_ARB_TIMING_RRD */
+                                       0x00000003 /* MC_EMEM_ARB_TIMING_RAP2PRE */
+                                       0x0000000b /* MC_EMEM_ARB_TIMING_WAP2PRE */
+                                       0x00000002 /* MC_EMEM_ARB_TIMING_R2R */
+                                       0x00000002 /* MC_EMEM_ARB_TIMING_W2W */
+                                       0x00000005 /* MC_EMEM_ARB_TIMING_R2W */
+                                       0x00000007 /* MC_EMEM_ARB_TIMING_W2R */
+                                       0x07050202 /* MC_EMEM_ARB_DA_TURNS */
+                                       0x00130b0e /* MC_EMEM_ARB_DA_COVERS */
+                                       0x73a91b0f /* MC_EMEM_ARB_MISC0 */
+                                       0x70000f03 /* MC_EMEM_ARB_MISC1 */
+                                       0x001f0000 /* MC_EMEM_ARB_RING1_THROTTLE */
                                >;
                        };
 
                                clock-frequency = <792000000>;
 
                                nvidia,emem-configuration = <
-                                       0x0e00000b
-                                       0x80000040
-                                       0x00000004
-                                       0x00000005
-                                       0x00000013
-                                       0x0000000c
-                                       0x0000000f
-                                       0x00000002
-                                       0x00000003
-                                       0x0000000c
-                                       0x00000002
-                                       0x00000002
-                                       0x00000006
-                                       0x00000008
-                                       0x08060202
-                                       0x00160d13
-                                       0x734c2414
-                                       0x70000f02
-                                       0x001f0000
+                                       0x0e00000b /* MC_EMEM_ARB_CFG */
+                                       0x80000040 /* MC_EMEM_ARB_OUTSTANDING_REQ */
+                                       0x00000004 /* MC_EMEM_ARB_TIMING_RCD */
+                                       0x00000005 /* MC_EMEM_ARB_TIMING_RP */
+                                       0x00000013 /* MC_EMEM_ARB_TIMING_RC */
+                                       0x0000000c /* MC_EMEM_ARB_TIMING_RAS */
+                                       0x0000000f /* MC_EMEM_ARB_TIMING_FAW */
+                                       0x00000002 /* MC_EMEM_ARB_TIMING_RRD */
+                                       0x00000003 /* MC_EMEM_ARB_TIMING_RAP2PRE */
+                                       0x0000000c /* MC_EMEM_ARB_TIMING_WAP2PRE */
+                                       0x00000002 /* MC_EMEM_ARB_TIMING_R2R */
+                                       0x00000002 /* MC_EMEM_ARB_TIMING_W2W */
+                                       0x00000006 /* MC_EMEM_ARB_TIMING_R2W */
+                                       0x00000008 /* MC_EMEM_ARB_TIMING_W2R */
+                                       0x08060202 /* MC_EMEM_ARB_DA_TURNS */
+                                       0x00160d13 /* MC_EMEM_ARB_DA_COVERS */
+                                       0x734c2414 /* MC_EMEM_ARB_MISC0 */
+                                       0x70000f02 /* MC_EMEM_ARB_MISC1 */
+                                       0x001f0000 /* MC_EMEM_ARB_RING1_THROTTLE */
                                >;
                        };
                };
index 5d5e6e1..7309393 100644 (file)
@@ -38,6 +38,9 @@
                sor@54540000 {
                        status = "okay";
 
+                       avdd-io-hdmi-dp-supply = <&vdd_1v05_run>;
+                       vdd-hdmi-dp-pll-supply = <&vdd_3v3_run>;
+
                        nvidia,dpaux = <&dpaux>;
                        nvidia,panel = <&panel>;
                };
index b113e47..413bfb9 100644 (file)
                        reg = <0x0 0x54540000 0x0 0x00040000>;
                        interrupts = <GIC_SPI 76 IRQ_TYPE_LEVEL_HIGH>;
                        clocks = <&tegra_car TEGRA124_CLK_SOR0>,
+                                <&tegra_car TEGRA124_CLK_SOR0_OUT>,
                                 <&tegra_car TEGRA124_CLK_PLL_D_OUT0>,
                                 <&tegra_car TEGRA124_CLK_PLL_DP>,
                                 <&tegra_car TEGRA124_CLK_CLK_M>;
-                       clock-names = "sor", "parent", "dp", "safe";
+                       clock-names = "sor", "out", "parent", "dp", "safe";
                        resets = <&tegra_car 182>;
                        reset-names = "sor";
                        status = "disabled";
diff --git a/arch/arm/boot/dts/tegra20-cpu-opp-microvolt.dtsi b/arch/arm/boot/dts/tegra20-cpu-opp-microvolt.dtsi
new file mode 100644 (file)
index 0000000..e85ffdb
--- /dev/null
@@ -0,0 +1,201 @@
+// SPDX-License-Identifier: GPL-2.0
+
+/ {
+       cpu0_opp_table: cpu_opp_table0 {
+               opp@216000000_750 {
+                       opp-microvolt = <750000 750000 1125000>;
+               };
+
+               opp@216000000_800 {
+                       opp-microvolt = <800000 800000 1125000>;
+               };
+
+               opp@312000000_750 {
+                       opp-microvolt = <750000 750000 1125000>;
+               };
+
+               opp@312000000_800 {
+                       opp-microvolt = <800000 800000 1125000>;
+               };
+
+               opp@456000000_750 {
+                       opp-microvolt = <750000 750000 1125000>;
+               };
+
+               opp@456000000_800 {
+                       opp-microvolt = <800000 800000 1125000>;
+               };
+
+               opp@456000000_800_2_2 {
+                       opp-microvolt = <800000 800000 1125000>;
+               };
+
+               opp@456000000_800_3_2 {
+                       opp-microvolt = <800000 800000 1125000>;
+               };
+
+               opp@456000000_825 {
+                       opp-microvolt = <825000 825000 1125000>;
+               };
+
+               opp@608000000_750 {
+                       opp-microvolt = <750000 750000 1125000>;
+               };
+
+               opp@608000000_800 {
+                       opp-microvolt = <800000 800000 1125000>;
+               };
+
+               opp@608000000_800_3_2 {
+                       opp-microvolt = <800000 800000 1125000>;
+               };
+
+               opp@608000000_825 {
+                       opp-microvolt = <825000 825000 1125000>;
+               };
+
+               opp@608000000_850 {
+                       opp-microvolt = <850000 850000 1125000>;
+               };
+
+               opp@608000000_900 {
+                       opp-microvolt = <900000 900000 1125000>;
+               };
+
+               opp@760000000_775 {
+                       opp-microvolt = <775000 775000 1125000>;
+               };
+
+               opp@760000000_800 {
+                       opp-microvolt = <800000 800000 1125000>;
+               };
+
+               opp@760000000_850 {
+                       opp-microvolt = <850000 850000 1125000>;
+               };
+
+               opp@760000000_875 {
+                       opp-microvolt = <875000 875000 1125000>;
+               };
+
+               opp@760000000_875_1_1 {
+                       opp-microvolt = <875000 875000 1125000>;
+               };
+
+               opp@760000000_875_0_2 {
+                       opp-microvolt = <875000 875000 1125000>;
+               };
+
+               opp@760000000_875_1_2 {
+                       opp-microvolt = <875000 875000 1125000>;
+               };
+
+               opp@760000000_900 {
+                       opp-microvolt = <900000 900000 1125000>;
+               };
+
+               opp@760000000_975 {
+                       opp-microvolt = <975000 975000 1125000>;
+               };
+
+               opp@816000000_800 {
+                       opp-microvolt = <800000 800000 1125000>;
+               };
+
+               opp@816000000_850 {
+                       opp-microvolt = <850000 850000 1125000>;
+               };
+
+               opp@816000000_875 {
+                       opp-microvolt = <875000 875000 1125000>;
+               };
+
+               opp@816000000_950 {
+                       opp-microvolt = <950000 950000 1125000>;
+               };
+
+               opp@816000000_1000 {
+                       opp-microvolt = <1000000 1000000 1125000>;
+               };
+
+               opp@912000000_850 {
+                       opp-microvolt = <850000 850000 1125000>;
+               };
+
+               opp@912000000_900 {
+                       opp-microvolt = <900000 900000 1125000>;
+               };
+
+               opp@912000000_925 {
+                       opp-microvolt = <925000 925000 1125000>;
+               };
+
+               opp@912000000_950 {
+                       opp-microvolt = <950000 950000 1125000>;
+               };
+
+               opp@912000000_950_0_2 {
+                       opp-microvolt = <950000 950000 1125000>;
+               };
+
+               opp@912000000_950_2_2 {
+                       opp-microvolt = <950000 950000 1125000>;
+               };
+
+               opp@912000000_1000 {
+                       opp-microvolt = <1000000 1000000 1125000>;
+               };
+
+               opp@912000000_1050 {
+                       opp-microvolt = <1050000 1050000 1125000>;
+               };
+
+               opp@1000000000_875 {
+                       opp-microvolt = <875000 875000 1125000>;
+               };
+
+               opp@1000000000_900 {
+                       opp-microvolt = <900000 900000 1125000>;
+               };
+
+               opp@1000000000_950 {
+                       opp-microvolt = <950000 950000 1125000>;
+               };
+
+               opp@1000000000_975 {
+                       opp-microvolt = <975000 975000 1125000>;
+               };
+
+               opp@1000000000_1000 {
+                       opp-microvolt = <1000000 1000000 1125000>;
+               };
+
+               opp@1000000000_1000_0_2 {
+                       opp-microvolt = <1000000 1000000 1125000>;
+               };
+
+               opp@1000000000_1025 {
+                       opp-microvolt = <1025000 1025000 1125000>;
+               };
+
+               opp@1000000000_1100 {
+                       opp-microvolt = <1100000 1100000 1125000>;
+               };
+
+               opp@1200000000_1000 {
+                       opp-microvolt = <1000000 1000000 1125000>;
+               };
+
+               opp@1200000000_1050 {
+                       opp-microvolt = <1050000 1050000 1125000>;
+               };
+
+               opp@1200000000_1100 {
+                       opp-microvolt = <1100000 1100000 1125000>;
+               };
+
+               opp@1200000000_1125 {
+                       opp-microvolt = <1125000 1125000 1125000>;
+               };
+       };
+};
diff --git a/arch/arm/boot/dts/tegra20-cpu-opp.dtsi b/arch/arm/boot/dts/tegra20-cpu-opp.dtsi
new file mode 100644 (file)
index 0000000..c878f42
--- /dev/null
@@ -0,0 +1,302 @@
+// SPDX-License-Identifier: GPL-2.0
+
+/ {
+       cpu0_opp_table: cpu_opp_table0 {
+               compatible = "operating-points-v2";
+               opp-shared;
+
+               opp@216000000_750 {
+                       clock-latency-ns = <400000>;
+                       opp-supported-hw = <0x0F 0x0003>;
+                       opp-hz = /bits/ 64 <216000000>;
+               };
+
+               opp@216000000_800 {
+                       clock-latency-ns = <400000>;
+                       opp-supported-hw = <0x0F 0x0004>;
+                       opp-hz = /bits/ 64 <216000000>;
+               };
+
+               opp@312000000_750 {
+                       clock-latency-ns = <400000>;
+                       opp-supported-hw = <0x0F 0x0003>;
+                       opp-hz = /bits/ 64 <312000000>;
+               };
+
+               opp@312000000_800 {
+                       clock-latency-ns = <400000>;
+                       opp-supported-hw = <0x0F 0x0004>;
+                       opp-hz = /bits/ 64 <312000000>;
+               };
+
+               opp@456000000_750 {
+                       clock-latency-ns = <400000>;
+                       opp-supported-hw = <0x0C 0x0003>;
+                       opp-hz = /bits/ 64 <456000000>;
+               };
+
+               opp@456000000_800 {
+                       clock-latency-ns = <400000>;
+                       opp-supported-hw = <0x03 0x0006>;
+                       opp-hz = /bits/ 64 <456000000>;
+               };
+
+               opp@456000000_800_2_2 {
+                       clock-latency-ns = <400000>;
+                       opp-supported-hw = <0x04 0x0004>;
+                       opp-hz = /bits/ 64 <456000000>;
+               };
+
+               opp@456000000_800_3_2 {
+                       clock-latency-ns = <400000>;
+                       opp-supported-hw = <0x08 0x0004>;
+                       opp-hz = /bits/ 64 <456000000>;
+               };
+
+               opp@456000000_825 {
+                       clock-latency-ns = <400000>;
+                       opp-supported-hw = <0x03 0x0001>;
+                       opp-hz = /bits/ 64 <456000000>;
+               };
+
+               opp@608000000_750 {
+                       clock-latency-ns = <400000>;
+                       opp-supported-hw = <0x08 0x0003>;
+                       opp-hz = /bits/ 64 <608000000>;
+               };
+
+               opp@608000000_800 {
+                       clock-latency-ns = <400000>;
+                       opp-supported-hw = <0x04 0x0006>;
+                       opp-hz = /bits/ 64 <608000000>;
+               };
+
+               opp@608000000_800_3_2 {
+                       clock-latency-ns = <400000>;
+                       opp-supported-hw = <0x08 0x0004>;
+                       opp-hz = /bits/ 64 <608000000>;
+               };
+
+               opp@608000000_825 {
+                       clock-latency-ns = <400000>;
+                       opp-supported-hw = <0x04 0x0001>;
+                       opp-hz = /bits/ 64 <608000000>;
+               };
+
+               opp@608000000_850 {
+                       clock-latency-ns = <400000>;
+                       opp-supported-hw = <0x03 0x0006>;
+                       opp-hz = /bits/ 64 <608000000>;
+               };
+
+               opp@608000000_900 {
+                       clock-latency-ns = <400000>;
+                       opp-supported-hw = <0x03 0x0001>;
+                       opp-hz = /bits/ 64 <608000000>;
+               };
+
+               opp@760000000_775 {
+                       clock-latency-ns = <400000>;
+                       opp-supported-hw = <0x08 0x0003>;
+                       opp-hz = /bits/ 64 <760000000>;
+               };
+
+               opp@760000000_800 {
+                       clock-latency-ns = <400000>;
+                       opp-supported-hw = <0x08 0x0004>;
+                       opp-hz = /bits/ 64 <760000000>;
+               };
+
+               opp@760000000_850 {
+                       clock-latency-ns = <400000>;
+                       opp-supported-hw = <0x04 0x0006>;
+                       opp-hz = /bits/ 64 <760000000>;
+               };
+
+               opp@760000000_875 {
+                       clock-latency-ns = <400000>;
+                       opp-supported-hw = <0x04 0x0001>;
+                       opp-hz = /bits/ 64 <760000000>;
+               };
+
+               opp@760000000_875_1_1 {
+                       clock-latency-ns = <400000>;
+                       opp-supported-hw = <0x02 0x0002>;
+                       opp-hz = /bits/ 64 <760000000>;
+               };
+
+               opp@760000000_875_0_2 {
+                       clock-latency-ns = <400000>;
+                       opp-supported-hw = <0x01 0x0004>;
+                       opp-hz = /bits/ 64 <760000000>;
+               };
+
+               opp@760000000_875_1_2 {
+                       clock-latency-ns = <400000>;
+                       opp-supported-hw = <0x02 0x0004>;
+                       opp-hz = /bits/ 64 <760000000>;
+               };
+
+               opp@760000000_900 {
+                       clock-latency-ns = <400000>;
+                       opp-supported-hw = <0x01 0x0002>;
+                       opp-hz = /bits/ 64 <760000000>;
+               };
+
+               opp@760000000_975 {
+                       clock-latency-ns = <400000>;
+                       opp-supported-hw = <0x03 0x0001>;
+                       opp-hz = /bits/ 64 <760000000>;
+               };
+
+               opp@816000000_800 {
+                       clock-latency-ns = <400000>;
+                       opp-supported-hw = <0x08 0x0007>;
+                       opp-hz = /bits/ 64 <816000000>;
+               };
+
+               opp@816000000_850 {
+                       clock-latency-ns = <400000>;
+                       opp-supported-hw = <0x04 0x0002>;
+                       opp-hz = /bits/ 64 <816000000>;
+               };
+
+               opp@816000000_875 {
+                       clock-latency-ns = <400000>;
+                       opp-supported-hw = <0x04 0x0005>;
+                       opp-hz = /bits/ 64 <816000000>;
+               };
+
+               opp@816000000_950 {
+                       clock-latency-ns = <400000>;
+                       opp-supported-hw = <0x03 0x0006>;
+                       opp-hz = /bits/ 64 <816000000>;
+               };
+
+               opp@816000000_1000 {
+                       clock-latency-ns = <400000>;
+                       opp-supported-hw = <0x03 0x0001>;
+                       opp-hz = /bits/ 64 <816000000>;
+               };
+
+               opp@912000000_850 {
+                       clock-latency-ns = <400000>;
+                       opp-supported-hw = <0x08 0x0007>;
+                       opp-hz = /bits/ 64 <912000000>;
+               };
+
+               opp@912000000_900 {
+                       clock-latency-ns = <400000>;
+                       opp-supported-hw = <0x04 0x0002>;
+                       opp-hz = /bits/ 64 <912000000>;
+               };
+
+               opp@912000000_925 {
+                       clock-latency-ns = <400000>;
+                       opp-supported-hw = <0x04 0x0001>;
+                       opp-hz = /bits/ 64 <912000000>;
+               };
+
+               opp@912000000_950 {
+                       clock-latency-ns = <400000>;
+                       opp-supported-hw = <0x02 0x0006>;
+                       opp-hz = /bits/ 64 <912000000>;
+               };
+
+               opp@912000000_950_0_2 {
+                       clock-latency-ns = <400000>;
+                       opp-supported-hw = <0x01 0x0004>;
+                       opp-hz = /bits/ 64 <912000000>;
+               };
+
+               opp@912000000_950_2_2 {
+                       clock-latency-ns = <400000>;
+                       opp-supported-hw = <0x04 0x0004>;
+                       opp-hz = /bits/ 64 <912000000>;
+               };
+
+               opp@912000000_1000 {
+                       clock-latency-ns = <400000>;
+                       opp-supported-hw = <0x01 0x0002>;
+                       opp-hz = /bits/ 64 <912000000>;
+               };
+
+               opp@912000000_1050 {
+                       clock-latency-ns = <400000>;
+                       opp-supported-hw = <0x03 0x0001>;
+                       opp-hz = /bits/ 64 <912000000>;
+               };
+
+               opp@1000000000_875 {
+                       clock-latency-ns = <400000>;
+                       opp-supported-hw = <0x08 0x0007>;
+                       opp-hz = /bits/ 64 <1000000000>;
+               };
+
+               opp@1000000000_900 {
+                       clock-latency-ns = <400000>;
+                       opp-supported-hw = <0x04 0x0002>;
+                       opp-hz = /bits/ 64 <1000000000>;
+               };
+
+               opp@1000000000_950 {
+                       clock-latency-ns = <400000>;
+                       opp-supported-hw = <0x04 0x0004>;
+                       opp-hz = /bits/ 64 <1000000000>;
+               };
+
+               opp@1000000000_975 {
+                       clock-latency-ns = <400000>;
+                       opp-supported-hw = <0x04 0x0001>;
+                       opp-hz = /bits/ 64 <1000000000>;
+               };
+
+               opp@1000000000_1000 {
+                       clock-latency-ns = <400000>;
+                       opp-supported-hw = <0x02 0x0006>;
+                       opp-hz = /bits/ 64 <1000000000>;
+               };
+
+               opp@1000000000_1000_0_2 {
+                       clock-latency-ns = <400000>;
+                       opp-supported-hw = <0x01 0x0004>;
+                       opp-hz = /bits/ 64 <1000000000>;
+               };
+
+               opp@1000000000_1025 {
+                       clock-latency-ns = <400000>;
+                       opp-supported-hw = <0x01 0x0002>;
+                       opp-hz = /bits/ 64 <1000000000>;
+               };
+
+               opp@1000000000_1100 {
+                       clock-latency-ns = <400000>;
+                       opp-supported-hw = <0x03 0x0001>;
+                       opp-hz = /bits/ 64 <1000000000>;
+               };
+
+               opp@1200000000_1000 {
+                       clock-latency-ns = <400000>;
+                       opp-supported-hw = <0x08 0x0004>;
+                       opp-hz = /bits/ 64 <1200000000>;
+               };
+
+               opp@1200000000_1050 {
+                       clock-latency-ns = <400000>;
+                       opp-supported-hw = <0x04 0x0004>;
+                       opp-hz = /bits/ 64 <1200000000>;
+               };
+
+               opp@1200000000_1100 {
+                       clock-latency-ns = <400000>;
+                       opp-supported-hw = <0x02 0x0004>;
+                       opp-hz = /bits/ 64 <1200000000>;
+               };
+
+               opp@1200000000_1125 {
+                       clock-latency-ns = <400000>;
+                       opp-supported-hw = <0x01 0x0004>;
+                       opp-hz = /bits/ 64 <1200000000>;
+               };
+       };
+};
index 8861e09..85fce5b 100644 (file)
@@ -3,6 +3,8 @@
 
 #include <dt-bindings/input/input.h>
 #include "tegra20.dtsi"
+#include "tegra20-cpu-opp.dtsi"
+#include "tegra20-cpu-opp-microvolt.dtsi"
 
 / {
        model = "Toshiba AC100 / Dynabook AZ";
                                        regulator-always-on;
                                };
 
-                               sm0 {
+                               core_vdd_reg: sm0 {
                                        regulator-name = "+1.2vs_sm0,vdd_core";
                                        regulator-min-microvolt = <1200000>;
-                                       regulator-max-microvolt = <1200000>;
+                                       regulator-max-microvolt = <1225000>;
+                                       regulator-coupled-with = <&rtc_vdd_reg &cpu_vdd_reg>;
+                                       regulator-coupled-max-spread = <170000 450000>;
                                        regulator-always-on;
+
+                                       nvidia,tegra-core-regulator;
                                };
 
-                               sm1 {
+                               cpu_vdd_reg: sm1 {
                                        regulator-name = "+1.0vs_sm1,vdd_cpu";
-                                       regulator-min-microvolt = <1000000>;
-                                       regulator-max-microvolt = <1000000>;
+                                       regulator-min-microvolt = <750000>;
+                                       regulator-max-microvolt = <1100000>;
+                                       regulator-coupled-with = <&core_vdd_reg &rtc_vdd_reg>;
+                                       regulator-coupled-max-spread = <450000 450000>;
                                        regulator-always-on;
+
+                                       nvidia,tegra-cpu-regulator;
                                };
 
                                sm2_reg: sm2 {
                                        regulator-always-on;
                                };
 
-                               ldo2 {
+                               rtc_vdd_reg: ldo2 {
                                        regulator-name = "+1.2vs_ldo2,vdd_rtc";
                                        regulator-min-microvolt = <1200000>;
-                                       regulator-max-microvolt = <1200000>;
+                                       regulator-max-microvolt = <1225000>;
+                                       regulator-coupled-with = <&core_vdd_reg &cpu_vdd_reg>;
+                                       regulator-coupled-max-spread = <170000 450000>;
+                                       regulator-always-on;
+
+                                       nvidia,tegra-rtc-regulator;
                                };
 
                                ldo3 {
                         <&tegra_car TEGRA20_CLK_CDEV1>;
                clock-names = "pll_a", "pll_a_out0", "mclk";
        };
+
+       cpus {
+               cpu0: cpu@0 {
+                       cpu-supply = <&cpu_vdd_reg>;
+                       operating-points-v2 = <&cpu0_opp_table>;
+               };
+
+               cpu@1 {
+                       cpu-supply = <&cpu_vdd_reg>;
+                       operating-points-v2 = <&cpu0_opp_table>;
+               };
+       };
 };
index 3e5ac09..8debd3d 100644 (file)
@@ -3,6 +3,7 @@
 
 #include <dt-bindings/input/input.h>
 #include "tegra20.dtsi"
+#include "tegra20-cpu-opp.dtsi"
 
 / {
        model = "Compulab TrimSlice board";
                         <&tegra_car TEGRA20_CLK_CDEV1>;
                clock-names = "pll_a", "pll_a_out0", "mclk";
        };
+
+       cpus {
+               cpu0: cpu@0 {
+                       operating-points-v2 = <&cpu0_opp_table>;
+               };
+
+               cpu@1 {
+                       operating-points-v2 = <&cpu0_opp_table>;
+               };
+       };
 };
index 8c942e6..9c58e7f 100644 (file)
                        device_type = "cpu";
                        compatible = "arm,cortex-a9";
                        reg = <0>;
+                       clocks = <&tegra_car TEGRA20_CLK_CCLK>;
                };
 
                cpu@1 {
                        device_type = "cpu";
                        compatible = "arm,cortex-a9";
                        reg = <1>;
+                       clocks = <&tegra_car TEGRA20_CLK_CCLK>;
                };
        };
 
index 02f8126..8b7a827 100644 (file)
                        id = <0>;
                        blocks = <0x5>;
                        irq-trigger = <0x1>;
+                       /* 3.25 MHz ADC clock speed */
+                       st,adc-freq = <1>;
+                       /* 12-bit ADC */
+                       st,mod-12b = <1>;
+                       /* internal ADC reference */
+                       st,ref-sel = <0>;
+                       /* ADC converstion time: 80 clocks */
+                       st,sample-time = <4>;
 
                        stmpe_touchscreen {
                                compatible = "st,stmpe-ts";
-                               /* 3.25 MHz ADC clock speed */
-                               st,adc-freq = <1>;
                                /* 8 sample average control */
                                st,ave-ctrl = <3>;
                                /* 7 length fractional part in z */
                                 * current limit value
                                 */
                                st,i-drive = <1>;
-                               /* 12-bit ADC */
-                               st,mod-12b = <1>;
-                               /* internal ADC reference */
-                               st,ref-sel = <0>;
-                               /* ADC converstion time: 80 clocks */
-                               st,sample-time = <4>;
                                /* 1 ms panel driver settling time */
                                st,settling = <3>;
                                /* 5 ms touch detect interrupt delay */
                                st,touch-det-delay = <5>;
                        };
+
+                       stmpe_adc {
+                               compatible = "st,stmpe-adc";
+                               /* forbid to use ADC channels 3-0 (touch) */
+                               st,norequest-mask = <0x0F>;
+                       };
                };
 
                /*
index 7f112f1..c18f6f6 100644 (file)
                        id = <0>;
                        blocks = <0x5>;
                        irq-trigger = <0x1>;
+                       /* 3.25 MHz ADC clock speed */
+                       st,adc-freq = <1>;
+                       /* 12-bit ADC */
+                       st,mod-12b = <1>;
+                       /* internal ADC reference */
+                       st,ref-sel = <0>;
+                       /* ADC converstion time: 80 clocks */
+                       st,sample-time = <4>;
 
                        stmpe_touchscreen {
                                compatible = "st,stmpe-ts";
-                               /* 3.25 MHz ADC clock speed */
-                               st,adc-freq = <1>;
                                /* 8 sample average control */
                                st,ave-ctrl = <3>;
                                /* 7 length fractional part in z */
                                 * current limit value
                                 */
                                st,i-drive = <1>;
-                               /* 12-bit ADC */
-                               st,mod-12b = <1>;
-                               /* internal ADC reference */
-                               st,ref-sel = <0>;
-                               /* ADC converstion time: 80 clocks */
-                               st,sample-time = <4>;
                                /* 1 ms panel driver settling time */
                                st,settling = <3>;
                                /* 5 ms touch detect interrupt delay */
                                st,touch-det-delay = <5>;
                        };
+
+                       stmpe_adc {
+                               compatible = "st,stmpe-adc";
+                               /* forbid to use ADC channels 3-0 (touch) */
+                               st,norequest-mask = <0x0F>;
+                       };
                };
 
                /*
index 4dbd4af..9234988 100644 (file)
@@ -2,6 +2,8 @@
 /dts-v1/;
 
 #include "tegra30-cardhu.dtsi"
+#include "tegra30-cpu-opp.dtsi"
+#include "tegra30-cpu-opp-microvolt.dtsi"
 
 /* This dts file support the cardhu A04 and later versions of board */
 
                        gpio = <&gpio TEGRA_GPIO(DD, 0) GPIO_ACTIVE_HIGH>;
                };
        };
+
+       i2c@7000d000 {
+               pmic: tps65911@2d {
+                       regulators {
+                               vddctrl_reg: vddctrl {
+                                       regulator-min-microvolt = <800000>;
+                                       regulator-max-microvolt = <1125000>;
+                                       regulator-coupled-with = <&vddcore_reg>;
+                                       regulator-coupled-max-spread = <300000>;
+                                       regulator-max-step-microvolt = <100000>;
+
+                                       nvidia,tegra-cpu-regulator;
+                               };
+                       };
+               };
+
+               vddcore_reg: tps62361@60 {
+                       regulator-coupled-with = <&vddctrl_reg>;
+                       regulator-coupled-max-spread = <300000>;
+                       regulator-max-step-microvolt = <100000>;
+
+                       nvidia,tegra-core-regulator;
+               };
+       };
+
+       cpus {
+               cpu0: cpu@0 {
+                       cpu-supply = <&vddctrl_reg>;
+                       operating-points-v2 = <&cpu0_opp_table>;
+               };
+
+               cpu@1 {
+                       cpu-supply = <&vddctrl_reg>;
+                       operating-points-v2 = <&cpu0_opp_table>;
+               };
+
+               cpu@2 {
+                       cpu-supply = <&vddctrl_reg>;
+                       operating-points-v2 = <&cpu0_opp_table>;
+               };
+
+               cpu@3 {
+                       cpu-supply = <&vddctrl_reg>;
+                       operating-points-v2 = <&cpu0_opp_table>;
+               };
+       };
 };
index 35af03c..1f9198b 100644 (file)
                        id = <0>;
                        blocks = <0x5>;
                        irq-trigger = <0x1>;
+                       /* 3.25 MHz ADC clock speed */
+                       st,adc-freq = <1>;
+                       /* 12-bit ADC */
+                       st,mod-12b = <1>;
+                       /* internal ADC reference */
+                       st,ref-sel = <0>;
+                       /* ADC converstion time: 80 clocks */
+                       st,sample-time = <4>;
+                       /* forbid to use ADC channels 3-0 (touch) */
 
                        stmpe_touchscreen {
                                compatible = "st,stmpe-ts";
-                               /* 3.25 MHz ADC clock speed */
-                               st,adc-freq = <1>;
                                /* 8 sample average control */
                                st,ave-ctrl = <3>;
                                /* 7 length fractional part in z */
                                 * current limit value
                                 */
                                st,i-drive = <1>;
-                               /* 12-bit ADC */
-                               st,mod-12b = <1>;
-                               /* internal ADC reference */
-                               st,ref-sel = <0>;
-                               /* ADC converstion time: 80 clocks */
-                               st,sample-time = <4>;
                                /* 1 ms panel driver settling time */
                                st,settling = <3>;
                                /* 5 ms touch detect interrupt delay */
                                st,touch-det-delay = <5>;
                        };
+
+                       stmpe_adc {
+                               compatible = "st,stmpe-adc";
+                               st,norequest-mask = <0x0F>;
+                       };
                };
 
                /*
diff --git a/arch/arm/boot/dts/tegra30-cpu-opp-microvolt.dtsi b/arch/arm/boot/dts/tegra30-cpu-opp-microvolt.dtsi
new file mode 100644 (file)
index 0000000..5c40ef4
--- /dev/null
@@ -0,0 +1,801 @@
+// SPDX-License-Identifier: GPL-2.0
+
+/ {
+       cpu0_opp_table: cpu_opp_table0 {
+               opp@51000000_800 {
+                       opp-microvolt = <800000 800000 1250000>;
+               };
+
+               opp@51000000_850 {
+                       opp-microvolt = <850000 850000 1250000>;
+               };
+
+               opp@51000000_912 {
+                       opp-microvolt = <912000 912000 1250000>;
+               };
+
+               opp@102000000_800 {
+                       opp-microvolt = <800000 800000 1250000>;
+               };
+
+               opp@102000000_850 {
+                       opp-microvolt = <850000 850000 1250000>;
+               };
+
+               opp@102000000_912 {
+                       opp-microvolt = <912000 912000 1250000>;
+               };
+
+               opp@204000000_800 {
+                       opp-microvolt = <800000 800000 1250000>;
+               };
+
+               opp@204000000_850 {
+                       opp-microvolt = <850000 850000 1250000>;
+               };
+
+               opp@204000000_912 {
+                       opp-microvolt = <912000 912000 1250000>;
+               };
+
+               opp@312000000_850 {
+                       opp-microvolt = <850000 850000 1250000>;
+               };
+
+               opp@312000000_912 {
+                       opp-microvolt = <912000 912000 1250000>;
+               };
+
+               opp@340000000_800 {
+                       opp-microvolt = <800000 800000 1250000>;
+               };
+
+               opp@340000000_850 {
+                       opp-microvolt = <850000 850000 1250000>;
+               };
+
+               opp@370000000_800 {
+                       opp-microvolt = <800000 800000 1250000>;
+               };
+
+               opp@456000000_850 {
+                       opp-microvolt = <850000 850000 1250000>;
+               };
+
+               opp@456000000_912 {
+                       opp-microvolt = <912000 912000 1250000>;
+               };
+
+               opp@475000000_800 {
+                       opp-microvolt = <800000 800000 1250000>;
+               };
+
+               opp@475000000_850 {
+                       opp-microvolt = <850000 850000 1250000>;
+               };
+
+               opp@475000000_850_0_1 {
+                       opp-microvolt = <850000 850000 1250000>;
+               };
+
+               opp@475000000_850_0_4 {
+                       opp-microvolt = <850000 850000 1250000>;
+               };
+
+               opp@475000000_850_0_7 {
+                       opp-microvolt = <850000 850000 1250000>;
+               };
+
+               opp@475000000_850_0_8 {
+                       opp-microvolt = <850000 850000 1250000>;
+               };
+
+               opp@608000000_850 {
+                       opp-microvolt = <850000 850000 1250000>;
+               };
+
+               opp@608000000_912 {
+                       opp-microvolt = <912000 912000 1250000>;
+               };
+
+               opp@620000000_850 {
+                       opp-microvolt = <850000 850000 1250000>;
+               };
+
+               opp@640000000_850 {
+                       opp-microvolt = <850000 850000 1250000>;
+               };
+
+               opp@640000000_850_1_1 {
+                       opp-microvolt = <850000 850000 1250000>;
+               };
+
+               opp@640000000_850_2_1 {
+                       opp-microvolt = <850000 850000 1250000>;
+               };
+
+               opp@640000000_850_3_1 {
+                       opp-microvolt = <850000 850000 1250000>;
+               };
+
+               opp@640000000_850_1_4 {
+                       opp-microvolt = <850000 850000 1250000>;
+               };
+
+               opp@640000000_850_2_4 {
+                       opp-microvolt = <850000 850000 1250000>;
+               };
+
+               opp@640000000_850_3_4 {
+                       opp-microvolt = <850000 850000 1250000>;
+               };
+
+               opp@640000000_850_1_7 {
+                       opp-microvolt = <850000 850000 1250000>;
+               };
+
+               opp@640000000_850_2_7 {
+                       opp-microvolt = <850000 850000 1250000>;
+               };
+
+               opp@640000000_850_3_7 {
+                       opp-microvolt = <850000 850000 1250000>;
+               };
+
+               opp@640000000_850_4_7 {
+                       opp-microvolt = <850000 850000 1250000>;
+               };
+
+               opp@640000000_850_1_8 {
+                       opp-microvolt = <850000 850000 1250000>;
+               };
+
+               opp@640000000_850_2_8 {
+                       opp-microvolt = <850000 850000 1250000>;
+               };
+
+               opp@640000000_850_3_8 {
+                       opp-microvolt = <850000 850000 1250000>;
+               };
+
+               opp@640000000_850_4_8 {
+                       opp-microvolt = <850000 850000 1250000>;
+               };
+
+               opp@640000000_900 {
+                       opp-microvolt = <900000 900000 1250000>;
+               };
+
+               opp@760000000_850 {
+                       opp-microvolt = <850000 850000 1250000>;
+               };
+
+               opp@760000000_850_3_1 {
+                       opp-microvolt = <850000 850000 1250000>;
+               };
+
+               opp@760000000_850_3_2 {
+                       opp-microvolt = <850000 850000 1250000>;
+               };
+
+               opp@760000000_850_3_3 {
+                       opp-microvolt = <850000 850000 1250000>;
+               };
+
+               opp@760000000_850_3_4 {
+                       opp-microvolt = <850000 850000 1250000>;
+               };
+
+               opp@760000000_850_3_7 {
+                       opp-microvolt = <850000 850000 1250000>;
+               };
+
+               opp@760000000_850_4_7 {
+                       opp-microvolt = <850000 850000 1250000>;
+               };
+
+               opp@760000000_850_3_8 {
+                       opp-microvolt = <850000 850000 1250000>;
+               };
+
+               opp@760000000_850_4_8 {
+                       opp-microvolt = <850000 850000 1250000>;
+               };
+
+               opp@760000000_850_0_10 {
+                       opp-microvolt = <850000 850000 1250000>;
+               };
+
+               opp@760000000_900 {
+                       opp-microvolt = <900000 900000 1250000>;
+               };
+
+               opp@760000000_900_1_1 {
+                       opp-microvolt = <900000 900000 1250000>;
+               };
+
+               opp@760000000_900_2_1 {
+                       opp-microvolt = <900000 900000 1250000>;
+               };
+
+               opp@760000000_900_1_2 {
+                       opp-microvolt = <900000 900000 1250000>;
+               };
+
+               opp@760000000_900_2_2 {
+                       opp-microvolt = <900000 900000 1250000>;
+               };
+
+               opp@760000000_900_1_3 {
+                       opp-microvolt = <900000 900000 1250000>;
+               };
+
+               opp@760000000_900_2_3 {
+                       opp-microvolt = <900000 900000 1250000>;
+               };
+
+               opp@760000000_900_1_4 {
+                       opp-microvolt = <900000 900000 1250000>;
+               };
+
+               opp@760000000_900_2_4 {
+                       opp-microvolt = <900000 900000 1250000>;
+               };
+
+               opp@760000000_900_1_7 {
+                       opp-microvolt = <900000 900000 1250000>;
+               };
+
+               opp@760000000_900_2_7 {
+                       opp-microvolt = <900000 900000 1250000>;
+               };
+
+               opp@760000000_900_1_8 {
+                       opp-microvolt = <900000 900000 1250000>;
+               };
+
+               opp@760000000_900_2_8 {
+                       opp-microvolt = <900000 900000 1250000>;
+               };
+
+               opp@760000000_912 {
+                       opp-microvolt = <912000 912000 1250000>;
+               };
+
+               opp@760000000_975 {
+                       opp-microvolt = <975000 975000 1250000>;
+               };
+
+               opp@816000000_850 {
+                       opp-microvolt = <850000 850000 1250000>;
+               };
+
+               opp@816000000_912 {
+                       opp-microvolt = <912000 912000 1250000>;
+               };
+
+               opp@860000000_850 {
+                       opp-microvolt = <850000 850000 1250000>;
+               };
+
+               opp@860000000_900 {
+                       opp-microvolt = <900000 900000 1250000>;
+               };
+
+               opp@860000000_900_2_1 {
+                       opp-microvolt = <900000 900000 1250000>;
+               };
+
+               opp@860000000_900_3_1 {
+                       opp-microvolt = <900000 900000 1250000>;
+               };
+
+               opp@860000000_900_2_2 {
+                       opp-microvolt = <900000 900000 1250000>;
+               };
+
+               opp@860000000_900_3_2 {
+                       opp-microvolt = <900000 900000 1250000>;
+               };
+
+               opp@860000000_900_2_3 {
+                       opp-microvolt = <900000 900000 1250000>;
+               };
+
+               opp@860000000_900_3_3 {
+                       opp-microvolt = <900000 900000 1250000>;
+               };
+
+               opp@860000000_900_2_4 {
+                       opp-microvolt = <900000 900000 1250000>;
+               };
+
+               opp@860000000_900_3_4 {
+                       opp-microvolt = <900000 900000 1250000>;
+               };
+
+               opp@860000000_900_2_7 {
+                       opp-microvolt = <900000 900000 1250000>;
+               };
+
+               opp@860000000_900_3_7 {
+                       opp-microvolt = <900000 900000 1250000>;
+               };
+
+               opp@860000000_900_4_7 {
+                       opp-microvolt = <900000 900000 1250000>;
+               };
+
+               opp@860000000_900_2_8 {
+                       opp-microvolt = <900000 900000 1250000>;
+               };
+
+               opp@860000000_900_3_8 {
+                       opp-microvolt = <900000 900000 1250000>;
+               };
+
+               opp@860000000_900_4_8 {
+                       opp-microvolt = <900000 900000 1250000>;
+               };
+
+               opp@860000000_975 {
+                       opp-microvolt = <975000 975000 1250000>;
+               };
+
+               opp@860000000_975_1_1 {
+                       opp-microvolt = <975000 975000 1250000>;
+               };
+
+               opp@860000000_975_1_2 {
+                       opp-microvolt = <975000 975000 1250000>;
+               };
+
+               opp@860000000_975_1_3 {
+                       opp-microvolt = <975000 975000 1250000>;
+               };
+
+               opp@860000000_975_1_4 {
+                       opp-microvolt = <975000 975000 1250000>;
+               };
+
+               opp@860000000_975_1_7 {
+                       opp-microvolt = <975000 975000 1250000>;
+               };
+
+               opp@860000000_975_1_8 {
+                       opp-microvolt = <975000 975000 1250000>;
+               };
+
+               opp@860000000_1000 {
+                       opp-microvolt = <1000000 1000000 1250000>;
+               };
+
+               opp@910000000_900 {
+                       opp-microvolt = <900000 900000 1250000>;
+               };
+
+               opp@1000000000_900 {
+                       opp-microvolt = <900000 900000 1250000>;
+               };
+
+               opp@1000000000_975 {
+                       opp-microvolt = <975000 975000 1250000>;
+               };
+
+               opp@1000000000_975_2_1 {
+                       opp-microvolt = <975000 975000 1250000>;
+               };
+
+               opp@1000000000_975_3_1 {
+                       opp-microvolt = <975000 975000 1250000>;
+               };
+
+               opp@1000000000_975_2_2 {
+                       opp-microvolt = <975000 975000 1250000>;
+               };
+
+               opp@1000000000_975_3_2 {
+                       opp-microvolt = <975000 975000 1250000>;
+               };
+
+               opp@1000000000_975_2_3 {
+                       opp-microvolt = <975000 975000 1250000>;
+               };
+
+               opp@1000000000_975_3_3 {
+                       opp-microvolt = <975000 975000 1250000>;
+               };
+
+               opp@1000000000_975_2_4 {
+                       opp-microvolt = <975000 975000 1250000>;
+               };
+
+               opp@1000000000_975_3_4 {
+                       opp-microvolt = <975000 975000 1250000>;
+               };
+
+               opp@1000000000_975_2_7 {
+                       opp-microvolt = <975000 975000 1250000>;
+               };
+
+               opp@1000000000_975_3_7 {
+                       opp-microvolt = <975000 975000 1250000>;
+               };
+
+               opp@1000000000_975_4_7 {
+                       opp-microvolt = <975000 975000 1250000>;
+               };
+
+               opp@1000000000_975_2_8 {
+                       opp-microvolt = <975000 975000 1250000>;
+               };
+
+               opp@1000000000_975_3_8 {
+                       opp-microvolt = <975000 975000 1250000>;
+               };
+
+               opp@1000000000_975_4_8 {
+                       opp-microvolt = <975000 975000 1250000>;
+               };
+
+               opp@1000000000_1000 {
+                       opp-microvolt = <1000000 1000000 1250000>;
+               };
+
+               opp@1000000000_1025 {
+                       opp-microvolt = <1025000 1025000 1250000>;
+               };
+
+               opp@1100000000_900 {
+                       opp-microvolt = <900000 900000 1250000>;
+               };
+
+               opp@1100000000_975 {
+                       opp-microvolt = <975000 975000 1250000>;
+               };
+
+               opp@1100000000_975_3_1 {
+                       opp-microvolt = <975000 975000 1250000>;
+               };
+
+               opp@1100000000_975_3_2 {
+                       opp-microvolt = <975000 975000 1250000>;
+               };
+
+               opp@1100000000_975_3_3 {
+                       opp-microvolt = <975000 975000 1250000>;
+               };
+
+               opp@1100000000_975_3_4 {
+                       opp-microvolt = <975000 975000 1250000>;
+               };
+
+               opp@1100000000_975_3_7 {
+                       opp-microvolt = <975000 975000 1250000>;
+               };
+
+               opp@1100000000_975_4_7 {
+                       opp-microvolt = <975000 975000 1250000>;
+               };
+
+               opp@1100000000_975_3_8 {
+                       opp-microvolt = <975000 975000 1250000>;
+               };
+
+               opp@1100000000_975_4_8 {
+                       opp-microvolt = <975000 975000 1250000>;
+               };
+
+               opp@1100000000_1000 {
+                       opp-microvolt = <1000000 1000000 1250000>;
+               };
+
+               opp@1100000000_1000_2_1 {
+                       opp-microvolt = <1000000 1000000 1250000>;
+               };
+
+               opp@1100000000_1000_2_2 {
+                       opp-microvolt = <1000000 1000000 1250000>;
+               };
+
+               opp@1100000000_1000_2_3 {
+                       opp-microvolt = <1000000 1000000 1250000>;
+               };
+
+               opp@1100000000_1000_2_4 {
+                       opp-microvolt = <1000000 1000000 1250000>;
+               };
+
+               opp@1100000000_1000_2_7 {
+                       opp-microvolt = <1000000 1000000 1250000>;
+               };
+
+               opp@1100000000_1000_2_8 {
+                       opp-microvolt = <1000000 1000000 1250000>;
+               };
+
+               opp@1100000000_1025 {
+                       opp-microvolt = <1025000 1025000 1250000>;
+               };
+
+               opp@1100000000_1075 {
+                       opp-microvolt = <1075000 1075000 1250000>;
+               };
+
+               opp@1150000000_975 {
+                       opp-microvolt = <975000 975000 1250000>;
+               };
+
+               opp@1200000000_975 {
+                       opp-microvolt = <975000 975000 1250000>;
+               };
+
+               opp@1200000000_1000 {
+                       opp-microvolt = <1000000 1000000 1250000>;
+               };
+
+               opp@1200000000_1000_3_1 {
+                       opp-microvolt = <1000000 1000000 1250000>;
+               };
+
+               opp@1200000000_1000_3_2 {
+                       opp-microvolt = <1000000 1000000 1250000>;
+               };
+
+               opp@1200000000_1000_3_3 {
+                       opp-microvolt = <1000000 1000000 1250000>;
+               };
+
+               opp@1200000000_1000_3_4 {
+                       opp-microvolt = <1000000 1000000 1250000>;
+               };
+
+               opp@1200000000_1000_3_7 {
+                       opp-microvolt = <1000000 1000000 1250000>;
+               };
+
+               opp@1200000000_1000_4_7 {
+                       opp-microvolt = <1000000 1000000 1250000>;
+               };
+
+               opp@1200000000_1000_3_8 {
+                       opp-microvolt = <1000000 1000000 1250000>;
+               };
+
+               opp@1200000000_1000_4_8 {
+                       opp-microvolt = <1000000 1000000 1250000>;
+               };
+
+               opp@1200000000_1025 {
+                       opp-microvolt = <1025000 1025000 1250000>;
+               };
+
+               opp@1200000000_1025_2_1 {
+                       opp-microvolt = <1025000 1025000 1250000>;
+               };
+
+               opp@1200000000_1025_2_2 {
+                       opp-microvolt = <1025000 1025000 1250000>;
+               };
+
+               opp@1200000000_1025_2_3 {
+                       opp-microvolt = <1025000 1025000 1250000>;
+               };
+
+               opp@1200000000_1025_2_4 {
+                       opp-microvolt = <1025000 1025000 1250000>;
+               };
+
+               opp@1200000000_1025_2_7 {
+                       opp-microvolt = <1025000 1025000 1250000>;
+               };
+
+               opp@1200000000_1025_2_8 {
+                       opp-microvolt = <1025000 1025000 1250000>;
+               };
+
+               opp@1200000000_1050 {
+                       opp-microvolt = <1050000 1050000 1250000>;
+               };
+
+               opp@1200000000_1075 {
+                       opp-microvolt = <1075000 1075000 1250000>;
+               };
+
+               opp@1200000000_1100 {
+                       opp-microvolt = <1100000 1100000 1250000>;
+               };
+
+               opp@1300000000_1000 {
+                       opp-microvolt = <1000000 1000000 1250000>;
+               };
+
+               opp@1300000000_1000_4_7 {
+                       opp-microvolt = <1000000 1000000 1250000>;
+               };
+
+               opp@1300000000_1000_4_8 {
+                       opp-microvolt = <1000000 1000000 1250000>;
+               };
+
+               opp@1300000000_1025 {
+                       opp-microvolt = <1025000 1025000 1250000>;
+               };
+
+               opp@1300000000_1025_3_1 {
+                       opp-microvolt = <1025000 1025000 1250000>;
+               };
+
+               opp@1300000000_1025_3_7 {
+                       opp-microvolt = <1025000 1025000 1250000>;
+               };
+
+               opp@1300000000_1025_3_8 {
+                       opp-microvolt = <1025000 1025000 1250000>;
+               };
+
+               opp@1300000000_1050 {
+                       opp-microvolt = <1050000 1050000 1250000>;
+               };
+
+               opp@1300000000_1050_2_1 {
+                       opp-microvolt = <1050000 1050000 1250000>;
+               };
+
+               opp@1300000000_1050_3_2 {
+                       opp-microvolt = <1050000 1050000 1250000>;
+               };
+
+               opp@1300000000_1050_3_3 {
+                       opp-microvolt = <1050000 1050000 1250000>;
+               };
+
+               opp@1300000000_1050_3_4 {
+                       opp-microvolt = <1050000 1050000 1250000>;
+               };
+
+               opp@1300000000_1050_3_5 {
+                       opp-microvolt = <1050000 1050000 1250000>;
+               };
+
+               opp@1300000000_1050_3_6 {
+                       opp-microvolt = <1050000 1050000 1250000>;
+               };
+
+               opp@1300000000_1050_2_7 {
+                       opp-microvolt = <1050000 1050000 1250000>;
+               };
+
+               opp@1300000000_1050_2_8 {
+                       opp-microvolt = <1050000 1050000 1250000>;
+               };
+
+               opp@1300000000_1050_3_12 {
+                       opp-microvolt = <1050000 1050000 1250000>;
+               };
+
+               opp@1300000000_1050_3_13 {
+                       opp-microvolt = <1050000 1050000 1250000>;
+               };
+
+               opp@1300000000_1075 {
+                       opp-microvolt = <1075000 1075000 1250000>;
+               };
+
+               opp@1300000000_1075_2_2 {
+                       opp-microvolt = <1075000 1075000 1250000>;
+               };
+
+               opp@1300000000_1075_2_3 {
+                       opp-microvolt = <1075000 1075000 1250000>;
+               };
+
+               opp@1300000000_1075_2_4 {
+                       opp-microvolt = <1075000 1075000 1250000>;
+               };
+
+               opp@1300000000_1100 {
+                       opp-microvolt = <1100000 1100000 1250000>;
+               };
+
+               opp@1300000000_1125 {
+                       opp-microvolt = <1125000 1125000 1250000>;
+               };
+
+               opp@1300000000_1150 {
+                       opp-microvolt = <1150000 1150000 1250000>;
+               };
+
+               opp@1300000000_1175 {
+                       opp-microvolt = <1175000 1175000 1250000>;
+               };
+
+               opp@1400000000_1100 {
+                       opp-microvolt = <1100000 1100000 1250000>;
+               };
+
+               opp@1400000000_1125 {
+                       opp-microvolt = <1125000 1125000 1250000>;
+               };
+
+               opp@1400000000_1150 {
+                       opp-microvolt = <1150000 1150000 1250000>;
+               };
+
+               opp@1400000000_1150_2_4 {
+                       opp-microvolt = <1150000 1150000 1250000>;
+               };
+
+               opp@1400000000_1175 {
+                       opp-microvolt = <1175000 1175000 1250000>;
+               };
+
+               opp@1400000000_1237 {
+                       opp-microvolt = <1237000 1237000 1250000>;
+               };
+
+               opp@1500000000_1125 {
+                       opp-microvolt = <1125000 1125000 1250000>;
+               };
+
+               opp@1500000000_1125_4_5 {
+                       opp-microvolt = <1125000 1125000 1250000>;
+               };
+
+               opp@1500000000_1125_4_6 {
+                       opp-microvolt = <1125000 1125000 1250000>;
+               };
+
+               opp@1500000000_1125_4_12 {
+                       opp-microvolt = <1125000 1125000 1250000>;
+               };
+
+               opp@1500000000_1125_4_13 {
+                       opp-microvolt = <1125000 1125000 1250000>;
+               };
+
+               opp@1500000000_1150 {
+                       opp-microvolt = <1150000 1150000 1250000>;
+               };
+
+               opp@1500000000_1150_3_5 {
+                       opp-microvolt = <1150000 1150000 1250000>;
+               };
+
+               opp@1500000000_1150_3_6 {
+                       opp-microvolt = <1150000 1150000 1250000>;
+               };
+
+               opp@1500000000_1150_3_12 {
+                       opp-microvolt = <1150000 1150000 1250000>;
+               };
+
+               opp@1500000000_1150_3_13 {
+                       opp-microvolt = <1150000 1150000 1250000>;
+               };
+
+               opp@1500000000_1200 {
+                       opp-microvolt = <1200000 1200000 1250000>;
+               };
+
+               opp@1500000000_1237 {
+                       opp-microvolt = <1237000 1237000 1250000>;
+               };
+
+               opp@1600000000_1212 {
+                       opp-microvolt = <1212000 1212000 1250000>;
+               };
+
+               opp@1600000000_1237 {
+                       opp-microvolt = <1237000 1237000 1250000>;
+               };
+
+               opp@1700000000_1212 {
+                       opp-microvolt = <1212000 1212000 1250000>;
+               };
+
+               opp@1700000000_1237 {
+                       opp-microvolt = <1237000 1237000 1250000>;
+               };
+       };
+};
diff --git a/arch/arm/boot/dts/tegra30-cpu-opp.dtsi b/arch/arm/boot/dts/tegra30-cpu-opp.dtsi
new file mode 100644 (file)
index 0000000..d64fc26
--- /dev/null
@@ -0,0 +1,1202 @@
+// SPDX-License-Identifier: GPL-2.0
+
+/ {
+       cpu0_opp_table: cpu_opp_table0 {
+               compatible = "operating-points-v2";
+               opp-shared;
+
+               opp@51000000_800 {
+                       clock-latency-ns = <100000>;
+                       opp-supported-hw = <0x1F 0x31FE>;
+                       opp-hz = /bits/ 64 <51000000>;
+               };
+
+               opp@51000000_850 {
+                       clock-latency-ns = <100000>;
+                       opp-supported-hw = <0x1F 0x0C01>;
+                       opp-hz = /bits/ 64 <51000000>;
+               };
+
+               opp@51000000_912 {
+                       clock-latency-ns = <100000>;
+                       opp-supported-hw = <0x1F 0x0200>;
+                       opp-hz = /bits/ 64 <51000000>;
+               };
+
+               opp@102000000_800 {
+                       clock-latency-ns = <100000>;
+                       opp-supported-hw = <0x1F 0x31FE>;
+                       opp-hz = /bits/ 64 <102000000>;
+               };
+
+               opp@102000000_850 {
+                       clock-latency-ns = <100000>;
+                       opp-supported-hw = <0x1F 0x0C01>;
+                       opp-hz = /bits/ 64 <102000000>;
+               };
+
+               opp@102000000_912 {
+                       clock-latency-ns = <100000>;
+                       opp-supported-hw = <0x1F 0x0200>;
+                       opp-hz = /bits/ 64 <102000000>;
+               };
+
+               opp@204000000_800 {
+                       clock-latency-ns = <100000>;
+                       opp-supported-hw = <0x1F 0x31FE>;
+                       opp-hz = /bits/ 64 <204000000>;
+               };
+
+               opp@204000000_850 {
+                       clock-latency-ns = <100000>;
+                       opp-supported-hw = <0x1F 0x0C01>;
+                       opp-hz = /bits/ 64 <204000000>;
+               };
+
+               opp@204000000_912 {
+                       clock-latency-ns = <100000>;
+                       opp-supported-hw = <0x1F 0x0200>;
+                       opp-hz = /bits/ 64 <204000000>;
+               };
+
+               opp@312000000_850 {
+                       clock-latency-ns = <100000>;
+                       opp-supported-hw = <0x1F 0x0C00>;
+                       opp-hz = /bits/ 64 <312000000>;
+               };
+
+               opp@312000000_912 {
+                       clock-latency-ns = <100000>;
+                       opp-supported-hw = <0x1F 0x0200>;
+                       opp-hz = /bits/ 64 <312000000>;
+               };
+
+               opp@340000000_800 {
+                       clock-latency-ns = <100000>;
+                       opp-supported-hw = <0x1F 0x0192>;
+                       opp-hz = /bits/ 64 <340000000>;
+               };
+
+               opp@340000000_850 {
+                       clock-latency-ns = <100000>;
+                       opp-supported-hw = <0x0F 0x0001>;
+                       opp-hz = /bits/ 64 <340000000>;
+               };
+
+               opp@370000000_800 {
+                       clock-latency-ns = <100000>;
+                       opp-supported-hw = <0x1E 0x306C>;
+                       opp-hz = /bits/ 64 <370000000>;
+               };
+
+               opp@456000000_850 {
+                       clock-latency-ns = <100000>;
+                       opp-supported-hw = <0x1F 0x0C00>;
+                       opp-hz = /bits/ 64 <456000000>;
+               };
+
+               opp@456000000_912 {
+                       clock-latency-ns = <100000>;
+                       opp-supported-hw = <0x1F 0x0200>;
+                       opp-hz = /bits/ 64 <456000000>;
+               };
+
+               opp@475000000_800 {
+                       clock-latency-ns = <100000>;
+                       opp-supported-hw = <0x1E 0x31FE>;
+                       opp-hz = /bits/ 64 <475000000>;
+               };
+
+               opp@475000000_850 {
+                       clock-latency-ns = <100000>;
+                       opp-supported-hw = <0x0F 0x0001>;
+                       opp-hz = /bits/ 64 <475000000>;
+               };
+
+               opp@475000000_850_0_1 {
+                       clock-latency-ns = <100000>;
+                       opp-supported-hw = <0x01 0x0002>;
+                       opp-hz = /bits/ 64 <475000000>;
+               };
+
+               opp@475000000_850_0_4 {
+                       clock-latency-ns = <100000>;
+                       opp-supported-hw = <0x01 0x0010>;
+                       opp-hz = /bits/ 64 <475000000>;
+               };
+
+               opp@475000000_850_0_7 {
+                       clock-latency-ns = <100000>;
+                       opp-supported-hw = <0x01 0x0080>;
+                       opp-hz = /bits/ 64 <475000000>;
+               };
+
+               opp@475000000_850_0_8 {
+                       clock-latency-ns = <100000>;
+                       opp-supported-hw = <0x01 0x0100>;
+                       opp-hz = /bits/ 64 <475000000>;
+               };
+
+               opp@608000000_850 {
+                       clock-latency-ns = <100000>;
+                       opp-supported-hw = <0x1F 0x0400>;
+                       opp-hz = /bits/ 64 <608000000>;
+               };
+
+               opp@608000000_912 {
+                       clock-latency-ns = <100000>;
+                       opp-supported-hw = <0x1F 0x0200>;
+                       opp-hz = /bits/ 64 <608000000>;
+               };
+
+               opp@620000000_850 {
+                       clock-latency-ns = <100000>;
+                       opp-supported-hw = <0x1E 0x306C>;
+                       opp-hz = /bits/ 64 <620000000>;
+               };
+
+               opp@640000000_850 {
+                       clock-latency-ns = <100000>;
+                       opp-supported-hw = <0x0F 0x0001>;
+                       opp-hz = /bits/ 64 <640000000>;
+               };
+
+               opp@640000000_850_1_1 {
+                       clock-latency-ns = <100000>;
+                       opp-supported-hw = <0x02 0x0002>;
+                       opp-hz = /bits/ 64 <640000000>;
+               };
+
+               opp@640000000_850_2_1 {
+                       clock-latency-ns = <100000>;
+                       opp-supported-hw = <0x04 0x0002>;
+                       opp-hz = /bits/ 64 <640000000>;
+               };
+
+               opp@640000000_850_3_1 {
+                       clock-latency-ns = <100000>;
+                       opp-supported-hw = <0x08 0x0002>;
+                       opp-hz = /bits/ 64 <640000000>;
+               };
+
+               opp@640000000_850_1_4 {
+                       clock-latency-ns = <100000>;
+                       opp-supported-hw = <0x02 0x0010>;
+                       opp-hz = /bits/ 64 <640000000>;
+               };
+
+               opp@640000000_850_2_4 {
+                       clock-latency-ns = <100000>;
+                       opp-supported-hw = <0x04 0x0010>;
+                       opp-hz = /bits/ 64 <640000000>;
+               };
+
+               opp@640000000_850_3_4 {
+                       clock-latency-ns = <100000>;
+                       opp-supported-hw = <0x08 0x0010>;
+                       opp-hz = /bits/ 64 <640000000>;
+               };
+
+               opp@640000000_850_1_7 {
+                       clock-latency-ns = <100000>;
+                       opp-supported-hw = <0x02 0x0080>;
+                       opp-hz = /bits/ 64 <640000000>;
+               };
+
+               opp@640000000_850_2_7 {
+                       clock-latency-ns = <100000>;
+                       opp-supported-hw = <0x04 0x0080>;
+                       opp-hz = /bits/ 64 <640000000>;
+               };
+
+               opp@640000000_850_3_7 {
+                       clock-latency-ns = <100000>;
+                       opp-supported-hw = <0x08 0x0080>;
+                       opp-hz = /bits/ 64 <640000000>;
+               };
+
+               opp@640000000_850_4_7 {
+                       clock-latency-ns = <100000>;
+                       opp-supported-hw = <0x10 0x0080>;
+                       opp-hz = /bits/ 64 <640000000>;
+               };
+
+               opp@640000000_850_1_8 {
+                       clock-latency-ns = <100000>;
+                       opp-supported-hw = <0x02 0x0100>;
+                       opp-hz = /bits/ 64 <640000000>;
+               };
+
+               opp@640000000_850_2_8 {
+                       clock-latency-ns = <100000>;
+                       opp-supported-hw = <0x04 0x0100>;
+                       opp-hz = /bits/ 64 <640000000>;
+               };
+
+               opp@640000000_850_3_8 {
+                       clock-latency-ns = <100000>;
+                       opp-supported-hw = <0x08 0x0100>;
+                       opp-hz = /bits/ 64 <640000000>;
+               };
+
+               opp@640000000_850_4_8 {
+                       clock-latency-ns = <100000>;
+                       opp-supported-hw = <0x10 0x0100>;
+                       opp-hz = /bits/ 64 <640000000>;
+               };
+
+               opp@640000000_900 {
+                       clock-latency-ns = <100000>;
+                       opp-supported-hw = <0x01 0x0192>;
+                       opp-hz = /bits/ 64 <640000000>;
+               };
+
+               opp@760000000_850 {
+                       clock-latency-ns = <100000>;
+                       opp-supported-hw = <0x1E 0x3461>;
+                       opp-hz = /bits/ 64 <760000000>;
+               };
+
+               opp@760000000_850_3_1 {
+                       clock-latency-ns = <100000>;
+                       opp-supported-hw = <0x08 0x0002>;
+                       opp-hz = /bits/ 64 <760000000>;
+               };
+
+               opp@760000000_850_3_2 {
+                       clock-latency-ns = <100000>;
+                       opp-supported-hw = <0x08 0x0004>;
+                       opp-hz = /bits/ 64 <760000000>;
+               };
+
+               opp@760000000_850_3_3 {
+                       clock-latency-ns = <100000>;
+                       opp-supported-hw = <0x08 0x0008>;
+                       opp-hz = /bits/ 64 <760000000>;
+               };
+
+               opp@760000000_850_3_4 {
+                       clock-latency-ns = <100000>;
+                       opp-supported-hw = <0x08 0x0010>;
+                       opp-hz = /bits/ 64 <760000000>;
+               };
+
+               opp@760000000_850_3_7 {
+                       clock-latency-ns = <100000>;
+                       opp-supported-hw = <0x08 0x0080>;
+                       opp-hz = /bits/ 64 <760000000>;
+               };
+
+               opp@760000000_850_4_7 {
+                       clock-latency-ns = <100000>;
+                       opp-supported-hw = <0x10 0x0080>;
+                       opp-hz = /bits/ 64 <760000000>;
+               };
+
+               opp@760000000_850_3_8 {
+                       clock-latency-ns = <100000>;
+                       opp-supported-hw = <0x08 0x0100>;
+                       opp-hz = /bits/ 64 <760000000>;
+               };
+
+               opp@760000000_850_4_8 {
+                       clock-latency-ns = <100000>;
+                       opp-supported-hw = <0x10 0x0100>;
+                       opp-hz = /bits/ 64 <760000000>;
+               };
+
+               opp@760000000_850_0_10 {
+                       clock-latency-ns = <100000>;
+                       opp-supported-hw = <0x01 0x0400>;
+                       opp-hz = /bits/ 64 <760000000>;
+               };
+
+               opp@760000000_900 {
+                       clock-latency-ns = <100000>;
+                       opp-supported-hw = <0x01 0x0001>;
+                       opp-hz = /bits/ 64 <760000000>;
+               };
+
+               opp@760000000_900_1_1 {
+                       clock-latency-ns = <100000>;
+                       opp-supported-hw = <0x02 0x0002>;
+                       opp-hz = /bits/ 64 <760000000>;
+               };
+
+               opp@760000000_900_2_1 {
+                       clock-latency-ns = <100000>;
+                       opp-supported-hw = <0x04 0x0002>;
+                       opp-hz = /bits/ 64 <760000000>;
+               };
+
+               opp@760000000_900_1_2 {
+                       clock-latency-ns = <100000>;
+                       opp-supported-hw = <0x02 0x0004>;
+                       opp-hz = /bits/ 64 <760000000>;
+               };
+
+               opp@760000000_900_2_2 {
+                       clock-latency-ns = <100000>;
+                       opp-supported-hw = <0x04 0x0004>;
+                       opp-hz = /bits/ 64 <760000000>;
+               };
+
+               opp@760000000_900_1_3 {
+                       clock-latency-ns = <100000>;
+                       opp-supported-hw = <0x02 0x0008>;
+                       opp-hz = /bits/ 64 <760000000>;
+               };
+
+               opp@760000000_900_2_3 {
+                       clock-latency-ns = <100000>;
+                       opp-supported-hw = <0x04 0x0008>;
+                       opp-hz = /bits/ 64 <760000000>;
+               };
+
+               opp@760000000_900_1_4 {
+                       clock-latency-ns = <100000>;
+                       opp-supported-hw = <0x02 0x0010>;
+                       opp-hz = /bits/ 64 <760000000>;
+               };
+
+               opp@760000000_900_2_4 {
+                       clock-latency-ns = <100000>;
+                       opp-supported-hw = <0x04 0x0010>;
+                       opp-hz = /bits/ 64 <760000000>;
+               };
+
+               opp@760000000_900_1_7 {
+                       clock-latency-ns = <100000>;
+                       opp-supported-hw = <0x02 0x0080>;
+                       opp-hz = /bits/ 64 <760000000>;
+               };
+
+               opp@760000000_900_2_7 {
+                       clock-latency-ns = <100000>;
+                       opp-supported-hw = <0x04 0x0080>;
+                       opp-hz = /bits/ 64 <760000000>;
+               };
+
+               opp@760000000_900_1_8 {
+                       clock-latency-ns = <100000>;
+                       opp-supported-hw = <0x02 0x0100>;
+                       opp-hz = /bits/ 64 <760000000>;
+               };
+
+               opp@760000000_900_2_8 {
+                       clock-latency-ns = <100000>;
+                       opp-supported-hw = <0x04 0x0100>;
+                       opp-hz = /bits/ 64 <760000000>;
+               };
+
+               opp@760000000_912 {
+                       clock-latency-ns = <100000>;
+                       opp-supported-hw = <0x1F 0x0200>;
+                       opp-hz = /bits/ 64 <760000000>;
+               };
+
+               opp@760000000_975 {
+                       clock-latency-ns = <100000>;
+                       opp-supported-hw = <0x01 0x0192>;
+                       opp-hz = /bits/ 64 <760000000>;
+               };
+
+               opp@816000000_850 {
+                       clock-latency-ns = <100000>;
+                       opp-supported-hw = <0x1F 0x0400>;
+                       opp-hz = /bits/ 64 <816000000>;
+               };
+
+               opp@816000000_912 {
+                       clock-latency-ns = <100000>;
+                       opp-supported-hw = <0x1F 0x0200>;
+                       opp-hz = /bits/ 64 <816000000>;
+               };
+
+               opp@860000000_850 {
+                       clock-latency-ns = <100000>;
+                       opp-supported-hw = <0x0C 0x0001>;
+                       opp-hz = /bits/ 64 <860000000>;
+               };
+
+               opp@860000000_900 {
+                       clock-latency-ns = <100000>;
+                       opp-supported-hw = <0x02 0x0001>;
+                       opp-hz = /bits/ 64 <860000000>;
+               };
+
+               opp@860000000_900_2_1 {
+                       clock-latency-ns = <100000>;
+                       opp-supported-hw = <0x04 0x0002>;
+                       opp-hz = /bits/ 64 <860000000>;
+               };
+
+               opp@860000000_900_3_1 {
+                       clock-latency-ns = <100000>;
+                       opp-supported-hw = <0x08 0x0002>;
+                       opp-hz = /bits/ 64 <860000000>;
+               };
+
+               opp@860000000_900_2_2 {
+                       clock-latency-ns = <100000>;
+                       opp-supported-hw = <0x04 0x0004>;
+                       opp-hz = /bits/ 64 <860000000>;
+               };
+
+               opp@860000000_900_3_2 {
+                       clock-latency-ns = <100000>;
+                       opp-supported-hw = <0x08 0x0004>;
+                       opp-hz = /bits/ 64 <860000000>;
+               };
+
+               opp@860000000_900_2_3 {
+                       clock-latency-ns = <100000>;
+                       opp-supported-hw = <0x04 0x0008>;
+                       opp-hz = /bits/ 64 <860000000>;
+               };
+
+               opp@860000000_900_3_3 {
+                       clock-latency-ns = <100000>;
+                       opp-supported-hw = <0x08 0x0008>;
+                       opp-hz = /bits/ 64 <860000000>;
+               };
+
+               opp@860000000_900_2_4 {
+                       clock-latency-ns = <100000>;
+                       opp-supported-hw = <0x04 0x0010>;
+                       opp-hz = /bits/ 64 <860000000>;
+               };
+
+               opp@860000000_900_3_4 {
+                       clock-latency-ns = <100000>;
+                       opp-supported-hw = <0x08 0x0010>;
+                       opp-hz = /bits/ 64 <860000000>;
+               };
+
+               opp@860000000_900_2_7 {
+                       clock-latency-ns = <100000>;
+                       opp-supported-hw = <0x04 0x0080>;
+                       opp-hz = /bits/ 64 <860000000>;
+               };
+
+               opp@860000000_900_3_7 {
+                       clock-latency-ns = <100000>;
+                       opp-supported-hw = <0x08 0x0080>;
+                       opp-hz = /bits/ 64 <860000000>;
+               };
+
+               opp@860000000_900_4_7 {
+                       clock-latency-ns = <100000>;
+                       opp-supported-hw = <0x10 0x0080>;
+                       opp-hz = /bits/ 64 <860000000>;
+               };
+
+               opp@860000000_900_2_8 {
+                       clock-latency-ns = <100000>;
+                       opp-supported-hw = <0x04 0x0100>;
+                       opp-hz = /bits/ 64 <860000000>;
+               };
+
+               opp@860000000_900_3_8 {
+                       clock-latency-ns = <100000>;
+                       opp-supported-hw = <0x08 0x0100>;
+                       opp-hz = /bits/ 64 <860000000>;
+               };
+
+               opp@860000000_900_4_8 {
+                       clock-latency-ns = <100000>;
+                       opp-supported-hw = <0x10 0x0100>;
+                       opp-hz = /bits/ 64 <860000000>;
+               };
+
+               opp@860000000_975 {
+                       clock-latency-ns = <100000>;
+                       opp-supported-hw = <0x01 0x0001>;
+                       opp-hz = /bits/ 64 <860000000>;
+               };
+
+               opp@860000000_975_1_1 {
+                       clock-latency-ns = <100000>;
+                       opp-supported-hw = <0x02 0x0002>;
+                       opp-hz = /bits/ 64 <860000000>;
+               };
+
+               opp@860000000_975_1_2 {
+                       clock-latency-ns = <100000>;
+                       opp-supported-hw = <0x02 0x0004>;
+                       opp-hz = /bits/ 64 <860000000>;
+               };
+
+               opp@860000000_975_1_3 {
+                       clock-latency-ns = <100000>;
+                       opp-supported-hw = <0x02 0x0008>;
+                       opp-hz = /bits/ 64 <860000000>;
+               };
+
+               opp@860000000_975_1_4 {
+                       clock-latency-ns = <100000>;
+                       opp-supported-hw = <0x02 0x0010>;
+                       opp-hz = /bits/ 64 <860000000>;
+               };
+
+               opp@860000000_975_1_7 {
+                       clock-latency-ns = <100000>;
+                       opp-supported-hw = <0x02 0x0080>;
+                       opp-hz = /bits/ 64 <860000000>;
+               };
+
+               opp@860000000_975_1_8 {
+                       clock-latency-ns = <100000>;
+                       opp-supported-hw = <0x02 0x0100>;
+                       opp-hz = /bits/ 64 <860000000>;
+               };
+
+               opp@860000000_1000 {
+                       clock-latency-ns = <100000>;
+                       opp-supported-hw = <0x01 0x0192>;
+                       opp-hz = /bits/ 64 <860000000>;
+               };
+
+               opp@910000000_900 {
+                       clock-latency-ns = <100000>;
+                       opp-supported-hw = <0x18 0x3060>;
+                       opp-hz = /bits/ 64 <910000000>;
+               };
+
+               opp@1000000000_900 {
+                       clock-latency-ns = <100000>;
+                       opp-supported-hw = <0x0C 0x0001>;
+                       opp-hz = /bits/ 64 <1000000000>;
+               };
+
+               opp@1000000000_975 {
+                       clock-latency-ns = <100000>;
+                       opp-supported-hw = <0x03 0x0001>;
+                       opp-hz = /bits/ 64 <1000000000>;
+               };
+
+               opp@1000000000_975_2_1 {
+                       clock-latency-ns = <100000>;
+                       opp-supported-hw = <0x04 0x0002>;
+                       opp-hz = /bits/ 64 <1000000000>;
+               };
+
+               opp@1000000000_975_3_1 {
+                       clock-latency-ns = <100000>;
+                       opp-supported-hw = <0x08 0x0002>;
+                       opp-hz = /bits/ 64 <1000000000>;
+               };
+
+               opp@1000000000_975_2_2 {
+                       clock-latency-ns = <100000>;
+                       opp-supported-hw = <0x04 0x0004>;
+                       opp-hz = /bits/ 64 <1000000000>;
+               };
+
+               opp@1000000000_975_3_2 {
+                       clock-latency-ns = <100000>;
+                       opp-supported-hw = <0x08 0x0004>;
+                       opp-hz = /bits/ 64 <1000000000>;
+               };
+
+               opp@1000000000_975_2_3 {
+                       clock-latency-ns = <100000>;
+                       opp-supported-hw = <0x04 0x0008>;
+                       opp-hz = /bits/ 64 <1000000000>;
+               };
+
+               opp@1000000000_975_3_3 {
+                       clock-latency-ns = <100000>;
+                       opp-supported-hw = <0x08 0x0008>;
+                       opp-hz = /bits/ 64 <1000000000>;
+               };
+
+               opp@1000000000_975_2_4 {
+                       clock-latency-ns = <100000>;
+                       opp-supported-hw = <0x04 0x0010>;
+                       opp-hz = /bits/ 64 <1000000000>;
+               };
+
+               opp@1000000000_975_3_4 {
+                       clock-latency-ns = <100000>;
+                       opp-supported-hw = <0x08 0x0010>;
+                       opp-hz = /bits/ 64 <1000000000>;
+               };
+
+               opp@1000000000_975_2_7 {
+                       clock-latency-ns = <100000>;
+                       opp-supported-hw = <0x04 0x0080>;
+                       opp-hz = /bits/ 64 <1000000000>;
+               };
+
+               opp@1000000000_975_3_7 {
+                       clock-latency-ns = <100000>;
+                       opp-supported-hw = <0x08 0x0080>;
+                       opp-hz = /bits/ 64 <1000000000>;
+               };
+
+               opp@1000000000_975_4_7 {
+                       clock-latency-ns = <100000>;
+                       opp-supported-hw = <0x10 0x0080>;
+                       opp-hz = /bits/ 64 <1000000000>;
+               };
+
+               opp@1000000000_975_2_8 {
+                       clock-latency-ns = <100000>;
+                       opp-supported-hw = <0x04 0x0100>;
+                       opp-hz = /bits/ 64 <1000000000>;
+               };
+
+               opp@1000000000_975_3_8 {
+                       clock-latency-ns = <100000>;
+                       opp-supported-hw = <0x08 0x0100>;
+                       opp-hz = /bits/ 64 <1000000000>;
+               };
+
+               opp@1000000000_975_4_8 {
+                       clock-latency-ns = <100000>;
+                       opp-supported-hw = <0x10 0x0100>;
+                       opp-hz = /bits/ 64 <1000000000>;
+               };
+
+               opp@1000000000_1000 {
+                       clock-latency-ns = <100000>;
+                       opp-supported-hw = <0x02 0x019E>;
+                       opp-hz = /bits/ 64 <1000000000>;
+               };
+
+               opp@1000000000_1025 {
+                       clock-latency-ns = <100000>;
+                       opp-supported-hw = <0x01 0x0192>;
+                       opp-hz = /bits/ 64 <1000000000>;
+               };
+
+               opp@1100000000_900 {
+                       clock-latency-ns = <100000>;
+                       opp-supported-hw = <0x08 0x0001>;
+                       opp-hz = /bits/ 64 <1100000000>;
+               };
+
+               opp@1100000000_975 {
+                       clock-latency-ns = <100000>;
+                       opp-supported-hw = <0x06 0x0001>;
+                       opp-hz = /bits/ 64 <1100000000>;
+               };
+
+               opp@1100000000_975_3_1 {
+                       clock-latency-ns = <100000>;
+                       opp-supported-hw = <0x08 0x0002>;
+                       opp-hz = /bits/ 64 <1100000000>;
+               };
+
+               opp@1100000000_975_3_2 {
+                       clock-latency-ns = <100000>;
+                       opp-supported-hw = <0x08 0x0004>;
+                       opp-hz = /bits/ 64 <1100000000>;
+               };
+
+               opp@1100000000_975_3_3 {
+                       clock-latency-ns = <100000>;
+                       opp-supported-hw = <0x08 0x0008>;
+                       opp-hz = /bits/ 64 <1100000000>;
+               };
+
+               opp@1100000000_975_3_4 {
+                       clock-latency-ns = <100000>;
+                       opp-supported-hw = <0x08 0x0010>;
+                       opp-hz = /bits/ 64 <1100000000>;
+               };
+
+               opp@1100000000_975_3_7 {
+                       clock-latency-ns = <100000>;
+                       opp-supported-hw = <0x08 0x0080>;
+                       opp-hz = /bits/ 64 <1100000000>;
+               };
+
+               opp@1100000000_975_4_7 {
+                       clock-latency-ns = <100000>;
+                       opp-supported-hw = <0x10 0x0080>;
+                       opp-hz = /bits/ 64 <1100000000>;
+               };
+
+               opp@1100000000_975_3_8 {
+                       clock-latency-ns = <100000>;
+                       opp-supported-hw = <0x08 0x0100>;
+                       opp-hz = /bits/ 64 <1100000000>;
+               };
+
+               opp@1100000000_975_4_8 {
+                       clock-latency-ns = <100000>;
+                       opp-supported-hw = <0x10 0x0100>;
+                       opp-hz = /bits/ 64 <1100000000>;
+               };
+
+               opp@1100000000_1000 {
+                       clock-latency-ns = <100000>;
+                       opp-supported-hw = <0x01 0x0001>;
+                       opp-hz = /bits/ 64 <1100000000>;
+               };
+
+               opp@1100000000_1000_2_1 {
+                       clock-latency-ns = <100000>;
+                       opp-supported-hw = <0x04 0x0002>;
+                       opp-hz = /bits/ 64 <1100000000>;
+               };
+
+               opp@1100000000_1000_2_2 {
+                       clock-latency-ns = <100000>;
+                       opp-supported-hw = <0x04 0x0004>;
+                       opp-hz = /bits/ 64 <1100000000>;
+               };
+
+               opp@1100000000_1000_2_3 {
+                       clock-latency-ns = <100000>;
+                       opp-supported-hw = <0x04 0x0008>;
+                       opp-hz = /bits/ 64 <1100000000>;
+               };
+
+               opp@1100000000_1000_2_4 {
+                       clock-latency-ns = <100000>;
+                       opp-supported-hw = <0x04 0x0010>;
+                       opp-hz = /bits/ 64 <1100000000>;
+               };
+
+               opp@1100000000_1000_2_7 {
+                       clock-latency-ns = <100000>;
+                       opp-supported-hw = <0x04 0x0080>;
+                       opp-hz = /bits/ 64 <1100000000>;
+               };
+
+               opp@1100000000_1000_2_8 {
+                       clock-latency-ns = <100000>;
+                       opp-supported-hw = <0x04 0x0100>;
+                       opp-hz = /bits/ 64 <1100000000>;
+               };
+
+               opp@1100000000_1025 {
+                       clock-latency-ns = <100000>;
+                       opp-supported-hw = <0x02 0x019E>;
+                       opp-hz = /bits/ 64 <1100000000>;
+               };
+
+               opp@1100000000_1075 {
+                       clock-latency-ns = <100000>;
+                       opp-supported-hw = <0x01 0x0192>;
+                       opp-hz = /bits/ 64 <1100000000>;
+               };
+
+               opp@1150000000_975 {
+                       clock-latency-ns = <100000>;
+                       opp-supported-hw = <0x18 0x3060>;
+                       opp-hz = /bits/ 64 <1150000000>;
+               };
+
+               opp@1200000000_975 {
+                       clock-latency-ns = <100000>;
+                       opp-supported-hw = <0x08 0x0001>;
+                       opp-hz = /bits/ 64 <1200000000>;
+               };
+
+               opp@1200000000_1000 {
+                       clock-latency-ns = <100000>;
+                       opp-supported-hw = <0x04 0x0001>;
+                       opp-hz = /bits/ 64 <1200000000>;
+               };
+
+               opp@1200000000_1000_3_1 {
+                       clock-latency-ns = <100000>;
+                       opp-supported-hw = <0x08 0x0002>;
+                       opp-hz = /bits/ 64 <1200000000>;
+               };
+
+               opp@1200000000_1000_3_2 {
+                       clock-latency-ns = <100000>;
+                       opp-supported-hw = <0x08 0x0004>;
+                       opp-hz = /bits/ 64 <1200000000>;
+               };
+
+               opp@1200000000_1000_3_3 {
+                       clock-latency-ns = <100000>;
+                       opp-supported-hw = <0x08 0x0008>;
+                       opp-hz = /bits/ 64 <1200000000>;
+               };
+
+               opp@1200000000_1000_3_4 {
+                       clock-latency-ns = <100000>;
+                       opp-supported-hw = <0x08 0x0010>;
+                       opp-hz = /bits/ 64 <1200000000>;
+               };
+
+               opp@1200000000_1000_3_7 {
+                       clock-latency-ns = <100000>;
+                       opp-supported-hw = <0x08 0x0080>;
+                       opp-hz = /bits/ 64 <1200000000>;
+               };
+
+               opp@1200000000_1000_4_7 {
+                       clock-latency-ns = <100000>;
+                       opp-supported-hw = <0x10 0x0080>;
+                       opp-hz = /bits/ 64 <1200000000>;
+               };
+
+               opp@1200000000_1000_3_8 {
+                       clock-latency-ns = <100000>;
+                       opp-supported-hw = <0x08 0x0100>;
+                       opp-hz = /bits/ 64 <1200000000>;
+               };
+
+               opp@1200000000_1000_4_8 {
+                       clock-latency-ns = <100000>;
+                       opp-supported-hw = <0x10 0x0100>;
+                       opp-hz = /bits/ 64 <1200000000>;
+               };
+
+               opp@1200000000_1025 {
+                       clock-latency-ns = <100000>;
+                       opp-supported-hw = <0x02 0x0001>;
+                       opp-hz = /bits/ 64 <1200000000>;
+               };
+
+               opp@1200000000_1025_2_1 {
+                       clock-latency-ns = <100000>;
+                       opp-supported-hw = <0x04 0x0002>;
+                       opp-hz = /bits/ 64 <1200000000>;
+               };
+
+               opp@1200000000_1025_2_2 {
+                       clock-latency-ns = <100000>;
+                       opp-supported-hw = <0x04 0x0004>;
+                       opp-hz = /bits/ 64 <1200000000>;
+               };
+
+               opp@1200000000_1025_2_3 {
+                       clock-latency-ns = <100000>;
+                       opp-supported-hw = <0x04 0x0008>;
+                       opp-hz = /bits/ 64 <1200000000>;
+               };
+
+               opp@1200000000_1025_2_4 {
+                       clock-latency-ns = <100000>;
+                       opp-supported-hw = <0x04 0x0010>;
+                       opp-hz = /bits/ 64 <1200000000>;
+               };
+
+               opp@1200000000_1025_2_7 {
+                       clock-latency-ns = <100000>;
+                       opp-supported-hw = <0x04 0x0080>;
+                       opp-hz = /bits/ 64 <1200000000>;
+               };
+
+               opp@1200000000_1025_2_8 {
+                       clock-latency-ns = <100000>;
+                       opp-supported-hw = <0x04 0x0100>;
+                       opp-hz = /bits/ 64 <1200000000>;
+               };
+
+               opp@1200000000_1050 {
+                       clock-latency-ns = <100000>;
+                       opp-supported-hw = <0x02 0x019E>;
+                       opp-hz = /bits/ 64 <1200000000>;
+               };
+
+               opp@1200000000_1075 {
+                       clock-latency-ns = <100000>;
+                       opp-supported-hw = <0x01 0x0001>;
+                       opp-hz = /bits/ 64 <1200000000>;
+               };
+
+               opp@1200000000_1100 {
+                       clock-latency-ns = <100000>;
+                       opp-supported-hw = <0x01 0x0192>;
+                       opp-hz = /bits/ 64 <1200000000>;
+               };
+
+               opp@1300000000_1000 {
+                       clock-latency-ns = <100000>;
+                       opp-supported-hw = <0x08 0x0001>;
+                       opp-hz = /bits/ 64 <1300000000>;
+               };
+
+               opp@1300000000_1000_4_7 {
+                       clock-latency-ns = <100000>;
+                       opp-supported-hw = <0x10 0x0080>;
+                       opp-hz = /bits/ 64 <1300000000>;
+               };
+
+               opp@1300000000_1000_4_8 {
+                       clock-latency-ns = <100000>;
+                       opp-supported-hw = <0x10 0x0100>;
+                       opp-hz = /bits/ 64 <1300000000>;
+               };
+
+               opp@1300000000_1025 {
+                       clock-latency-ns = <100000>;
+                       opp-supported-hw = <0x04 0x0001>;
+                       opp-hz = /bits/ 64 <1300000000>;
+               };
+
+               opp@1300000000_1025_3_1 {
+                       clock-latency-ns = <100000>;
+                       opp-supported-hw = <0x08 0x0002>;
+                       opp-hz = /bits/ 64 <1300000000>;
+               };
+
+               opp@1300000000_1025_3_7 {
+                       clock-latency-ns = <100000>;
+                       opp-supported-hw = <0x08 0x0080>;
+                       opp-hz = /bits/ 64 <1300000000>;
+               };
+
+               opp@1300000000_1025_3_8 {
+                       clock-latency-ns = <100000>;
+                       opp-supported-hw = <0x08 0x0100>;
+                       opp-hz = /bits/ 64 <1300000000>;
+               };
+
+               opp@1300000000_1050 {
+                       clock-latency-ns = <100000>;
+                       opp-supported-hw = <0x12 0x3061>;
+                       opp-hz = /bits/ 64 <1300000000>;
+               };
+
+               opp@1300000000_1050_2_1 {
+                       clock-latency-ns = <100000>;
+                       opp-supported-hw = <0x04 0x0002>;
+                       opp-hz = /bits/ 64 <1300000000>;
+               };
+
+               opp@1300000000_1050_3_2 {
+                       clock-latency-ns = <100000>;
+                       opp-supported-hw = <0x08 0x0004>;
+                       opp-hz = /bits/ 64 <1300000000>;
+               };
+
+               opp@1300000000_1050_3_3 {
+                       clock-latency-ns = <100000>;
+                       opp-supported-hw = <0x08 0x0008>;
+                       opp-hz = /bits/ 64 <1300000000>;
+               };
+
+               opp@1300000000_1050_3_4 {
+                       clock-latency-ns = <100000>;
+                       opp-supported-hw = <0x08 0x0010>;
+                       opp-hz = /bits/ 64 <1300000000>;
+               };
+
+               opp@1300000000_1050_3_5 {
+                       clock-latency-ns = <100000>;
+                       opp-supported-hw = <0x08 0x0020>;
+                       opp-hz = /bits/ 64 <1300000000>;
+               };
+
+               opp@1300000000_1050_3_6 {
+                       clock-latency-ns = <100000>;
+                       opp-supported-hw = <0x08 0x0040>;
+                       opp-hz = /bits/ 64 <1300000000>;
+               };
+
+               opp@1300000000_1050_2_7 {
+                       clock-latency-ns = <100000>;
+                       opp-supported-hw = <0x04 0x0080>;
+                       opp-hz = /bits/ 64 <1300000000>;
+               };
+
+               opp@1300000000_1050_2_8 {
+                       clock-latency-ns = <100000>;
+                       opp-supported-hw = <0x04 0x0100>;
+                       opp-hz = /bits/ 64 <1300000000>;
+               };
+
+               opp@1300000000_1050_3_12 {
+                       clock-latency-ns = <100000>;
+                       opp-supported-hw = <0x08 0x1000>;
+                       opp-hz = /bits/ 64 <1300000000>;
+               };
+
+               opp@1300000000_1050_3_13 {
+                       clock-latency-ns = <100000>;
+                       opp-supported-hw = <0x08 0x2000>;
+                       opp-hz = /bits/ 64 <1300000000>;
+               };
+
+               opp@1300000000_1075 {
+                       clock-latency-ns = <100000>;
+                       opp-supported-hw = <0x02 0x0182>;
+                       opp-hz = /bits/ 64 <1300000000>;
+               };
+
+               opp@1300000000_1075_2_2 {
+                       clock-latency-ns = <100000>;
+                       opp-supported-hw = <0x04 0x0004>;
+                       opp-hz = /bits/ 64 <1300000000>;
+               };
+
+               opp@1300000000_1075_2_3 {
+                       clock-latency-ns = <100000>;
+                       opp-supported-hw = <0x04 0x0008>;
+                       opp-hz = /bits/ 64 <1300000000>;
+               };
+
+               opp@1300000000_1075_2_4 {
+                       clock-latency-ns = <100000>;
+                       opp-supported-hw = <0x04 0x0010>;
+                       opp-hz = /bits/ 64 <1300000000>;
+               };
+
+               opp@1300000000_1100 {
+                       clock-latency-ns = <100000>;
+                       opp-supported-hw = <0x02 0x001C>;
+                       opp-hz = /bits/ 64 <1300000000>;
+               };
+
+               opp@1300000000_1125 {
+                       clock-latency-ns = <100000>;
+                       opp-supported-hw = <0x01 0x0001>;
+                       opp-hz = /bits/ 64 <1300000000>;
+               };
+
+               opp@1300000000_1150 {
+                       clock-latency-ns = <100000>;
+                       opp-supported-hw = <0x01 0x0182>;
+                       opp-hz = /bits/ 64 <1300000000>;
+               };
+
+               opp@1300000000_1175 {
+                       clock-latency-ns = <100000>;
+                       opp-supported-hw = <0x01 0x0010>;
+                       opp-hz = /bits/ 64 <1300000000>;
+               };
+
+               opp@1400000000_1100 {
+                       clock-latency-ns = <100000>;
+                       opp-supported-hw = <0x18 0x307C>;
+                       opp-hz = /bits/ 64 <1400000000>;
+               };
+
+               opp@1400000000_1125 {
+                       clock-latency-ns = <100000>;
+                       opp-supported-hw = <0x04 0x000C>;
+                       opp-hz = /bits/ 64 <1400000000>;
+               };
+
+               opp@1400000000_1150 {
+                       clock-latency-ns = <100000>;
+                       opp-supported-hw = <0x02 0x000C>;
+                       opp-hz = /bits/ 64 <1400000000>;
+               };
+
+               opp@1400000000_1150_2_4 {
+                       clock-latency-ns = <100000>;
+                       opp-supported-hw = <0x04 0x0010>;
+                       opp-hz = /bits/ 64 <1400000000>;
+               };
+
+               opp@1400000000_1175 {
+                       clock-latency-ns = <100000>;
+                       opp-supported-hw = <0x02 0x0010>;
+                       opp-hz = /bits/ 64 <1400000000>;
+               };
+
+               opp@1400000000_1237 {
+                       clock-latency-ns = <100000>;
+                       opp-supported-hw = <0x01 0x0010>;
+                       opp-hz = /bits/ 64 <1400000000>;
+               };
+
+               opp@1500000000_1125 {
+                       clock-latency-ns = <100000>;
+                       opp-supported-hw = <0x08 0x0010>;
+                       opp-hz = /bits/ 64 <1500000000>;
+               };
+
+               opp@1500000000_1125_4_5 {
+                       clock-latency-ns = <100000>;
+                       opp-supported-hw = <0x10 0x0020>;
+                       opp-hz = /bits/ 64 <1500000000>;
+               };
+
+               opp@1500000000_1125_4_6 {
+                       clock-latency-ns = <100000>;
+                       opp-supported-hw = <0x10 0x0040>;
+                       opp-hz = /bits/ 64 <1500000000>;
+               };
+
+               opp@1500000000_1125_4_12 {
+                       clock-latency-ns = <100000>;
+                       opp-supported-hw = <0x10 0x1000>;
+                       opp-hz = /bits/ 64 <1500000000>;
+               };
+
+               opp@1500000000_1125_4_13 {
+                       clock-latency-ns = <100000>;
+                       opp-supported-hw = <0x10 0x2000>;
+                       opp-hz = /bits/ 64 <1500000000>;
+               };
+
+               opp@1500000000_1150 {
+                       clock-latency-ns = <100000>;
+                       opp-supported-hw = <0x04 0x0010>;
+                       opp-hz = /bits/ 64 <1500000000>;
+               };
+
+               opp@1500000000_1150_3_5 {
+                       clock-latency-ns = <100000>;
+                       opp-supported-hw = <0x08 0x0020>;
+                       opp-hz = /bits/ 64 <1500000000>;
+               };
+
+               opp@1500000000_1150_3_6 {
+                       clock-latency-ns = <100000>;
+                       opp-supported-hw = <0x08 0x0040>;
+                       opp-hz = /bits/ 64 <1500000000>;
+               };
+
+               opp@1500000000_1150_3_12 {
+                       clock-latency-ns = <100000>;
+                       opp-supported-hw = <0x08 0x1000>;
+                       opp-hz = /bits/ 64 <1500000000>;
+               };
+
+               opp@1500000000_1150_3_13 {
+                       clock-latency-ns = <100000>;
+                       opp-supported-hw = <0x08 0x2000>;
+                       opp-hz = /bits/ 64 <1500000000>;
+               };
+
+               opp@1500000000_1200 {
+                       clock-latency-ns = <100000>;
+                       opp-supported-hw = <0x02 0x0010>;
+                       opp-hz = /bits/ 64 <1500000000>;
+               };
+
+               opp@1500000000_1237 {
+                       clock-latency-ns = <100000>;
+                       opp-supported-hw = <0x01 0x0010>;
+                       opp-hz = /bits/ 64 <1500000000>;
+               };
+
+               opp@1600000000_1212 {
+                       clock-latency-ns = <100000>;
+                       opp-supported-hw = <0x10 0x3060>;
+                       opp-hz = /bits/ 64 <1600000000>;
+               };
+
+               opp@1600000000_1237 {
+                       clock-latency-ns = <100000>;
+                       opp-supported-hw = <0x08 0x3060>;
+                       opp-hz = /bits/ 64 <1600000000>;
+               };
+
+               opp@1700000000_1212 {
+                       clock-latency-ns = <100000>;
+                       opp-supported-hw = <0x10 0x3060>;
+                       opp-hz = /bits/ 64 <1700000000>;
+               };
+
+               opp@1700000000_1237 {
+                       clock-latency-ns = <100000>;
+                       opp-supported-hw = <0x08 0x3060>;
+                       opp-hz = /bits/ 64 <1700000000>;
+               };
+       };
+};
index e074258..55ae050 100644 (file)
                clocks = <&tegra_car TEGRA30_CLK_VDE>;
                reset-names = "vde", "mc";
                resets = <&tegra_car 61>, <&mc TEGRA30_MC_RESET_VDE>;
+               iommus = <&mc TEGRA_SWGROUP_VDE>;
        };
 
        apbmisc@70000800 {
                #reset-cells = <1>;
        };
 
+       memory-controller@7000f400 {
+               compatible = "nvidia,tegra30-emc";
+               reg = <0x7000f400 0x400>;
+               interrupts = <GIC_SPI 78 IRQ_TYPE_LEVEL_HIGH>;
+               clocks = <&tegra_car TEGRA30_CLK_EMC>;
+
+               nvidia,memory-controller = <&mc>;
+       };
+
        fuse@7000f800 {
                compatible = "nvidia,tegra30-efuse";
                reg = <0x7000f800 0x400>;
                        device_type = "cpu";
                        compatible = "arm,cortex-a9";
                        reg = <0>;
+                       clocks = <&tegra_car TEGRA30_CLK_CCLK_G>;
                };
 
                cpu@1 {
                        device_type = "cpu";
                        compatible = "arm,cortex-a9";
                        reg = <1>;
+                       clocks = <&tegra_car TEGRA30_CLK_CCLK_G>;
                };
 
                cpu@2 {
                        device_type = "cpu";
                        compatible = "arm,cortex-a9";
                        reg = <2>;
+                       clocks = <&tegra_car TEGRA30_CLK_CCLK_G>;
                };
 
                cpu@3 {
                        device_type = "cpu";
                        compatible = "arm,cortex-a9";
                        reg = <3>;
+                       clocks = <&tegra_car TEGRA30_CLK_CCLK_G>;
                };
        };
 
index b6a1eee..fba37b8 100644 (file)
 
 &i2c0 {
        clock-frequency = <400000>;
-       pinctrl-names = "default";
+       pinctrl-names = "default", "gpio";
        pinctrl-0 = <&pinctrl_i2c0>;
+       pinctrl-1 = <&pinctrl_i2c0_gpio>;
+       scl-gpios = <&gpio1 4 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
+       sda-gpios = <&gpio1 5 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
 };
 
 &nfc {
                        >;
                };
 
+               pinctrl_i2c0_gpio: i2c0gpiogrp {
+                       fsl,pins = <
+                               VF610_PAD_PTB14__GPIO_36                0x37ff
+                               VF610_PAD_PTB15__GPIO_37                0x37ff
+                       >;
+               };
+
                pinctrl_nfc: nfcgrp {
                        fsl,pins = <
                                VF610_PAD_PTD23__NF_IO7         0x28df
index 237b024..92255f8 100644 (file)
@@ -44,7 +44,7 @@
 
 / {
        model = "Toradex Colibri VF50 COM";
-       compatible = "toradex,vf610-colibri_vf50", "fsl,vf500";
+       compatible = "toradex,vf500-colibri_vf50", "fsl,vf500";
 
        memory@80000000 {
                device_type = "memory";
index 0f3870d..830c854 100644 (file)
 &uart0 {
        pinctrl-names = "default";
        pinctrl-0 = <&pinctrl_uart0>;
+       /delete-property/dma-names;
        status = "okay";
 };
 
 &uart1 {
        pinctrl-names = "default";
        pinctrl-0 = <&pinctrl_uart1>;
+       /delete-property/dma-names;
        status = "okay";
 };
 
 &uart2 {
        pinctrl-names = "default";
        pinctrl-0 = <&pinctrl_uart2>;
+       /delete-property/dma-names;
        status = "okay";
 };
 
 &uart3 {
        pinctrl-names = "default";
        pinctrl-0 = <&pinctrl_uart3>;
+       /delete-property/dma-names;
        status = "okay";
 };
 
index c8ebb23..d7caf61 100644 (file)
                                        #address-cells = <1>;
                                        #size-cells = <0>;
 
-                                       port@1 {
-                                               reg = <1>;
-                                               label = "internal_j9";
-                                       };
-
                                        port@2 {
                                                reg = <2>;
                                                label = "eth_fc_1000_2";
                                        #address-cells = <1>;
                                        #size-cells = <0>;
 
-                                       port@1 {
-                                               reg = <1>;
-                                               label = "internal_j8";
-                                       };
-
                                        port@2 {
                                                reg = <2>;
                                                label = "eth_fc_1000_8";
        linux,rs485-enabled-at-boot-time;
        pinctrl-names = "default";
        pinctrl-0 = <&pinctrl_uart1>;
-       rs485-rts-delay = <0 200>;
        status = "okay";
 };
 
        linux,rs485-enabled-at-boot-time;
        pinctrl-names = "default";
        pinctrl-0 = <&pinctrl_uart2>;
-       rs485-rts-delay = <0 200>;
        status = "okay";
 };
 
index f33f5d7..11e2211 100644 (file)
@@ -134,6 +134,7 @@ CONFIG_BLK_DEV_SD=y
 CONFIG_NETDEVICES=y
 CONFIG_TI_KEYSTONE_NETCP=y
 CONFIG_TI_KEYSTONE_NETCP_ETHSS=y
+CONFIG_TI_CPTS=y
 CONFIG_MARVELL_PHY=y
 CONFIG_SERIAL_8250=y
 CONFIG_SERIAL_8250_CONSOLE=y
index 3de3d7a..26e13d4 100644 (file)
@@ -35,10 +35,7 @@ extern struct omap_hwmod_ocp_if am33xx_l4_ls__epwmss0;
 extern struct omap_hwmod_ocp_if am33xx_l4_ls__epwmss1;
 extern struct omap_hwmod_ocp_if am33xx_l4_ls__epwmss2;
 extern struct omap_hwmod_ocp_if am33xx_l3_s__gpmc;
-extern struct omap_hwmod_ocp_if am33xx_l4_per__mailbox;
 extern struct omap_hwmod_ocp_if am33xx_l4_ls__spinlock;
-extern struct omap_hwmod_ocp_if am33xx_l4_ls__mcasp0;
-extern struct omap_hwmod_ocp_if am33xx_l4_ls__mcasp1;
 extern struct omap_hwmod_ocp_if am33xx_l4_ls__mcspi0;
 extern struct omap_hwmod_ocp_if am33xx_l4_ls__mcspi1;
 extern struct omap_hwmod_ocp_if am33xx_l4_ls__timer2;
@@ -54,7 +51,6 @@ extern struct omap_hwmod_ocp_if am33xx_l3_main__tptc2;
 extern struct omap_hwmod_ocp_if am33xx_l3_main__ocmc;
 extern struct omap_hwmod_ocp_if am33xx_l3_main__sha0;
 extern struct omap_hwmod_ocp_if am33xx_l3_main__aes0;
-extern struct omap_hwmod_ocp_if am33xx_l4_per__rng;
 
 extern struct omap_hwmod am33xx_l3_main_hwmod;
 extern struct omap_hwmod am33xx_l3_s_hwmod;
@@ -67,7 +63,6 @@ extern struct omap_hwmod am33xx_gfx_hwmod;
 extern struct omap_hwmod am33xx_prcm_hwmod;
 extern struct omap_hwmod am33xx_aes0_hwmod;
 extern struct omap_hwmod am33xx_sha0_hwmod;
-extern struct omap_hwmod am33xx_rng_hwmod;
 extern struct omap_hwmod am33xx_ocmcram_hwmod;
 extern struct omap_hwmod am33xx_smartreflex0_hwmod;
 extern struct omap_hwmod am33xx_smartreflex1_hwmod;
@@ -78,9 +73,6 @@ extern struct omap_hwmod am33xx_epwmss0_hwmod;
 extern struct omap_hwmod am33xx_epwmss1_hwmod;
 extern struct omap_hwmod am33xx_epwmss2_hwmod;
 extern struct omap_hwmod am33xx_gpmc_hwmod;
-extern struct omap_hwmod am33xx_mailbox_hwmod;
-extern struct omap_hwmod am33xx_mcasp0_hwmod;
-extern struct omap_hwmod am33xx_mcasp1_hwmod;
 extern struct omap_hwmod am33xx_rtc_hwmod;
 extern struct omap_hwmod am33xx_spi0_hwmod;
 extern struct omap_hwmod am33xx_spi1_hwmod;
@@ -96,7 +88,6 @@ extern struct omap_hwmod am33xx_tpcc_hwmod;
 extern struct omap_hwmod am33xx_tptc0_hwmod;
 extern struct omap_hwmod am33xx_tptc1_hwmod;
 extern struct omap_hwmod am33xx_tptc2_hwmod;
-extern struct omap_hwmod am33xx_wd_timer1_hwmod;
 
 extern struct omap_hwmod_class am33xx_emif_hwmod_class;
 extern struct omap_hwmod_class am33xx_l4_hwmod_class;
index 63698ff..7123c45 100644 (file)
@@ -158,14 +158,6 @@ struct omap_hwmod_ocp_if am33xx_l3_s__gpmc = {
        .user           = OCP_USER_MPU,
 };
 
-/* l4 ls -> mailbox */
-struct omap_hwmod_ocp_if am33xx_l4_per__mailbox = {
-       .master         = &am33xx_l4_ls_hwmod,
-       .slave          = &am33xx_mailbox_hwmod,
-       .clk            = "l4ls_gclk",
-       .user           = OCP_USER_MPU,
-};
-
 /* l4 ls -> spinlock */
 struct omap_hwmod_ocp_if am33xx_l4_ls__spinlock = {
        .master         = &am33xx_l4_ls_hwmod,
@@ -174,22 +166,6 @@ struct omap_hwmod_ocp_if am33xx_l4_ls__spinlock = {
        .user           = OCP_USER_MPU,
 };
 
-/* l4 ls -> mcasp0 */
-struct omap_hwmod_ocp_if am33xx_l4_ls__mcasp0 = {
-       .master         = &am33xx_l4_ls_hwmod,
-       .slave          = &am33xx_mcasp0_hwmod,
-       .clk            = "l4ls_gclk",
-       .user           = OCP_USER_MPU,
-};
-
-/* l4 ls -> mcasp1 */
-struct omap_hwmod_ocp_if am33xx_l4_ls__mcasp1 = {
-       .master         = &am33xx_l4_ls_hwmod,
-       .slave          = &am33xx_mcasp1_hwmod,
-       .clk            = "l4ls_gclk",
-       .user           = OCP_USER_MPU,
-};
-
 /* l4 ls -> mcspi0 */
 struct omap_hwmod_ocp_if am33xx_l4_ls__mcspi0 = {
        .master         = &am33xx_l4_ls_hwmod,
@@ -308,11 +284,3 @@ struct omap_hwmod_ocp_if am33xx_l3_main__aes0 = {
        .clk            = "aes0_fck",
        .user           = OCP_USER_MPU | OCP_USER_SDMA,
 };
-
-/* l4 per -> rng */
-struct omap_hwmod_ocp_if am33xx_l4_per__rng = {
-       .master         = &am33xx_l4_ls_hwmod,
-       .slave          = &am33xx_rng_hwmod,
-       .clk            = "rng_fck",
-       .user           = OCP_USER_MPU,
-};
index 29fd136..2df8659 100644 (file)
@@ -17,7 +17,6 @@
 #include <linux/types.h>
 
 #include "omap_hwmod.h"
-#include "wd_timer.h"
 #include "cm33xx.h"
 #include "prm33xx.h"
 #include "omap_hwmod_33xx_43xx_common_data.h"
@@ -266,33 +265,6 @@ struct omap_hwmod am33xx_sha0_hwmod = {
        },
 };
 
-/* rng */
-static struct omap_hwmod_class_sysconfig am33xx_rng_sysc = {
-       .rev_offs       = 0x1fe0,
-       .sysc_offs      = 0x1fe4,
-       .sysc_flags     = SYSC_HAS_AUTOIDLE | SYSC_HAS_SIDLEMODE,
-       .idlemodes      = SIDLE_FORCE | SIDLE_NO,
-       .sysc_fields    = &omap_hwmod_sysc_type1,
-};
-
-static struct omap_hwmod_class am33xx_rng_hwmod_class = {
-       .name           = "rng",
-       .sysc           = &am33xx_rng_sysc,
-};
-
-struct omap_hwmod am33xx_rng_hwmod = {
-       .name           = "rng",
-       .class          = &am33xx_rng_hwmod_class,
-       .clkdm_name     = "l4ls_clkdm",
-       .flags          = HWMOD_SWSUP_SIDLE,
-       .main_clk       = "rng_fck",
-       .prcm           = {
-               .omap4  = {
-                       .modulemode     = MODULEMODE_SWCTRL,
-               },
-       },
-};
-
 /* ocmcram */
 static struct omap_hwmod_class am33xx_ocmcram_hwmod_class = {
        .name = "ocmcram",
@@ -466,86 +438,6 @@ struct omap_hwmod am33xx_epwmss2_hwmod = {
        },
 };
 
-/*
- * 'gpio' class: for gpio 0,1,2,3
- */
-static struct omap_hwmod_class_sysconfig am33xx_gpio_sysc = {
-       .rev_offs       = 0x0000,
-       .sysc_offs      = 0x0010,
-       .syss_offs      = 0x0114,
-       .sysc_flags     = (SYSC_HAS_AUTOIDLE | SYSC_HAS_ENAWAKEUP |
-                         SYSC_HAS_SIDLEMODE | SYSC_HAS_SOFTRESET |
-                         SYSS_HAS_RESET_STATUS),
-       .idlemodes      = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART |
-                         SIDLE_SMART_WKUP),
-       .sysc_fields    = &omap_hwmod_sysc_type1,
-};
-
-static struct omap_hwmod_class am33xx_gpio_hwmod_class = {
-       .name           = "gpio",
-       .sysc           = &am33xx_gpio_sysc,
-};
-
-/* gpio1 */
-static struct omap_hwmod_opt_clk gpio1_opt_clks[] = {
-       { .role = "dbclk", .clk = "gpio1_dbclk" },
-};
-
-static struct omap_hwmod am33xx_gpio1_hwmod = {
-       .name           = "gpio2",
-       .class          = &am33xx_gpio_hwmod_class,
-       .clkdm_name     = "l4ls_clkdm",
-       .flags          = HWMOD_CONTROL_OPT_CLKS_IN_RESET,
-       .main_clk       = "l4ls_gclk",
-       .prcm           = {
-               .omap4  = {
-                       .modulemode     = MODULEMODE_SWCTRL,
-               },
-       },
-       .opt_clks       = gpio1_opt_clks,
-       .opt_clks_cnt   = ARRAY_SIZE(gpio1_opt_clks),
-};
-
-/* gpio2 */
-static struct omap_hwmod_opt_clk gpio2_opt_clks[] = {
-       { .role = "dbclk", .clk = "gpio2_dbclk" },
-};
-
-static struct omap_hwmod am33xx_gpio2_hwmod = {
-       .name           = "gpio3",
-       .class          = &am33xx_gpio_hwmod_class,
-       .clkdm_name     = "l4ls_clkdm",
-       .flags          = HWMOD_CONTROL_OPT_CLKS_IN_RESET,
-       .main_clk       = "l4ls_gclk",
-       .prcm           = {
-               .omap4  = {
-                       .modulemode     = MODULEMODE_SWCTRL,
-               },
-       },
-       .opt_clks       = gpio2_opt_clks,
-       .opt_clks_cnt   = ARRAY_SIZE(gpio2_opt_clks),
-};
-
-/* gpio3 */
-static struct omap_hwmod_opt_clk gpio3_opt_clks[] = {
-       { .role = "dbclk", .clk = "gpio3_dbclk" },
-};
-
-static struct omap_hwmod am33xx_gpio3_hwmod = {
-       .name           = "gpio4",
-       .class          = &am33xx_gpio_hwmod_class,
-       .clkdm_name     = "l4ls_clkdm",
-       .flags          = HWMOD_CONTROL_OPT_CLKS_IN_RESET,
-       .main_clk       = "l4ls_gclk",
-       .prcm           = {
-               .omap4  = {
-                       .modulemode     = MODULEMODE_SWCTRL,
-               },
-       },
-       .opt_clks       = gpio3_opt_clks,
-       .opt_clks_cnt   = ARRAY_SIZE(gpio3_opt_clks),
-};
-
 /* gpmc */
 static struct omap_hwmod_class_sysconfig gpmc_sysc = {
        .rev_offs       = 0x0,
@@ -576,78 +468,6 @@ struct omap_hwmod am33xx_gpmc_hwmod = {
        },
 };
 
-/*
- * 'mailbox' class
- * mailbox module allowing communication between the on-chip processors using a
- * queued mailbox-interrupt mechanism.
- */
-static struct omap_hwmod_class_sysconfig am33xx_mailbox_sysc = {
-       .rev_offs       = 0x0000,
-       .sysc_offs      = 0x0010,
-       .sysc_flags     = (SYSC_HAS_RESET_STATUS | SYSC_HAS_SIDLEMODE |
-                         SYSC_HAS_SOFTRESET),
-       .idlemodes      = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART),
-       .sysc_fields    = &omap_hwmod_sysc_type2,
-};
-
-static struct omap_hwmod_class am33xx_mailbox_hwmod_class = {
-       .name   = "mailbox",
-       .sysc   = &am33xx_mailbox_sysc,
-};
-
-struct omap_hwmod am33xx_mailbox_hwmod = {
-       .name           = "mailbox",
-       .class          = &am33xx_mailbox_hwmod_class,
-       .clkdm_name     = "l4ls_clkdm",
-       .main_clk       = "l4ls_gclk",
-       .prcm = {
-               .omap4 = {
-                       .modulemode     = MODULEMODE_SWCTRL,
-               },
-       },
-};
-
-/*
- * 'mcasp' class
- */
-static struct omap_hwmod_class_sysconfig am33xx_mcasp_sysc = {
-       .rev_offs       = 0x0,
-       .sysc_offs      = 0x4,
-       .sysc_flags     = SYSC_HAS_SIDLEMODE,
-       .idlemodes      = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART),
-       .sysc_fields    = &omap_hwmod_sysc_type3,
-};
-
-static struct omap_hwmod_class am33xx_mcasp_hwmod_class = {
-       .name           = "mcasp",
-       .sysc           = &am33xx_mcasp_sysc,
-};
-
-/* mcasp0 */
-struct omap_hwmod am33xx_mcasp0_hwmod = {
-       .name           = "mcasp0",
-       .class          = &am33xx_mcasp_hwmod_class,
-       .clkdm_name     = "l3s_clkdm",
-       .main_clk       = "mcasp0_fck",
-       .prcm           = {
-               .omap4  = {
-                       .modulemode     = MODULEMODE_SWCTRL,
-               },
-       },
-};
-
-/* mcasp1 */
-struct omap_hwmod am33xx_mcasp1_hwmod = {
-       .name           = "mcasp1",
-       .class          = &am33xx_mcasp_hwmod_class,
-       .clkdm_name     = "l3s_clkdm",
-       .main_clk       = "mcasp1_fck",
-       .prcm           = {
-               .omap4  = {
-                       .modulemode     = MODULEMODE_SWCTRL,
-               },
-       },
-};
 
 /*
  * 'rtc' class
@@ -950,41 +770,6 @@ struct omap_hwmod am33xx_tptc2_hwmod = {
        },
 };
 
-/* 'wd_timer' class */
-static struct omap_hwmod_class_sysconfig wdt_sysc = {
-       .rev_offs       = 0x0,
-       .sysc_offs      = 0x10,
-       .syss_offs      = 0x14,
-       .sysc_flags     = (SYSC_HAS_EMUFREE | SYSC_HAS_SIDLEMODE |
-                       SYSC_HAS_SOFTRESET | SYSS_HAS_RESET_STATUS),
-       .idlemodes      = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART |
-                       SIDLE_SMART_WKUP),
-       .sysc_fields    = &omap_hwmod_sysc_type1,
-};
-
-static struct omap_hwmod_class am33xx_wd_timer_hwmod_class = {
-       .name           = "wd_timer",
-       .sysc           = &wdt_sysc,
-       .pre_shutdown   = &omap2_wd_timer_disable,
-};
-
-/*
- * XXX: device.c file uses hardcoded name for watchdog timer
- * driver "wd_timer2, so we are also using same name as of now...
- */
-struct omap_hwmod am33xx_wd_timer1_hwmod = {
-       .name           = "wd_timer2",
-       .class          = &am33xx_wd_timer_hwmod_class,
-       .clkdm_name     = "l4_wkup_clkdm",
-       .flags          = HWMOD_SWSUP_SIDLE,
-       .main_clk       = "wdt1_fck",
-       .prcm           = {
-               .omap4  = {
-                       .modulemode     = MODULEMODE_SWCTRL,
-               },
-       },
-};
-
 static void omap_hwmod_am33xx_clkctrl(void)
 {
        CLKCTRL(am33xx_dcan0_hwmod, AM33XX_CM_PER_DCAN0_CLKCTRL_OFFSET);
@@ -993,12 +778,6 @@ static void omap_hwmod_am33xx_clkctrl(void)
        CLKCTRL(am33xx_epwmss0_hwmod, AM33XX_CM_PER_EPWMSS0_CLKCTRL_OFFSET);
        CLKCTRL(am33xx_epwmss1_hwmod, AM33XX_CM_PER_EPWMSS1_CLKCTRL_OFFSET);
        CLKCTRL(am33xx_epwmss2_hwmod, AM33XX_CM_PER_EPWMSS2_CLKCTRL_OFFSET);
-       CLKCTRL(am33xx_gpio1_hwmod, AM33XX_CM_PER_GPIO1_CLKCTRL_OFFSET);
-       CLKCTRL(am33xx_gpio2_hwmod, AM33XX_CM_PER_GPIO2_CLKCTRL_OFFSET);
-       CLKCTRL(am33xx_gpio3_hwmod, AM33XX_CM_PER_GPIO3_CLKCTRL_OFFSET);
-       CLKCTRL(am33xx_mailbox_hwmod, AM33XX_CM_PER_MAILBOX0_CLKCTRL_OFFSET);
-       CLKCTRL(am33xx_mcasp0_hwmod, AM33XX_CM_PER_MCASP0_CLKCTRL_OFFSET);
-       CLKCTRL(am33xx_mcasp1_hwmod, AM33XX_CM_PER_MCASP1_CLKCTRL_OFFSET);
        CLKCTRL(am33xx_spi0_hwmod, AM33XX_CM_PER_SPI0_CLKCTRL_OFFSET);
        CLKCTRL(am33xx_spi1_hwmod, AM33XX_CM_PER_SPI1_CLKCTRL_OFFSET);
        CLKCTRL(am33xx_spinlock_hwmod, AM33XX_CM_PER_SPINLOCK_CLKCTRL_OFFSET);
@@ -1013,7 +792,6 @@ static void omap_hwmod_am33xx_clkctrl(void)
        CLKCTRL(am33xx_smartreflex1_hwmod,
                AM33XX_CM_WKUP_SMARTREFLEX1_CLKCTRL_OFFSET);
        CLKCTRL(am33xx_timer1_hwmod, AM33XX_CM_WKUP_TIMER1_CLKCTRL_OFFSET);
-       CLKCTRL(am33xx_wd_timer1_hwmod, AM33XX_CM_WKUP_WDT1_CLKCTRL_OFFSET);
        CLKCTRL(am33xx_rtc_hwmod, AM33XX_CM_RTC_RTC_CLKCTRL_OFFSET);
        PRCM_FLAGS(am33xx_rtc_hwmod, HWMOD_OMAP4_ZERO_CLKCTRL_OFFSET);
        CLKCTRL(am33xx_gpmc_hwmod, AM33XX_CM_PER_GPMC_CLKCTRL_OFFSET);
@@ -1031,7 +809,6 @@ static void omap_hwmod_am33xx_clkctrl(void)
        CLKCTRL(am33xx_ocmcram_hwmod , AM33XX_CM_PER_OCMCRAM_CLKCTRL_OFFSET);
        CLKCTRL(am33xx_sha0_hwmod , AM33XX_CM_PER_SHA0_CLKCTRL_OFFSET);
        CLKCTRL(am33xx_aes0_hwmod , AM33XX_CM_PER_AES0_CLKCTRL_OFFSET);
-       CLKCTRL(am33xx_rng_hwmod, AM33XX_CM_PER_RNG_CLKCTRL_OFFSET);
 }
 
 static void omap_hwmod_am33xx_rst(void)
@@ -1055,12 +832,6 @@ static void omap_hwmod_am43xx_clkctrl(void)
        CLKCTRL(am33xx_epwmss0_hwmod, AM43XX_CM_PER_EPWMSS0_CLKCTRL_OFFSET);
        CLKCTRL(am33xx_epwmss1_hwmod, AM43XX_CM_PER_EPWMSS1_CLKCTRL_OFFSET);
        CLKCTRL(am33xx_epwmss2_hwmod, AM43XX_CM_PER_EPWMSS2_CLKCTRL_OFFSET);
-       CLKCTRL(am33xx_gpio1_hwmod, AM43XX_CM_PER_GPIO1_CLKCTRL_OFFSET);
-       CLKCTRL(am33xx_gpio2_hwmod, AM43XX_CM_PER_GPIO2_CLKCTRL_OFFSET);
-       CLKCTRL(am33xx_gpio3_hwmod, AM43XX_CM_PER_GPIO3_CLKCTRL_OFFSET);
-       CLKCTRL(am33xx_mailbox_hwmod, AM43XX_CM_PER_MAILBOX0_CLKCTRL_OFFSET);
-       CLKCTRL(am33xx_mcasp0_hwmod, AM43XX_CM_PER_MCASP0_CLKCTRL_OFFSET);
-       CLKCTRL(am33xx_mcasp1_hwmod, AM43XX_CM_PER_MCASP1_CLKCTRL_OFFSET);
        CLKCTRL(am33xx_spi0_hwmod, AM43XX_CM_PER_SPI0_CLKCTRL_OFFSET);
        CLKCTRL(am33xx_spi1_hwmod, AM43XX_CM_PER_SPI1_CLKCTRL_OFFSET);
        CLKCTRL(am33xx_spinlock_hwmod, AM43XX_CM_PER_SPINLOCK_CLKCTRL_OFFSET);
@@ -1075,7 +846,6 @@ static void omap_hwmod_am43xx_clkctrl(void)
        CLKCTRL(am33xx_smartreflex1_hwmod,
                AM43XX_CM_WKUP_SMARTREFLEX1_CLKCTRL_OFFSET);
        CLKCTRL(am33xx_timer1_hwmod, AM43XX_CM_WKUP_TIMER1_CLKCTRL_OFFSET);
-       CLKCTRL(am33xx_wd_timer1_hwmod, AM43XX_CM_WKUP_WDT1_CLKCTRL_OFFSET);
        CLKCTRL(am33xx_rtc_hwmod, AM43XX_CM_RTC_RTC_CLKCTRL_OFFSET);
        CLKCTRL(am33xx_gpmc_hwmod, AM43XX_CM_PER_GPMC_CLKCTRL_OFFSET);
        CLKCTRL(am33xx_l4_ls_hwmod, AM43XX_CM_PER_L4LS_CLKCTRL_OFFSET);
@@ -1092,7 +862,6 @@ static void omap_hwmod_am43xx_clkctrl(void)
        CLKCTRL(am33xx_ocmcram_hwmod , AM43XX_CM_PER_OCMCRAM_CLKCTRL_OFFSET);
        CLKCTRL(am33xx_sha0_hwmod , AM43XX_CM_PER_SHA0_CLKCTRL_OFFSET);
        CLKCTRL(am33xx_aes0_hwmod , AM43XX_CM_PER_AES0_CLKCTRL_OFFSET);
-       CLKCTRL(am33xx_rng_hwmod, AM43XX_CM_PER_RNG_CLKCTRL_OFFSET);
 }
 
 static void omap_hwmod_am43xx_rst(void)
index 5452477..c63f664 100644 (file)
@@ -21,7 +21,6 @@
 #include "cm33xx.h"
 #include "prm33xx.h"
 #include "prm-regbits-33xx.h"
-#include "wd_timer.h"
 #include "omap_hwmod_33xx_43xx_common_data.h"
 
 /*
@@ -256,39 +255,6 @@ static struct omap_hwmod am33xx_lcdc_hwmod = {
        },
 };
 
-/*
- * 'usb_otg' class
- * high-speed on-the-go universal serial bus (usb_otg) controller
- */
-static struct omap_hwmod_class_sysconfig am33xx_usbhsotg_sysc = {
-       .rev_offs       = 0x0,
-       .sysc_offs      = 0x10,
-       .sysc_flags     = (SYSC_HAS_SIDLEMODE | SYSC_HAS_MIDLEMODE),
-       .idlemodes      = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART |
-                         MSTANDBY_FORCE | MSTANDBY_NO | MSTANDBY_SMART),
-       .sysc_fields    = &omap_hwmod_sysc_type2,
-};
-
-static struct omap_hwmod_class am33xx_usbotg_class = {
-       .name           = "usbotg",
-       .sysc           = &am33xx_usbhsotg_sysc,
-};
-
-static struct omap_hwmod am33xx_usbss_hwmod = {
-       .name           = "usb_otg_hs",
-       .class          = &am33xx_usbotg_class,
-       .clkdm_name     = "l3s_clkdm",
-       .flags          = HWMOD_SWSUP_SIDLE | HWMOD_SWSUP_MSTANDBY,
-       .main_clk       = "usbotg_fck",
-       .prcm           = {
-               .omap4  = {
-                       .clkctrl_offs   = AM33XX_CM_PER_USB0_CLKCTRL_OFFSET,
-                       .modulemode     = MODULEMODE_SWCTRL,
-               },
-       },
-};
-
-
 /*
  * Interfaces
  */
@@ -388,24 +354,6 @@ static struct omap_hwmod_ocp_if am33xx_l4_wkup__timer1 = {
        .user           = OCP_USER_MPU,
 };
 
-/* l4 wkup -> wd_timer1 */
-static struct omap_hwmod_ocp_if am33xx_l4_wkup__wd_timer1 = {
-       .master         = &am33xx_l4_wkup_hwmod,
-       .slave          = &am33xx_wd_timer1_hwmod,
-       .clk            = "dpll_core_m4_div2_ck",
-       .user           = OCP_USER_MPU,
-};
-
-/* usbss */
-/* l3 s -> USBSS interface */
-static struct omap_hwmod_ocp_if am33xx_l3_s__usbss = {
-       .master         = &am33xx_l3_s_hwmod,
-       .slave          = &am33xx_usbss_hwmod,
-       .clk            = "l3s_gclk",
-       .user           = OCP_USER_MPU,
-       .flags          = OCPIF_SWSUP_IDLE,
-};
-
 static struct omap_hwmod_ocp_if *am33xx_hwmod_ocp_ifs[] __initdata = {
        &am33xx_l3_main__emif,
        &am33xx_mpu__l3_main,
@@ -428,13 +376,9 @@ static struct omap_hwmod_ocp_if *am33xx_hwmod_ocp_ifs[] __initdata = {
        &am33xx_l4_wkup__timer1,
        &am33xx_l4_wkup__rtc,
        &am33xx_l4_wkup__adc_tsc,
-       &am33xx_l4_wkup__wd_timer1,
        &am33xx_l4_hs__pruss,
        &am33xx_l4_per__dcan0,
        &am33xx_l4_per__dcan1,
-       &am33xx_l4_per__mailbox,
-       &am33xx_l4_ls__mcasp0,
-       &am33xx_l4_ls__mcasp1,
        &am33xx_l4_ls__timer2,
        &am33xx_l4_ls__timer3,
        &am33xx_l4_ls__timer4,
@@ -455,10 +399,8 @@ static struct omap_hwmod_ocp_if *am33xx_hwmod_ocp_ifs[] __initdata = {
        &am33xx_l3_main__tptc1,
        &am33xx_l3_main__tptc2,
        &am33xx_l3_main__ocmc,
-       &am33xx_l3_s__usbss,
        &am33xx_l3_main__sha0,
        &am33xx_l3_main__aes0,
-       &am33xx_l4_per__rng,
        NULL,
 };
 
index 5c3db6b..b81f834 100644 (file)
@@ -18,8 +18,6 @@
 #include "omap_hwmod_33xx_43xx_common_data.h"
 #include "prcm43xx.h"
 #include "omap_hwmod_common_data.h"
-#include "hdq1w.h"
-
 
 /* IP blocks */
 static struct omap_hwmod am43xx_emif_hwmod = {
@@ -468,32 +466,6 @@ static struct omap_hwmod am43xx_dss_rfbi_hwmod = {
        .parent_hwmod   = &am43xx_dss_core_hwmod,
 };
 
-/* HDQ1W */
-static struct omap_hwmod_class_sysconfig am43xx_hdq1w_sysc = {
-       .rev_offs       = 0x0000,
-       .sysc_offs      = 0x0014,
-       .syss_offs      = 0x0018,
-       .sysc_flags     = (SYSC_HAS_SOFTRESET | SYSC_HAS_AUTOIDLE),
-       .sysc_fields    = &omap_hwmod_sysc_type1,
-};
-
-static struct omap_hwmod_class am43xx_hdq1w_hwmod_class = {
-       .name   = "hdq1w",
-       .sysc   = &am43xx_hdq1w_sysc,
-       .reset  = &omap_hdq1w_reset,
-};
-
-static struct omap_hwmod am43xx_hdq1w_hwmod = {
-       .name           = "hdq1w",
-       .class          = &am43xx_hdq1w_hwmod_class,
-       .clkdm_name     = "l4ls_clkdm",
-       .prcm = {
-               .omap4 = {
-                       .clkctrl_offs = AM43XX_CM_PER_HDQ1W_CLKCTRL_OFFSET,
-                       .modulemode   = MODULEMODE_SWCTRL,
-               },
-       },
-};
 
 static struct omap_hwmod_class_sysconfig am43xx_vpfe_sysc = {
        .rev_offs       = 0x0,
@@ -604,13 +576,6 @@ static struct omap_hwmod_ocp_if am43xx_l4_wkup__timer1 = {
        .user           = OCP_USER_MPU,
 };
 
-static struct omap_hwmod_ocp_if am43xx_l4_wkup__wd_timer1 = {
-       .master         = &am33xx_l4_wkup_hwmod,
-       .slave          = &am33xx_wd_timer1_hwmod,
-       .clk            = "sys_clkin_ck",
-       .user           = OCP_USER_MPU,
-};
-
 static struct omap_hwmod_ocp_if am33xx_l4_wkup__synctimer = {
        .master         = &am33xx_l4_wkup_hwmod,
        .slave          = &am43xx_synctimer_hwmod,
@@ -751,13 +716,6 @@ static struct omap_hwmod_ocp_if am43xx_l4_ls__dss_rfbi = {
        .user           = OCP_USER_MPU | OCP_USER_SDMA,
 };
 
-static struct omap_hwmod_ocp_if am43xx_l4_ls__hdq1w = {
-       .master         = &am33xx_l4_ls_hwmod,
-       .slave          = &am43xx_hdq1w_hwmod,
-       .clk            = "l4ls_gclk",
-       .user           = OCP_USER_MPU | OCP_USER_SDMA,
-};
-
 static struct omap_hwmod_ocp_if am43xx_l3__vpfe0 = {
        .master         = &am43xx_vpfe0_hwmod,
        .slave          = &am33xx_l3_main_hwmod,
@@ -824,15 +782,10 @@ static struct omap_hwmod_ocp_if *am43xx_hwmod_ocp_ifs[] __initdata = {
        &am43xx_l4_wkup__smartreflex0,
        &am43xx_l4_wkup__smartreflex1,
        &am43xx_l4_wkup__timer1,
-       &am43xx_l4_wkup__wd_timer1,
        &am43xx_l4_wkup__adc_tsc,
        &am43xx_l3_s__qspi,
        &am33xx_l4_per__dcan0,
        &am33xx_l4_per__dcan1,
-       &am33xx_l4_per__mailbox,
-       &am33xx_l4_per__rng,
-       &am33xx_l4_ls__mcasp0,
-       &am33xx_l4_ls__mcasp1,
        &am33xx_l4_ls__timer2,
        &am33xx_l4_ls__timer3,
        &am33xx_l4_ls__timer4,
@@ -863,7 +816,6 @@ static struct omap_hwmod_ocp_if *am43xx_hwmod_ocp_ifs[] __initdata = {
        &am43xx_l4_ls__dss,
        &am43xx_l4_ls__dss_dispc,
        &am43xx_l4_ls__dss_rfbi,
-       &am43xx_l4_ls__hdq1w,
        &am43xx_l3__vpfe0,
        &am43xx_l3__vpfe1,
        &am43xx_l4_ls__vpfe0,
index a11cd6f..292f544 100644 (file)
@@ -1061,40 +1061,6 @@ static struct omap_hwmod omap44xx_gpmc_hwmod = {
        },
 };
 
-/*
- * 'hdq1w' class
- * hdq / 1-wire serial interface controller
- */
-
-static struct omap_hwmod_class_sysconfig omap44xx_hdq1w_sysc = {
-       .rev_offs       = 0x0000,
-       .sysc_offs      = 0x0014,
-       .syss_offs      = 0x0018,
-       .sysc_flags     = (SYSC_HAS_AUTOIDLE | SYSC_HAS_SOFTRESET |
-                          SYSS_HAS_RESET_STATUS),
-       .sysc_fields    = &omap_hwmod_sysc_type1,
-};
-
-static struct omap_hwmod_class omap44xx_hdq1w_hwmod_class = {
-       .name   = "hdq1w",
-       .sysc   = &omap44xx_hdq1w_sysc,
-};
-
-/* hdq1w */
-static struct omap_hwmod omap44xx_hdq1w_hwmod = {
-       .name           = "hdq1w",
-       .class          = &omap44xx_hdq1w_hwmod_class,
-       .clkdm_name     = "l4_per_clkdm",
-       .flags          = HWMOD_INIT_NO_RESET, /* XXX temporary */
-       .main_clk       = "func_12m_fclk",
-       .prcm = {
-               .omap4 = {
-                       .clkctrl_offs = OMAP4_CM_L4PER_HDQ1W_CLKCTRL_OFFSET,
-                       .context_offs = OMAP4_RM_L4PER_HDQ1W_CONTEXT_OFFSET,
-                       .modulemode   = MODULEMODE_SWCTRL,
-               },
-       },
-};
 
 /*
  * 'hsi' class
@@ -1288,180 +1254,6 @@ static struct omap_hwmod omap44xx_kbd_hwmod = {
        },
 };
 
-/*
- * 'mailbox' class
- * mailbox module allowing communication between the on-chip processors using a
- * queued mailbox-interrupt mechanism.
- */
-
-static struct omap_hwmod_class_sysconfig omap44xx_mailbox_sysc = {
-       .rev_offs       = 0x0000,
-       .sysc_offs      = 0x0010,
-       .sysc_flags     = (SYSC_HAS_RESET_STATUS | SYSC_HAS_SIDLEMODE |
-                          SYSC_HAS_SOFTRESET),
-       .idlemodes      = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART),
-       .sysc_fields    = &omap_hwmod_sysc_type2,
-};
-
-static struct omap_hwmod_class omap44xx_mailbox_hwmod_class = {
-       .name   = "mailbox",
-       .sysc   = &omap44xx_mailbox_sysc,
-};
-
-/* mailbox */
-static struct omap_hwmod omap44xx_mailbox_hwmod = {
-       .name           = "mailbox",
-       .class          = &omap44xx_mailbox_hwmod_class,
-       .clkdm_name     = "l4_cfg_clkdm",
-       .prcm = {
-               .omap4 = {
-                       .clkctrl_offs = OMAP4_CM_L4CFG_MAILBOX_CLKCTRL_OFFSET,
-                       .context_offs = OMAP4_RM_L4CFG_MAILBOX_CONTEXT_OFFSET,
-               },
-       },
-};
-
-/*
- * 'mcasp' class
- * multi-channel audio serial port controller
- */
-
-/* The IP is not compliant to type1 / type2 scheme */
-static struct omap_hwmod_class_sysconfig omap44xx_mcasp_sysc = {
-       .rev_offs       = 0,
-       .sysc_offs      = 0x0004,
-       .sysc_flags     = SYSC_HAS_SIDLEMODE,
-       .idlemodes      = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART |
-                          SIDLE_SMART_WKUP),
-       .sysc_fields    = &omap_hwmod_sysc_type_mcasp,
-};
-
-static struct omap_hwmod_class omap44xx_mcasp_hwmod_class = {
-       .name   = "mcasp",
-       .sysc   = &omap44xx_mcasp_sysc,
-};
-
-/* mcasp */
-static struct omap_hwmod omap44xx_mcasp_hwmod = {
-       .name           = "mcasp",
-       .class          = &omap44xx_mcasp_hwmod_class,
-       .clkdm_name     = "abe_clkdm",
-       .main_clk       = "func_mcasp_abe_gfclk",
-       .prcm = {
-               .omap4 = {
-                       .clkctrl_offs = OMAP4_CM1_ABE_MCASP_CLKCTRL_OFFSET,
-                       .context_offs = OMAP4_RM_ABE_MCASP_CONTEXT_OFFSET,
-                       .modulemode   = MODULEMODE_SWCTRL,
-               },
-       },
-};
-
-/*
- * 'mcbsp' class
- * multi channel buffered serial port controller
- */
-
-static struct omap_hwmod_class_sysconfig omap44xx_mcbsp_sysc = {
-       .rev_offs       = -ENODEV,
-       .sysc_offs      = 0x008c,
-       .sysc_flags     = (SYSC_HAS_CLOCKACTIVITY | SYSC_HAS_ENAWAKEUP |
-                          SYSC_HAS_SIDLEMODE | SYSC_HAS_SOFTRESET),
-       .idlemodes      = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART),
-       .sysc_fields    = &omap_hwmod_sysc_type1,
-};
-
-static struct omap_hwmod_class omap44xx_mcbsp_hwmod_class = {
-       .name   = "mcbsp",
-       .sysc   = &omap44xx_mcbsp_sysc,
-};
-
-/* mcbsp1 */
-static struct omap_hwmod_opt_clk mcbsp1_opt_clks[] = {
-       { .role = "pad_fck", .clk = "pad_clks_ck" },
-       { .role = "prcm_fck", .clk = "mcbsp1_sync_mux_ck" },
-};
-
-static struct omap_hwmod omap44xx_mcbsp1_hwmod = {
-       .name           = "mcbsp1",
-       .class          = &omap44xx_mcbsp_hwmod_class,
-       .clkdm_name     = "abe_clkdm",
-       .main_clk       = "func_mcbsp1_gfclk",
-       .prcm = {
-               .omap4 = {
-                       .clkctrl_offs = OMAP4_CM1_ABE_MCBSP1_CLKCTRL_OFFSET,
-                       .context_offs = OMAP4_RM_ABE_MCBSP1_CONTEXT_OFFSET,
-                       .modulemode   = MODULEMODE_SWCTRL,
-               },
-       },
-       .opt_clks       = mcbsp1_opt_clks,
-       .opt_clks_cnt   = ARRAY_SIZE(mcbsp1_opt_clks),
-};
-
-/* mcbsp2 */
-static struct omap_hwmod_opt_clk mcbsp2_opt_clks[] = {
-       { .role = "pad_fck", .clk = "pad_clks_ck" },
-       { .role = "prcm_fck", .clk = "mcbsp2_sync_mux_ck" },
-};
-
-static struct omap_hwmod omap44xx_mcbsp2_hwmod = {
-       .name           = "mcbsp2",
-       .class          = &omap44xx_mcbsp_hwmod_class,
-       .clkdm_name     = "abe_clkdm",
-       .main_clk       = "func_mcbsp2_gfclk",
-       .prcm = {
-               .omap4 = {
-                       .clkctrl_offs = OMAP4_CM1_ABE_MCBSP2_CLKCTRL_OFFSET,
-                       .context_offs = OMAP4_RM_ABE_MCBSP2_CONTEXT_OFFSET,
-                       .modulemode   = MODULEMODE_SWCTRL,
-               },
-       },
-       .opt_clks       = mcbsp2_opt_clks,
-       .opt_clks_cnt   = ARRAY_SIZE(mcbsp2_opt_clks),
-};
-
-/* mcbsp3 */
-static struct omap_hwmod_opt_clk mcbsp3_opt_clks[] = {
-       { .role = "pad_fck", .clk = "pad_clks_ck" },
-       { .role = "prcm_fck", .clk = "mcbsp3_sync_mux_ck" },
-};
-
-static struct omap_hwmod omap44xx_mcbsp3_hwmod = {
-       .name           = "mcbsp3",
-       .class          = &omap44xx_mcbsp_hwmod_class,
-       .clkdm_name     = "abe_clkdm",
-       .main_clk       = "func_mcbsp3_gfclk",
-       .prcm = {
-               .omap4 = {
-                       .clkctrl_offs = OMAP4_CM1_ABE_MCBSP3_CLKCTRL_OFFSET,
-                       .context_offs = OMAP4_RM_ABE_MCBSP3_CONTEXT_OFFSET,
-                       .modulemode   = MODULEMODE_SWCTRL,
-               },
-       },
-       .opt_clks       = mcbsp3_opt_clks,
-       .opt_clks_cnt   = ARRAY_SIZE(mcbsp3_opt_clks),
-};
-
-/* mcbsp4 */
-static struct omap_hwmod_opt_clk mcbsp4_opt_clks[] = {
-       { .role = "pad_fck", .clk = "pad_clks_ck" },
-       { .role = "prcm_fck", .clk = "mcbsp4_sync_mux_ck" },
-};
-
-static struct omap_hwmod omap44xx_mcbsp4_hwmod = {
-       .name           = "mcbsp4",
-       .class          = &omap44xx_mcbsp_hwmod_class,
-       .clkdm_name     = "l4_per_clkdm",
-       .main_clk       = "per_mcbsp4_gfclk",
-       .prcm = {
-               .omap4 = {
-                       .clkctrl_offs = OMAP4_CM_L4PER_MCBSP4_CLKCTRL_OFFSET,
-                       .context_offs = OMAP4_RM_L4PER_MCBSP4_CONTEXT_OFFSET,
-                       .modulemode   = MODULEMODE_SWCTRL,
-               },
-       },
-       .opt_clks       = mcbsp4_opt_clks,
-       .opt_clks_cnt   = ARRAY_SIZE(mcbsp4_opt_clks),
-};
 
 /*
  * 'mcpdm' class
@@ -2294,51 +2086,6 @@ static struct omap_hwmod omap44xx_usb_host_hs_hwmod = {
        .flags          = HWMOD_SWSUP_SIDLE | HWMOD_SWSUP_MSTANDBY,
 };
 
-/*
- * 'usb_otg_hs' class
- * high-speed on-the-go universal serial bus (usb_otg_hs) controller
- */
-
-static struct omap_hwmod_class_sysconfig omap44xx_usb_otg_hs_sysc = {
-       .rev_offs       = 0x0400,
-       .sysc_offs      = 0x0404,
-       .syss_offs      = 0x0408,
-       .sysc_flags     = (SYSC_HAS_AUTOIDLE | SYSC_HAS_ENAWAKEUP |
-                          SYSC_HAS_MIDLEMODE | SYSC_HAS_SIDLEMODE |
-                          SYSC_HAS_SOFTRESET | SYSS_HAS_RESET_STATUS),
-       .idlemodes      = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART |
-                          SIDLE_SMART_WKUP | MSTANDBY_FORCE | MSTANDBY_NO |
-                          MSTANDBY_SMART),
-       .sysc_fields    = &omap_hwmod_sysc_type1,
-};
-
-static struct omap_hwmod_class omap44xx_usb_otg_hs_hwmod_class = {
-       .name   = "usb_otg_hs",
-       .sysc   = &omap44xx_usb_otg_hs_sysc,
-};
-
-/* usb_otg_hs */
-static struct omap_hwmod_opt_clk usb_otg_hs_opt_clks[] = {
-       { .role = "xclk", .clk = "usb_otg_hs_xclk" },
-};
-
-static struct omap_hwmod omap44xx_usb_otg_hs_hwmod = {
-       .name           = "usb_otg_hs",
-       .class          = &omap44xx_usb_otg_hs_hwmod_class,
-       .clkdm_name     = "l3_init_clkdm",
-       .flags          = HWMOD_SWSUP_SIDLE | HWMOD_SWSUP_MSTANDBY,
-       .main_clk       = "usb_otg_hs_ick",
-       .prcm = {
-               .omap4 = {
-                       .clkctrl_offs = OMAP4_CM_L3INIT_USB_OTG_CLKCTRL_OFFSET,
-                       .context_offs = OMAP4_RM_L3INIT_USB_OTG_CONTEXT_OFFSET,
-                       .modulemode   = MODULEMODE_HWCTRL,
-               },
-       },
-       .opt_clks       = usb_otg_hs_opt_clks,
-       .opt_clks_cnt   = ARRAY_SIZE(usb_otg_hs_opt_clks),
-};
-
 /*
  * 'usb_tll_hs' class
  * usb_tll_hs module is the adapter on the usb_host_hs ports
@@ -2546,14 +2293,6 @@ static struct omap_hwmod_ocp_if omap44xx_usb_host_hs__l3_main_2 = {
        .user           = OCP_USER_MPU | OCP_USER_SDMA,
 };
 
-/* usb_otg_hs -> l3_main_2 */
-static struct omap_hwmod_ocp_if omap44xx_usb_otg_hs__l3_main_2 = {
-       .master         = &omap44xx_usb_otg_hs_hwmod,
-       .slave          = &omap44xx_l3_main_2_hwmod,
-       .clk            = "l3_div_ck",
-       .user           = OCP_USER_MPU | OCP_USER_SDMA,
-};
-
 /* l3_main_1 -> l3_main_3 */
 static struct omap_hwmod_ocp_if omap44xx_l3_main_1__l3_main_3 = {
        .master         = &omap44xx_l3_main_1_hwmod,
@@ -2898,14 +2637,6 @@ static struct omap_hwmod_ocp_if omap44xx_l3_main_2__gpmc = {
        .user           = OCP_USER_MPU | OCP_USER_SDMA,
 };
 
-/* l4_per -> hdq1w */
-static struct omap_hwmod_ocp_if omap44xx_l4_per__hdq1w = {
-       .master         = &omap44xx_l4_per_hwmod,
-       .slave          = &omap44xx_hdq1w_hwmod,
-       .clk            = "l4_div_ck",
-       .user           = OCP_USER_MPU | OCP_USER_SDMA,
-};
-
 /* l4_cfg -> hsi */
 static struct omap_hwmod_ocp_if omap44xx_l4_cfg__hsi = {
        .master         = &omap44xx_l4_cfg_hwmod,
@@ -2954,62 +2685,6 @@ static struct omap_hwmod_ocp_if omap44xx_l4_wkup__kbd = {
        .user           = OCP_USER_MPU | OCP_USER_SDMA,
 };
 
-/* l4_cfg -> mailbox */
-static struct omap_hwmod_ocp_if omap44xx_l4_cfg__mailbox = {
-       .master         = &omap44xx_l4_cfg_hwmod,
-       .slave          = &omap44xx_mailbox_hwmod,
-       .clk            = "l4_div_ck",
-       .user           = OCP_USER_MPU | OCP_USER_SDMA,
-};
-
-/* l4_abe -> mcasp */
-static struct omap_hwmod_ocp_if omap44xx_l4_abe__mcasp = {
-       .master         = &omap44xx_l4_abe_hwmod,
-       .slave          = &omap44xx_mcasp_hwmod,
-       .clk            = "ocp_abe_iclk",
-       .user           = OCP_USER_MPU,
-};
-
-/* l4_abe -> mcasp (dma) */
-static struct omap_hwmod_ocp_if omap44xx_l4_abe__mcasp_dma = {
-       .master         = &omap44xx_l4_abe_hwmod,
-       .slave          = &omap44xx_mcasp_hwmod,
-       .clk            = "ocp_abe_iclk",
-       .user           = OCP_USER_SDMA,
-};
-
-/* l4_abe -> mcbsp1 */
-static struct omap_hwmod_ocp_if omap44xx_l4_abe__mcbsp1 = {
-       .master         = &omap44xx_l4_abe_hwmod,
-       .slave          = &omap44xx_mcbsp1_hwmod,
-       .clk            = "ocp_abe_iclk",
-       .user           = OCP_USER_MPU | OCP_USER_SDMA,
-};
-
-/* l4_abe -> mcbsp2 */
-static struct omap_hwmod_ocp_if omap44xx_l4_abe__mcbsp2 = {
-       .master         = &omap44xx_l4_abe_hwmod,
-       .slave          = &omap44xx_mcbsp2_hwmod,
-       .clk            = "ocp_abe_iclk",
-       .user           = OCP_USER_MPU | OCP_USER_SDMA,
-};
-
-/* l4_abe -> mcbsp3 */
-static struct omap_hwmod_ocp_if omap44xx_l4_abe__mcbsp3 = {
-       .master         = &omap44xx_l4_abe_hwmod,
-       .slave          = &omap44xx_mcbsp3_hwmod,
-       .clk            = "ocp_abe_iclk",
-       .user           = OCP_USER_MPU | OCP_USER_SDMA,
-};
-
-/* l4_per -> mcbsp4 */
-static struct omap_hwmod_ocp_if omap44xx_l4_per__mcbsp4 = {
-       .master         = &omap44xx_l4_per_hwmod,
-       .slave          = &omap44xx_mcbsp4_hwmod,
-       .clk            = "l4_div_ck",
-       .user           = OCP_USER_MPU | OCP_USER_SDMA,
-};
-
 /* l4_abe -> mcpdm */
 static struct omap_hwmod_ocp_if omap44xx_l4_abe__mcpdm = {
        .master         = &omap44xx_l4_abe_hwmod,
@@ -3242,14 +2917,6 @@ static struct omap_hwmod_ocp_if omap44xx_l4_cfg__usb_host_hs = {
        .user           = OCP_USER_MPU | OCP_USER_SDMA,
 };
 
-/* l4_cfg -> usb_otg_hs */
-static struct omap_hwmod_ocp_if omap44xx_l4_cfg__usb_otg_hs = {
-       .master         = &omap44xx_l4_cfg_hwmod,
-       .slave          = &omap44xx_usb_otg_hs_hwmod,
-       .clk            = "l4_div_ck",
-       .user           = OCP_USER_MPU | OCP_USER_SDMA,
-};
-
 /* l4_cfg -> usb_tll_hs */
 static struct omap_hwmod_ocp_if omap44xx_l4_cfg__usb_tll_hs = {
        .master         = &omap44xx_l4_cfg_hwmod,
@@ -3296,7 +2963,6 @@ static struct omap_hwmod_ocp_if *omap44xx_hwmod_ocp_ifs[] __initdata = {
        &omap44xx_l4_cfg__l3_main_2,
        /* &omap44xx_usb_host_fs__l3_main_2, */
        &omap44xx_usb_host_hs__l3_main_2,
-       &omap44xx_usb_otg_hs__l3_main_2,
        &omap44xx_l3_main_1__l3_main_3,
        &omap44xx_l3_main_2__l3_main_3,
        &omap44xx_l4_cfg__l3_main_3,
@@ -3339,20 +3005,12 @@ static struct omap_hwmod_ocp_if *omap44xx_hwmod_ocp_ifs[] __initdata = {
        &omap44xx_l4_per__elm,
        &omap44xx_l4_cfg__fdif,
        &omap44xx_l3_main_2__gpmc,
-       &omap44xx_l4_per__hdq1w,
        &omap44xx_l4_cfg__hsi,
        &omap44xx_l3_main_2__ipu,
        &omap44xx_l3_main_2__iss,
        /* &omap44xx_iva__sl2if, */
        &omap44xx_l3_main_2__iva,
        &omap44xx_l4_wkup__kbd,
-       &omap44xx_l4_cfg__mailbox,
-       &omap44xx_l4_abe__mcasp,
-       &omap44xx_l4_abe__mcasp_dma,
-       &omap44xx_l4_abe__mcbsp1,
-       &omap44xx_l4_abe__mcbsp2,
-       &omap44xx_l4_abe__mcbsp3,
-       &omap44xx_l4_per__mcbsp4,
        &omap44xx_l4_abe__mcpdm,
        &omap44xx_l3_main_2__mmu_ipu,
        &omap44xx_l4_cfg__mmu_dsp,
@@ -3384,7 +3042,6 @@ static struct omap_hwmod_ocp_if *omap44xx_hwmod_ocp_ifs[] __initdata = {
        &omap44xx_l4_per__timer11,
        /* &omap44xx_l4_cfg__usb_host_fs, */
        &omap44xx_l4_cfg__usb_host_hs,
-       &omap44xx_l4_cfg__usb_otg_hs,
        &omap44xx_l4_cfg__usb_tll_hs,
        &omap44xx_mpu__emif1,
        &omap44xx_mpu__emif2,
index 8006b43..cc5ad6a 100644 (file)
@@ -24,7 +24,6 @@
 #include "cm1_54xx.h"
 #include "cm2_54xx.h"
 #include "prm54xx.h"
-#include "wd_timer.h"
 
 /* Base offset for all OMAP5 interrupts external to MPUSS */
 #define OMAP54XX_IRQ_GIC_START 32
@@ -628,124 +627,6 @@ static struct omap_hwmod omap54xx_kbd_hwmod = {
        },
 };
 
-/*
- * 'mailbox' class
- * mailbox module allowing communication between the on-chip processors using a
- * queued mailbox-interrupt mechanism.
- */
-
-static struct omap_hwmod_class_sysconfig omap54xx_mailbox_sysc = {
-       .rev_offs       = 0x0000,
-       .sysc_offs      = 0x0010,
-       .sysc_flags     = (SYSC_HAS_RESET_STATUS | SYSC_HAS_SIDLEMODE |
-                          SYSC_HAS_SOFTRESET),
-       .idlemodes      = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART),
-       .sysc_fields    = &omap_hwmod_sysc_type2,
-};
-
-static struct omap_hwmod_class omap54xx_mailbox_hwmod_class = {
-       .name   = "mailbox",
-       .sysc   = &omap54xx_mailbox_sysc,
-};
-
-/* mailbox */
-static struct omap_hwmod omap54xx_mailbox_hwmod = {
-       .name           = "mailbox",
-       .class          = &omap54xx_mailbox_hwmod_class,
-       .clkdm_name     = "l4cfg_clkdm",
-       .prcm = {
-               .omap4 = {
-                       .clkctrl_offs = OMAP54XX_CM_L4CFG_MAILBOX_CLKCTRL_OFFSET,
-                       .context_offs = OMAP54XX_RM_L4CFG_MAILBOX_CONTEXT_OFFSET,
-               },
-       },
-};
-
-/*
- * 'mcbsp' class
- * multi channel buffered serial port controller
- */
-
-static struct omap_hwmod_class_sysconfig omap54xx_mcbsp_sysc = {
-       .rev_offs       = -ENODEV,
-       .sysc_offs      = 0x008c,
-       .sysc_flags     = (SYSC_HAS_CLOCKACTIVITY | SYSC_HAS_ENAWAKEUP |
-                          SYSC_HAS_SIDLEMODE | SYSC_HAS_SOFTRESET),
-       .idlemodes      = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART),
-       .sysc_fields    = &omap_hwmod_sysc_type1,
-};
-
-static struct omap_hwmod_class omap54xx_mcbsp_hwmod_class = {
-       .name   = "mcbsp",
-       .sysc   = &omap54xx_mcbsp_sysc,
-};
-
-/* mcbsp1 */
-static struct omap_hwmod_opt_clk mcbsp1_opt_clks[] = {
-       { .role = "pad_fck", .clk = "pad_clks_ck" },
-       { .role = "prcm_fck", .clk = "mcbsp1_sync_mux_ck" },
-};
-
-static struct omap_hwmod omap54xx_mcbsp1_hwmod = {
-       .name           = "mcbsp1",
-       .class          = &omap54xx_mcbsp_hwmod_class,
-       .clkdm_name     = "abe_clkdm",
-       .main_clk       = "mcbsp1_gfclk",
-       .prcm = {
-               .omap4 = {
-                       .clkctrl_offs = OMAP54XX_CM_ABE_MCBSP1_CLKCTRL_OFFSET,
-                       .context_offs = OMAP54XX_RM_ABE_MCBSP1_CONTEXT_OFFSET,
-                       .modulemode   = MODULEMODE_SWCTRL,
-               },
-       },
-       .opt_clks       = mcbsp1_opt_clks,
-       .opt_clks_cnt   = ARRAY_SIZE(mcbsp1_opt_clks),
-};
-
-/* mcbsp2 */
-static struct omap_hwmod_opt_clk mcbsp2_opt_clks[] = {
-       { .role = "pad_fck", .clk = "pad_clks_ck" },
-       { .role = "prcm_fck", .clk = "mcbsp2_sync_mux_ck" },
-};
-
-static struct omap_hwmod omap54xx_mcbsp2_hwmod = {
-       .name           = "mcbsp2",
-       .class          = &omap54xx_mcbsp_hwmod_class,
-       .clkdm_name     = "abe_clkdm",
-       .main_clk       = "mcbsp2_gfclk",
-       .prcm = {
-               .omap4 = {
-                       .clkctrl_offs = OMAP54XX_CM_ABE_MCBSP2_CLKCTRL_OFFSET,
-                       .context_offs = OMAP54XX_RM_ABE_MCBSP2_CONTEXT_OFFSET,
-                       .modulemode   = MODULEMODE_SWCTRL,
-               },
-       },
-       .opt_clks       = mcbsp2_opt_clks,
-       .opt_clks_cnt   = ARRAY_SIZE(mcbsp2_opt_clks),
-};
-
-/* mcbsp3 */
-static struct omap_hwmod_opt_clk mcbsp3_opt_clks[] = {
-       { .role = "pad_fck", .clk = "pad_clks_ck" },
-       { .role = "prcm_fck", .clk = "mcbsp3_sync_mux_ck" },
-};
-
-static struct omap_hwmod omap54xx_mcbsp3_hwmod = {
-       .name           = "mcbsp3",
-       .class          = &omap54xx_mcbsp_hwmod_class,
-       .clkdm_name     = "abe_clkdm",
-       .main_clk       = "mcbsp3_gfclk",
-       .prcm = {
-               .omap4 = {
-                       .clkctrl_offs = OMAP54XX_CM_ABE_MCBSP3_CLKCTRL_OFFSET,
-                       .context_offs = OMAP54XX_RM_ABE_MCBSP3_CONTEXT_OFFSET,
-                       .modulemode   = MODULEMODE_SWCTRL,
-               },
-       },
-       .opt_clks       = mcbsp3_opt_clks,
-       .opt_clks_cnt   = ARRAY_SIZE(mcbsp3_opt_clks),
-};
-
 /*
  * 'mcpdm' class
  * multi channel pdm controller (proprietary interface with phoenix power
@@ -795,86 +676,6 @@ static struct omap_hwmod omap54xx_mcpdm_hwmod = {
        },
 };
 
-/*
- * 'mcspi' class
- * multichannel serial port interface (mcspi) / master/slave synchronous serial
- * bus
- */
-
-static struct omap_hwmod_class_sysconfig omap54xx_mcspi_sysc = {
-       .rev_offs       = 0x0000,
-       .sysc_offs      = 0x0010,
-       .sysc_flags     = (SYSC_HAS_EMUFREE | SYSC_HAS_RESET_STATUS |
-                          SYSC_HAS_SIDLEMODE | SYSC_HAS_SOFTRESET),
-       .idlemodes      = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART |
-                          SIDLE_SMART_WKUP),
-       .sysc_fields    = &omap_hwmod_sysc_type2,
-};
-
-static struct omap_hwmod_class omap54xx_mcspi_hwmod_class = {
-       .name   = "mcspi",
-       .sysc   = &omap54xx_mcspi_sysc,
-};
-
-/* mcspi1 */
-static struct omap_hwmod omap54xx_mcspi1_hwmod = {
-       .name           = "mcspi1",
-       .class          = &omap54xx_mcspi_hwmod_class,
-       .clkdm_name     = "l4per_clkdm",
-       .main_clk       = "func_48m_fclk",
-       .prcm = {
-               .omap4 = {
-                       .clkctrl_offs = OMAP54XX_CM_L4PER_MCSPI1_CLKCTRL_OFFSET,
-                       .context_offs = OMAP54XX_RM_L4PER_MCSPI1_CONTEXT_OFFSET,
-                       .modulemode   = MODULEMODE_SWCTRL,
-               },
-       },
-};
-
-/* mcspi2 */
-static struct omap_hwmod omap54xx_mcspi2_hwmod = {
-       .name           = "mcspi2",
-       .class          = &omap54xx_mcspi_hwmod_class,
-       .clkdm_name     = "l4per_clkdm",
-       .main_clk       = "func_48m_fclk",
-       .prcm = {
-               .omap4 = {
-                       .clkctrl_offs = OMAP54XX_CM_L4PER_MCSPI2_CLKCTRL_OFFSET,
-                       .context_offs = OMAP54XX_RM_L4PER_MCSPI2_CONTEXT_OFFSET,
-                       .modulemode   = MODULEMODE_SWCTRL,
-               },
-       },
-};
-
-/* mcspi3 */
-static struct omap_hwmod omap54xx_mcspi3_hwmod = {
-       .name           = "mcspi3",
-       .class          = &omap54xx_mcspi_hwmod_class,
-       .clkdm_name     = "l4per_clkdm",
-       .main_clk       = "func_48m_fclk",
-       .prcm = {
-               .omap4 = {
-                       .clkctrl_offs = OMAP54XX_CM_L4PER_MCSPI3_CLKCTRL_OFFSET,
-                       .context_offs = OMAP54XX_RM_L4PER_MCSPI3_CONTEXT_OFFSET,
-                       .modulemode   = MODULEMODE_SWCTRL,
-               },
-       },
-};
-
-/* mcspi4 */
-static struct omap_hwmod omap54xx_mcspi4_hwmod = {
-       .name           = "mcspi4",
-       .class          = &omap54xx_mcspi_hwmod_class,
-       .clkdm_name     = "l4per_clkdm",
-       .main_clk       = "func_48m_fclk",
-       .prcm = {
-               .omap4 = {
-                       .clkctrl_offs = OMAP54XX_CM_L4PER_MCSPI4_CLKCTRL_OFFSET,
-                       .context_offs = OMAP54XX_RM_L4PER_MCSPI4_CONTEXT_OFFSET,
-                       .modulemode   = MODULEMODE_SWCTRL,
-               },
-       },
-};
 
 /*
  * 'mmu' class
@@ -1392,43 +1193,6 @@ static struct omap_hwmod omap54xx_usb_otg_ss_hwmod = {
        .opt_clks_cnt   = ARRAY_SIZE(usb_otg_ss_opt_clks),
 };
 
-/*
- * 'wd_timer' class
- * 32-bit watchdog upward counter that generates a pulse on the reset pin on
- * overflow condition
- */
-
-static struct omap_hwmod_class_sysconfig omap54xx_wd_timer_sysc = {
-       .rev_offs       = 0x0000,
-       .sysc_offs      = 0x0010,
-       .syss_offs      = 0x0014,
-       .sysc_flags     = (SYSC_HAS_EMUFREE | SYSC_HAS_SIDLEMODE |
-                          SYSC_HAS_SOFTRESET | SYSS_HAS_RESET_STATUS),
-       .idlemodes      = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART |
-                          SIDLE_SMART_WKUP),
-       .sysc_fields    = &omap_hwmod_sysc_type1,
-};
-
-static struct omap_hwmod_class omap54xx_wd_timer_hwmod_class = {
-       .name           = "wd_timer",
-       .sysc           = &omap54xx_wd_timer_sysc,
-       .pre_shutdown   = &omap2_wd_timer_disable,
-};
-
-/* wd_timer2 */
-static struct omap_hwmod omap54xx_wd_timer2_hwmod = {
-       .name           = "wd_timer2",
-       .class          = &omap54xx_wd_timer_hwmod_class,
-       .clkdm_name     = "wkupaon_clkdm",
-       .main_clk       = "sys_32k_ck",
-       .prcm = {
-               .omap4 = {
-                       .clkctrl_offs = OMAP54XX_CM_WKUPAON_WD_TIMER2_CLKCTRL_OFFSET,
-                       .context_offs = OMAP54XX_RM_WKUPAON_WD_TIMER2_CONTEXT_OFFSET,
-                       .modulemode   = MODULEMODE_SWCTRL,
-               },
-       },
-};
 
 /*
  * 'ocp2scp' class
@@ -1747,38 +1511,6 @@ static struct omap_hwmod_ocp_if omap54xx_l4_wkup__kbd = {
        .user           = OCP_USER_MPU | OCP_USER_SDMA,
 };
 
-/* l4_cfg -> mailbox */
-static struct omap_hwmod_ocp_if omap54xx_l4_cfg__mailbox = {
-       .master         = &omap54xx_l4_cfg_hwmod,
-       .slave          = &omap54xx_mailbox_hwmod,
-       .clk            = "l4_root_clk_div",
-       .user           = OCP_USER_MPU | OCP_USER_SDMA,
-};
-
-/* l4_abe -> mcbsp1 */
-static struct omap_hwmod_ocp_if omap54xx_l4_abe__mcbsp1 = {
-       .master         = &omap54xx_l4_abe_hwmod,
-       .slave          = &omap54xx_mcbsp1_hwmod,
-       .clk            = "abe_iclk",
-       .user           = OCP_USER_MPU,
-};
-
-/* l4_abe -> mcbsp2 */
-static struct omap_hwmod_ocp_if omap54xx_l4_abe__mcbsp2 = {
-       .master         = &omap54xx_l4_abe_hwmod,
-       .slave          = &omap54xx_mcbsp2_hwmod,
-       .clk            = "abe_iclk",
-       .user           = OCP_USER_MPU,
-};
-
-/* l4_abe -> mcbsp3 */
-static struct omap_hwmod_ocp_if omap54xx_l4_abe__mcbsp3 = {
-       .master         = &omap54xx_l4_abe_hwmod,
-       .slave          = &omap54xx_mcbsp3_hwmod,
-       .clk            = "abe_iclk",
-       .user           = OCP_USER_MPU,
-};
-
 /* l4_abe -> mcpdm */
 static struct omap_hwmod_ocp_if omap54xx_l4_abe__mcpdm = {
        .master         = &omap54xx_l4_abe_hwmod,
@@ -1787,38 +1519,6 @@ static struct omap_hwmod_ocp_if omap54xx_l4_abe__mcpdm = {
        .user           = OCP_USER_MPU,
 };
 
-/* l4_per -> mcspi1 */
-static struct omap_hwmod_ocp_if omap54xx_l4_per__mcspi1 = {
-       .master         = &omap54xx_l4_per_hwmod,
-       .slave          = &omap54xx_mcspi1_hwmod,
-       .clk            = "l4_root_clk_div",
-       .user           = OCP_USER_MPU | OCP_USER_SDMA,
-};
-
-/* l4_per -> mcspi2 */
-static struct omap_hwmod_ocp_if omap54xx_l4_per__mcspi2 = {
-       .master         = &omap54xx_l4_per_hwmod,
-       .slave          = &omap54xx_mcspi2_hwmod,
-       .clk            = "l4_root_clk_div",
-       .user           = OCP_USER_MPU | OCP_USER_SDMA,
-};
-
-/* l4_per -> mcspi3 */
-static struct omap_hwmod_ocp_if omap54xx_l4_per__mcspi3 = {
-       .master         = &omap54xx_l4_per_hwmod,
-       .slave          = &omap54xx_mcspi3_hwmod,
-       .clk            = "l4_root_clk_div",
-       .user           = OCP_USER_MPU | OCP_USER_SDMA,
-};
-
-/* l4_per -> mcspi4 */
-static struct omap_hwmod_ocp_if omap54xx_l4_per__mcspi4 = {
-       .master         = &omap54xx_l4_per_hwmod,
-       .slave          = &omap54xx_mcspi4_hwmod,
-       .clk            = "l4_root_clk_div",
-       .user           = OCP_USER_MPU | OCP_USER_SDMA,
-};
-
 /* l4_cfg -> mpu */
 static struct omap_hwmod_ocp_if omap54xx_l4_cfg__mpu = {
        .master         = &omap54xx_l4_cfg_hwmod,
@@ -1955,14 +1655,6 @@ static struct omap_hwmod_ocp_if omap54xx_l4_cfg__usb_otg_ss = {
        .user           = OCP_USER_MPU | OCP_USER_SDMA,
 };
 
-/* l4_wkup -> wd_timer2 */
-static struct omap_hwmod_ocp_if omap54xx_l4_wkup__wd_timer2 = {
-       .master         = &omap54xx_l4_wkup_hwmod,
-       .slave          = &omap54xx_wd_timer2_hwmod,
-       .clk            = "wkupaon_iclk_mux",
-       .user           = OCP_USER_MPU | OCP_USER_SDMA,
-};
-
 static struct omap_hwmod_ocp_if *omap54xx_hwmod_ocp_ifs[] __initdata = {
        &omap54xx_l3_main_1__dmm,
        &omap54xx_l3_main_3__l3_instr,
@@ -1994,15 +1686,7 @@ static struct omap_hwmod_ocp_if *omap54xx_hwmod_ocp_ifs[] __initdata = {
        &omap54xx_mpu__emif2,
        &omap54xx_l3_main_2__mmu_ipu,
        &omap54xx_l4_wkup__kbd,
-       &omap54xx_l4_cfg__mailbox,
-       &omap54xx_l4_abe__mcbsp1,
-       &omap54xx_l4_abe__mcbsp2,
-       &omap54xx_l4_abe__mcbsp3,
        &omap54xx_l4_abe__mcpdm,
-       &omap54xx_l4_per__mcspi1,
-       &omap54xx_l4_per__mcspi2,
-       &omap54xx_l4_per__mcspi3,
-       &omap54xx_l4_per__mcspi4,
        &omap54xx_l4_cfg__mpu,
        &omap54xx_l4_cfg__spinlock,
        &omap54xx_l4_cfg__ocp2scp1,
@@ -2020,7 +1704,6 @@ static struct omap_hwmod_ocp_if *omap54xx_hwmod_ocp_ifs[] __initdata = {
        &omap54xx_l4_cfg__usb_host_hs,
        &omap54xx_l4_cfg__usb_tll_hs,
        &omap54xx_l4_cfg__usb_otg_ss,
-       &omap54xx_l4_wkup__wd_timer2,
        &omap54xx_l4_cfg__ocp2scp3,
        &omap54xx_l4_cfg__sata,
        NULL,
index bd392d5..f8715bd 100644 (file)
@@ -24,7 +24,6 @@
 #include "cm1_7xx.h"
 #include "cm2_7xx.h"
 #include "prm7xx.h"
-#include "wd_timer.h"
 #include "soc.h"
 
 /* Base offset for all DRA7XX interrupts external to MPUSS */
@@ -772,229 +771,7 @@ static struct omap_hwmod dra7xx_gpmc_hwmod = {
        },
 };
 
-/*
- * 'hdq1w' class
- *
- */
-
-static struct omap_hwmod_class_sysconfig dra7xx_hdq1w_sysc = {
-       .rev_offs       = 0x0000,
-       .sysc_offs      = 0x0014,
-       .syss_offs      = 0x0018,
-       .sysc_flags     = (SYSC_HAS_AUTOIDLE | SYSC_HAS_SOFTRESET |
-                          SYSS_HAS_RESET_STATUS),
-       .sysc_fields    = &omap_hwmod_sysc_type1,
-};
 
-static struct omap_hwmod_class dra7xx_hdq1w_hwmod_class = {
-       .name   = "hdq1w",
-       .sysc   = &dra7xx_hdq1w_sysc,
-};
-
-/* hdq1w */
-
-static struct omap_hwmod dra7xx_hdq1w_hwmod = {
-       .name           = "hdq1w",
-       .class          = &dra7xx_hdq1w_hwmod_class,
-       .clkdm_name     = "l4per_clkdm",
-       .flags          = HWMOD_INIT_NO_RESET,
-       .main_clk       = "func_12m_fclk",
-       .prcm = {
-               .omap4 = {
-                       .clkctrl_offs = DRA7XX_CM_L4PER_HDQ1W_CLKCTRL_OFFSET,
-                       .context_offs = DRA7XX_RM_L4PER_HDQ1W_CONTEXT_OFFSET,
-                       .modulemode   = MODULEMODE_SWCTRL,
-               },
-       },
-};
-
-/*
- * 'mailbox' class
- *
- */
-
-static struct omap_hwmod_class_sysconfig dra7xx_mailbox_sysc = {
-       .rev_offs       = 0x0000,
-       .sysc_offs      = 0x0010,
-       .sysc_flags     = (SYSC_HAS_RESET_STATUS | SYSC_HAS_SIDLEMODE |
-                          SYSC_HAS_SOFTRESET),
-       .idlemodes      = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART),
-       .sysc_fields    = &omap_hwmod_sysc_type2,
-};
-
-static struct omap_hwmod_class dra7xx_mailbox_hwmod_class = {
-       .name   = "mailbox",
-       .sysc   = &dra7xx_mailbox_sysc,
-};
-
-/* mailbox1 */
-static struct omap_hwmod dra7xx_mailbox1_hwmod = {
-       .name           = "mailbox1",
-       .class          = &dra7xx_mailbox_hwmod_class,
-       .clkdm_name     = "l4cfg_clkdm",
-       .prcm = {
-               .omap4 = {
-                       .clkctrl_offs = DRA7XX_CM_L4CFG_MAILBOX1_CLKCTRL_OFFSET,
-                       .context_offs = DRA7XX_RM_L4CFG_MAILBOX1_CONTEXT_OFFSET,
-               },
-       },
-};
-
-/* mailbox2 */
-static struct omap_hwmod dra7xx_mailbox2_hwmod = {
-       .name           = "mailbox2",
-       .class          = &dra7xx_mailbox_hwmod_class,
-       .clkdm_name     = "l4cfg_clkdm",
-       .prcm = {
-               .omap4 = {
-                       .clkctrl_offs = DRA7XX_CM_L4CFG_MAILBOX2_CLKCTRL_OFFSET,
-                       .context_offs = DRA7XX_RM_L4CFG_MAILBOX2_CONTEXT_OFFSET,
-               },
-       },
-};
-
-/* mailbox3 */
-static struct omap_hwmod dra7xx_mailbox3_hwmod = {
-       .name           = "mailbox3",
-       .class          = &dra7xx_mailbox_hwmod_class,
-       .clkdm_name     = "l4cfg_clkdm",
-       .prcm = {
-               .omap4 = {
-                       .clkctrl_offs = DRA7XX_CM_L4CFG_MAILBOX3_CLKCTRL_OFFSET,
-                       .context_offs = DRA7XX_RM_L4CFG_MAILBOX3_CONTEXT_OFFSET,
-               },
-       },
-};
-
-/* mailbox4 */
-static struct omap_hwmod dra7xx_mailbox4_hwmod = {
-       .name           = "mailbox4",
-       .class          = &dra7xx_mailbox_hwmod_class,
-       .clkdm_name     = "l4cfg_clkdm",
-       .prcm = {
-               .omap4 = {
-                       .clkctrl_offs = DRA7XX_CM_L4CFG_MAILBOX4_CLKCTRL_OFFSET,
-                       .context_offs = DRA7XX_RM_L4CFG_MAILBOX4_CONTEXT_OFFSET,
-               },
-       },
-};
-
-/* mailbox5 */
-static struct omap_hwmod dra7xx_mailbox5_hwmod = {
-       .name           = "mailbox5",
-       .class          = &dra7xx_mailbox_hwmod_class,
-       .clkdm_name     = "l4cfg_clkdm",
-       .prcm = {
-               .omap4 = {
-                       .clkctrl_offs = DRA7XX_CM_L4CFG_MAILBOX5_CLKCTRL_OFFSET,
-                       .context_offs = DRA7XX_RM_L4CFG_MAILBOX5_CONTEXT_OFFSET,
-               },
-       },
-};
-
-/* mailbox6 */
-static struct omap_hwmod dra7xx_mailbox6_hwmod = {
-       .name           = "mailbox6",
-       .class          = &dra7xx_mailbox_hwmod_class,
-       .clkdm_name     = "l4cfg_clkdm",
-       .prcm = {
-               .omap4 = {
-                       .clkctrl_offs = DRA7XX_CM_L4CFG_MAILBOX6_CLKCTRL_OFFSET,
-                       .context_offs = DRA7XX_RM_L4CFG_MAILBOX6_CONTEXT_OFFSET,
-               },
-       },
-};
-
-/* mailbox7 */
-static struct omap_hwmod dra7xx_mailbox7_hwmod = {
-       .name           = "mailbox7",
-       .class          = &dra7xx_mailbox_hwmod_class,
-       .clkdm_name     = "l4cfg_clkdm",
-       .prcm = {
-               .omap4 = {
-                       .clkctrl_offs = DRA7XX_CM_L4CFG_MAILBOX7_CLKCTRL_OFFSET,
-                       .context_offs = DRA7XX_RM_L4CFG_MAILBOX7_CONTEXT_OFFSET,
-               },
-       },
-};
-
-/* mailbox8 */
-static struct omap_hwmod dra7xx_mailbox8_hwmod = {
-       .name           = "mailbox8",
-       .class          = &dra7xx_mailbox_hwmod_class,
-       .clkdm_name     = "l4cfg_clkdm",
-       .prcm = {
-               .omap4 = {
-                       .clkctrl_offs = DRA7XX_CM_L4CFG_MAILBOX8_CLKCTRL_OFFSET,
-                       .context_offs = DRA7XX_RM_L4CFG_MAILBOX8_CONTEXT_OFFSET,
-               },
-       },
-};
-
-/* mailbox9 */
-static struct omap_hwmod dra7xx_mailbox9_hwmod = {
-       .name           = "mailbox9",
-       .class          = &dra7xx_mailbox_hwmod_class,
-       .clkdm_name     = "l4cfg_clkdm",
-       .prcm = {
-               .omap4 = {
-                       .clkctrl_offs = DRA7XX_CM_L4CFG_MAILBOX9_CLKCTRL_OFFSET,
-                       .context_offs = DRA7XX_RM_L4CFG_MAILBOX9_CONTEXT_OFFSET,
-               },
-       },
-};
-
-/* mailbox10 */
-static struct omap_hwmod dra7xx_mailbox10_hwmod = {
-       .name           = "mailbox10",
-       .class          = &dra7xx_mailbox_hwmod_class,
-       .clkdm_name     = "l4cfg_clkdm",
-       .prcm = {
-               .omap4 = {
-                       .clkctrl_offs = DRA7XX_CM_L4CFG_MAILBOX10_CLKCTRL_OFFSET,
-                       .context_offs = DRA7XX_RM_L4CFG_MAILBOX10_CONTEXT_OFFSET,
-               },
-       },
-};
-
-/* mailbox11 */
-static struct omap_hwmod dra7xx_mailbox11_hwmod = {
-       .name           = "mailbox11",
-       .class          = &dra7xx_mailbox_hwmod_class,
-       .clkdm_name     = "l4cfg_clkdm",
-       .prcm = {
-               .omap4 = {
-                       .clkctrl_offs = DRA7XX_CM_L4CFG_MAILBOX11_CLKCTRL_OFFSET,
-                       .context_offs = DRA7XX_RM_L4CFG_MAILBOX11_CONTEXT_OFFSET,
-               },
-       },
-};
-
-/* mailbox12 */
-static struct omap_hwmod dra7xx_mailbox12_hwmod = {
-       .name           = "mailbox12",
-       .class          = &dra7xx_mailbox_hwmod_class,
-       .clkdm_name     = "l4cfg_clkdm",
-       .prcm = {
-               .omap4 = {
-                       .clkctrl_offs = DRA7XX_CM_L4CFG_MAILBOX12_CLKCTRL_OFFSET,
-                       .context_offs = DRA7XX_RM_L4CFG_MAILBOX12_CONTEXT_OFFSET,
-               },
-       },
-};
-
-/* mailbox13 */
-static struct omap_hwmod dra7xx_mailbox13_hwmod = {
-       .name           = "mailbox13",
-       .class          = &dra7xx_mailbox_hwmod_class,
-       .clkdm_name     = "l4cfg_clkdm",
-       .prcm = {
-               .omap4 = {
-                       .clkctrl_offs = DRA7XX_CM_L4CFG_MAILBOX13_CLKCTRL_OFFSET,
-                       .context_offs = DRA7XX_RM_L4CFG_MAILBOX13_CONTEXT_OFFSET,
-               },
-       },
-};
 
 /*
  * 'mpu' class
@@ -1655,34 +1432,6 @@ static struct omap_hwmod dra7xx_des_hwmod = {
        },
 };
 
-/* rng */
-static struct omap_hwmod_class_sysconfig dra7xx_rng_sysc = {
-       .rev_offs       = 0x1fe0,
-       .sysc_offs      = 0x1fe4,
-       .sysc_flags     = SYSC_HAS_AUTOIDLE | SYSC_HAS_SIDLEMODE,
-       .idlemodes      = SIDLE_FORCE | SIDLE_NO,
-       .sysc_fields    = &omap_hwmod_sysc_type1,
-};
-
-static struct omap_hwmod_class dra7xx_rng_hwmod_class = {
-       .name           = "rng",
-       .sysc           = &dra7xx_rng_sysc,
-};
-
-static struct omap_hwmod dra7xx_rng_hwmod = {
-       .name           = "rng",
-       .class          = &dra7xx_rng_hwmod_class,
-       .flags          = HWMOD_SWSUP_SIDLE,
-       .clkdm_name     = "l4sec_clkdm",
-       .prcm = {
-               .omap4 = {
-                       .clkctrl_offs = DRA7XX_CM_L4SEC_RNG_CLKCTRL_OFFSET,
-                       .context_offs = DRA7XX_RM_L4SEC_RNG_CONTEXT_OFFSET,
-                       .modulemode   = MODULEMODE_HWCTRL,
-               },
-       },
-};
-
 /*
  * 'usb_otg_ss' class
  *
@@ -1815,43 +1564,6 @@ static struct omap_hwmod dra7xx_vcp2_hwmod = {
        },
 };
 
-/*
- * 'wd_timer' class
- *
- */
-
-static struct omap_hwmod_class_sysconfig dra7xx_wd_timer_sysc = {
-       .rev_offs       = 0x0000,
-       .sysc_offs      = 0x0010,
-       .syss_offs      = 0x0014,
-       .sysc_flags     = (SYSC_HAS_EMUFREE | SYSC_HAS_SIDLEMODE |
-                          SYSC_HAS_SOFTRESET | SYSS_HAS_RESET_STATUS),
-       .idlemodes      = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART |
-                          SIDLE_SMART_WKUP),
-       .sysc_fields    = &omap_hwmod_sysc_type1,
-};
-
-static struct omap_hwmod_class dra7xx_wd_timer_hwmod_class = {
-       .name           = "wd_timer",
-       .sysc           = &dra7xx_wd_timer_sysc,
-       .pre_shutdown   = &omap2_wd_timer_disable,
-       .reset          = &omap2_wd_timer_reset,
-};
-
-/* wd_timer2 */
-static struct omap_hwmod dra7xx_wd_timer2_hwmod = {
-       .name           = "wd_timer2",
-       .class          = &dra7xx_wd_timer_hwmod_class,
-       .clkdm_name     = "wkupaon_clkdm",
-       .main_clk       = "sys_32k_ck",
-       .prcm = {
-               .omap4 = {
-                       .clkctrl_offs = DRA7XX_CM_WKUPAON_WD_TIMER2_CLKCTRL_OFFSET,
-                       .context_offs = DRA7XX_RM_WKUPAON_WD_TIMER2_CONTEXT_OFFSET,
-                       .modulemode   = MODULEMODE_SWCTRL,
-               },
-       },
-};
 
 
 /*
@@ -2090,118 +1802,6 @@ static struct omap_hwmod_ocp_if dra7xx_l3_main_1__gpmc = {
        .user           = OCP_USER_MPU | OCP_USER_SDMA,
 };
 
-/* l4_per1 -> hdq1w */
-static struct omap_hwmod_ocp_if dra7xx_l4_per1__hdq1w = {
-       .master         = &dra7xx_l4_per1_hwmod,
-       .slave          = &dra7xx_hdq1w_hwmod,
-       .clk            = "l3_iclk_div",
-       .user           = OCP_USER_MPU | OCP_USER_SDMA,
-};
-
-/* l4_cfg -> mailbox1 */
-static struct omap_hwmod_ocp_if dra7xx_l4_cfg__mailbox1 = {
-       .master         = &dra7xx_l4_cfg_hwmod,
-       .slave          = &dra7xx_mailbox1_hwmod,
-       .clk            = "l3_iclk_div",
-       .user           = OCP_USER_MPU | OCP_USER_SDMA,
-};
-
-/* l4_per3 -> mailbox2 */
-static struct omap_hwmod_ocp_if dra7xx_l4_per3__mailbox2 = {
-       .master         = &dra7xx_l4_per3_hwmod,
-       .slave          = &dra7xx_mailbox2_hwmod,
-       .clk            = "l3_iclk_div",
-       .user           = OCP_USER_MPU | OCP_USER_SDMA,
-};
-
-/* l4_per3 -> mailbox3 */
-static struct omap_hwmod_ocp_if dra7xx_l4_per3__mailbox3 = {
-       .master         = &dra7xx_l4_per3_hwmod,
-       .slave          = &dra7xx_mailbox3_hwmod,
-       .clk            = "l3_iclk_div",
-       .user           = OCP_USER_MPU | OCP_USER_SDMA,
-};
-
-/* l4_per3 -> mailbox4 */
-static struct omap_hwmod_ocp_if dra7xx_l4_per3__mailbox4 = {
-       .master         = &dra7xx_l4_per3_hwmod,
-       .slave          = &dra7xx_mailbox4_hwmod,
-       .clk            = "l3_iclk_div",
-       .user           = OCP_USER_MPU | OCP_USER_SDMA,
-};
-
-/* l4_per3 -> mailbox5 */
-static struct omap_hwmod_ocp_if dra7xx_l4_per3__mailbox5 = {
-       .master         = &dra7xx_l4_per3_hwmod,
-       .slave          = &dra7xx_mailbox5_hwmod,
-       .clk            = "l3_iclk_div",
-       .user           = OCP_USER_MPU | OCP_USER_SDMA,
-};
-
-/* l4_per3 -> mailbox6 */
-static struct omap_hwmod_ocp_if dra7xx_l4_per3__mailbox6 = {
-       .master         = &dra7xx_l4_per3_hwmod,
-       .slave          = &dra7xx_mailbox6_hwmod,
-       .clk            = "l3_iclk_div",
-       .user           = OCP_USER_MPU | OCP_USER_SDMA,
-};
-
-/* l4_per3 -> mailbox7 */
-static struct omap_hwmod_ocp_if dra7xx_l4_per3__mailbox7 = {
-       .master         = &dra7xx_l4_per3_hwmod,
-       .slave          = &dra7xx_mailbox7_hwmod,
-       .clk            = "l3_iclk_div",
-       .user           = OCP_USER_MPU | OCP_USER_SDMA,
-};
-
-/* l4_per3 -> mailbox8 */
-static struct omap_hwmod_ocp_if dra7xx_l4_per3__mailbox8 = {
-       .master         = &dra7xx_l4_per3_hwmod,
-       .slave          = &dra7xx_mailbox8_hwmod,
-       .clk            = "l3_iclk_div",
-       .user           = OCP_USER_MPU | OCP_USER_SDMA,
-};
-
-/* l4_per3 -> mailbox9 */
-static struct omap_hwmod_ocp_if dra7xx_l4_per3__mailbox9 = {
-       .master         = &dra7xx_l4_per3_hwmod,
-       .slave          = &dra7xx_mailbox9_hwmod,
-       .clk            = "l3_iclk_div",
-       .user           = OCP_USER_MPU | OCP_USER_SDMA,
-};
-
-/* l4_per3 -> mailbox10 */
-static struct omap_hwmod_ocp_if dra7xx_l4_per3__mailbox10 = {
-       .master         = &dra7xx_l4_per3_hwmod,
-       .slave          = &dra7xx_mailbox10_hwmod,
-       .clk            = "l3_iclk_div",
-       .user           = OCP_USER_MPU | OCP_USER_SDMA,
-};
-
-/* l4_per3 -> mailbox11 */
-static struct omap_hwmod_ocp_if dra7xx_l4_per3__mailbox11 = {
-       .master         = &dra7xx_l4_per3_hwmod,
-       .slave          = &dra7xx_mailbox11_hwmod,
-       .clk            = "l3_iclk_div",
-       .user           = OCP_USER_MPU | OCP_USER_SDMA,
-};
-
-/* l4_per3 -> mailbox12 */
-static struct omap_hwmod_ocp_if dra7xx_l4_per3__mailbox12 = {
-       .master         = &dra7xx_l4_per3_hwmod,
-       .slave          = &dra7xx_mailbox12_hwmod,
-       .clk            = "l3_iclk_div",
-       .user           = OCP_USER_MPU | OCP_USER_SDMA,
-};
-
-/* l4_per3 -> mailbox13 */
-static struct omap_hwmod_ocp_if dra7xx_l4_per3__mailbox13 = {
-       .master         = &dra7xx_l4_per3_hwmod,
-       .slave          = &dra7xx_mailbox13_hwmod,
-       .clk            = "l3_iclk_div",
-       .user           = OCP_USER_MPU | OCP_USER_SDMA,
-};
-
 /* l4_cfg -> mpu */
 static struct omap_hwmod_ocp_if dra7xx_l4_cfg__mpu = {
        .master         = &dra7xx_l4_cfg_hwmod,
@@ -2442,13 +2042,6 @@ static struct omap_hwmod_ocp_if dra7xx_l4_per1__des = {
        .user           = OCP_USER_MPU | OCP_USER_SDMA,
 };
 
-/* l4_per1 -> rng */
-static struct omap_hwmod_ocp_if dra7xx_l4_per1__rng = {
-       .master         = &dra7xx_l4_per1_hwmod,
-       .slave          = &dra7xx_rng_hwmod,
-       .user           = OCP_USER_MPU,
-};
-
 /* l4_per3 -> usb_otg_ss1 */
 static struct omap_hwmod_ocp_if dra7xx_l4_per3__usb_otg_ss1 = {
        .master         = &dra7xx_l4_per3_hwmod,
@@ -2513,14 +2106,6 @@ static struct omap_hwmod_ocp_if dra7xx_l4_per2__vcp2 = {
        .user           = OCP_USER_MPU | OCP_USER_SDMA,
 };
 
-/* l4_wkup -> wd_timer2 */
-static struct omap_hwmod_ocp_if dra7xx_l4_wkup__wd_timer2 = {
-       .master         = &dra7xx_l4_wkup_hwmod,
-       .slave          = &dra7xx_wd_timer2_hwmod,
-       .clk            = "wkupaon_iclk_mux",
-       .user           = OCP_USER_MPU | OCP_USER_SDMA,
-};
-
 /* l4_per2 -> epwmss0 */
 static struct omap_hwmod_ocp_if dra7xx_l4_per2__epwmss0 = {
        .master         = &dra7xx_l4_per2_hwmod,
@@ -2575,20 +2160,6 @@ static struct omap_hwmod_ocp_if *dra7xx_hwmod_ocp_ifs[] __initdata = {
        &dra7xx_l3_main_1__sha0,
        &dra7xx_l4_per1__elm,
        &dra7xx_l3_main_1__gpmc,
-       &dra7xx_l4_per1__hdq1w,
-       &dra7xx_l4_cfg__mailbox1,
-       &dra7xx_l4_per3__mailbox2,
-       &dra7xx_l4_per3__mailbox3,
-       &dra7xx_l4_per3__mailbox4,
-       &dra7xx_l4_per3__mailbox5,
-       &dra7xx_l4_per3__mailbox6,
-       &dra7xx_l4_per3__mailbox7,
-       &dra7xx_l4_per3__mailbox8,
-       &dra7xx_l4_per3__mailbox9,
-       &dra7xx_l4_per3__mailbox10,
-       &dra7xx_l4_per3__mailbox11,
-       &dra7xx_l4_per3__mailbox12,
-       &dra7xx_l4_per3__mailbox13,
        &dra7xx_l4_cfg__mpu,
        &dra7xx_l4_cfg__ocp2scp1,
        &dra7xx_l4_cfg__ocp2scp3,
@@ -2624,7 +2195,6 @@ static struct omap_hwmod_ocp_if *dra7xx_hwmod_ocp_ifs[] __initdata = {
        &dra7xx_l4_per2__vcp1,
        &dra7xx_l3_main_1__vcp2,
        &dra7xx_l4_per2__vcp2,
-       &dra7xx_l4_wkup__wd_timer2,
        &dra7xx_l4_per2__epwmss0,
        &dra7xx_l4_per2__epwmss1,
        &dra7xx_l4_per2__epwmss2,
@@ -2634,7 +2204,6 @@ static struct omap_hwmod_ocp_if *dra7xx_hwmod_ocp_ifs[] __initdata = {
 /* GP-only hwmod links */
 static struct omap_hwmod_ocp_if *dra7xx_gp_hwmod_ocp_ifs[] __initdata = {
        &dra7xx_l4_wkup__timer12,
-       &dra7xx_l4_per1__rng,
        NULL,
 };
 
index 732daaa..59291e0 100644 (file)
@@ -12,6 +12,9 @@
        model = "Bubblegum-96";
 
        aliases {
+               mmc0 = &mmc0;
+               mmc1 = &mmc1;
+               mmc2 = &mmc2;
                serial5 = &uart5;
        };
 
                device_type = "memory";
                reg = <0x0 0x0 0x0 0x80000000>;
        };
+
+       /* Fixed regulator used in the absence of PMIC */
+       vcc_3v1: vcc-3v1 {
+               compatible = "regulator-fixed";
+               regulator-name = "fixed-3.1V";
+               regulator-min-microvolt = <3100000>;
+               regulator-max-microvolt = <3100000>;
+               regulator-always-on;
+       };
+
+       /* Fixed regulator used in the absence of PMIC */
+       sd_vcc: sd-vcc {
+               compatible = "regulator-fixed";
+               regulator-name = "fixed-3.1V";
+               regulator-min-microvolt = <3100000>;
+               regulator-max-microvolt = <3100000>;
+               regulator-always-on;
+       };
 };
 
 &i2c0 {
                        bias-pull-up;
                };
        };
+
+       mmc0_default: mmc0_default {
+               pinmux {
+                       groups = "sd0_d0_mfp", "sd0_d1_mfp", "sd0_d2_d3_mfp",
+                                "sd0_cmd_mfp", "sd0_clk_mfp";
+                       function = "sd0";
+               };
+       };
+
+       mmc2_default: mmc2_default {
+               pinmux {
+                       groups = "nand0_d0_ceb3_mfp";
+                       function = "sd2";
+               };
+       };
+};
+
+/* uSD */
+&mmc0 {
+       status = "okay";
+       pinctrl-names = "default";
+       pinctrl-0 = <&mmc0_default>;
+       no-sdio;
+       no-mmc;
+       no-1-8-v;
+       cd-gpios = <&pinctrl 120 GPIO_ACTIVE_LOW>;
+       bus-width = <4>;
+       vmmc-supply = <&sd_vcc>;
+       vqmmc-supply = <&sd_vcc>;
+};
+
+/* eMMC */
+&mmc2 {
+       status = "okay";
+       pinctrl-names = "default";
+       pinctrl-0 = <&mmc2_default>;
+       no-sdio;
+       no-sd;
+       non-removable;
+       bus-width = <8>;
+       vmmc-supply = <&vcc_3v1>;
 };
 
 &timer {
index df3a68a..eb35cf7 100644 (file)
@@ -4,6 +4,7 @@
  */
 
 #include <dt-bindings/clock/actions,s900-cmu.h>
+#include <dt-bindings/gpio/gpio.h>
 #include <dt-bindings/interrupt-controller/arm-gic.h>
 #include <dt-bindings/reset/actions,s900-reset.h>
 
                        dma-requests = <46>;
                        clocks = <&cmu CLK_DMAC>;
                };
+
+               mmc0: mmc@e0330000 {
+                       compatible = "actions,owl-mmc";
+                       reg = <0x0 0xe0330000 0x0 0x4000>;
+                       interrupts = <GIC_SPI 42 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&cmu CLK_SD0>;
+                       resets = <&cmu RESET_SD0>;
+                       dmas = <&dma 2>;
+                       dma-names = "mmc";
+                       status = "disabled";
+               };
+
+               mmc1: mmc@e0334000 {
+                       compatible = "actions,owl-mmc";
+                       reg = <0x0 0xe0334000 0x0 0x4000>;
+                       interrupts = <GIC_SPI 43 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&cmu CLK_SD1>;
+                       resets = <&cmu RESET_SD1>;
+                       dmas = <&dma 3>;
+                       dma-names = "mmc";
+                       status = "disabled";
+               };
+
+               mmc2: mmc@e0338000 {
+                       compatible = "actions,owl-mmc";
+                       reg = <0x0 0xe0338000 0x0 0x4000>;
+                       interrupts = <GIC_SPI 44 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&cmu CLK_SD2>;
+                       resets = <&cmu RESET_SD2>;
+                       dmas = <&dma 4>;
+                       dma-names = "mmc";
+                       status = "disabled";
+               };
+
+               mmc3: mmc@e033c000 {
+                       compatible = "actions,owl-mmc";
+                       reg = <0x0 0xe033c000 0x0 0x4000>;
+                       interrupts = <GIC_SPI 62 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&cmu CLK_SD3>;
+                       resets = <&cmu RESET_SD3>;
+                       dmas = <&dma 46>;
+                       dma-names = "mmc";
+                       status = "disabled";
+               };
        };
 };
index 04446e4..f54a415 100644 (file)
        };
 };
 
+&codec {
+       status = "okay";
+};
+
+&codec_analog {
+       cpvdd-supply = <&reg_eldo1>;
+       status = "okay";
+};
+
+&dai {
+       status = "okay";
+};
+
 &de {
        status = "okay";
 };
        vcc-hdmi-supply = <&reg_dldo1>;
 };
 
+&sound {
+       status = "okay";
+       simple-audio-card,widgets = "Headphone", "Headphone Jack",
+                                   "Microphone", "Microphone Jack",
+                                   "Microphone", "Onboard Microphone";
+       simple-audio-card,routing =
+                       "Left DAC", "AIF1 Slot 0 Left",
+                       "Right DAC", "AIF1 Slot 0 Right",
+                       "AIF1 Slot 0 Left ADC", "Left ADC",
+                       "AIF1 Slot 0 Right ADC", "Right ADC",
+                       "Headphone Jack", "HP",
+                       "MIC2", "Microphone Jack",
+                       "Onboard Microphone", "MBIAS",
+                       "MIC1", "Onboard Microphone";
+};
+
 &spi0 {
        status = "okay";
 
index 2509920..920103e 100644 (file)
        aliases {
                ethernet0 = &emac;
                serial0 = &uart0;
+               serial1 = &uart1;
+               serial2 = &uart2;
+               serial3 = &uart3;
+               serial4 = &uart4;
        };
 
        chosen {
        status = "okay";
 };
 
+/* On Pi-2 connector */
+&uart2 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&uart2_pins>;
+       status = "disabled";
+};
+
+/* On Euler connector */
+&uart3 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&uart3_pins>;
+       status = "disabled";
+};
+
+/* On Euler connector, RTS/CTS optional */
+&uart4 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&uart4_pins>;
+       status = "disabled";
+};
+
 &usb_otg {
        dr_mode = "host";
        status = "okay";
index 1069e70..9704151 100644 (file)
        status = "okay";
 };
 
+&de {
+       status = "okay";
+};
+
 &ehci1 {
        status = "okay";
 };
 
 
-/* The ANX6345 eDP-bridge is on i2c0. There is no linux (mainline)
- * driver for this chip at the moment, the bootloader initializes it.
- * However it can be accessed with the i2c-dev driver from user space.
- */
 &i2c0 {
        clock-frequency = <100000>;
        status = "okay";
+
+       anx6345: anx6345@38 {
+               compatible = "analogix,anx6345";
+               reg = <0x38>;
+               reset-gpios = <&pio 3 24 GPIO_ACTIVE_LOW>; /* PD24 */
+               dvdd25-supply = <&reg_dldo2>;
+               dvdd12-supply = <&reg_dldo3>;
+
+               ports {
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+
+                       port@0 {
+                               anx6345_in: endpoint {
+                                       remote-endpoint = <&tcon0_out_anx6345>;
+                               };
+                       };
+               };
+       };
+};
+
+&mixer0 {
+       status = "okay";
 };
 
 &mmc0 {
        status = "okay";
 };
 
+&tcon0 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&lcd_rgb666_pins>;
+
+       status = "okay";
+};
+
+&tcon0_out {
+       tcon0_out_anx6345: endpoint@0 {
+               reg = <0>;
+               remote-endpoint = <&anx6345_in>;
+       };
+};
+
 &uart0 {
        pinctrl-names = "default";
        pinctrl-0 = <&uart0_pb_pins>;
index 70f4cce..27e4823 100644 (file)
                clock-output-names = "ext-osc32k";
        };
 
+       pmu {
+               compatible = "arm,cortex-a53-pmu";
+               interrupts = <GIC_SPI 116 IRQ_TYPE_LEVEL_HIGH>,
+                            <GIC_SPI 117 IRQ_TYPE_LEVEL_HIGH>,
+                            <GIC_SPI 118 IRQ_TYPE_LEVEL_HIGH>,
+                            <GIC_SPI 119 IRQ_TYPE_LEVEL_HIGH>;
+               interrupt-affinity = <&cpu0>, <&cpu1>, <&cpu2>, <&cpu3>;
+       };
+
        psci {
                compatible = "arm,psci-0.2";
                method = "smc";
                        reg = <0x1c14000 0x400>;
                };
 
+               crypto: crypto@1c15000 {
+                       compatible = "allwinner,sun50i-a64-crypto";
+                       reg = <0x01c15000 0x1000>;
+                       interrupts = <GIC_SPI 94 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&ccu CLK_BUS_CE>, <&ccu CLK_CE>;
+                       clock-names = "bus", "mod";
+                       resets = <&ccu RST_BUS_CE>;
+               };
+
                usb_otg: usb@1c19000 {
                        compatible = "allwinner,sun8i-a33-musb";
                        reg = <0x01c19000 0x0400>;
index 82f4b44..5bec574 100644 (file)
@@ -23,6 +23,8 @@
                compatible = "mmc-pwrseq-simple";
                reset-gpios = <&pio 2 7 GPIO_ACTIVE_LOW>; /* PC7 */
                post-power-on-delay-ms = <200>;
+               clocks = <&rtc 1>;
+               clock-names = "ext_clock";
        };
 };
 
 &uart1 {
        pinctrl-names = "default";
        pinctrl-0 = <&uart1_pins>, <&uart1_rts_cts_pins>;
+       uart-has-rtscts;
        status = "okay";
+
+       bluetooth {
+               compatible = "brcm,bcm43438-bt";
+               clocks = <&rtc 1>;
+               clock-names = "lpo";
+               vbat-supply = <&reg_vcc3v3>;
+               vddio-supply = <&reg_vcc3v3>;
+               shutdown-gpios = <&pio 2 4 GPIO_ACTIVE_HIGH>; /* PC4 */
+               device-wakeup-gpios = <&r_pio 0 7 GPIO_ACTIVE_HIGH>; /* PL7 */
+       };
 };
index f002a49..e92c4de 100644 (file)
                        allwinner,sram = <&ve_sram 1>;
                };
 
+               crypto: crypto@1c15000 {
+                       compatible = "allwinner,sun50i-h5-crypto";
+                       reg = <0x01c15000 0x1000>;
+                       interrupts = <GIC_SPI 94 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&ccu CLK_BUS_CE>, <&ccu CLK_CE>;
+                       clock-names = "bus", "mod";
+                       resets = <&ccu RST_BUS_CE>;
+               };
+
                mali: gpu@1e80000 {
                        compatible = "allwinner,sun50i-h5-mali", "arm,mali-450";
                        reg = <0x01e80000 0x30000>;
index ce4b067..f335f74 100644 (file)
        status = "okay";
 };
 
+&gpu {
+       mali-supply = <&reg_dcdcc>;
+       status = "okay";
+};
+
 &hdmi {
        status = "okay";
 };
                        };
 
                        reg_dcdcc: dcdcc {
+                               regulator-enable-ramp-delay = <32000>;
                                regulator-min-microvolt = <810000>;
                                regulator-max-microvolt = <1080000>;
                                regulator-name = "vdd-gpu";
index eb379cd..4ed3fc2 100644 (file)
@@ -15,6 +15,7 @@
 
        aliases {
                serial0 = &uart0;
+               serial1 = &uart1;
        };
 
        chosen {
        status = "okay";
 };
 
+&dwc3 {
+       status = "okay";
+};
+
 &ehci0 {
        status = "okay";
 };
        status = "okay";
 };
 
+&gpu {
+       mali-supply = <&reg_dcdcc>;
+       status = "okay";
+};
+
 &hdmi {
        status = "okay";
 };
                        };
 
                        reg_dcdcc: dcdcc {
+                               regulator-enable-ramp-delay = <32000>;
                                regulator-min-microvolt = <810000>;
                                regulator-max-microvolt = <1080000>;
                                regulator-name = "vdd-gpu";
        status = "okay";
 };
 
+/* There's the BT part of the AP6256 connected to that UART */
+&uart1 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&uart1_pins>, <&uart1_rts_cts_pins>;
+       uart-has-rtscts;
+       status = "okay";
+
+       bluetooth {
+               compatible = "brcm,bcm4345c5";
+               clocks = <&rtc 1>;
+               clock-names = "lpo";
+               device-wakeup-gpios = <&r_pio 1 2 GPIO_ACTIVE_HIGH>; /* PM2 */
+               host-wakeup-gpios = <&r_pio 1 1 GPIO_ACTIVE_HIGH>; /* PM1 */
+               shutdown-gpios = <&r_pio 1 4 GPIO_ACTIVE_HIGH>; /* PM4 */
+               max-speed = <1500000>;
+       };
+};
+
 &usb2otg {
        /*
         * This board doesn't have a controllable VBUS even though it
        usb3_vbus-supply = <&reg_vcc5v>;
        status = "okay";
 };
+
+&usb3phy {
+       status = "okay";
+};
index ec9b6a5..df4cbd7 100644 (file)
        status = "okay";
 };
 
+&gpu {
+       mali-supply = <&reg_dcdcc>;
+       status = "okay";
+};
+
 &mmc0 {
        vmmc-supply = <&reg_cldo1>;
        cd-gpios = <&pio 5 6 GPIO_ACTIVE_LOW>;
                        };
 
                        reg_dcdcc: dcdcc {
+                               regulator-enable-ramp-delay = <32000>;
                                regulator-min-microvolt = <810000>;
                                regulator-max-microvolt = <1080000>;
                                regulator-name = "vdd-gpu";
index 30102da..74899ed 100644 (file)
        status = "okay";
 };
 
+&gpu {
+       mali-supply = <&reg_dcdcc>;
+       status = "okay";
+};
+
 &hdmi {
        status = "okay";
 };
                        };
 
                        reg_dcdcc: dcdcc {
+                               regulator-enable-ramp-delay = <32000>;
                                regulator-min-microvolt = <810000>;
                                regulator-max-microvolt = <1080000>;
                                regulator-name = "vdd-gpu";
index 7e7cb10..bccfe1e 100644 (file)
        status = "okay";
 };
 
+&gpu {
+       status = "okay";
+};
+
 &hdmi {
        status = "okay";
 };
index 0d5ea19..2982408 100644 (file)
                        allwinner,sram = <&ve_sram 1>;
                };
 
+               gpu: gpu@1800000 {
+                       compatible = "allwinner,sun50i-h6-mali",
+                                    "arm,mali-t720";
+                       reg = <0x01800000 0x4000>;
+                       interrupts = <GIC_SPI 84 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 85 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 83 IRQ_TYPE_LEVEL_HIGH>;
+                       interrupt-names = "job", "mmu", "gpu";
+                       clocks = <&ccu CLK_GPU>, <&ccu CLK_BUS_GPU>;
+                       clock-names = "core", "bus";
+                       resets = <&ccu RST_BUS_GPU>;
+                       status = "disabled";
+               };
+
+               crypto: crypto@1904000 {
+                       compatible = "allwinner,sun50i-h6-crypto";
+                       reg = <0x01904000 0x1000>;
+                       interrupts = <GIC_SPI 87 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&ccu CLK_BUS_CE>, <&ccu CLK_CE>, <&ccu CLK_MBUS_CE>;
+                       clock-names = "bus", "mod", "ram";
+                       resets = <&ccu RST_BUS_CE>;
+               };
+
                syscon: syscon@3000000 {
                        compatible = "allwinner,sun50i-h6-system-control",
                                     "allwinner,sun50i-a64-system-control";
                                pins = "PH0", "PH1";
                                function = "uart0";
                        };
+
+                       uart1_pins: uart1-pins {
+                               pins = "PG6", "PG7";
+                               function = "uart1";
+                       };
+
+                       uart1_rts_cts_pins: uart1-rts-cts-pins {
+                               pins = "PG8", "PG9";
+                               function = "uart1";
+                       };
                };
 
                gic: interrupt-controller@3021000 {
                        status = "disabled";
                };
 
+               dwc3: dwc3@5200000 {
+                       compatible = "snps,dwc3";
+                       reg = <0x05200000 0x10000>;
+                       interrupts = <GIC_SPI 26 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&ccu CLK_BUS_XHCI>,
+                                <&ccu CLK_BUS_XHCI>,
+                                <&rtc 0>;
+                       clock-names = "ref", "bus_early", "suspend";
+                       resets = <&ccu RST_BUS_XHCI>;
+                       /*
+                        * The datasheet of the chip doesn't declare the
+                        * peripheral function, and there's no boards known
+                        * to have a USB Type-B port routed to the port.
+                        * In addition, no one has tested the peripheral
+                        * function yet.
+                        * So set the dr_mode to "host" in the DTSI file.
+                        */
+                       dr_mode = "host";
+                       phys = <&usb3phy>;
+                       phy-names = "usb3-phy";
+                       status = "disabled";
+               };
+
+               usb3phy: phy@5210000 {
+                       compatible = "allwinner,sun50i-h6-usb3-phy";
+                       reg = <0x5210000 0x10000>;
+                       clocks = <&ccu CLK_USB_PHY1>;
+                       resets = <&ccu RST_USB_PHY1>;
+                       #phy-cells = <0>;
+                       status = "disabled";
+               };
+
                ehci3: usb@5311000 {
                        compatible = "allwinner,sun50i-h6-ehci", "generic-ehci";
                        reg = <0x05311000 0x100>;
                                      "tcon-tv0";
                        clock-output-names = "tcon-top-tv0";
                        resets = <&ccu RST_BUS_TCON_TOP>;
-                       reset-names = "rst";
                        #clock-cells = <1>;
 
                        ports {
index 66e4ffb..fb11ef0 100644 (file)
 
                        qspi_boot: partition@0 {
                                label = "Boot and fpga data";
-                               reg = <0x0 0x4000000>;
+                               reg = <0x0 0x034B0000>;
                        };
 
                        qspi_rootfs: partition@4000000 {
                                label = "Root Filesystem - JFFS2";
-                               reg = <0x4000000 0x4000000>;
+                               reg = <0x034B0000 0x0EB50000>;
                        };
                };
        };
index 84afecb..6340053 100644 (file)
@@ -6,6 +6,7 @@ dtb-$(CONFIG_ARCH_MESON) += meson-g12a-x96-max.dtb
 dtb-$(CONFIG_ARCH_MESON) += meson-g12b-a311d-khadas-vim3.dtb
 dtb-$(CONFIG_ARCH_MESON) += meson-g12b-s922x-khadas-vim3.dtb
 dtb-$(CONFIG_ARCH_MESON) += meson-g12b-odroid-n2.dtb
+dtb-$(CONFIG_ARCH_MESON) += meson-g12b-ugoos-am6.dtb
 dtb-$(CONFIG_ARCH_MESON) += meson-gxbb-nanopi-k2.dtb
 dtb-$(CONFIG_ARCH_MESON) += meson-gxbb-nexbox-a95x.dtb
 dtb-$(CONFIG_ARCH_MESON) += meson-gxbb-odroidc2.dtb
@@ -36,3 +37,4 @@ dtb-$(CONFIG_ARCH_MESON) += meson-gxm-rbox-pro.dtb
 dtb-$(CONFIG_ARCH_MESON) += meson-gxm-vega-s96.dtb
 dtb-$(CONFIG_ARCH_MESON) += meson-sm1-sei610.dtb
 dtb-$(CONFIG_ARCH_MESON) += meson-sm1-khadas-vim3l.dtb
+dtb-$(CONFIG_ARCH_MESON) += meson-a1-ad401.dtb
diff --git a/arch/arm64/boot/dts/amlogic/meson-a1-ad401.dts b/arch/arm64/boot/dts/amlogic/meson-a1-ad401.dts
new file mode 100644 (file)
index 0000000..69c25c6
--- /dev/null
@@ -0,0 +1,30 @@
+// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
+/*
+ * Copyright (c) 2019 Amlogic, Inc. All rights reserved.
+ */
+
+/dts-v1/;
+
+#include "meson-a1.dtsi"
+
+/ {
+       compatible = "amlogic,ad401", "amlogic,a1";
+       model = "Amlogic Meson A1 AD401 Development Board";
+
+       aliases {
+               serial0 = &uart_AO_B;
+       };
+
+       chosen {
+               stdout-path = "serial0:115200n8";
+       };
+
+       memory@0 {
+               device_type = "memory";
+               reg = <0x0 0x0 0x0 0x8000000>;
+       };
+};
+
+&uart_AO_B {
+       status = "okay";
+};
diff --git a/arch/arm64/boot/dts/amlogic/meson-a1.dtsi b/arch/arm64/boot/dts/amlogic/meson-a1.dtsi
new file mode 100644 (file)
index 0000000..7210ad0
--- /dev/null
@@ -0,0 +1,130 @@
+// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
+/*
+ * Copyright (c) 2019 Amlogic, Inc. All rights reserved.
+ */
+
+#include <dt-bindings/interrupt-controller/irq.h>
+#include <dt-bindings/interrupt-controller/arm-gic.h>
+
+/ {
+       compatible = "amlogic,a1";
+
+       interrupt-parent = <&gic>;
+       #address-cells = <2>;
+       #size-cells = <2>;
+
+       cpus {
+               #address-cells = <2>;
+               #size-cells = <0>;
+
+               cpu0: cpu@0 {
+                       device_type = "cpu";
+                       compatible = "arm,cortex-a35";
+                       reg = <0x0 0x0>;
+                       enable-method = "psci";
+                       next-level-cache = <&l2>;
+               };
+
+               cpu1: cpu@1 {
+                       device_type = "cpu";
+                       compatible = "arm,cortex-a35";
+                       reg = <0x0 0x1>;
+                       enable-method = "psci";
+                       next-level-cache = <&l2>;
+               };
+
+               l2: l2-cache0 {
+                       compatible = "cache";
+               };
+       };
+
+       psci {
+               compatible = "arm,psci-1.0";
+               method = "smc";
+       };
+
+       reserved-memory {
+               #address-cells = <2>;
+               #size-cells = <2>;
+               ranges;
+
+               linux,cma {
+                       compatible = "shared-dma-pool";
+                       reusable;
+                       size = <0x0 0x800000>;
+                       alignment = <0x0 0x400000>;
+                       linux,cma-default;
+               };
+       };
+
+       sm: secure-monitor {
+               compatible = "amlogic,meson-gxbb-sm";
+       };
+
+       soc {
+               compatible = "simple-bus";
+               #address-cells = <2>;
+               #size-cells = <2>;
+               ranges;
+
+               apb: bus@fe000000 {
+                       compatible = "simple-bus";
+                       reg = <0x0 0xfe000000 0x0 0x1000000>;
+                       #address-cells = <2>;
+                       #size-cells = <2>;
+                       ranges = <0x0 0x0 0x0 0xfe000000 0x0 0x1000000>;
+
+                       uart_AO: serial@1c00 {
+                               compatible = "amlogic,meson-gx-uart",
+                                            "amlogic,meson-ao-uart";
+                               reg = <0x0 0x1c00 0x0 0x18>;
+                               interrupts = <GIC_SPI 25 IRQ_TYPE_EDGE_RISING>;
+                               clocks = <&xtal>, <&xtal>, <&xtal>;
+                               clock-names = "xtal", "pclk", "baud";
+                               status = "disabled";
+                       };
+
+                       uart_AO_B: serial@2000 {
+                               compatible = "amlogic,meson-gx-uart",
+                                            "amlogic,meson-ao-uart";
+                               reg = <0x0 0x2000 0x0 0x18>;
+                               interrupts = <GIC_SPI 26 IRQ_TYPE_EDGE_RISING>;
+                               clocks = <&xtal>, <&xtal>, <&xtal>;
+                               clock-names = "xtal", "pclk", "baud";
+                               status = "disabled";
+                       };
+               };
+
+               gic: interrupt-controller@ff901000 {
+                       compatible = "arm,gic-400";
+                       reg = <0x0 0xff901000 0x0 0x1000>,
+                             <0x0 0xff902000 0x0 0x2000>,
+                             <0x0 0xff904000 0x0 0x2000>,
+                             <0x0 0xff906000 0x0 0x2000>;
+                       interrupt-controller;
+                       interrupts = <GIC_PPI 9
+                               (GIC_CPU_MASK_SIMPLE(8) | IRQ_TYPE_LEVEL_HIGH)>;
+                       #interrupt-cells = <3>;
+                       #address-cells = <0>;
+               };
+       };
+
+       timer {
+               compatible = "arm,armv8-timer";
+               interrupts = <GIC_PPI 13
+                       (GIC_CPU_MASK_RAW(0xff) | IRQ_TYPE_LEVEL_LOW)>,
+                            <GIC_PPI 14
+                       (GIC_CPU_MASK_RAW(0xff) | IRQ_TYPE_LEVEL_LOW)>,
+                            <GIC_PPI 11
+                       (GIC_CPU_MASK_RAW(0xff) | IRQ_TYPE_LEVEL_LOW)>,
+                            <GIC_PPI 10
+                       (GIC_CPU_MASK_RAW(0xff) | IRQ_TYPE_LEVEL_LOW)>;
+       };
+
+       xtal: xtal-clk {
+               compatible = "fixed-clock";
+               clock-frequency = <24000000>;
+               clock-output-names = "xtal";
+               #clock-cells = <0>;
+       };
+};
index 82919b1..04803c3 100644 (file)
                #address-cells = <1>;
                #size-cells = <1>;
                read-only;
+               secure-monitor = <&sm>;
        };
 
        psci {
 
                        toddr_a: audio-controller@100 {
                                compatible = "amlogic,axg-toddr";
-                               reg = <0x0 0x100 0x0 0x1c>;
+                               reg = <0x0 0x100 0x0 0x2c>;
                                #sound-dai-cells = <0>;
                                sound-name-prefix = "TODDR_A";
                                interrupts = <GIC_SPI 84 IRQ_TYPE_EDGE_RISING>;
 
                        toddr_b: audio-controller@140 {
                                compatible = "amlogic,axg-toddr";
-                               reg = <0x0 0x140 0x0 0x1c>;
+                               reg = <0x0 0x140 0x0 0x2c>;
                                #sound-dai-cells = <0>;
                                sound-name-prefix = "TODDR_B";
                                interrupts = <GIC_SPI 85 IRQ_TYPE_EDGE_RISING>;
 
                        toddr_c: audio-controller@180 {
                                compatible = "amlogic,axg-toddr";
-                               reg = <0x0 0x180 0x0 0x1c>;
+                               reg = <0x0 0x180 0x0 0x2c>;
                                #sound-dai-cells = <0>;
                                sound-name-prefix = "TODDR_C";
                                interrupts = <GIC_SPI 86 IRQ_TYPE_EDGE_RISING>;
 
                        frddr_a: audio-controller@1c0 {
                                compatible = "amlogic,axg-frddr";
-                               reg = <0x0 0x1c0 0x0 0x1c>;
+                               reg = <0x0 0x1c0 0x0 0x2c>;
                                #sound-dai-cells = <0>;
                                sound-name-prefix = "FRDDR_A";
                                interrupts = <GIC_SPI 88 IRQ_TYPE_EDGE_RISING>;
 
                        frddr_b: audio-controller@200 {
                                compatible = "amlogic,axg-frddr";
-                               reg = <0x0 0x200 0x0 0x1c>;
+                               reg = <0x0 0x200 0x0 0x2c>;
                                #sound-dai-cells = <0>;
                                sound-name-prefix = "FRDDR_B";
                                interrupts = <GIC_SPI 89 IRQ_TYPE_EDGE_RISING>;
 
                        frddr_c: audio-controller@240 {
                                compatible = "amlogic,axg-frddr";
-                               reg = <0x0 0x240 0x0 0x1c>;
+                               reg = <0x0 0x240 0x0 0x2c>;
                                #sound-dai-cells = <0>;
                                sound-name-prefix = "FRDDR_C";
                                interrupts = <GIC_SPI 90 IRQ_TYPE_EDGE_RISING>;
index 7ab7117..7fabc8d 100644 (file)
@@ -5,51 +5,42 @@
 
 #include <dt-bindings/phy/phy.h>
 #include <dt-bindings/gpio/gpio.h>
-#include <dt-bindings/clock/axg-audio-clkc.h>
 #include <dt-bindings/clock/g12a-clkc.h>
 #include <dt-bindings/clock/g12a-aoclkc.h>
 #include <dt-bindings/interrupt-controller/irq.h>
 #include <dt-bindings/interrupt-controller/arm-gic.h>
-#include <dt-bindings/reset/amlogic,meson-axg-audio-arb.h>
-#include <dt-bindings/reset/amlogic,meson-g12a-audio-reset.h>
 #include <dt-bindings/reset/amlogic,meson-g12a-reset.h>
+#include <dt-bindings/thermal/thermal.h>
 
 / {
        interrupt-parent = <&gic>;
        #address-cells = <2>;
        #size-cells = <2>;
 
-       tdmif_a: audio-controller-0 {
-               compatible = "amlogic,axg-tdm-iface";
-               #sound-dai-cells = <0>;
-               sound-name-prefix = "TDM_A";
-               clocks = <&clkc_audio AUD_CLKID_MST_A_MCLK>,
-                        <&clkc_audio AUD_CLKID_MST_A_SCLK>,
-                        <&clkc_audio AUD_CLKID_MST_A_LRCLK>;
-               clock-names = "mclk", "sclk", "lrclk";
-               status = "disabled";
-       };
+       chosen {
+               #address-cells = <2>;
+               #size-cells = <2>;
+               ranges;
 
-       tdmif_b: audio-controller-1 {
-               compatible = "amlogic,axg-tdm-iface";
-               #sound-dai-cells = <0>;
-               sound-name-prefix = "TDM_B";
-               clocks = <&clkc_audio AUD_CLKID_MST_B_MCLK>,
-                        <&clkc_audio AUD_CLKID_MST_B_SCLK>,
-                        <&clkc_audio AUD_CLKID_MST_B_LRCLK>;
-               clock-names = "mclk", "sclk", "lrclk";
-               status = "disabled";
-       };
+               simplefb_cvbs: framebuffer-cvbs {
+                       compatible = "amlogic,simple-framebuffer",
+                                    "simple-framebuffer";
+                       amlogic,pipeline = "vpu-cvbs";
+                       clocks = <&clkc CLKID_HDMI>,
+                                <&clkc CLKID_HTX_PCLK>,
+                                <&clkc CLKID_VPU_INTR>;
+                       status = "disabled";
+               };
 
-       tdmif_c: audio-controller-2 {
-               compatible = "amlogic,axg-tdm-iface";
-               #sound-dai-cells = <0>;
-               sound-name-prefix = "TDM_C";
-               clocks = <&clkc_audio AUD_CLKID_MST_C_MCLK>,
-                        <&clkc_audio AUD_CLKID_MST_C_SCLK>,
-                        <&clkc_audio AUD_CLKID_MST_C_LRCLK>;
-               clock-names = "mclk", "sclk", "lrclk";
-               status = "disabled";
+               simplefb_hdmi: framebuffer-hdmi {
+                       compatible = "amlogic,simple-framebuffer",
+                                   "simple-framebuffer";
+                       amlogic,pipeline = "vpu-hdmi";
+                       clocks = <&clkc CLKID_HDMI>,
+                                <&clkc CLKID_HTX_PCLK>,
+                                <&clkc CLKID_VPU_INTR>;
+                       status = "disabled";
+               };
        };
 
        efuse: efuse {
@@ -58,6 +49,7 @@
                #address-cells = <1>;
                #size-cells = <1>;
                read-only;
+               secure-monitor = <&sm>;
        };
 
        psci {
                        status = "disabled";
                };
 
+               thermal-zones {
+                       cpu_thermal: cpu-thermal {
+                               polling-delay = <1000>;
+                               polling-delay-passive = <100>;
+                               thermal-sensors = <&cpu_temp>;
+
+                               trips {
+                                       cpu_passive: cpu-passive {
+                                               temperature = <85000>; /* millicelsius */
+                                               hysteresis = <2000>; /* millicelsius */
+                                               type = "passive";
+                                       };
+
+                                       cpu_hot: cpu-hot {
+                                               temperature = <95000>; /* millicelsius */
+                                               hysteresis = <2000>; /* millicelsius */
+                                               type = "hot";
+                                       };
+
+                                       cpu_critical: cpu-critical {
+                                               temperature = <110000>; /* millicelsius */
+                                               hysteresis = <2000>; /* millicelsius */
+                                               type = "critical";
+                                       };
+                               };
+                       };
+
+                       ddr_thermal: ddr-thermal {
+                               polling-delay = <1000>;
+                               polling-delay-passive = <100>;
+                               thermal-sensors = <&ddr_temp>;
+
+                               trips {
+                                       ddr_passive: ddr-passive {
+                                               temperature = <85000>; /* millicelsius */
+                                               hysteresis = <2000>; /* millicelsius */
+                                               type = "passive";
+                                       };
+
+                                       ddr_critical: ddr-critical {
+                                               temperature = <110000>; /* millicelsius */
+                                               hysteresis = <2000>; /* millicelsius */
+                                               type = "critical";
+                                       };
+                               };
+
+                               cooling-maps {
+                                       map {
+                                               trip = <&ddr_passive>;
+                                               cooling-device = <&mali THERMAL_NO_LIMIT THERMAL_NO_LIMIT>;
+                                       };
+                               };
+                       };
+               };
+
                ethmac: ethernet@ff3f0000 {
                        compatible = "amlogic,meson-axg-dwmac",
                                     "snps,dwmac-3.70a",
                                };
                        };
 
+                       cpu_temp: temperature-sensor@34800 {
+                               compatible = "amlogic,g12a-cpu-thermal",
+                                            "amlogic,g12a-thermal";
+                               reg = <0x0 0x34800 0x0 0x50>;
+                               interrupts = <GIC_SPI 35 IRQ_TYPE_EDGE_RISING>;
+                               clocks = <&clkc CLKID_TS>;
+                               #thermal-sensor-cells = <0>;
+                               amlogic,ao-secure = <&sec_AO>;
+                       };
+
+                       ddr_temp: temperature-sensor@34c00 {
+                               compatible = "amlogic,g12a-ddr-thermal",
+                                            "amlogic,g12a-thermal";
+                               reg = <0x0 0x34c00 0x0 0x50>;
+                               interrupts = <GIC_SPI 36 IRQ_TYPE_EDGE_RISING>;
+                               clocks = <&clkc CLKID_TS>;
+                               #thermal-sensor-cells = <0>;
+                               amlogic,ao-secure = <&sec_AO>;
+                       };
+
                        usb2_phy0: phy@36000 {
                                compatible = "amlogic,g12a-usb2-phy";
                                reg = <0x0 0x36000 0x0 0x2000>;
                                };
                        };
 
-                       pdm: audio-controller@40000 {
-                               compatible = "amlogic,g12a-pdm",
-                                            "amlogic,axg-pdm";
-                               reg = <0x0 0x40000 0x0 0x34>;
-                               #sound-dai-cells = <0>;
-                               sound-name-prefix = "PDM";
-                               clocks = <&clkc_audio AUD_CLKID_PDM>,
-                                        <&clkc_audio AUD_CLKID_PDM_DCLK>,
-                                        <&clkc_audio AUD_CLKID_PDM_SYSCLK>;
-                               clock-names = "pclk", "dclk", "sysclk";
-                               status = "disabled";
-                       };
-
-                       audio: bus@42000 {
-                               compatible = "simple-bus";
-                               reg = <0x0 0x42000 0x0 0x2000>;
-                               #address-cells = <2>;
-                               #size-cells = <2>;
-                               ranges = <0x0 0x0 0x0 0x42000 0x0 0x2000>;
-
-                               clkc_audio: clock-controller@0 {
-                                       status = "disabled";
-                                       compatible = "amlogic,g12a-audio-clkc";
-                                       reg = <0x0 0x0 0x0 0xb4>;
-                                       #clock-cells = <1>;
-                                       #reset-cells = <1>;
-
-                                       clocks = <&clkc CLKID_AUDIO>,
-                                                <&clkc CLKID_MPLL0>,
-                                                <&clkc CLKID_MPLL1>,
-                                                <&clkc CLKID_MPLL2>,
-                                                <&clkc CLKID_MPLL3>,
-                                                <&clkc CLKID_HIFI_PLL>,
-                                                <&clkc CLKID_FCLK_DIV3>,
-                                                <&clkc CLKID_FCLK_DIV4>,
-                                                <&clkc CLKID_GP0_PLL>;
-                                       clock-names = "pclk",
-                                                     "mst_in0",
-                                                     "mst_in1",
-                                                     "mst_in2",
-                                                     "mst_in3",
-                                                     "mst_in4",
-                                                     "mst_in5",
-                                                     "mst_in6",
-                                                     "mst_in7";
-
-                                       resets = <&reset RESET_AUDIO>;
-                               };
-
-                               toddr_a: audio-controller@100 {
-                                       compatible = "amlogic,g12a-toddr",
-                                                    "amlogic,axg-toddr";
-                                       reg = <0x0 0x100 0x0 0x1c>;
-                                       #sound-dai-cells = <0>;
-                                       sound-name-prefix = "TODDR_A";
-                                       interrupts = <GIC_SPI 148 IRQ_TYPE_EDGE_RISING>;
-                                       clocks = <&clkc_audio AUD_CLKID_TODDR_A>;
-                                       resets = <&arb AXG_ARB_TODDR_A>;
-                                       status = "disabled";
-                               };
-
-                               toddr_b: audio-controller@140 {
-                                       compatible = "amlogic,g12a-toddr",
-                                                    "amlogic,axg-toddr";
-                                       reg = <0x0 0x140 0x0 0x1c>;
-                                       #sound-dai-cells = <0>;
-                                       sound-name-prefix = "TODDR_B";
-                                       interrupts = <GIC_SPI 149 IRQ_TYPE_EDGE_RISING>;
-                                       clocks = <&clkc_audio AUD_CLKID_TODDR_B>;
-                                       resets = <&arb AXG_ARB_TODDR_B>;
-                                       status = "disabled";
-                               };
-
-                               toddr_c: audio-controller@180 {
-                                       compatible = "amlogic,g12a-toddr",
-                                                    "amlogic,axg-toddr";
-                                       reg = <0x0 0x180 0x0 0x1c>;
-                                       #sound-dai-cells = <0>;
-                                       sound-name-prefix = "TODDR_C";
-                                       interrupts = <GIC_SPI 150 IRQ_TYPE_EDGE_RISING>;
-                                       clocks = <&clkc_audio AUD_CLKID_TODDR_C>;
-                                       resets = <&arb AXG_ARB_TODDR_C>;
-                                       status = "disabled";
-                               };
-
-                               frddr_a: audio-controller@1c0 {
-                                       compatible = "amlogic,g12a-frddr",
-                                                    "amlogic,axg-frddr";
-                                       reg = <0x0 0x1c0 0x0 0x1c>;
-                                       #sound-dai-cells = <0>;
-                                       sound-name-prefix = "FRDDR_A";
-                                       interrupts = <GIC_SPI 152 IRQ_TYPE_EDGE_RISING>;
-                                       clocks = <&clkc_audio AUD_CLKID_FRDDR_A>;
-                                       resets = <&arb AXG_ARB_FRDDR_A>;
-                                       status = "disabled";
-                               };
-
-                               frddr_b: audio-controller@200 {
-                                       compatible = "amlogic,g12a-frddr",
-                                                    "amlogic,axg-frddr";
-                                       reg = <0x0 0x200 0x0 0x1c>;
-                                       #sound-dai-cells = <0>;
-                                       sound-name-prefix = "FRDDR_B";
-                                       interrupts = <GIC_SPI 153 IRQ_TYPE_EDGE_RISING>;
-                                       clocks = <&clkc_audio AUD_CLKID_FRDDR_B>;
-                                       resets = <&arb AXG_ARB_FRDDR_B>;
-                                       status = "disabled";
-                               };
-
-                               frddr_c: audio-controller@240 {
-                                       compatible = "amlogic,g12a-frddr",
-                                                    "amlogic,axg-frddr";
-                                       reg = <0x0 0x240 0x0 0x1c>;
-                                       #sound-dai-cells = <0>;
-                                       sound-name-prefix = "FRDDR_C";
-                                       interrupts = <GIC_SPI 154 IRQ_TYPE_EDGE_RISING>;
-                                       clocks = <&clkc_audio AUD_CLKID_FRDDR_C>;
-                                       resets = <&arb AXG_ARB_FRDDR_C>;
-                                       status = "disabled";
-                               };
-
-                               arb: reset-controller@280 {
-                                       status = "disabled";
-                                       compatible = "amlogic,meson-axg-audio-arb";
-                                       reg = <0x0 0x280 0x0 0x4>;
-                                       #reset-cells = <1>;
-                                       clocks = <&clkc_audio AUD_CLKID_DDR_ARB>;
-                               };
-
-                               tdmin_a: audio-controller@300 {
-                                       compatible = "amlogic,g12a-tdmin",
-                                                    "amlogic,axg-tdmin";
-                                       reg = <0x0 0x300 0x0 0x40>;
-                                       sound-name-prefix = "TDMIN_A";
-                                       resets = <&clkc_audio AUD_RESET_TDMIN_A>;
-                                       clocks = <&clkc_audio AUD_CLKID_TDMIN_A>,
-                                                <&clkc_audio AUD_CLKID_TDMIN_A_SCLK>,
-                                                <&clkc_audio AUD_CLKID_TDMIN_A_SCLK_SEL>,
-                                                <&clkc_audio AUD_CLKID_TDMIN_A_LRCLK>,
-                                                <&clkc_audio AUD_CLKID_TDMIN_A_LRCLK>;
-                                       clock-names = "pclk", "sclk", "sclk_sel",
-                                                     "lrclk", "lrclk_sel";
-                                       status = "disabled";
-                               };
-
-                               tdmin_b: audio-controller@340 {
-                                       compatible = "amlogic,g12a-tdmin",
-                                                    "amlogic,axg-tdmin";
-                                       reg = <0x0 0x340 0x0 0x40>;
-                                       sound-name-prefix = "TDMIN_B";
-                                       resets = <&clkc_audio AUD_RESET_TDMIN_B>;
-                                       clocks = <&clkc_audio AUD_CLKID_TDMIN_B>,
-                                                <&clkc_audio AUD_CLKID_TDMIN_B_SCLK>,
-                                                <&clkc_audio AUD_CLKID_TDMIN_B_SCLK_SEL>,
-                                                <&clkc_audio AUD_CLKID_TDMIN_B_LRCLK>,
-                                                <&clkc_audio AUD_CLKID_TDMIN_B_LRCLK>;
-                                       clock-names = "pclk", "sclk", "sclk_sel",
-                                                     "lrclk", "lrclk_sel";
-                                       status = "disabled";
-                               };
-
-                               tdmin_c: audio-controller@380 {
-                                       compatible = "amlogic,g12a-tdmin",
-                                                    "amlogic,axg-tdmin";
-                                       reg = <0x0 0x380 0x0 0x40>;
-                                       sound-name-prefix = "TDMIN_C";
-                                       resets = <&clkc_audio AUD_RESET_TDMIN_C>;
-                                       clocks = <&clkc_audio AUD_CLKID_TDMIN_C>,
-                                                <&clkc_audio AUD_CLKID_TDMIN_C_SCLK>,
-                                                <&clkc_audio AUD_CLKID_TDMIN_C_SCLK_SEL>,
-                                                <&clkc_audio AUD_CLKID_TDMIN_C_LRCLK>,
-                                                <&clkc_audio AUD_CLKID_TDMIN_C_LRCLK>;
-                                       clock-names = "pclk", "sclk", "sclk_sel",
-                                                     "lrclk", "lrclk_sel";
-                                       status = "disabled";
-                               };
-
-                               tdmin_lb: audio-controller@3c0 {
-                                       compatible = "amlogic,g12a-tdmin",
-                                                    "amlogic,axg-tdmin";
-                                       reg = <0x0 0x3c0 0x0 0x40>;
-                                       sound-name-prefix = "TDMIN_LB";
-                                       resets = <&clkc_audio AUD_RESET_TDMIN_LB>;
-                                       clocks = <&clkc_audio AUD_CLKID_TDMIN_LB>,
-                                                <&clkc_audio AUD_CLKID_TDMIN_LB_SCLK>,
-                                                <&clkc_audio AUD_CLKID_TDMIN_LB_SCLK_SEL>,
-                                                <&clkc_audio AUD_CLKID_TDMIN_LB_LRCLK>,
-                                                <&clkc_audio AUD_CLKID_TDMIN_LB_LRCLK>;
-                                       clock-names = "pclk", "sclk", "sclk_sel",
-                                                     "lrclk", "lrclk_sel";
-                                       status = "disabled";
-                               };
-
-                               spdifin: audio-controller@400 {
-                                       compatible = "amlogic,g12a-spdifin",
-                                                    "amlogic,axg-spdifin";
-                                       reg = <0x0 0x400 0x0 0x30>;
-                                       #sound-dai-cells = <0>;
-                                       sound-name-prefix = "SPDIFIN";
-                                       interrupts = <GIC_SPI 151 IRQ_TYPE_EDGE_RISING>;
-                                       clocks = <&clkc_audio AUD_CLKID_SPDIFIN>,
-                                                <&clkc_audio AUD_CLKID_SPDIFIN_CLK>;
-                                       clock-names = "pclk", "refclk";
-                                       status = "disabled";
-                               };
-
-                               spdifout: audio-controller@480 {
-                                       compatible = "amlogic,g12a-spdifout",
-                                                    "amlogic,axg-spdifout";
-                                       reg = <0x0 0x480 0x0 0x50>;
-                                       #sound-dai-cells = <0>;
-                                       sound-name-prefix = "SPDIFOUT";
-                                       clocks = <&clkc_audio AUD_CLKID_SPDIFOUT>,
-                                                <&clkc_audio AUD_CLKID_SPDIFOUT_CLK>;
-                                       clock-names = "pclk", "mclk";
-                                       status = "disabled";
-                               };
-
-                               tdmout_a: audio-controller@500 {
-                                       compatible = "amlogic,g12a-tdmout";
-                                       reg = <0x0 0x500 0x0 0x40>;
-                                       sound-name-prefix = "TDMOUT_A";
-                                       resets = <&clkc_audio AUD_RESET_TDMOUT_A>;
-                                       clocks = <&clkc_audio AUD_CLKID_TDMOUT_A>,
-                                                <&clkc_audio AUD_CLKID_TDMOUT_A_SCLK>,
-                                                <&clkc_audio AUD_CLKID_TDMOUT_A_SCLK_SEL>,
-                                                <&clkc_audio AUD_CLKID_TDMOUT_A_LRCLK>,
-                                                <&clkc_audio AUD_CLKID_TDMOUT_A_LRCLK>;
-                                       clock-names = "pclk", "sclk", "sclk_sel",
-                                                     "lrclk", "lrclk_sel";
-                                       status = "disabled";
-                               };
-
-                               tdmout_b: audio-controller@540 {
-                                       compatible = "amlogic,g12a-tdmout";
-                                       reg = <0x0 0x540 0x0 0x40>;
-                                       sound-name-prefix = "TDMOUT_B";
-                                       resets = <&clkc_audio AUD_RESET_TDMOUT_B>;
-                                       clocks = <&clkc_audio AUD_CLKID_TDMOUT_B>,
-                                                <&clkc_audio AUD_CLKID_TDMOUT_B_SCLK>,
-                                                <&clkc_audio AUD_CLKID_TDMOUT_B_SCLK_SEL>,
-                                                <&clkc_audio AUD_CLKID_TDMOUT_B_LRCLK>,
-                                                <&clkc_audio AUD_CLKID_TDMOUT_B_LRCLK>;
-                                       clock-names = "pclk", "sclk", "sclk_sel",
-                                                     "lrclk", "lrclk_sel";
-                                       status = "disabled";
-                               };
-
-                               tdmout_c: audio-controller@580 {
-                                       compatible = "amlogic,g12a-tdmout";
-                                       reg = <0x0 0x580 0x0 0x40>;
-                                       sound-name-prefix = "TDMOUT_C";
-                                       resets = <&clkc_audio AUD_RESET_TDMOUT_C>;
-                                       clocks = <&clkc_audio AUD_CLKID_TDMOUT_C>,
-                                                <&clkc_audio AUD_CLKID_TDMOUT_C_SCLK>,
-                                                <&clkc_audio AUD_CLKID_TDMOUT_C_SCLK_SEL>,
-                                                <&clkc_audio AUD_CLKID_TDMOUT_C_LRCLK>,
-                                                <&clkc_audio AUD_CLKID_TDMOUT_C_LRCLK>;
-                                       clock-names = "pclk", "sclk", "sclk_sel",
-                                                     "lrclk", "lrclk_sel";
-                                       status = "disabled";
-                               };
-
-                               spdifout_b: audio-controller@680 {
-                                       compatible = "amlogic,g12a-spdifout",
-                                                    "amlogic,axg-spdifout";
-                                       reg = <0x0 0x680 0x0 0x50>;
-                                       #sound-dai-cells = <0>;
-                                       sound-name-prefix = "SPDIFOUT_B";
-                                       clocks = <&clkc_audio AUD_CLKID_SPDIFOUT_B>,
-                                                <&clkc_audio AUD_CLKID_SPDIFOUT_B_CLK>;
-                                       clock-names = "pclk", "mclk";
-                                       status = "disabled";
-                               };
-
-                               tohdmitx: audio-controller@744 {
-                                       compatible = "amlogic,g12a-tohdmitx";
-                                       reg = <0x0 0x744 0x0 0x4>;
-                                       #sound-dai-cells = <1>;
-                                       sound-name-prefix = "TOHDMITX";
-                                       status = "disabled";
-                               };
-                       };
-
                        usb3_pcie_phy: phy@46000 {
                                compatible = "amlogic,g12a-usb3-pcie-phy";
                                reg = <0x0 0x46000 0x0 0x2000>;
                        compatible = "amlogic,meson-g12a-mali", "arm,mali-bifrost";
                        reg = <0x0 0xffe40000 0x0 0x40000>;
                        interrupt-parent = <&gic>;
-                       interrupts = <GIC_SPI 160 IRQ_TYPE_LEVEL_HIGH>,
+                       interrupts = <GIC_SPI 162 IRQ_TYPE_LEVEL_HIGH>,
                                     <GIC_SPI 161 IRQ_TYPE_LEVEL_HIGH>,
-                                    <GIC_SPI 162 IRQ_TYPE_LEVEL_HIGH>;
-                       interrupt-names = "gpu", "mmu", "job";
+                                    <GIC_SPI 160 IRQ_TYPE_LEVEL_HIGH>;
+                       interrupt-names = "job", "mmu", "gpu";
                        clocks = <&clkc CLKID_MALI>;
                        resets = <&reset RESET_DVALIN_CAPB3>, <&reset RESET_DVALIN>;
 
                        assigned-clock-rates = <0>, /* Do Nothing */
                                               <800000000>,
                                               <0>; /* Do Nothing */
+                       #cooling-cells = <2>;
                };
        };
 
diff --git a/arch/arm64/boot/dts/amlogic/meson-g12.dtsi b/arch/arm64/boot/dts/amlogic/meson-g12.dtsi
new file mode 100644 (file)
index 0000000..b3ba2fd
--- /dev/null
@@ -0,0 +1,392 @@
+// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
+/*
+ * Copyright (c) 2019 BayLibre, SAS
+ * Author: Jerome Brunet <jbrunet@baylibre.com>
+ */
+
+#include "meson-g12-common.dtsi"
+#include <dt-bindings/clock/axg-audio-clkc.h>
+#include <dt-bindings/power/meson-g12a-power.h>
+#include <dt-bindings/reset/amlogic,meson-axg-audio-arb.h>
+#include <dt-bindings/reset/amlogic,meson-g12a-audio-reset.h>
+
+/ {
+       tdmif_a: audio-controller-0 {
+               compatible = "amlogic,axg-tdm-iface";
+               #sound-dai-cells = <0>;
+               sound-name-prefix = "TDM_A";
+               clocks = <&clkc_audio AUD_CLKID_MST_A_MCLK>,
+                        <&clkc_audio AUD_CLKID_MST_A_SCLK>,
+                        <&clkc_audio AUD_CLKID_MST_A_LRCLK>;
+               clock-names = "mclk", "sclk", "lrclk";
+               status = "disabled";
+       };
+
+       tdmif_b: audio-controller-1 {
+               compatible = "amlogic,axg-tdm-iface";
+               #sound-dai-cells = <0>;
+               sound-name-prefix = "TDM_B";
+               clocks = <&clkc_audio AUD_CLKID_MST_B_MCLK>,
+                        <&clkc_audio AUD_CLKID_MST_B_SCLK>,
+                        <&clkc_audio AUD_CLKID_MST_B_LRCLK>;
+               clock-names = "mclk", "sclk", "lrclk";
+               status = "disabled";
+       };
+
+       tdmif_c: audio-controller-2 {
+               compatible = "amlogic,axg-tdm-iface";
+               #sound-dai-cells = <0>;
+               sound-name-prefix = "TDM_C";
+               clocks = <&clkc_audio AUD_CLKID_MST_C_MCLK>,
+                        <&clkc_audio AUD_CLKID_MST_C_SCLK>,
+                        <&clkc_audio AUD_CLKID_MST_C_LRCLK>;
+               clock-names = "mclk", "sclk", "lrclk";
+               status = "disabled";
+       };
+};
+
+&apb {
+       pdm: audio-controller@40000 {
+               compatible = "amlogic,g12a-pdm",
+                            "amlogic,axg-pdm";
+               reg = <0x0 0x40000 0x0 0x34>;
+               #sound-dai-cells = <0>;
+               sound-name-prefix = "PDM";
+               clocks = <&clkc_audio AUD_CLKID_PDM>,
+                        <&clkc_audio AUD_CLKID_PDM_DCLK>,
+                        <&clkc_audio AUD_CLKID_PDM_SYSCLK>;
+               clock-names = "pclk", "dclk", "sysclk";
+               status = "disabled";
+       };
+
+       audio: bus@42000 {
+               compatible = "simple-bus";
+               reg = <0x0 0x42000 0x0 0x2000>;
+               #address-cells = <2>;
+               #size-cells = <2>;
+               ranges = <0x0 0x0 0x0 0x42000 0x0 0x2000>;
+
+               clkc_audio: clock-controller@0 {
+                       status = "disabled";
+                       compatible = "amlogic,g12a-audio-clkc";
+                       reg = <0x0 0x0 0x0 0xb4>;
+                       #clock-cells = <1>;
+                       #reset-cells = <1>;
+
+                       clocks = <&clkc CLKID_AUDIO>,
+                                <&clkc CLKID_MPLL0>,
+                                <&clkc CLKID_MPLL1>,
+                                <&clkc CLKID_MPLL2>,
+                                <&clkc CLKID_MPLL3>,
+                                <&clkc CLKID_HIFI_PLL>,
+                                <&clkc CLKID_FCLK_DIV3>,
+                                <&clkc CLKID_FCLK_DIV4>,
+                                <&clkc CLKID_GP0_PLL>;
+                       clock-names = "pclk",
+                                     "mst_in0",
+                                     "mst_in1",
+                                     "mst_in2",
+                                     "mst_in3",
+                                     "mst_in4",
+                                     "mst_in5",
+                                     "mst_in6",
+                                     "mst_in7";
+
+                       resets = <&reset RESET_AUDIO>;
+               };
+
+               toddr_a: audio-controller@100 {
+                       compatible = "amlogic,g12a-toddr",
+                                    "amlogic,axg-toddr";
+                       reg = <0x0 0x100 0x0 0x2c>;
+                       #sound-dai-cells = <0>;
+                       sound-name-prefix = "TODDR_A";
+                       interrupts = <GIC_SPI 148 IRQ_TYPE_EDGE_RISING>;
+                       clocks = <&clkc_audio AUD_CLKID_TODDR_A>;
+                       resets = <&arb AXG_ARB_TODDR_A>,
+                                <&clkc_audio AUD_RESET_TODDR_A>;
+                       reset-names = "arb", "rst";
+                       status = "disabled";
+               };
+
+               toddr_b: audio-controller@140 {
+                       compatible = "amlogic,g12a-toddr",
+                                    "amlogic,axg-toddr";
+                       reg = <0x0 0x140 0x0 0x2c>;
+                       #sound-dai-cells = <0>;
+                       sound-name-prefix = "TODDR_B";
+                       interrupts = <GIC_SPI 149 IRQ_TYPE_EDGE_RISING>;
+                       clocks = <&clkc_audio AUD_CLKID_TODDR_B>;
+                       resets = <&arb AXG_ARB_TODDR_B>,
+                                <&clkc_audio AUD_RESET_TODDR_B>;
+                       reset-names = "arb", "rst";
+                       status = "disabled";
+               };
+
+               toddr_c: audio-controller@180 {
+                       compatible = "amlogic,g12a-toddr",
+                                    "amlogic,axg-toddr";
+                       reg = <0x0 0x180 0x0 0x2c>;
+                       #sound-dai-cells = <0>;
+                       sound-name-prefix = "TODDR_C";
+                       interrupts = <GIC_SPI 150 IRQ_TYPE_EDGE_RISING>;
+                       clocks = <&clkc_audio AUD_CLKID_TODDR_C>;
+                       resets = <&arb AXG_ARB_TODDR_C>,
+                                <&clkc_audio AUD_RESET_TODDR_C>;
+                       reset-names = "arb", "rst";
+                       status = "disabled";
+               };
+
+               frddr_a: audio-controller@1c0 {
+                       compatible = "amlogic,g12a-frddr",
+                                    "amlogic,axg-frddr";
+                       reg = <0x0 0x1c0 0x0 0x2c>;
+                       #sound-dai-cells = <0>;
+                       sound-name-prefix = "FRDDR_A";
+                       interrupts = <GIC_SPI 152 IRQ_TYPE_EDGE_RISING>;
+                       clocks = <&clkc_audio AUD_CLKID_FRDDR_A>;
+                       resets = <&arb AXG_ARB_FRDDR_A>,
+                                <&clkc_audio AUD_RESET_FRDDR_A>;
+                       reset-names = "arb", "rst";
+                       status = "disabled";
+               };
+
+               frddr_b: audio-controller@200 {
+                       compatible = "amlogic,g12a-frddr",
+                                    "amlogic,axg-frddr";
+                       reg = <0x0 0x200 0x0 0x2c>;
+                       #sound-dai-cells = <0>;
+                       sound-name-prefix = "FRDDR_B";
+                       interrupts = <GIC_SPI 153 IRQ_TYPE_EDGE_RISING>;
+                       clocks = <&clkc_audio AUD_CLKID_FRDDR_B>;
+                       resets = <&arb AXG_ARB_FRDDR_B>,
+                                <&clkc_audio AUD_RESET_FRDDR_B>;
+                       reset-names = "arb", "rst";
+                       status = "disabled";
+               };
+
+               frddr_c: audio-controller@240 {
+                       compatible = "amlogic,g12a-frddr",
+                                    "amlogic,axg-frddr";
+                       reg = <0x0 0x240 0x0 0x2c>;
+                       #sound-dai-cells = <0>;
+                       sound-name-prefix = "FRDDR_C";
+                       interrupts = <GIC_SPI 154 IRQ_TYPE_EDGE_RISING>;
+                       clocks = <&clkc_audio AUD_CLKID_FRDDR_C>;
+                       resets = <&arb AXG_ARB_FRDDR_C>,
+                                <&clkc_audio AUD_RESET_FRDDR_C>;
+                       reset-names = "arb", "rst";
+                       status = "disabled";
+               };
+
+               arb: reset-controller@280 {
+                       status = "disabled";
+                       compatible = "amlogic,meson-axg-audio-arb";
+                       reg = <0x0 0x280 0x0 0x4>;
+                       #reset-cells = <1>;
+                       clocks = <&clkc_audio AUD_CLKID_DDR_ARB>;
+               };
+
+               tdmin_a: audio-controller@300 {
+                       compatible = "amlogic,g12a-tdmin",
+                                    "amlogic,axg-tdmin";
+                       reg = <0x0 0x300 0x0 0x40>;
+                       sound-name-prefix = "TDMIN_A";
+                       resets = <&clkc_audio AUD_RESET_TDMIN_A>;
+                       clocks = <&clkc_audio AUD_CLKID_TDMIN_A>,
+                                <&clkc_audio AUD_CLKID_TDMIN_A_SCLK>,
+                                <&clkc_audio AUD_CLKID_TDMIN_A_SCLK_SEL>,
+                                <&clkc_audio AUD_CLKID_TDMIN_A_LRCLK>,
+                                <&clkc_audio AUD_CLKID_TDMIN_A_LRCLK>;
+                       clock-names = "pclk", "sclk", "sclk_sel",
+                                     "lrclk", "lrclk_sel";
+                       status = "disabled";
+               };
+
+               tdmin_b: audio-controller@340 {
+                       compatible = "amlogic,g12a-tdmin",
+                                    "amlogic,axg-tdmin";
+                       reg = <0x0 0x340 0x0 0x40>;
+                       sound-name-prefix = "TDMIN_B";
+                       resets = <&clkc_audio AUD_RESET_TDMIN_B>;
+                       clocks = <&clkc_audio AUD_CLKID_TDMIN_B>,
+                                <&clkc_audio AUD_CLKID_TDMIN_B_SCLK>,
+                                <&clkc_audio AUD_CLKID_TDMIN_B_SCLK_SEL>,
+                                <&clkc_audio AUD_CLKID_TDMIN_B_LRCLK>,
+                                <&clkc_audio AUD_CLKID_TDMIN_B_LRCLK>;
+                       clock-names = "pclk", "sclk", "sclk_sel",
+                                     "lrclk", "lrclk_sel";
+                       status = "disabled";
+               };
+
+               tdmin_c: audio-controller@380 {
+                       compatible = "amlogic,g12a-tdmin",
+                                    "amlogic,axg-tdmin";
+                       reg = <0x0 0x380 0x0 0x40>;
+                       sound-name-prefix = "TDMIN_C";
+                       resets = <&clkc_audio AUD_RESET_TDMIN_C>;
+                       clocks = <&clkc_audio AUD_CLKID_TDMIN_C>,
+                                <&clkc_audio AUD_CLKID_TDMIN_C_SCLK>,
+                                <&clkc_audio AUD_CLKID_TDMIN_C_SCLK_SEL>,
+                                <&clkc_audio AUD_CLKID_TDMIN_C_LRCLK>,
+                                <&clkc_audio AUD_CLKID_TDMIN_C_LRCLK>;
+                       clock-names = "pclk", "sclk", "sclk_sel",
+                                     "lrclk", "lrclk_sel";
+                       status = "disabled";
+               };
+
+               tdmin_lb: audio-controller@3c0 {
+                       compatible = "amlogic,g12a-tdmin",
+                                    "amlogic,axg-tdmin";
+                       reg = <0x0 0x3c0 0x0 0x40>;
+                       sound-name-prefix = "TDMIN_LB";
+                       resets = <&clkc_audio AUD_RESET_TDMIN_LB>;
+                       clocks = <&clkc_audio AUD_CLKID_TDMIN_LB>,
+                                <&clkc_audio AUD_CLKID_TDMIN_LB_SCLK>,
+                                <&clkc_audio AUD_CLKID_TDMIN_LB_SCLK_SEL>,
+                                <&clkc_audio AUD_CLKID_TDMIN_LB_LRCLK>,
+                                <&clkc_audio AUD_CLKID_TDMIN_LB_LRCLK>;
+                       clock-names = "pclk", "sclk", "sclk_sel",
+                                     "lrclk", "lrclk_sel";
+                       status = "disabled";
+               };
+
+               spdifin: audio-controller@400 {
+                       compatible = "amlogic,g12a-spdifin",
+                                    "amlogic,axg-spdifin";
+                       reg = <0x0 0x400 0x0 0x30>;
+                       #sound-dai-cells = <0>;
+                       sound-name-prefix = "SPDIFIN";
+                       interrupts = <GIC_SPI 151 IRQ_TYPE_EDGE_RISING>;
+                       clocks = <&clkc_audio AUD_CLKID_SPDIFIN>,
+                                <&clkc_audio AUD_CLKID_SPDIFIN_CLK>;
+                       clock-names = "pclk", "refclk";
+                       resets = <&clkc_audio AUD_RESET_SPDIFIN>;
+                       status = "disabled";
+               };
+
+               spdifout: audio-controller@480 {
+                       compatible = "amlogic,g12a-spdifout",
+                                    "amlogic,axg-spdifout";
+                       reg = <0x0 0x480 0x0 0x50>;
+                       #sound-dai-cells = <0>;
+                       sound-name-prefix = "SPDIFOUT";
+                       clocks = <&clkc_audio AUD_CLKID_SPDIFOUT>,
+                                <&clkc_audio AUD_CLKID_SPDIFOUT_CLK>;
+                       clock-names = "pclk", "mclk";
+                       resets = <&clkc_audio AUD_RESET_SPDIFOUT>;
+                       status = "disabled";
+               };
+
+               tdmout_a: audio-controller@500 {
+                       compatible = "amlogic,g12a-tdmout";
+                       reg = <0x0 0x500 0x0 0x40>;
+                       sound-name-prefix = "TDMOUT_A";
+                       resets = <&clkc_audio AUD_RESET_TDMOUT_A>;
+                       clocks = <&clkc_audio AUD_CLKID_TDMOUT_A>,
+                                <&clkc_audio AUD_CLKID_TDMOUT_A_SCLK>,
+                                <&clkc_audio AUD_CLKID_TDMOUT_A_SCLK_SEL>,
+                                <&clkc_audio AUD_CLKID_TDMOUT_A_LRCLK>,
+                                <&clkc_audio AUD_CLKID_TDMOUT_A_LRCLK>;
+                       clock-names = "pclk", "sclk", "sclk_sel",
+                                     "lrclk", "lrclk_sel";
+                       status = "disabled";
+               };
+
+               tdmout_b: audio-controller@540 {
+                       compatible = "amlogic,g12a-tdmout";
+                       reg = <0x0 0x540 0x0 0x40>;
+                       sound-name-prefix = "TDMOUT_B";
+                       resets = <&clkc_audio AUD_RESET_TDMOUT_B>;
+                       clocks = <&clkc_audio AUD_CLKID_TDMOUT_B>,
+                                <&clkc_audio AUD_CLKID_TDMOUT_B_SCLK>,
+                                <&clkc_audio AUD_CLKID_TDMOUT_B_SCLK_SEL>,
+                                <&clkc_audio AUD_CLKID_TDMOUT_B_LRCLK>,
+                                <&clkc_audio AUD_CLKID_TDMOUT_B_LRCLK>;
+                       clock-names = "pclk", "sclk", "sclk_sel",
+                                     "lrclk", "lrclk_sel";
+                       status = "disabled";
+               };
+
+               tdmout_c: audio-controller@580 {
+                       compatible = "amlogic,g12a-tdmout";
+                       reg = <0x0 0x580 0x0 0x40>;
+                       sound-name-prefix = "TDMOUT_C";
+                       resets = <&clkc_audio AUD_RESET_TDMOUT_C>;
+                       clocks = <&clkc_audio AUD_CLKID_TDMOUT_C>,
+                                <&clkc_audio AUD_CLKID_TDMOUT_C_SCLK>,
+                                <&clkc_audio AUD_CLKID_TDMOUT_C_SCLK_SEL>,
+                                <&clkc_audio AUD_CLKID_TDMOUT_C_LRCLK>,
+                                <&clkc_audio AUD_CLKID_TDMOUT_C_LRCLK>;
+                       clock-names = "pclk", "sclk", "sclk_sel",
+                                     "lrclk", "lrclk_sel";
+                       status = "disabled";
+               };
+
+               spdifout_b: audio-controller@680 {
+                       compatible = "amlogic,g12a-spdifout",
+                                    "amlogic,axg-spdifout";
+                       reg = <0x0 0x680 0x0 0x50>;
+                       #sound-dai-cells = <0>;
+                       sound-name-prefix = "SPDIFOUT_B";
+                       clocks = <&clkc_audio AUD_CLKID_SPDIFOUT_B>,
+                                <&clkc_audio AUD_CLKID_SPDIFOUT_B_CLK>;
+                       clock-names = "pclk", "mclk";
+                       resets = <&clkc_audio AUD_RESET_SPDIFOUT_B>;
+                       status = "disabled";
+               };
+
+               tohdmitx: audio-controller@744 {
+                       compatible = "amlogic,g12a-tohdmitx";
+                       reg = <0x0 0x744 0x0 0x4>;
+                       #sound-dai-cells = <1>;
+                       sound-name-prefix = "TOHDMITX";
+                       resets = <&clkc_audio AUD_RESET_TOHDMITX>;
+                       status = "disabled";
+               };
+       };
+};
+
+&cpu_thermal {
+       cooling-maps {
+               map0 {
+                       trip = <&cpu_passive>;
+                       cooling-device = <&cpu0 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
+                                        <&cpu1 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
+                                        <&cpu100 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
+                                        <&cpu101 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
+                                        <&cpu102 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
+                                        <&cpu103 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>,
+                                        <&cpu100 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
+                                        <&cpu101 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
+                                        <&cpu102 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
+                                        <&cpu103 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>;
+               };
+       };
+};
+
+&ethmac {
+       power-domains = <&pwrc PWRC_G12A_ETH_ID>;
+};
+
+&vpu {
+       power-domains = <&pwrc PWRC_G12A_VPU_ID>;
+};
+
+&sd_emmc_a {
+       amlogic,dram-access-quirk;
+};
+
+&simplefb_cvbs {
+       power-domains = <&pwrc PWRC_G12A_VPU_ID>;
+};
+
+&simplefb_hdmi {
+       power-domains = <&pwrc PWRC_G12A_VPU_ID>;
+};
+
index c9fa23a..2ac9e3a 100644 (file)
        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>;
index 17155fb..4f2596d 100644 (file)
        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>;
index eb5d177..fb0ab27 100644 (file)
@@ -3,8 +3,7 @@
  * Copyright (c) 2018 Amlogic, Inc. All rights reserved.
  */
 
-#include "meson-g12-common.dtsi"
-#include <dt-bindings/power/meson-g12a-power.h>
+#include "meson-g12.dtsi"
 
 / {
        compatible = "amlogic,g12a";
@@ -19,6 +18,7 @@
                        reg = <0x0 0x0>;
                        enable-method = "psci";
                        next-level-cache = <&l2>;
+                       #cooling-cells = <2>;
                };
 
                cpu1: cpu@1 {
@@ -27,6 +27,7 @@
                        reg = <0x0 0x1>;
                        enable-method = "psci";
                        next-level-cache = <&l2>;
+                       #cooling-cells = <2>;
                };
 
                cpu2: cpu@2 {
@@ -35,6 +36,7 @@
                        reg = <0x0 0x2>;
                        enable-method = "psci";
                        next-level-cache = <&l2>;
+                       #cooling-cells = <2>;
                };
 
                cpu3: cpu@3 {
@@ -43,6 +45,7 @@
                        reg = <0x0 0x3>;
                        enable-method = "psci";
                        next-level-cache = <&l2>;
+                       #cooling-cells = <2>;
                };
 
                l2: l2-cache0 {
        };
 };
 
-&ethmac {
-       power-domains = <&pwrc PWRC_G12A_ETH_ID>;
-};
-
-&vpu {
-       power-domains = <&pwrc PWRC_G12A_VPU_ID>;
-};
+&cpu_thermal {
+       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>;
+               };
 
-&sd_emmc_a {
-       amlogic,dram-access-quirk;
+               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>;
+               };
+       };
 };
index 42f1540..0e54c1d 100644 (file)
@@ -12,7 +12,7 @@
 #include <dt-bindings/sound/meson-g12a-tohdmitx.h>
 
 / {
-       compatible = "hardkernel,odroid-n2", "amlogic,g12b";
+       compatible = "hardkernel,odroid-n2", "amlogic,s922x", "amlogic,g12b";
        model = "Hardkernel ODROID-N2";
 
        aliases {
diff --git a/arch/arm64/boot/dts/amlogic/meson-g12b-ugoos-am6.dts b/arch/arm64/boot/dts/amlogic/meson-g12b-ugoos-am6.dts
new file mode 100644 (file)
index 0000000..ccd0bce
--- /dev/null
@@ -0,0 +1,557 @@
+// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
+/*
+ * Copyright (c) 2019 BayLibre, SAS
+ * Author: Neil Armstrong <narmstrong@baylibre.com>
+ * Copyright (c) 2019 Christian Hewitt <christianshewitt@gmail.com>
+ */
+
+/dts-v1/;
+
+#include "meson-g12b.dtsi"
+#include "meson-g12b-s922x.dtsi"
+#include <dt-bindings/input/input.h>
+#include <dt-bindings/gpio/meson-g12a-gpio.h>
+#include <dt-bindings/sound/meson-g12a-tohdmitx.h>
+
+/ {
+       compatible = "ugoos,am6", "amlogic,g12b";
+       model = "Ugoos AM6";
+
+       aliases {
+               serial0 = &uart_AO;
+               ethernet0 = &ethmac;
+       };
+
+       chosen {
+               stdout-path = "serial0:115200n8";
+       };
+
+       memory@0 {
+               device_type = "memory";
+               reg = <0x0 0x0 0x0 0x40000000>;
+       };
+
+       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";
+       };
+
+       spdif_dit: audio-codec-1 {
+               #sound-dai-cells = <0>;
+               compatible = "linux,spdif-dit";
+               status = "okay";
+               sound-name-prefix = "DIT";
+       };
+
+       flash_1v8: regulator-flash_1v8 {
+               compatible = "regulator-fixed";
+               regulator-name = "FLASH_1V8";
+               regulator-min-microvolt = <1800000>;
+               regulator-max-microvolt = <1800000>;
+               vin-supply = <&vcc_3v3>;
+               regulator-always-on;
+       };
+
+       main_12v: regulator-main_12v {
+               compatible = "regulator-fixed";
+               regulator-name = "12V";
+               regulator-min-microvolt = <12000000>;
+               regulator-max-microvolt = <12000000>;
+               regulator-always-on;
+       };
+
+       vcc_5v: regulator-vcc_5v {
+               compatible = "regulator-fixed";
+               regulator-name = "VCC_5V";
+               regulator-min-microvolt = <5000000>;
+               regulator-max-microvolt = <5000000>;
+               vin-supply = <&main_12v>;
+
+               gpio = <&gpio GPIOH_8 GPIO_OPEN_DRAIN>;
+               enable-active-high;
+       };
+
+       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;
+               /* FIXME: actually controlled by VDDCPU_B_EN */
+       };
+
+       vddcpu_a: regulator-vddcpu-a {
+               /*
+                * MP1653 Regulator.
+                */
+               compatible = "pwm-regulator";
+
+               regulator-name = "VDDCPU_A";
+               regulator-min-microvolt = <721000>;
+               regulator-max-microvolt = <1022000>;
+
+               vin-supply = <&main_12v>;
+
+               pwms = <&pwm_ab 0 1250 0>;
+               pwm-dutycycle-range = <100 0>;
+
+               regulator-boot-on;
+               regulator-always-on;
+       };
+
+       vddcpu_b: regulator-vddcpu-b {
+               /*
+                * MP1652 Regulator.
+                */
+               compatible = "pwm-regulator";
+
+               regulator-name = "VDDCPU_B";
+               regulator-min-microvolt = <721000>;
+               regulator-max-microvolt = <1022000>;
+
+               vin-supply = <&main_12v>;
+
+               pwms = <&pwm_AO_cd 1 1250 0>;
+               pwm-dutycycle-range = <100 0>;
+
+               regulator-boot-on;
+               regulator-always-on;
+       };
+
+       usb1_pow: regulator-usb1-pow {
+               compatible = "regulator-fixed";
+               regulator-name = "USB1_POW";
+               regulator-min-microvolt = <5000000>;
+               regulator-max-microvolt = <5000000>;
+               vin-supply = <&vcc_5v>;
+
+               /* connected to SY6280A Power Switch */
+               gpio = <&gpio GPIOA_8 GPIO_ACTIVE_HIGH>;
+               enable-active-high;
+       };
+
+       usb_pwr_en: regulator-usb-pwr-en {
+               compatible = "regulator-fixed";
+               regulator-name = "USB_PWR_EN";
+               regulator-min-microvolt = <5000000>;
+               regulator-max-microvolt = <5000000>;
+               vin-supply = <&vcc_5v>;
+
+               /* Connected to USB3 Type-A Port power enable */
+               gpio = <&gpio GPIOAO_7 GPIO_ACTIVE_HIGH>;
+               enable-active-high;
+       };
+
+       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 = <&main_12v>;
+               regulator-always-on;
+       };
+
+       cvbs-connector {
+               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>;
+                       };
+               };
+       };
+
+       sound {
+               compatible = "amlogic,axg-sound-card";
+               model = "G12B-UGOOS-AM6";
+               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",
+                               "SPDIFOUT IN 0", "FRDDR_A OUT 3",
+                               "SPDIFOUT IN 1", "FRDDR_B OUT 3",
+                               "SPDIFOUT IN 2", "FRDDR_C OUT 3";
+
+               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>;
+                       };
+               };
+
+               /* spdif hdmi or toslink interface */
+               dai-link-4 {
+                       sound-dai = <&spdifout>;
+
+                       codec-0 {
+                               sound-dai = <&spdif_dit>;
+                       };
+
+                       codec-1 {
+                               sound-dai = <&tohdmitx TOHDMITX_SPDIF_IN_A>;
+                       };
+               };
+
+               /* spdif hdmi interface */
+               dai-link-5 {
+                       sound-dai = <&spdifout_b>;
+
+                       codec {
+                               sound-dai = <&tohdmitx TOHDMITX_SPDIF_IN_B>;
+                       };
+               };
+
+               /* hdmi glue */
+               dai-link-6 {
+                       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_b>;
+       operating-points-v2 = <&cpu_opp_table_0>;
+       clocks = <&clkc CLKID_CPU_CLK>;
+       clock-latency = <50000>;
+};
+
+&cpu1 {
+       cpu-supply = <&vddcpu_b>;
+       operating-points-v2 = <&cpu_opp_table_0>;
+       clocks = <&clkc CLKID_CPU_CLK>;
+       clock-latency = <50000>;
+};
+
+&cpu100 {
+       cpu-supply = <&vddcpu_a>;
+       operating-points-v2 = <&cpub_opp_table_1>;
+       clocks = <&clkc CLKID_CPUB_CLK>;
+       clock-latency = <50000>;
+};
+
+&cpu101 {
+       cpu-supply = <&vddcpu_a>;
+       operating-points-v2 = <&cpub_opp_table_1>;
+       clocks = <&clkc CLKID_CPUB_CLK>;
+       clock-latency = <50000>;
+};
+
+&cpu102 {
+       cpu-supply = <&vddcpu_a>;
+       operating-points-v2 = <&cpub_opp_table_1>;
+       clocks = <&clkc CLKID_CPUB_CLK>;
+       clock-latency = <50000>;
+};
+
+&cpu103 {
+       cpu-supply = <&vddcpu_a>;
+       operating-points-v2 = <&cpub_opp_table_1>;
+       clocks = <&clkc CLKID_CPUB_CLK>;
+       clock-latency = <50000>;
+};
+
+&cvbs_vdac_port {
+       cvbs_vdac_out: endpoint {
+               remote-endpoint = <&cvbs_connector_in>;
+       };
+};
+
+&ext_mdio {
+       external_phy: ethernet-phy@0 {
+               /* Realtek RTL8211F (0x001cc916) */
+               reg = <0>;
+               max-speed = <1000>;
+
+               reset-assert-us = <10000>;
+               reset-deassert-us = <30000>;
+               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>;
+       };
+};
+
+&ethmac {
+       pinctrl-0 = <&eth_pins>, <&eth_rgmii_pins>;
+       pinctrl-names = "default";
+       status = "okay";
+       phy-mode = "rgmii";
+       phy-handle = <&external_phy>;
+       amlogic,tx-delay-ns = <2>;
+};
+
+&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 = <&vcc_5v>;
+};
+
+&hdmi_tx_tmds_port {
+       hdmi_tx_tmds_out: endpoint {
+               remote-endpoint = <&hdmi_connector_in>;
+       };
+};
+
+&ir {
+       status = "okay";
+       pinctrl-0 = <&remote_input_ao_pins>;
+       pinctrl-names = "default";
+       linux,rc-map-name = "rc-khadas";
+};
+
+&pwm_ab {
+       pinctrl-0 = <&pwm_a_e_pins>;
+       pinctrl-names = "default";
+       clocks = <&xtal>;
+       clock-names = "clkin0";
+       status = "okay";
+};
+
+&pwm_AO_cd {
+       pinctrl-0 = <&pwm_ao_d_e_pins>;
+       pinctrl-names = "default";
+       clocks = <&xtal>;
+       clock-names = "clkin1";
+       status = "okay";
+};
+
+&pwm_ef {
+       pinctrl-0 = <&pwm_e_pins>;
+       pinctrl-names = "default";
+       clocks = <&xtal>;
+       clock-names = "clkin0";
+       status = "okay";
+};
+
+/* 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;
+
+       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 = <50000000>;
+       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_pins>, <&emmc_ds_pins>;
+       pinctrl-1 = <&emmc_clk_gate_pins>;
+       pinctrl-names = "default", "clk-gate";
+
+       bus-width = <8>;
+       cap-mmc-highspeed;
+       max-frequency = <100000000>;
+       disable-wp;
+
+       mmc-pwrseq = <&emmc_pwrseq>;
+       vmmc-supply = <&vcc_3v3>;
+       vqmmc-supply = <&flash_1v8>;
+};
+
+&spdifout {
+       pinctrl-0 = <&spdif_out_h_pins>;
+       pinctrl-names = "default";
+       status = "okay";
+};
+
+&spdifout_b {
+       status = "okay";
+};
+
+&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";
+       vbus-regulator = <&usb_pwr_en>;
+};
+
+&usb2_phy0 {
+       phy-supply = <&usb1_pow>;
+};
+
+&usb2_phy1 {
+       phy-supply = <&usb1_pow>;
+};
index 5628ccd..6dbc396 100644 (file)
@@ -4,8 +4,7 @@
  * Author: Neil Armstrong <narmstrong@baylibre.com>
  */
 
-#include "meson-g12-common.dtsi"
-#include <dt-bindings/power/meson-g12a-power.h>
+#include "meson-g12.dtsi"
 
 / {
        compatible = "amlogic,g12b";
@@ -49,7 +48,9 @@
                        compatible = "arm,cortex-a53";
                        reg = <0x0 0x0>;
                        enable-method = "psci";
+                       capacity-dmips-mhz = <592>;
                        next-level-cache = <&l2>;
+                       #cooling-cells = <2>;
                };
 
                cpu1: cpu@1 {
@@ -57,7 +58,9 @@
                        compatible = "arm,cortex-a53";
                        reg = <0x0 0x1>;
                        enable-method = "psci";
+                       capacity-dmips-mhz = <592>;
                        next-level-cache = <&l2>;
+                       #cooling-cells = <2>;
                };
 
                cpu100: cpu@100 {
@@ -65,7 +68,9 @@
                        compatible = "arm,cortex-a73";
                        reg = <0x0 0x100>;
                        enable-method = "psci";
+                       capacity-dmips-mhz = <1024>;
                        next-level-cache = <&l2>;
+                       #cooling-cells = <2>;
                };
 
                cpu101: cpu@101 {
@@ -73,7 +78,9 @@
                        compatible = "arm,cortex-a73";
                        reg = <0x0 0x101>;
                        enable-method = "psci";
+                       capacity-dmips-mhz = <1024>;
                        next-level-cache = <&l2>;
+                       #cooling-cells = <2>;
                };
 
                cpu102: cpu@102 {
@@ -81,7 +88,9 @@
                        compatible = "arm,cortex-a73";
                        reg = <0x0 0x102>;
                        enable-method = "psci";
+                       capacity-dmips-mhz = <1024>;
                        next-level-cache = <&l2>;
+                       #cooling-cells = <2>;
                };
 
                cpu103: cpu@103 {
@@ -89,7 +98,9 @@
                        compatible = "arm,cortex-a73";
                        reg = <0x0 0x103>;
                        enable-method = "psci";
+                       capacity-dmips-mhz = <1024>;
                        next-level-cache = <&l2>;
+                       #cooling-cells = <2>;
                };
 
                l2: l2-cache0 {
        compatible = "amlogic,g12b-clkc";
 };
 
-&ethmac {
-       power-domains = <&pwrc PWRC_G12A_ETH_ID>;
-};
-
-&vpu {
-       power-domains = <&pwrc PWRC_G12A_VPU_ID>;
-};
-
-&sd_emmc_a {
-       amlogic,dram-access-quirk;
-};
index a9b7785..12d5e33 100644 (file)
        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>;
index 6733050..40db06e 100644 (file)
                #address-cells = <1>;
                #size-cells = <1>;
                read-only;
+               secure-monitor = <&sm>;
 
                sn: sn@14 {
                        reg = <0x14 0x10>;
                        };
 
                        i2c_A: i2c@8500 {
-                               compatible = "amlogic,meson-gx-i2c", "amlogic,meson-gxbb-i2c";
+                               compatible = "amlogic,meson-gxbb-i2c";
                                reg = <0x0 0x08500 0x0 0x20>;
                                interrupts = <GIC_SPI 21 IRQ_TYPE_EDGE_RISING>;
                                #address-cells = <1>;
                        };
 
                        i2c_B: i2c@87c0 {
-                               compatible = "amlogic,meson-gx-i2c", "amlogic,meson-gxbb-i2c";
+                               compatible = "amlogic,meson-gxbb-i2c";
                                reg = <0x0 0x087c0 0x0 0x20>;
                                interrupts = <GIC_SPI 214 IRQ_TYPE_EDGE_RISING>;
                                #address-cells = <1>;
                        };
 
                        i2c_C: i2c@87e0 {
-                               compatible = "amlogic,meson-gx-i2c", "amlogic,meson-gxbb-i2c";
+                               compatible = "amlogic,meson-gxbb-i2c";
                                reg = <0x0 0x087e0 0x0 0x20>;
                                interrupts = <GIC_SPI 215 IRQ_TYPE_EDGE_RISING>;
                                #address-cells = <1>;
                                compatible = "amlogic,meson-gx-ao-cec";
                                reg = <0x0 0x00100 0x0 0x14>;
                                interrupts = <GIC_SPI 199 IRQ_TYPE_EDGE_RISING>;
+                               status = "disabled";
                        };
 
                        sec_AO: ao-secure@140 {
                        };
 
                        i2c_AO: i2c@500 {
-                               compatible = "amlogic,meson-gx-i2c", "amlogic,meson-gxbb-i2c";
+                               compatible = "amlogic,meson-gxbb-i2c";
                                reg = <0x0 0x500 0x0 0x20>;
                                interrupts = <GIC_SPI 195 IRQ_TYPE_EDGE_RISING>;
                                #address-cells = <1>;
index 233eb1c..d6ca684 100644 (file)
        non-removable;
        disable-wp;
 
+       /* WiFi firmware requires power to be kept while in suspend */
+       keep-power-in-suspend;
+
        mmc-pwrseq = <&sdio_pwrseq>;
 
        vmmc-supply = <&vddio_ao3v3>;
index afcf8a9..65ec7de 100644 (file)
        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>;
index 6039add..6ded279 100644 (file)
                regulator-min-microvolt = <5000000>;
                regulator-max-microvolt = <5000000>;
 
+               /*
+                * signal name from schematics: PWREN
+                */
                gpio = <&gpio_ao GPIOAO_5 GPIO_ACTIVE_HIGH>;
                enable-active-high;
+               /*
+                * signal name from schematics: USB_POWER
+                */
+               vin-supply = <&p5v0>;
        };
 
        leds {
                };
        };
 
+       p5v0: regulator-p5v0 {
+               compatible = "regulator-fixed";
+
+               regulator-name = "P5V0";
+               regulator-min-microvolt = <5000000>;
+               regulator-max-microvolt = <5000000>;
+               regulator-always-on;
+       };
+
+       hdmi_p5v0: regulator-hdmi_p5v0 {
+               compatible = "regulator-fixed";
+               regulator-name = "HDMI_P5V0";
+               regulator-min-microvolt = <5000000>;
+               regulator-max-microvolt = <5000000>;
+               /* AP2331SA-7 */
+               vin-supply = <&p5v0>;
+       };
+
        tflash_vdd: regulator-tflash_vdd {
-               /*
-                * signal name from schematics: TFLASH_VDD_EN
-                */
                compatible = "regulator-fixed";
 
                regulator-name = "TFLASH_VDD";
                regulator-min-microvolt = <3300000>;
                regulator-max-microvolt = <3300000>;
 
+               /*
+                * signal name from schematics: TFLASH_VDD_EN
+                */
                gpio = <&gpio GPIOY_12 GPIO_ACTIVE_HIGH>;
                enable-active-high;
+               /* U16 RT9179GB */
+               vin-supply = <&vddio_ao3v3>;
        };
 
        tf_io: gpio-regulator-tf_io {
 
                states = <3300000 0>,
                         <1800000 1>;
+               /* U12/U13 RT9179GB */
+               vin-supply = <&vddio_ao3v3>;
        };
 
        vcc1v8: regulator-vcc1v8 {
                regulator-name = "VCC1V8";
                regulator-min-microvolt = <1800000>;
                regulator-max-microvolt = <1800000>;
+               regulator-always-on;
+               /* U18 RT9179GB */
+               vin-supply = <&vddio_ao3v3>;
        };
 
        vcc3v3: regulator-vcc3v3 {
                regulator-max-microvolt = <3300000>;
        };
 
+       vddio_ao1v8: regulator-vddio-ao1v8 {
+               compatible = "regulator-fixed";
+               regulator-name = "VDDIO_AO1V8";
+               regulator-min-microvolt = <1800000>;
+               regulator-max-microvolt = <1800000>;
+               regulator-always-on;
+               /* U17 RT9179GB */
+               vin-supply = <&p5v0>;
+       };
+
+       vddio_ao3v3: regulator-vddio-ao3v3 {
+               compatible = "regulator-fixed";
+               regulator-name = "VDDIO_AO3V3";
+               regulator-min-microvolt = <3300000>;
+               regulator-max-microvolt = <3300000>;
+               regulator-always-on;
+               /* U11 MP2161GJ-C499 */
+               vin-supply = <&p5v0>;
+       };
+
+       ddr3_1v5: regulator-ddr3_1v5 {
+               compatible = "regulator-fixed";
+               regulator-name = "DDR3_1V5";
+               regulator-min-microvolt = <1500000>;
+               regulator-max-microvolt = <1500000>;
+               regulator-always-on;
+               /* U15 MP2161GJ-C499 */
+               vin-supply = <&p5v0>;
+       };
+
        emmc_pwrseq: emmc-pwrseq {
                compatible = "mmc-pwrseq-emmc";
                reset-gpios = <&gpio BOOT_9 GPIO_ACTIVE_LOW>;
        status = "okay";
        pinctrl-0 = <&hdmi_hpd_pins>, <&hdmi_i2c_pins>;
        pinctrl-names = "default";
+       hdmi-supply = <&hdmi_p5v0>;
 };
 
 &hdmi_tx_tmds_port {
 };
 
 &usb0_phy {
-       status = "okay";
+       status = "disabled";
        phy-supply = <&usb_otg_pwr>;
 };
 
 };
 
 &usb0 {
-       status = "okay";
+       status = "disabled";
 };
 
 &usb1 {
index 89f7b41..e803a46 100644 (file)
        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>;
index 43b11e3..5eab3df 100644 (file)
        status = "okay";
        pinctrl-0 = <&remote_input_ao_pins>;
        pinctrl-names = "default";
+       linux,rc-map-name = "rc-vega-s9x";
 };
 
 &pwm_ef {
        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>;
index 4c53988..dee51cf 100644 (file)
        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>;
index 82b1c48..4d59494 100644 (file)
@@ -14,7 +14,7 @@
 / {
        compatible = "libretech,aml-s805x-ac", "amlogic,s805x",
                     "amlogic,meson-gxl";
-       model = "Libre Computer Board AML-S805X-AC";
+       model = "Libre Computer AML-S805X-AC";
 
        aliases {
                serial0 = &uart_AO;
index 3a1484e..a1119cf 100644 (file)
        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>;
index 2a5cd30..440bc23 100644 (file)
 
        gpio-keys-polled {
                compatible = "gpio-keys-polled";
-               #address-cells = <1>;
-               #size-cells = <0>;
                poll-interval = <100>;
 
-               button@0 {
+               power-button {
                        label = "power";
                        linux,code = <KEY_POWER>;
                        gpios = <&gpio_ao GPIOAO_2 GPIO_ACTIVE_LOW>;
        bluetooth {
                compatible = "brcm,bcm43438-bt";
                shutdown-gpios = <&gpio GPIOX_17 GPIO_ACTIVE_HIGH>;
+               max-speed = <2000000>;
+               clocks = <&wifi32k>;
+               clock-names = "lpo";
        };
 };
 
index 4b8ce73..e8348b2 100644 (file)
@@ -12,8 +12,9 @@
 #include "meson-gxl-s905x.dtsi"
 
 / {
-       compatible = "libretech,cc", "amlogic,s905x", "amlogic,meson-gxl";
-       model = "Libre Computer Board AML-S905X-CC";
+       compatible = "libretech,aml-s905x-cc", "amlogic,s905x",
+                    "amlogic,meson-gxl";
+       model = "Libre Computer AML-S905X-CC";
 
        aliases {
                serial0 = &uart_AO;
index c433a03..62dd878 100644 (file)
        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>;
index e3c16f5..43eb7d1 100644 (file)
        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>;
index 49ff0a7..ed33d8e 100644 (file)
                                phys = <&usb3_phy>, <&usb2_phy0>, <&usb2_phy1>;
                        };
                };
+
+               crypto: crypto@c883e000 {
+                       compatible = "amlogic,gxl-crypto";
+                       reg = <0x0 0xc883e000 0x0 0x36>;
+                       interrupts = <GIC_SPI 188 IRQ_TYPE_EDGE_RISING>,
+                                    <GIC_SPI 189 IRQ_TYPE_EDGE_RISING>;
+                       clocks = <&clkc CLKID_BLKMV>;
+                       clock-names = "blkmv";
+                       status = "okay";
+               };
        };
 };
 
index f25ddd1..f82f25c 100644 (file)
        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>;
        bluetooth {
                compatible = "brcm,bcm43438-bt";
                shutdown-gpios = <&gpio GPIOX_17 GPIO_ACTIVE_HIGH>;
+               max-speed = <2000000>;
+               clocks = <&wifi32k>;
+               clock-names = "lpo";
        };
 };
 
index 5cd4d35..420a88e 100644 (file)
        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>;
index e2ea675..0bdf51d 100644 (file)
@@ -35,3 +35,7 @@
                reg = <0>;
        };
 };
+
+&ir {
+       linux,rc-map-name = "rc-vega-s9x";
+};
index a0e677d..5ff64a0 100644 (file)
                compatible = "amlogic,meson-gxm-mali", "arm,mali-t820";
                reg = <0x0 0xc0000 0x0 0x40000>;
                interrupt-parent = <&gic>;
-               interrupts = <GIC_SPI 160 IRQ_TYPE_LEVEL_HIGH>,
+               interrupts = <GIC_SPI 162 IRQ_TYPE_LEVEL_HIGH>,
                             <GIC_SPI 161 IRQ_TYPE_LEVEL_HIGH>,
-                            <GIC_SPI 162 IRQ_TYPE_LEVEL_HIGH>;
-               interrupt-names = "gpu", "mmu", "job";
+                            <GIC_SPI 160 IRQ_TYPE_LEVEL_HIGH>;
+               interrupt-names = "job", "mmu", "gpu";
                clocks = <&clkc CLKID_MALI>;
                resets = <&reset RESET_MALI_CAPB3>, <&reset RESET_MALI>;
 
index eac5720..90815fa 100644 (file)
        non-removable;
        disable-wp;
 
+       /* WiFi firmware requires power to be kept while in suspend */
+       keep-power-in-suspend;
+
        mmc-pwrseq = <&sdio_pwrseq>;
 
        vmmc-supply = <&vsys_3v3>;
index 3435aaa..5bd0746 100644 (file)
@@ -9,6 +9,7 @@
 #include <dt-bindings/gpio/gpio.h>
 #include <dt-bindings/input/input.h>
 #include <dt-bindings/gpio/meson-g12a-gpio.h>
+#include <dt-bindings/sound/meson-g12a-tohdmitx.h>
 
 / {
        compatible = "seirobotics,sei610", "amlogic,sm1";
                ethernet0 = &ethmac;
        };
 
+       mono_dac: audio-codec-0 {
+               compatible = "maxim,max98357a";
+               #sound-dai-cells = <0>;
+               sound-name-prefix = "U16";
+               sdmode-gpios = <&gpio GPIOX_8 GPIO_ACTIVE_HIGH>;
+       };
+
+       dmics: audio-codec-1 {
+               #sound-dai-cells = <0>;
+               compatible = "dmic-codec";
+               num-channels = <2>;
+               wakeup-delay-ms = <50>;
+               status = "okay";
+               sound-name-prefix = "MIC";
+       };
+
        chosen {
                stdout-path = "serial0:115200n8";
        };
                clock-names = "ext_clock";
        };
 
+       sound {
+               compatible = "amlogic,axg-sound-card";
+               model = "SM1-SEI610";
+               audio-aux-devs = <&tdmout_a>, <&tdmout_b>,
+                                <&tdmin_a>, <&tdmin_b>;
+               audio-routing = "TDMOUT_A IN 0", "FRDDR_A OUT 0",
+                               "TDMOUT_A IN 1", "FRDDR_B OUT 0",
+                               "TDMOUT_A IN 2", "FRDDR_C OUT 0",
+                               "TDM_A Playback", "TDMOUT_A OUT",
+                               "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",
+                               "TODDR_A IN 4", "PDM Capture",
+                               "TODDR_B IN 4", "PDM Capture",
+                               "TODDR_C IN 4", "PDM Capture",
+                               "TDMIN_A IN 0", "TDM_A Capture",
+                               "TDMIN_A IN 3", "TDM_A Loopback",
+                               "TDMIN_B IN 0", "TDM_A Capture",
+                               "TDMIN_B IN 3", "TDM_A Loopback",
+                               "TDMIN_A IN 1", "TDM_B Capture",
+                               "TDMIN_A IN 4", "TDM_B Loopback",
+                               "TDMIN_B IN 1", "TDM_B Capture",
+                               "TDMIN_B IN 4", "TDM_B Loopback",
+                               "TODDR_A IN 0", "TDMIN_A OUT",
+                               "TODDR_B IN 0", "TDMIN_A OUT",
+                               "TODDR_C IN 0", "TDMIN_A OUT",
+                               "TODDR_A IN 1", "TDMIN_B OUT",
+                               "TODDR_B IN 1", "TDMIN_B OUT",
+                               "TODDR_C IN 1", "TDMIN_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>;
+               };
+
+               dai-link-3 {
+                       sound-dai = <&toddr_a>;
+               };
+
+               dai-link-4 {
+                       sound-dai = <&toddr_b>;
+               };
+
+               dai-link-5 {
+                       sound-dai = <&toddr_c>;
+               };
+
+               /* internal speaker interface */
+               dai-link-6 {
+                       sound-dai = <&tdmif_a>;
+                       dai-format = "i2s";
+                       dai-tdm-slot-tx-mask-0 = <1 1>;
+                       mclk-fs = <256>;
+
+                       codec-0 {
+                               sound-dai = <&mono_dac>;
+                       };
+
+                       codec-1 {
+                               sound-dai = <&tohdmitx TOHDMITX_I2S_IN_A>;
+                       };
+               };
+
+               /* 8ch hdmi interface */
+               dai-link-7 {
+                       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>;
+                       };
+               };
+
+               /* internal digital mics */
+               dai-link-8 {
+                       sound-dai = <&pdm>;
+
+                       codec {
+                               sound-dai = <&dmics>;
+                       };
+               };
+
+               /* hdmi glue */
+               dai-link-9 {
+                       sound-dai = <&tohdmitx TOHDMITX_I2S_OUT>;
+
+                       codec {
+                               sound-dai = <&hdmi_tx>;
+                       };
+               };
+       };
+
        wifi32k: wifi32k {
                compatible = "pwm-clock";
                #clock-cells = <0>;
        };
 };
 
+&arb {
+       status = "okay";
+};
+
 &cec_AO {
        pinctrl-0 = <&cec_ao_a_h_pins>;
        pinctrl-names = "default";
        hdmi-phandle = <&hdmi_tx>;
 };
 
+&clkc_audio {
+       status = "okay";
+};
+
 &cpu0 {
        cpu-supply = <&vddcpu>;
        operating-points-v2 = <&cpu_opp_table>;
        phy-mode = "rmii";
 };
 
+&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";
 };
 
+&pdm {
+       pinctrl-0 = <&pdm_din0_z_pins>, <&pdm_dclk_z_pins>;
+       pinctrl-names = "default";
+       status = "okay";
+};
+
 &pwm_AO_ab {
        status = "okay";
        pinctrl-0 = <&pwm_ao_a_pins>;
        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 = <&emmc_1v8>;
 };
 
+&tdmif_a {
+       pinctrl-0 = <&tdm_a_dout0_pins>, <&tdm_a_fs_pins>, <&tdm_a_sclk_pins>;
+       pinctrl-names = "default";
+       status = "okay";
+
+       assigned-clocks = <&clkc_audio AUD_CLKID_TDM_SCLK_PAD0>,
+                         <&clkc_audio AUD_CLKID_TDM_LRCLK_PAD0>;
+       assigned-clock-parents = <&clkc_audio AUD_CLKID_MST_A_SCLK>,
+                                <&clkc_audio AUD_CLKID_MST_A_LRCLK>;
+       assigned-clock-rates = <0>, <0>;
+};
+
+&tdmif_b {
+       status = "okay";
+};
+
+&tdmin_a {
+       status = "okay";
+};
+
+&tdmin_b {
+       status = "okay";
+};
+
+&tdmout_a {
+       status = "okay";
+};
+
+&tdmout_b {
+       status = "okay";
+};
+
+&toddr_a {
+       status = "okay";
+};
+
+&toddr_b {
+       status = "okay";
+};
+
+&toddr_c {
+       status = "okay";
+};
+
+&tohdmitx {
+       status = "okay";
+};
+
 &uart_A {
        status = "okay";
        pinctrl-0 = <&uart_a_pins>, <&uart_a_cts_rts_pins>;
index 256ea03..7894a54 100644 (file)
@@ -5,11 +5,47 @@
  */
 
 #include "meson-g12-common.dtsi"
+#include <dt-bindings/clock/axg-audio-clkc.h>
 #include <dt-bindings/power/meson-sm1-power.h>
+#include <dt-bindings/reset/amlogic,meson-axg-audio-arb.h>
+#include <dt-bindings/reset/amlogic,meson-g12a-audio-reset.h>
 
 / {
        compatible = "amlogic,sm1";
 
+       tdmif_a: audio-controller-0 {
+               compatible = "amlogic,axg-tdm-iface";
+               #sound-dai-cells = <0>;
+               sound-name-prefix = "TDM_A";
+               clocks = <&clkc_audio AUD_CLKID_MST_A_MCLK>,
+                        <&clkc_audio AUD_CLKID_MST_A_SCLK>,
+                        <&clkc_audio AUD_CLKID_MST_A_LRCLK>;
+               clock-names = "mclk", "sclk", "lrclk";
+               status = "disabled";
+       };
+
+       tdmif_b: audio-controller-1 {
+               compatible = "amlogic,axg-tdm-iface";
+               #sound-dai-cells = <0>;
+               sound-name-prefix = "TDM_B";
+               clocks = <&clkc_audio AUD_CLKID_MST_B_MCLK>,
+                        <&clkc_audio AUD_CLKID_MST_B_SCLK>,
+                        <&clkc_audio AUD_CLKID_MST_B_LRCLK>;
+               clock-names = "mclk", "sclk", "lrclk";
+               status = "disabled";
+       };
+
+       tdmif_c: audio-controller-2 {
+               compatible = "amlogic,axg-tdm-iface";
+               #sound-dai-cells = <0>;
+               sound-name-prefix = "TDM_C";
+               clocks = <&clkc_audio AUD_CLKID_MST_C_MCLK>,
+                        <&clkc_audio AUD_CLKID_MST_C_SCLK>,
+                        <&clkc_audio AUD_CLKID_MST_C_LRCLK>;
+               clock-names = "mclk", "sclk", "lrclk";
+               status = "disabled";
+       };
+
        cpus {
                #address-cells = <0x2>;
                #size-cells = <0x0>;
        };
 };
 
+&apb {
+       audio: bus@60000 {
+               compatible = "simple-bus";
+               reg = <0x0 0x60000 0x0 0x1000>;
+               #address-cells = <2>;
+               #size-cells = <2>;
+               ranges = <0x0 0x0 0x0 0x60000 0x0 0x1000>;
+
+               clkc_audio: clock-controller@0 {
+                       status = "disabled";
+                       compatible = "amlogic,sm1-audio-clkc";
+                       reg = <0x0 0x0 0x0 0xb4>;
+                       #clock-cells = <1>;
+                       #reset-cells = <1>;
+
+                       clocks = <&clkc CLKID_AUDIO>,
+                                <&clkc CLKID_MPLL0>,
+                                <&clkc CLKID_MPLL1>,
+                                <&clkc CLKID_MPLL2>,
+                                <&clkc CLKID_MPLL3>,
+                                <&clkc CLKID_HIFI_PLL>,
+                                <&clkc CLKID_FCLK_DIV3>,
+                                <&clkc CLKID_FCLK_DIV4>,
+                                <&clkc CLKID_FCLK_DIV5>;
+                       clock-names = "pclk",
+                                     "mst_in0",
+                                     "mst_in1",
+                                     "mst_in2",
+                                     "mst_in3",
+                                     "mst_in4",
+                                     "mst_in5",
+                                     "mst_in6",
+                                     "mst_in7";
+
+                       resets = <&reset RESET_AUDIO>;
+               };
+
+               toddr_a: audio-controller@100 {
+                       compatible = "amlogic,sm1-toddr",
+                                    "amlogic,axg-toddr";
+                       reg = <0x0 0x100 0x0 0x2c>;
+                       #sound-dai-cells = <0>;
+                       sound-name-prefix = "TODDR_A";
+                       interrupts = <GIC_SPI 148 IRQ_TYPE_EDGE_RISING>;
+                       clocks = <&clkc_audio AUD_CLKID_TODDR_A>;
+                       resets = <&arb AXG_ARB_TODDR_A>,
+                                <&clkc_audio AUD_RESET_TODDR_A>;
+                       reset-names = "arb", "rst";
+                       status = "disabled";
+               };
+
+               toddr_b: audio-controller@140 {
+                       compatible = "amlogic,sm1-toddr",
+                                    "amlogic,axg-toddr";
+                       reg = <0x0 0x140 0x0 0x2c>;
+                       #sound-dai-cells = <0>;
+                       sound-name-prefix = "TODDR_B";
+                       interrupts = <GIC_SPI 149 IRQ_TYPE_EDGE_RISING>;
+                       clocks = <&clkc_audio AUD_CLKID_TODDR_B>;
+                       resets = <&arb AXG_ARB_TODDR_B>,
+                                <&clkc_audio AUD_RESET_TODDR_B>;
+                       reset-names = "arb", "rst";
+                       status = "disabled";
+               };
+
+               toddr_c: audio-controller@180 {
+                       compatible = "amlogic,sm1-toddr",
+                                    "amlogic,axg-toddr";
+                       reg = <0x0 0x180 0x0 0x2c>;
+                       #sound-dai-cells = <0>;
+                       sound-name-prefix = "TODDR_C";
+                       interrupts = <GIC_SPI 150 IRQ_TYPE_EDGE_RISING>;
+                       clocks = <&clkc_audio AUD_CLKID_TODDR_C>;
+                       resets = <&arb AXG_ARB_TODDR_C>,
+                                <&clkc_audio AUD_RESET_TODDR_C>;
+                       reset-names = "arb", "rst";
+                       status = "disabled";
+               };
+
+               frddr_a: audio-controller@1c0 {
+                       compatible = "amlogic,sm1-frddr",
+                                    "amlogic,axg-frddr";
+                       reg = <0x0 0x1c0 0x0 0x2c>;
+                       #sound-dai-cells = <0>;
+                       sound-name-prefix = "FRDDR_A";
+                       interrupts = <GIC_SPI 152 IRQ_TYPE_EDGE_RISING>;
+                       clocks = <&clkc_audio AUD_CLKID_FRDDR_A>;
+                       resets = <&arb AXG_ARB_FRDDR_A>,
+                                <&clkc_audio AUD_RESET_FRDDR_A>;
+                       reset-names = "arb", "rst";
+                       status = "disabled";
+               };
+
+               frddr_b: audio-controller@200 {
+                       compatible = "amlogic,sm1-frddr",
+                                    "amlogic,axg-frddr";
+                       reg = <0x0 0x200 0x0 0x2c>;
+                       #sound-dai-cells = <0>;
+                       sound-name-prefix = "FRDDR_B";
+                       interrupts = <GIC_SPI 153 IRQ_TYPE_EDGE_RISING>;
+                       clocks = <&clkc_audio AUD_CLKID_FRDDR_B>;
+                       resets = <&arb AXG_ARB_FRDDR_B>,
+                                <&clkc_audio AUD_RESET_FRDDR_B>;
+                       reset-names = "arb", "rst";
+                       status = "disabled";
+               };
+
+               frddr_c: audio-controller@240 {
+                       compatible = "amlogic,sm1-frddr",
+                                    "amlogic,axg-frddr";
+                       reg = <0x0 0x240 0x0 0x2c>;
+                       #sound-dai-cells = <0>;
+                       sound-name-prefix = "FRDDR_C";
+                       interrupts = <GIC_SPI 154 IRQ_TYPE_EDGE_RISING>;
+                       clocks = <&clkc_audio AUD_CLKID_FRDDR_C>;
+                       resets = <&arb AXG_ARB_FRDDR_C>,
+                                <&clkc_audio AUD_RESET_FRDDR_C>;
+                       reset-names = "arb", "rst";
+                       status = "disabled";
+               };
+
+               arb: reset-controller@280 {
+                       status = "disabled";
+                       compatible = "amlogic,meson-sm1-audio-arb";
+                       reg = <0x0 0x280 0x0 0x4>;
+                       #reset-cells = <1>;
+                       clocks = <&clkc_audio AUD_CLKID_DDR_ARB>;
+               };
+
+               tdmin_a: audio-controller@300 {
+                       compatible = "amlogic,sm1-tdmin",
+                                    "amlogic,axg-tdmin";
+                       reg = <0x0 0x300 0x0 0x40>;
+                       sound-name-prefix = "TDMIN_A";
+                       resets = <&clkc_audio AUD_RESET_TDMIN_A>;
+                       clocks = <&clkc_audio AUD_CLKID_TDMIN_A>,
+                                <&clkc_audio AUD_CLKID_TDMIN_A_SCLK>,
+                                <&clkc_audio AUD_CLKID_TDMIN_A_SCLK_SEL>,
+                                <&clkc_audio AUD_CLKID_TDMIN_A_LRCLK>,
+                                <&clkc_audio AUD_CLKID_TDMIN_A_LRCLK>;
+                       clock-names = "pclk", "sclk", "sclk_sel",
+                                     "lrclk", "lrclk_sel";
+                       status = "disabled";
+               };
+
+               tdmin_b: audio-controller@340 {
+                       compatible = "amlogic,sm1-tdmin",
+                                    "amlogic,axg-tdmin";
+                       reg = <0x0 0x340 0x0 0x40>;
+                       sound-name-prefix = "TDMIN_B";
+                       resets = <&clkc_audio AUD_RESET_TDMIN_B>;
+                       clocks = <&clkc_audio AUD_CLKID_TDMIN_B>,
+                                <&clkc_audio AUD_CLKID_TDMIN_B_SCLK>,
+                                <&clkc_audio AUD_CLKID_TDMIN_B_SCLK_SEL>,
+                                <&clkc_audio AUD_CLKID_TDMIN_B_LRCLK>,
+                                <&clkc_audio AUD_CLKID_TDMIN_B_LRCLK>;
+                       clock-names = "pclk", "sclk", "sclk_sel",
+                                     "lrclk", "lrclk_sel";
+                       status = "disabled";
+               };
+
+               tdmin_c: audio-controller@380 {
+                       compatible = "amlogic,sm1-tdmin",
+                                    "amlogic,axg-tdmin";
+                       reg = <0x0 0x380 0x0 0x40>;
+                       sound-name-prefix = "TDMIN_C";
+                       resets = <&clkc_audio AUD_RESET_TDMIN_C>;
+                       clocks = <&clkc_audio AUD_CLKID_TDMIN_C>,
+                                <&clkc_audio AUD_CLKID_TDMIN_C_SCLK>,
+                                <&clkc_audio AUD_CLKID_TDMIN_C_SCLK_SEL>,
+                                <&clkc_audio AUD_CLKID_TDMIN_C_LRCLK>,
+                                <&clkc_audio AUD_CLKID_TDMIN_C_LRCLK>;
+                       clock-names = "pclk", "sclk", "sclk_sel",
+                                     "lrclk", "lrclk_sel";
+                       status = "disabled";
+               };
+
+               tdmin_lb: audio-controller@3c0 {
+                       compatible = "amlogic,sm1-tdmin",
+                                    "amlogic,axg-tdmin";
+                       reg = <0x0 0x3c0 0x0 0x40>;
+                       sound-name-prefix = "TDMIN_LB";
+                       resets = <&clkc_audio AUD_RESET_TDMIN_LB>;
+                       clocks = <&clkc_audio AUD_CLKID_TDMIN_LB>,
+                                <&clkc_audio AUD_CLKID_TDMIN_LB_SCLK>,
+                                <&clkc_audio AUD_CLKID_TDMIN_LB_SCLK_SEL>,
+                                <&clkc_audio AUD_CLKID_TDMIN_LB_LRCLK>,
+                                <&clkc_audio AUD_CLKID_TDMIN_LB_LRCLK>;
+                       clock-names = "pclk", "sclk", "sclk_sel",
+                                     "lrclk", "lrclk_sel";
+                       status = "disabled";
+               };
+
+               tdmout_a: audio-controller@500 {
+                       compatible = "amlogic,sm1-tdmout";
+                       reg = <0x0 0x500 0x0 0x40>;
+                       sound-name-prefix = "TDMOUT_A";
+                       resets = <&clkc_audio AUD_RESET_TDMOUT_A>;
+                       clocks = <&clkc_audio AUD_CLKID_TDMOUT_A>,
+                                <&clkc_audio AUD_CLKID_TDMOUT_A_SCLK>,
+                                <&clkc_audio AUD_CLKID_TDMOUT_A_SCLK_SEL>,
+                                <&clkc_audio AUD_CLKID_TDMOUT_A_LRCLK>,
+                                <&clkc_audio AUD_CLKID_TDMOUT_A_LRCLK>;
+                       clock-names = "pclk", "sclk", "sclk_sel",
+                                     "lrclk", "lrclk_sel";
+                       status = "disabled";
+               };
+
+               tdmout_b: audio-controller@540 {
+                       compatible = "amlogic,sm1-tdmout";
+                       reg = <0x0 0x540 0x0 0x40>;
+                       sound-name-prefix = "TDMOUT_B";
+                       resets = <&clkc_audio AUD_RESET_TDMOUT_B>;
+                       clocks = <&clkc_audio AUD_CLKID_TDMOUT_B>,
+                                <&clkc_audio AUD_CLKID_TDMOUT_B_SCLK>,
+                                <&clkc_audio AUD_CLKID_TDMOUT_B_SCLK_SEL>,
+                                <&clkc_audio AUD_CLKID_TDMOUT_B_LRCLK>,
+                                <&clkc_audio AUD_CLKID_TDMOUT_B_LRCLK>;
+                       clock-names = "pclk", "sclk", "sclk_sel",
+                                     "lrclk", "lrclk_sel";
+                       status = "disabled";
+               };
+
+               tdmout_c: audio-controller@580 {
+                       compatible = "amlogic,sm1-tdmout";
+                       reg = <0x0 0x580 0x0 0x40>;
+                       sound-name-prefix = "TDMOUT_C";
+                       resets = <&clkc_audio AUD_RESET_TDMOUT_C>;
+                       clocks = <&clkc_audio AUD_CLKID_TDMOUT_C>,
+                                <&clkc_audio AUD_CLKID_TDMOUT_C_SCLK>,
+                                <&clkc_audio AUD_CLKID_TDMOUT_C_SCLK_SEL>,
+                                <&clkc_audio AUD_CLKID_TDMOUT_C_LRCLK>,
+                                <&clkc_audio AUD_CLKID_TDMOUT_C_LRCLK>;
+                       clock-names = "pclk", "sclk", "sclk_sel",
+                                     "lrclk", "lrclk_sel";
+                       status = "disabled";
+               };
+
+               tohdmitx: audio-controller@744 {
+                       compatible = "amlogic,sm1-tohdmitx",
+                                    "amlogic,g12a-tohdmitx";
+                       reg = <0x0 0x744 0x0 0x4>;
+                       #sound-dai-cells = <1>;
+                       sound-name-prefix = "TOHDMITX";
+                       resets = <&clkc_audio AUD_RESET_TOHDMITX>;
+                       status = "disabled";
+               };
+
+               toddr_d: audio-controller@840 {
+                       compatible = "amlogic,sm1-toddr",
+                                    "amlogic,axg-toddr";
+                       reg = <0x0 0x840 0x0 0x2c>;
+                       #sound-dai-cells = <0>;
+                       sound-name-prefix = "TODDR_D";
+                       interrupts = <GIC_SPI 49 IRQ_TYPE_EDGE_RISING>;
+                       clocks = <&clkc_audio AUD_CLKID_TODDR_D>;
+                       resets = <&arb AXG_ARB_TODDR_D>,
+                                <&clkc_audio AUD_RESET_TODDR_D>;
+                       reset-names = "arb", "rst";
+                       status = "disabled";
+               };
+
+               frddr_d: audio-controller@880 {
+                        compatible = "amlogic,sm1-frddr",
+                                     "amlogic,axg-frddr";
+                       reg = <0x0 0x880 0x0 0x2c>;
+                       #sound-dai-cells = <0>;
+                       sound-name-prefix = "FRDDR_D";
+                       interrupts = <GIC_SPI 50 IRQ_TYPE_EDGE_RISING>;
+                       clocks = <&clkc_audio AUD_CLKID_FRDDR_D>;
+                       resets = <&arb AXG_ARB_FRDDR_D>,
+                                <&clkc_audio AUD_RESET_FRDDR_D>;
+                       reset-names = "arb", "rst";
+                       status = "disabled";
+               };
+       };
+
+       pdm: audio-controller@61000 {
+               compatible = "amlogic,sm1-pdm",
+                            "amlogic,axg-pdm";
+               reg = <0x0 0x61000 0x0 0x34>;
+               #sound-dai-cells = <0>;
+               sound-name-prefix = "PDM";
+               clocks = <&clkc_audio AUD_CLKID_PDM>,
+                        <&clkc_audio AUD_CLKID_PDM_DCLK>,
+                        <&clkc_audio AUD_CLKID_PDM_SYSCLK>;
+               clock-names = "pclk", "dclk", "sysclk";
+               status = "disabled";
+       };
+};
+
 &cecb_AO {
        compatible = "amlogic,meson-sm1-ao-cec";
 };
        power-domains = <&pwrc PWRC_SM1_ETH_ID>;
 };
 
+&gpio_intc {
+       compatible = "amlogic,meson-sm1-gpio-intc",
+                    "amlogic,meson-gpio-intc";
+};
+
 &pcie {
        power-domains = <&pwrc PWRC_SM1_PCIE_ID>;
 };
        compatible = "amlogic,meson-sm1-pwrc";
 };
 
+&simplefb_cvbs {
+       power-domains = <&pwrc PWRC_SM1_VPU_ID>;
+};
+
+&simplefb_hdmi {
+       power-domains = <&pwrc PWRC_SM1_VPU_ID>;
+};
+
 &vpu {
        power-domains = <&pwrc PWRC_SM1_VPU_ID>;
 };
index 26a039a..9e3e8ce 100644 (file)
                clock-names = "apb_pclk";
        };
 
+       smmu_gpu: iommu@2b400000 {
+               compatible = "arm,mmu-400", "arm,smmu-v1";
+               reg = <0x0 0x2b400000 0x0 0x10000>;
+               interrupts = <GIC_SPI 38 IRQ_TYPE_LEVEL_HIGH>,
+                            <GIC_SPI 38 IRQ_TYPE_LEVEL_HIGH>;
+               #iommu-cells = <1>;
+               #global-interrupts = <1>;
+               power-domains = <&scpi_devpd 1>;
+               dma-coherent;
+               status = "disabled";
+       };
+
        smmu_pcie: iommu@2b500000 {
                compatible = "arm,mmu-401", "arm,smmu-v1";
                reg = <0x0 0x2b500000 0x0 0x10000>;
                };
        };
 
+       gpu: gpu@2d000000 {
+               compatible = "arm,juno-mali", "arm,mali-t624";
+               reg = <0 0x2d000000 0 0x10000>;
+               interrupts = <GIC_SPI 32 IRQ_TYPE_LEVEL_HIGH>,
+                            <GIC_SPI 33 IRQ_TYPE_LEVEL_HIGH>,
+                            <GIC_SPI 34 IRQ_TYPE_LEVEL_HIGH>;
+               interrupt-names = "gpu", "job", "mmu";
+               clocks = <&scpi_dvfs 2>;
+               power-domains = <&scpi_devpd 1>;
+               dma-coherent;
+               /* The SMMU is only really of interest to bare-metal hypervisors */
+               /* iommus = <&smmu_gpu 0>; */
+               status = "disabled";
+       };
+
        sram: sram@2e000000 {
                compatible = "arm,juno-sram-ns", "mmio-sram";
                reg = <0x0 0x2e000000 0x0 0x8000>;
index d1d31cc..cb7de8d 100644 (file)
@@ -1,5 +1,6 @@
 # SPDX-License-Identifier: GPL-2.0
-dtb-$(CONFIG_ARCH_BCM2835) += bcm2837-rpi-3-a-plus.dtb \
+dtb-$(CONFIG_ARCH_BCM2835) += bcm2711-rpi-4-b.dtb \
+                             bcm2837-rpi-3-a-plus.dtb \
                              bcm2837-rpi-3-b.dtb \
                              bcm2837-rpi-3-b-plus.dtb \
                              bcm2837-rpi-cm3-io3.dtb
diff --git a/arch/arm64/boot/dts/broadcom/bcm2711-rpi-4-b.dts b/arch/arm64/boot/dts/broadcom/bcm2711-rpi-4-b.dts
new file mode 100644 (file)
index 0000000..d24c536
--- /dev/null
@@ -0,0 +1,2 @@
+// SPDX-License-Identifier: GPL-2.0
+#include "arm/bcm2711-rpi-4-b.dts"
index a76f620..6721966 100644 (file)
@@ -18,8 +18,8 @@
 
 / {
        compatible = "samsung,exynos5433";
-       #address-cells = <1>;
-       #size-cells = <1>;
+       #address-cells = <2>;
+       #size-cells = <2>;
 
        interrupt-parent = <&gic>;
 
                };
        };
 
-       gpu: gpu@14ac0000 {
-               compatible = "samsung,exynos5433-mali", "arm,mali-t760";
-               reg = <0x14ac0000 0x5000>;
-               interrupts = <GIC_SPI 282 IRQ_TYPE_LEVEL_HIGH>,
-                            <GIC_SPI 283 IRQ_TYPE_LEVEL_HIGH>,
-                            <GIC_SPI 281 IRQ_TYPE_LEVEL_HIGH>;
-               interrupt-names = "job", "mmu", "gpu";
-               clocks = <&cmu_g3d CLK_ACLK_G3D>;
-               clock-names = "core";
-               power-domains = <&pd_g3d>;
-               operating-points-v2 = <&gpu_opp_table>;
-               status = "disabled";
-
-               gpu_opp_table: opp_table {
-                       compatible = "operating-points-v2";
-
-                       opp-160000000 {
-                               opp-hz = /bits/ 64 <160000000>;
-                               opp-microvolt = <1000000>;
-                       };
-                       opp-267000000 {
-                               opp-hz = /bits/ 64 <267000000>;
-                               opp-microvolt = <1000000>;
-                       };
-                       opp-350000000 {
-                               opp-hz = /bits/ 64 <350000000>;
-                               opp-microvolt = <1025000>;
-                       };
-                       opp-420000000 {
-                               opp-hz = /bits/ 64 <420000000>;
-                               opp-microvolt = <1025000>;
-                       };
-                       opp-500000000 {
-                               opp-hz = /bits/ 64 <500000000>;
-                               opp-microvolt = <1075000>;
-                       };
-                       opp-550000000 {
-                               opp-hz = /bits/ 64 <550000000>;
-                               opp-microvolt = <1125000>;
-                       };
-                       opp-600000000 {
-                               opp-hz = /bits/ 64 <600000000>;
-                               opp-microvolt = <1150000>;
-                       };
-                       opp-700000000 {
-                               opp-hz = /bits/ 64 <700000000>;
-                               opp-microvolt = <1150000>;
-                       };
-               };
-       };
-
        psci {
                compatible = "arm,psci";
                method = "smc";
                compatible = "simple-bus";
                #address-cells = <1>;
                #size-cells = <1>;
-               ranges;
+               ranges = <0x0 0x0 0x0 0x18000000>;
 
                chipid@10000000 {
                        compatible = "samsung,exynos4210-chipid";
                        status = "disabled";
                };
 
-               mct@101c0000 {
+               timer@101c0000 {
                        compatible = "samsung,exynos4210-mct";
                        reg = <0x101c0000 0x800>;
                        interrupts = <GIC_SPI 102 IRQ_TYPE_LEVEL_HIGH>,
                        power-domains = <&pd_gscl>;
                };
 
+               gpu: gpu@14ac0000 {
+                       compatible = "samsung,exynos5433-mali", "arm,mali-t760";
+                       reg = <0x14ac0000 0x5000>;
+                       interrupts = <GIC_SPI 282 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 283 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 281 IRQ_TYPE_LEVEL_HIGH>;
+                       interrupt-names = "job", "mmu", "gpu";
+                       clocks = <&cmu_g3d CLK_ACLK_G3D>;
+                       clock-names = "core";
+                       power-domains = <&pd_g3d>;
+                       operating-points-v2 = <&gpu_opp_table>;
+                       status = "disabled";
+
+                       gpu_opp_table: opp_table {
+                               compatible = "operating-points-v2";
+
+                               opp-160000000 {
+                                       opp-hz = /bits/ 64 <160000000>;
+                                       opp-microvolt = <1000000>;
+                               };
+                               opp-267000000 {
+                                       opp-hz = /bits/ 64 <267000000>;
+                                       opp-microvolt = <1000000>;
+                               };
+                               opp-350000000 {
+                                       opp-hz = /bits/ 64 <350000000>;
+                                       opp-microvolt = <1025000>;
+                               };
+                               opp-420000000 {
+                                       opp-hz = /bits/ 64 <420000000>;
+                                       opp-microvolt = <1025000>;
+                               };
+                               opp-500000000 {
+                                       opp-hz = /bits/ 64 <500000000>;
+                                       opp-microvolt = <1075000>;
+                               };
+                               opp-550000000 {
+                                       opp-hz = /bits/ 64 <550000000>;
+                                       opp-microvolt = <1125000>;
+                               };
+                               opp-600000000 {
+                                       opp-hz = /bits/ 64 <600000000>;
+                                       opp-microvolt = <1150000>;
+                               };
+                               opp-700000000 {
+                                       opp-hz = /bits/ 64 <700000000>;
+                                       opp-microvolt = <1150000>;
+                               };
+                       };
+               };
+
                scaler_0: scaler@15000000 {
                        compatible = "samsung,exynos5433-scaler";
                        reg = <0x15000000 0x1294>;
                        compatible = "samsung,exynos-sysmmu";
                        reg = <0x13a00000 0x1000>;
                        interrupts = <GIC_SPI 192 IRQ_TYPE_LEVEL_HIGH>;
-                       clock-names = "pclk", "aclk";
-                       clocks = <&cmu_disp CLK_PCLK_SMMU_DECON0X>,
-                               <&cmu_disp CLK_ACLK_SMMU_DECON0X>;
+                       clock-names = "aclk", "pclk";
+                       clocks = <&cmu_disp CLK_ACLK_SMMU_DECON0X>,
+                               <&cmu_disp CLK_PCLK_SMMU_DECON0X>;
                        power-domains = <&pd_disp>;
                        #iommu-cells = <0>;
                };
                        compatible = "samsung,exynos-sysmmu";
                        reg = <0x13a10000 0x1000>;
                        interrupts = <GIC_SPI 194 IRQ_TYPE_LEVEL_HIGH>;
-                       clock-names = "pclk", "aclk";
-                       clocks = <&cmu_disp CLK_PCLK_SMMU_DECON1X>,
-                               <&cmu_disp CLK_ACLK_SMMU_DECON1X>;
+                       clock-names = "aclk", "pclk";
+                       clocks = <&cmu_disp CLK_ACLK_SMMU_DECON1X>,
+                               <&cmu_disp CLK_PCLK_SMMU_DECON1X>;
                        #iommu-cells = <0>;
                        power-domains = <&pd_disp>;
                };
                        compatible = "samsung,exynos-sysmmu";
                        reg = <0x13a20000 0x1000>;
                        interrupts = <GIC_SPI 214 IRQ_TYPE_LEVEL_HIGH>;
-                       clock-names = "pclk", "aclk";
-                       clocks = <&cmu_disp CLK_PCLK_SMMU_TV0X>,
-                               <&cmu_disp CLK_ACLK_SMMU_TV0X>;
+                       clock-names = "aclk", "pclk";
+                       clocks = <&cmu_disp CLK_ACLK_SMMU_TV0X>,
+                               <&cmu_disp CLK_PCLK_SMMU_TV0X>;
                        #iommu-cells = <0>;
                        power-domains = <&pd_disp>;
                };
                        compatible = "samsung,exynos-sysmmu";
                        reg = <0x13a30000 0x1000>;
                        interrupts = <GIC_SPI 216 IRQ_TYPE_LEVEL_HIGH>;
-                       clock-names = "pclk", "aclk";
-                       clocks = <&cmu_disp CLK_PCLK_SMMU_TV1X>,
-                               <&cmu_disp CLK_ACLK_SMMU_TV1X>;
+                       clock-names = "aclk", "pclk";
+                       clocks = <&cmu_disp CLK_ACLK_SMMU_TV1X>,
+                               <&cmu_disp CLK_PCLK_SMMU_TV1X>;
                        #iommu-cells = <0>;
                        power-domains = <&pd_disp>;
                };
                        compatible = "samsung,exynos-sysmmu";
                        reg = <0x15040000 0x1000>;
                        interrupts = <GIC_SPI 404 IRQ_TYPE_LEVEL_HIGH>;
-                       clock-names = "pclk", "aclk";
-                       clocks = <&cmu_mscl CLK_PCLK_SMMU_M2MSCALER0>,
-                                <&cmu_mscl CLK_ACLK_SMMU_M2MSCALER0>;
+                       clock-names = "aclk", "pclk";
+                       clocks = <&cmu_mscl CLK_ACLK_SMMU_M2MSCALER0>,
+                               <&cmu_mscl CLK_PCLK_SMMU_M2MSCALER0>;
                        #iommu-cells = <0>;
                        power-domains = <&pd_mscl>;
                };
                        compatible = "samsung,exynos-sysmmu";
                        reg = <0x15050000 0x1000>;
                        interrupts = <GIC_SPI 406 IRQ_TYPE_LEVEL_HIGH>;
-                       clock-names = "pclk", "aclk";
-                       clocks = <&cmu_mscl CLK_PCLK_SMMU_M2MSCALER1>,
-                                <&cmu_mscl CLK_ACLK_SMMU_M2MSCALER1>;
+                       clock-names = "aclk", "pclk";
+                       clocks = <&cmu_mscl CLK_ACLK_SMMU_M2MSCALER1>,
+                               <&cmu_mscl CLK_PCLK_SMMU_M2MSCALER1>;
                        #iommu-cells = <0>;
                        power-domains = <&pd_mscl>;
                };
                        compatible = "samsung,exynos-sysmmu";
                        reg = <0x15060000 0x1000>;
                        interrupts = <GIC_SPI 408 IRQ_TYPE_LEVEL_HIGH>;
-                       clock-names = "pclk", "aclk";
-                       clocks = <&cmu_mscl CLK_PCLK_SMMU_JPEG>,
-                                <&cmu_mscl CLK_ACLK_SMMU_JPEG>;
+                       clock-names = "aclk", "pclk";
+                       clocks = <&cmu_mscl CLK_ACLK_SMMU_JPEG>,
+                               <&cmu_mscl CLK_PCLK_SMMU_JPEG>;
                        #iommu-cells = <0>;
                        power-domains = <&pd_mscl>;
                };
                        compatible = "samsung,exynos-sysmmu";
                        reg = <0x15200000 0x1000>;
                        interrupts = <GIC_SPI 352 IRQ_TYPE_LEVEL_HIGH>;
-                       clock-names = "pclk", "aclk";
-                       clocks = <&cmu_mfc CLK_PCLK_SMMU_MFC_0>,
-                                <&cmu_mfc CLK_ACLK_SMMU_MFC_0>;
+                       clock-names = "aclk", "pclk";
+                       clocks = <&cmu_mfc CLK_ACLK_SMMU_MFC_0>,
+                               <&cmu_mfc CLK_PCLK_SMMU_MFC_0>;
                        #iommu-cells = <0>;
                        power-domains = <&pd_mfc>;
                };
                        compatible = "samsung,exynos-sysmmu";
                        reg = <0x15210000 0x1000>;
                        interrupts = <GIC_SPI 354 IRQ_TYPE_LEVEL_HIGH>;
-                       clock-names = "pclk", "aclk";
-                       clocks = <&cmu_mfc CLK_PCLK_SMMU_MFC_1>,
-                                <&cmu_mfc CLK_ACLK_SMMU_MFC_1>;
+                       clock-names = "aclk", "pclk";
+                       clocks = <&cmu_mfc CLK_ACLK_SMMU_MFC_1>,
+                               <&cmu_mfc CLK_PCLK_SMMU_MFC_1>;
                        #iommu-cells = <0>;
                        power-domains = <&pd_mfc>;
                };
                i2s1: i2s@14d60000 {
                        compatible = "samsung,exynos7-i2s";
                        reg = <0x14d60000 0x100>;
-                       dmas = <&pdma0 31 &pdma0 30>;
+                       dmas = <&pdma0 31>, <&pdma0 30>;
                        dma-names = "tx", "rx";
                        interrupts = <GIC_SPI 435 IRQ_TYPE_LEVEL_HIGH>;
                        clocks = <&cmu_peric CLK_PCLK_I2S1>,
                        i2s0: i2s@11440000 {
                                compatible = "samsung,exynos7-i2s";
                                reg = <0x11440000 0x100>;
-                               dmas = <&adma 0 &adma 2>;
+                               dmas = <&adma 0>, <&adma 2>;
                                dma-names = "tx", "rx";
                                interrupts = <GIC_SPI 70 IRQ_TYPE_LEVEL_HIGH>;
                                #address-cells = <1>;
index bcb9d8c..3a00ef0 100644 (file)
@@ -12,8 +12,8 @@
 / {
        compatible = "samsung,exynos7";
        interrupt-parent = <&gic>;
-       #address-cells = <1>;
-       #size-cells = <1>;
+       #address-cells = <2>;
+       #size-cells = <2>;
 
        aliases {
                pinctrl0 = &pinctrl_alive;
                };
        };
 
-       gpu: gpu@14ac0000 {
-               compatible = "samsung,exynos5433-mali", "arm,mali-t760";
-               reg = <0x14ac0000 0x5000>;
-               interrupts = <GIC_SPI 241 IRQ_TYPE_LEVEL_HIGH>,
-                            <GIC_SPI 242 IRQ_TYPE_LEVEL_HIGH>,
-                            <GIC_SPI 240 IRQ_TYPE_LEVEL_HIGH>;
-               interrupt-names = "job", "mmu", "gpu";
-               status = "disabled";
-               /* TODO: operating points for DVFS, cooling device */
-       };
-
        psci {
                compatible = "arm,psci-0.2";
                method = "smc";
@@ -98,7 +87,7 @@
                compatible = "simple-bus";
                #address-cells = <1>;
                #size-cells = <1>;
-               ranges;
+               ranges = <0 0 0 0x18000000>;
 
                chipid@10000000 {
                        compatible = "samsung,exynos4210-chipid";
                        status = "disabled";
                };
 
+               gpu: gpu@14ac0000 {
+                       compatible = "samsung,exynos5433-mali", "arm,mali-t760";
+                       reg = <0x14ac0000 0x5000>;
+                       interrupts = <GIC_SPI 241 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 242 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 240 IRQ_TYPE_LEVEL_HIGH>;
+                       interrupt-names = "job", "mmu", "gpu";
+                       status = "disabled";
+                       /* TODO: operating points for DVFS, cooling device */
+               };
+
                mmc_0: mmc@15740000 {
                        compatible = "samsung,exynos7-dw-mshc-smu";
                        interrupts = <GIC_SPI 201 IRQ_TYPE_LEVEL_HIGH>;
index 93fce8f..38e344a 100644 (file)
@@ -22,6 +22,7 @@ dtb-$(CONFIG_ARCH_LAYERSCAPE) += fsl-lx2160a-qds.dtb
 dtb-$(CONFIG_ARCH_LAYERSCAPE) += fsl-lx2160a-rdb.dtb
 
 dtb-$(CONFIG_ARCH_MXC) += imx8mm-evk.dtb
+dtb-$(CONFIG_ARCH_MXC) += imx8mn-evk.dtb
 dtb-$(CONFIG_ARCH_MXC) += imx8mn-ddr4-evk.dtb
 dtb-$(CONFIG_ARCH_MXC) += imx8mq-evk.dtb
 dtb-$(CONFIG_ARCH_MXC) += imx8mq-hummingboard-pulse.dtb
@@ -31,4 +32,7 @@ dtb-$(CONFIG_ARCH_MXC) += imx8mq-pico-pi.dtb
 dtb-$(CONFIG_ARCH_MXC) += imx8mq-zii-ultra-rmb3.dtb
 dtb-$(CONFIG_ARCH_MXC) += imx8mq-zii-ultra-zest.dtb
 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) += s32v234-evb.dtb
index 078a501..5b9d4b3 100644 (file)
        };
 
        fpga@66 {
-               #address-cells = <1>;
-               #size-cells = <0>;
                compatible = "fsl,ls1028aqds-fpga", "fsl,fpga-qixis-i2c",
                             "simple-mfd";
                reg = <0x66>;
index 1a69221..9720a19 100644 (file)
 &sata {
        status = "okay";
 };
+
+&usb1 {
+       dr_mode = "otg";
+};
index 72b9a75..8e8a77e 100644 (file)
        dpclk: clock-controller@f1f0000 {
                compatible = "fsl,ls1028a-plldig";
                reg = <0x0 0xf1f0000 0x0 0xffff>;
-               #clock-cells = <1>;
-               clocks = <&osc_27m>;
-       };
-
-       aclk: clock-axi {
-               compatible = "fixed-clock";
                #clock-cells = <0>;
-               clock-frequency = <650000000>;
-               clock-output-names= "aclk";
-       };
-
-       pclk: clock-apb {
-               compatible = "fixed-clock";
-               #clock-cells = <0>;
-               clock-frequency = <650000000>;
-               clock-output-names= "pclk";
+               clocks = <&osc_27m>;
        };
 
        reboot {
                };
        };
 
+       thermal-zones {
+               core-cluster {
+                       polling-delay-passive = <1000>;
+                       polling-delay = <5000>;
+                       thermal-sensors = <&tmu 0>;
+
+                       trips {
+                               core_cluster_alert: core-cluster-alert {
+                                       temperature = <85000>;
+                                       hysteresis = <2000>;
+                                       type = "passive";
+                               };
+
+                               core_cluster_crit: core-cluster-crit {
+                                       temperature = <95000>;
+                                       hysteresis = <2000>;
+                                       type = "critical";
+                               };
+                       };
+
+                       cooling-maps {
+                               map0 {
+                                       trip = <&core_cluster_alert>;
+                                       cooling-device =
+                                               <&cpu0 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
+                                               <&cpu1 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>;
+                               };
+                       };
+               };
+       };
+
        soc: soc {
                compatible = "simple-bus";
                #address-cells = <2>;
                        status = "disabled";
                };
 
-               tmu: tmu@1f00000 {
+               tmu: tmu@1f80000 {
                        compatible = "fsl,qoriq-tmu";
                        reg = <0x0 0x1f80000 0x0 0x10000>;
                        interrupts = <0 23 0x4>;
                        #thermal-sensor-cells = <1>;
                };
 
-               thermal-zones {
-                       core-cluster {
-                               polling-delay-passive = <1000>;
-                               polling-delay = <5000>;
-                               thermal-sensors = <&tmu 0>;
-
-                               trips {
-                                       core_cluster_alert: core-cluster-alert {
-                                               temperature = <85000>;
-                                               hysteresis = <2000>;
-                                               type = "passive";
-                                       };
-
-                                       core_cluster_crit: core-cluster-crit {
-                                               temperature = <95000>;
-                                               hysteresis = <2000>;
-                                               type = "critical";
-                                       };
-                               };
-
-                               cooling-maps {
-                                       map0 {
-                                               trip = <&core_cluster_alert>;
-                                               cooling-device =
-                                                       <&cpu0 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
-                                                       <&cpu1 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>;
-                                       };
-                               };
-                       };
-               };
-
                pcie@1f0000000 { /* Integrated Endpoint Root Complex */
                        compatible = "pci-host-ecam-generic";
                        reg = <0x01 0xf0000000 0x0 0x100000>;
                interrupts = <0 222 IRQ_TYPE_LEVEL_HIGH>,
                             <0 223 IRQ_TYPE_LEVEL_HIGH>;
                interrupt-names = "DE", "SE";
-               clocks = <&dpclk 0>, <&aclk>, <&aclk>, <&pclk>;
+               clocks = <&dpclk>, <&clockgen 2 2>, <&clockgen 2 2>,
+                        <&clockgen 2 2>;
                clock-names = "pxlclk", "mclk", "aclk", "pclk";
                arm,malidp-output-port-lines = /bits/ 8 <8 8 8>;
                arm,malidp-arqos-value = <0xd000d000>;
index 6a6514d..0c742be 100644 (file)
        };
 };
 
+&usb1 {
+       dr_mode = "otg";
+};
+
 #include "fsl-ls1046-post.dtsi"
 
 &fman0 {
index 8e925df..90b1989 100644 (file)
@@ -95,5 +95,6 @@
 };
 
 &usb1 {
+       dr_mode = "otg";
        status = "okay";
 };
index b032f38..e883fe0 100644 (file)
@@ -6,6 +6,7 @@
 
 #include <dt-bindings/gpio/gpio.h>
 #include <dt-bindings/interrupt-controller/arm-gic.h>
+#include <dt-bindings/thermal/thermal.h>
 
 /memreserve/ 0x80000000 0x00010000;
 
@@ -20,7 +21,7 @@
                #size-cells = <0>;
 
                // 8 clusters having 2 Cortex-A72 cores each
-               cpu@0 {
+               cpu0: cpu@0 {
                        device_type = "cpu";
                        compatible = "arm,cortex-a72";
                        enable-method = "psci";
                        i-cache-sets = <192>;
                        next-level-cache = <&cluster0_l2>;
                        cpu-idle-states = <&cpu_pw15>;
+                       #cooling-cells = <2>;
                };
 
-               cpu@1 {
+               cpu1: cpu@1 {
                        device_type = "cpu";
                        compatible = "arm,cortex-a72";
                        enable-method = "psci";
                        i-cache-sets = <192>;
                        next-level-cache = <&cluster0_l2>;
                        cpu-idle-states = <&cpu_pw15>;
+                       #cooling-cells = <2>;
                };
 
-               cpu@100 {
+               cpu100: cpu@100 {
                        device_type = "cpu";
                        compatible = "arm,cortex-a72";
                        enable-method = "psci";
                        i-cache-sets = <192>;
                        next-level-cache = <&cluster1_l2>;
                        cpu-idle-states = <&cpu_pw15>;
+                       #cooling-cells = <2>;
                };
 
-               cpu@101 {
+               cpu101: cpu@101 {
                        device_type = "cpu";
                        compatible = "arm,cortex-a72";
                        enable-method = "psci";
                        i-cache-sets = <192>;
                        next-level-cache = <&cluster1_l2>;
                        cpu-idle-states = <&cpu_pw15>;
+                       #cooling-cells = <2>;
                };
 
-               cpu@200 {
+               cpu200: cpu@200 {
                        device_type = "cpu";
                        compatible = "arm,cortex-a72";
                        enable-method = "psci";
                        i-cache-sets = <192>;
                        next-level-cache = <&cluster2_l2>;
                        cpu-idle-states = <&cpu_pw15>;
+                       #cooling-cells = <2>;
                };
 
-               cpu@201 {
+               cpu201: cpu@201 {
                        device_type = "cpu";
                        compatible = "arm,cortex-a72";
                        enable-method = "psci";
                        i-cache-sets = <192>;
                        next-level-cache = <&cluster2_l2>;
                        cpu-idle-states = <&cpu_pw15>;
+                       #cooling-cells = <2>;
                };
 
-               cpu@300 {
+               cpu300: cpu@300 {
                        device_type = "cpu";
                        compatible = "arm,cortex-a72";
                        enable-method = "psci";
                        i-cache-sets = <192>;
                        next-level-cache = <&cluster3_l2>;
                        cpu-idle-states = <&cpu_pw15>;
+                       #cooling-cells = <2>;
                };
 
-               cpu@301 {
+               cpu301: cpu@301 {
                        device_type = "cpu";
                        compatible = "arm,cortex-a72";
                        enable-method = "psci";
                        i-cache-sets = <192>;
                        next-level-cache = <&cluster3_l2>;
                        cpu-idle-states = <&cpu_pw15>;
+                       #cooling-cells = <2>;
                };
 
-               cpu@400 {
+               cpu400: cpu@400 {
                        device_type = "cpu";
                        compatible = "arm,cortex-a72";
                        enable-method = "psci";
                        i-cache-sets = <192>;
                        next-level-cache = <&cluster4_l2>;
                        cpu-idle-states = <&cpu_pw15>;
+                       #cooling-cells = <2>;
                };
 
-               cpu@401 {
+               cpu401: cpu@401 {
                        device_type = "cpu";
                        compatible = "arm,cortex-a72";
                        enable-method = "psci";
                        i-cache-sets = <192>;
                        next-level-cache = <&cluster4_l2>;
                        cpu-idle-states = <&cpu_pw15>;
+                       #cooling-cells = <2>;
                };
 
-               cpu@500 {
+               cpu500: cpu@500 {
                        device_type = "cpu";
                        compatible = "arm,cortex-a72";
                        enable-method = "psci";
                        i-cache-sets = <192>;
                        next-level-cache = <&cluster5_l2>;
                        cpu-idle-states = <&cpu_pw15>;
+                       #cooling-cells = <2>;
                };
 
-               cpu@501 {
+               cpu501: cpu@501 {
                        device_type = "cpu";
                        compatible = "arm,cortex-a72";
                        enable-method = "psci";
                        i-cache-sets = <192>;
                        next-level-cache = <&cluster5_l2>;
                        cpu-idle-states = <&cpu_pw15>;
+                       #cooling-cells = <2>;
                };
 
-               cpu@600 {
+               cpu600: cpu@600 {
                        device_type = "cpu";
                        compatible = "arm,cortex-a72";
                        enable-method = "psci";
                        i-cache-sets = <192>;
                        next-level-cache = <&cluster6_l2>;
                        cpu-idle-states = <&cpu_pw15>;
+                       #cooling-cells = <2>;
                };
 
-               cpu@601 {
+               cpu601: cpu@601 {
                        device_type = "cpu";
                        compatible = "arm,cortex-a72";
                        enable-method = "psci";
                        i-cache-sets = <192>;
                        next-level-cache = <&cluster6_l2>;
                        cpu-idle-states = <&cpu_pw15>;
+                       #cooling-cells = <2>;
                };
 
-               cpu@700 {
+               cpu700: cpu@700 {
                        device_type = "cpu";
                        compatible = "arm,cortex-a72";
                        enable-method = "psci";
                        i-cache-sets = <192>;
                        next-level-cache = <&cluster7_l2>;
                        cpu-idle-states = <&cpu_pw15>;
+                       #cooling-cells = <2>;
                };
 
-               cpu@701 {
+               cpu701: cpu@701 {
                        device_type = "cpu";
                        compatible = "arm,cortex-a72";
                        enable-method = "psci";
                        i-cache-sets = <192>;
                        next-level-cache = <&cluster7_l2>;
                        cpu-idle-states = <&cpu_pw15>;
+                       #cooling-cells = <2>;
                };
 
                cluster0_l2: l2-cache0 {
                clock-output-names = "sysclk";
        };
 
+       thermal-zones {
+               core_thermal1: core-thermal1 {
+                       polling-delay-passive = <1000>;
+                       polling-delay = <5000>;
+                       thermal-sensors = <&tmu 0>;
+
+                       trips {
+                               core_cluster_alert: core-cluster-alert {
+                                       temperature = <85000>;
+                                       hysteresis = <2000>;
+                                       type = "passive";
+                               };
+
+                               core_cluster_crit: core-cluster-crit {
+                                       temperature = <95000>;
+                                       hysteresis = <2000>;
+                                       type = "critical";
+                               };
+                       };
+
+                       cooling-maps {
+                               map0 {
+                                       trip = <&core_cluster_alert>;
+                                       cooling-device =
+                                               <&cpu0 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
+                                               <&cpu1 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
+                                               <&cpu100 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
+                                               <&cpu101 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
+                                               <&cpu200 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
+                                               <&cpu201 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
+                                               <&cpu300 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
+                                               <&cpu301 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
+                                               <&cpu400 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
+                                               <&cpu401 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
+                                               <&cpu500 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
+                                               <&cpu501 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
+                                               <&cpu600 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
+                                               <&cpu601 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
+                                               <&cpu700 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
+                                               <&cpu701 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>;
+                               };
+                       };
+               };
+       };
+
        soc {
                compatible = "simple-bus";
                #address-cells = <2>;
                        little-endian;
                };
 
+               tmu: tmu@1f80000 {
+                       compatible = "fsl,qoriq-tmu";
+                       reg = <0x0 0x1f80000 0x0 0x10000>;
+                       interrupts = <GIC_SPI 23 IRQ_TYPE_LEVEL_HIGH>;
+                       fsl,tmu-range = <0x800000e6 0x8001017d>;
+                       fsl,tmu-calibration =
+                               /* Calibration data group 1 */
+                               <0x00000000 0x00000035
+                               /* Calibration data group 2 */
+                               0x00010001 0x00000154>;
+                       little-endian;
+                       #thermal-sensor-cells = <1>;
+               };
+
                i2c0: i2c@2000000 {
                        compatible = "fsl,vf610-i2c";
                        #address-cells = <1>;
                        reg = <0x0 0x2140000 0x0 0x10000>;
                        interrupts = <0 28 0x4>; /* Level high type */
                        clocks = <&clockgen 4 1>;
+                       dma-coherent;
                        voltage-ranges = <1800 1800 3300 3300>;
                        sdhci,auto-cmd12;
                        little-endian;
                        reg = <0x0 0x2150000 0x0 0x10000>;
                        interrupts = <0 63 0x4>; /* Level high type */
                        clocks = <&clockgen 4 1>;
+                       dma-coherent;
                        voltage-ranges = <1800 1800 3300 3300>;
                        sdhci,auto-cmd12;
                        broken-cd;
index f7a15f3..28ab17a 100644 (file)
@@ -62,6 +62,8 @@
 
                cpudai: simple-audio-card,cpu {
                        sound-dai = <&sai3>;
+                       dai-tdm-slot-num = <2>;
+                       dai-tdm-slot-width = <32>;
                };
 
                simple-audio-card,codec {
        };
 };
 
-&sai3 {
-       pinctrl-names = "default";
-       pinctrl-0 = <&pinctrl_sai3>;
-       assigned-clocks = <&clk IMX8MM_CLK_SAI3>;
-       assigned-clock-parents = <&clk IMX8MM_AUDIO_PLL1_OUT>;
-       assigned-clock-rates = <24576000>;
-       status = "okay";
-};
-
-&snvs_pwrkey {
-       status = "okay";
-};
-
-&uart2 { /* console */
-       pinctrl-names = "default";
-       pinctrl-0 = <&pinctrl_uart2>;
-       status = "okay";
-};
-
-&usbotg1 {
-       dr_mode = "otg";
-       hnp-disable;
-       srp-disable;
-       adp-disable;
-       usb-role-switch;
-       status = "okay";
-
-       port {
-               usb1_drd_sw: endpoint {
-                       remote-endpoint = <&typec1_dr_sw>;
-               };
-       };
-};
-
-&usdhc2 {
-       pinctrl-names = "default", "state_100mhz", "state_200mhz";
-       pinctrl-0 = <&pinctrl_usdhc2>, <&pinctrl_usdhc2_gpio>;
-       pinctrl-1 = <&pinctrl_usdhc2_100mhz>, <&pinctrl_usdhc2_gpio>;
-       pinctrl-2 = <&pinctrl_usdhc2_200mhz>, <&pinctrl_usdhc2_gpio>;
-       cd-gpios = <&gpio1 15 GPIO_ACTIVE_LOW>;
-       bus-width = <4>;
-       vmmc-supply = <&reg_usdhc2_vmmc>;
-       status = "okay";
-};
-
-&usdhc3 {
-       pinctrl-names = "default", "state_100mhz", "state_200mhz";
-       pinctrl-0 = <&pinctrl_usdhc3>;
-       pinctrl-1 = <&pinctrl_usdhc3_100mhz>;
-       pinctrl-2 = <&pinctrl_usdhc3_200mhz>;
-       bus-width = <8>;
-       non-removable;
-       status = "okay";
-};
-
-&wdog1 {
-       pinctrl-names = "default";
-       pinctrl-0 = <&pinctrl_wdog>;
-       fsl,ext-reset-output;
-       status = "okay";
-};
-
 &i2c1 {
        clock-frequency = <400000>;
        pinctrl-names = "default";
        };
 };
 
+&i2c3 {
+       clock-frequency = <400000>;
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_i2c3>;
+       status = "okay";
+
+       pca6416: gpio@20 {
+               compatible = "ti,tca6416";
+               reg = <0x20>;
+               gpio-controller;
+               #gpio-cells = <2>;
+       };
+};
+
+&sai3 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_sai3>;
+       assigned-clocks = <&clk IMX8MM_CLK_SAI3>;
+       assigned-clock-parents = <&clk IMX8MM_AUDIO_PLL1_OUT>;
+       assigned-clock-rates = <24576000>;
+       status = "okay";
+};
+
+&snvs_pwrkey {
+       status = "okay";
+};
+
+&uart2 { /* console */
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_uart2>;
+       status = "okay";
+};
+
+&usbotg1 {
+       dr_mode = "otg";
+       hnp-disable;
+       srp-disable;
+       adp-disable;
+       usb-role-switch;
+       status = "okay";
+
+       port {
+               usb1_drd_sw: endpoint {
+                       remote-endpoint = <&typec1_dr_sw>;
+               };
+       };
+};
+
+&usdhc2 {
+       assigned-clocks = <&clk IMX8MM_CLK_USDHC2>;
+       assigned-clock-rates = <200000000>;
+       pinctrl-names = "default", "state_100mhz", "state_200mhz";
+       pinctrl-0 = <&pinctrl_usdhc2>, <&pinctrl_usdhc2_gpio>;
+       pinctrl-1 = <&pinctrl_usdhc2_100mhz>, <&pinctrl_usdhc2_gpio>;
+       pinctrl-2 = <&pinctrl_usdhc2_200mhz>, <&pinctrl_usdhc2_gpio>;
+       cd-gpios = <&gpio1 15 GPIO_ACTIVE_LOW>;
+       bus-width = <4>;
+       vmmc-supply = <&reg_usdhc2_vmmc>;
+       status = "okay";
+};
+
+&usdhc3 {
+       assigned-clocks = <&clk IMX8MM_CLK_USDHC3_ROOT>;
+       assigned-clock-rates = <400000000>;
+       pinctrl-names = "default", "state_100mhz", "state_200mhz";
+       pinctrl-0 = <&pinctrl_usdhc3>;
+       pinctrl-1 = <&pinctrl_usdhc3_100mhz>;
+       pinctrl-2 = <&pinctrl_usdhc3_200mhz>;
+       bus-width = <8>;
+       non-removable;
+       status = "okay";
+};
+
+&wdog1 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_wdog>;
+       fsl,ext-reset-output;
+       status = "okay";
+};
+
 &iomuxc {
        pinctrl-names = "default";
 
                >;
        };
 
+       pinctrl_i2c3: i2c3grp {
+               fsl,pins = <
+                       MX8MM_IOMUXC_I2C3_SCL_I2C3_SCL                  0x400001c3
+                       MX8MM_IOMUXC_I2C3_SDA_I2C3_SDA                  0x400001c3
+               >;
+       };
+
        pinctrl_pmic: pmicirq {
                fsl,pins = <
                        MX8MM_IOMUXC_GPIO1_IO03_GPIO1_IO3               0x41
index 23c8fad..6edbdfe 100644 (file)
@@ -12,7 +12,6 @@
 #include "imx8mm-pinfunc.h"
 
 / {
-       compatible = "fsl,imx8mm";
        interrupt-parent = <&gic>;
        #address-cells = <2>;
        #size-cells = <2>;
                        };
 
                        ocotp: ocotp-ctrl@30350000 {
-                               compatible = "fsl,imx8mm-ocotp", "fsl,imx7d-ocotp", "syscon";
+                               compatible = "fsl,imx8mm-ocotp", "syscon";
                                reg = <0x30350000 0x10000>;
                                clocks = <&clk IMX8MM_CLK_OCOTP_ROOT>;
                                /* For nvmem subnodes */
                                                <&clk IMX8MM_CLK_AUDIO_AHB>,
                                                <&clk IMX8MM_CLK_IPG_AUDIO_ROOT>,
                                                <&clk IMX8MM_SYS_PLL3>,
-                                               <&clk IMX8MM_VIDEO_PLL1>;
+                                               <&clk IMX8MM_VIDEO_PLL1>,
+                                               <&clk IMX8MM_AUDIO_PLL1>,
+                                               <&clk IMX8MM_AUDIO_PLL2>;
                                assigned-clock-parents = <&clk IMX8MM_SYS_PLL3_OUT>,
                                                         <&clk IMX8MM_SYS_PLL1_800M>;
                                assigned-clock-rates = <0>,
                                                        <400000000>,
                                                        <400000000>,
                                                        <750000000>,
-                                                       <594000000>;
+                                                       <594000000>,
+                                                       <393216000>,
+                                                       <361267200>;
                        };
 
                        src: reset-controller@30390000 {
                                         <&clk IMX8MM_CLK_NAND_USDHC_BUS>,
                                         <&clk IMX8MM_CLK_USDHC1_ROOT>;
                                clock-names = "ipg", "ahb", "per";
-                               assigned-clocks = <&clk IMX8MM_CLK_USDHC1>;
-                               assigned-clock-rates = <400000000>;
                                fsl,tuning-start-tap = <20>;
                                fsl,tuning-step= <2>;
                                bus-width = <4>;
                                         <&clk IMX8MM_CLK_NAND_USDHC_BUS>,
                                         <&clk IMX8MM_CLK_USDHC3_ROOT>;
                                clock-names = "ipg", "ahb", "per";
-                               assigned-clocks = <&clk IMX8MM_CLK_USDHC3_ROOT>;
-                               assigned-clock-rates = <400000000>;
                                fsl,tuning-start-tap = <20>;
                                fsl,tuning-step= <2>;
                                bus-width = <4>;
index 11c705d..0719494 100644 (file)
 /dts-v1/;
 
 #include "imx8mn.dtsi"
+#include "imx8mn-evk.dtsi"
 
 / {
        model = "NXP i.MX8MNano DDR4 EVK board";
        compatible = "fsl,imx8mn-ddr4-evk", "fsl,imx8mn";
-
-       chosen {
-               stdout-path = &uart2;
-       };
-
-       reg_usdhc2_vmmc: regulator-usdhc2 {
-               compatible = "regulator-fixed";
-               pinctrl-names = "default";
-               pinctrl-0 = <&pinctrl_reg_usdhc2_vmmc>;
-               regulator-name = "VSD_3V3";
-               regulator-min-microvolt = <3300000>;
-               regulator-max-microvolt = <3300000>;
-               gpio = <&gpio2 19 GPIO_ACTIVE_HIGH>;
-               enable-active-high;
-       };
 };
 
 &A53_0 {
        cpu-supply = <&buck2_reg>;
 };
 
-&iomuxc {
-       pinctrl-names = "default";
-
-       pinctrl_fec1: fec1grp {
-               fsl,pins = <
-                       MX8MN_IOMUXC_ENET_MDC_ENET1_MDC         0x3
-                       MX8MN_IOMUXC_ENET_MDIO_ENET1_MDIO       0x3
-                       MX8MN_IOMUXC_ENET_TD3_ENET1_RGMII_TD3   0x1f
-                       MX8MN_IOMUXC_ENET_TD2_ENET1_RGMII_TD2   0x1f
-                       MX8MN_IOMUXC_ENET_TD1_ENET1_RGMII_TD1   0x1f
-                       MX8MN_IOMUXC_ENET_TD0_ENET1_RGMII_TD0   0x1f
-                       MX8MN_IOMUXC_ENET_RD3_ENET1_RGMII_RD3   0x91
-                       MX8MN_IOMUXC_ENET_RD2_ENET1_RGMII_RD2   0x91
-                       MX8MN_IOMUXC_ENET_RD1_ENET1_RGMII_RD1   0x91
-                       MX8MN_IOMUXC_ENET_RD0_ENET1_RGMII_RD0   0x91
-                       MX8MN_IOMUXC_ENET_TXC_ENET1_RGMII_TXC   0x1f
-                       MX8MN_IOMUXC_ENET_RXC_ENET1_RGMII_RXC   0x91
-                       MX8MN_IOMUXC_ENET_RX_CTL_ENET1_RGMII_RX_CTL     0x91
-                       MX8MN_IOMUXC_ENET_TX_CTL_ENET1_RGMII_TX_CTL     0x1f
-                       MX8MN_IOMUXC_SAI2_RXC_GPIO4_IO22        0x19
-               >;
-       };
-
-       pinctrl_i2c1: i2c1grp {
-               fsl,pins = <
-                       MX8MN_IOMUXC_I2C1_SCL_I2C1_SCL          0x400001c3
-                       MX8MN_IOMUXC_I2C1_SDA_I2C1_SDA          0x400001c3
-               >;
-       };
-
-       pinctrl_pmic: pmicirq {
-               fsl,pins = <
-                       MX8MN_IOMUXC_GPIO1_IO03_GPIO1_IO3       0x41
-               >;
-       };
-
-       pinctrl_reg_usdhc2_vmmc: regusdhc2vmmc {
-               fsl,pins = <
-                       MX8MN_IOMUXC_SD2_RESET_B_GPIO2_IO19     0x41
-               >;
-       };
-
-       pinctrl_uart2: uart2grp {
-               fsl,pins = <
-                       MX8MN_IOMUXC_UART2_RXD_UART2_DCE_RX     0x140
-                       MX8MN_IOMUXC_UART2_TXD_UART2_DCE_TX     0x140
-               >;
-       };
-
-       pinctrl_usdhc2_gpio: usdhc2grpgpio {
-               fsl,pins = <
-                       MX8MN_IOMUXC_GPIO1_IO15_GPIO1_IO15      0x1c4
-               >;
-       };
-
-       pinctrl_usdhc2: usdhc2grp {
-               fsl,pins = <
-                       MX8MN_IOMUXC_SD2_CLK_USDHC2_CLK         0x190
-                       MX8MN_IOMUXC_SD2_CMD_USDHC2_CMD         0x1d0
-                       MX8MN_IOMUXC_SD2_DATA0_USDHC2_DATA0     0x1d0
-                       MX8MN_IOMUXC_SD2_DATA1_USDHC2_DATA1     0x1d0
-                       MX8MN_IOMUXC_SD2_DATA2_USDHC2_DATA2     0x1d0
-                       MX8MN_IOMUXC_SD2_DATA3_USDHC2_DATA3     0x1d0
-                       MX8MN_IOMUXC_GPIO1_IO04_USDHC2_VSELECT  0x1d0
-               >;
-       };
-
-       pinctrl_usdhc2_100mhz: usdhc2grp100mhz {
-               fsl,pins = <
-                       MX8MN_IOMUXC_SD2_CLK_USDHC2_CLK         0x194
-                       MX8MN_IOMUXC_SD2_CMD_USDHC2_CMD         0x1d4
-                       MX8MN_IOMUXC_SD2_DATA0_USDHC2_DATA0     0x1d4
-                       MX8MN_IOMUXC_SD2_DATA1_USDHC2_DATA1     0x1d4
-                       MX8MN_IOMUXC_SD2_DATA2_USDHC2_DATA2     0x1d4
-                       MX8MN_IOMUXC_SD2_DATA3_USDHC2_DATA3     0x1d4
-                       MX8MN_IOMUXC_GPIO1_IO04_USDHC2_VSELECT  0x1d0
-               >;
-       };
-
-       pinctrl_usdhc2_200mhz: usdhc2grp200mhz {
-               fsl,pins = <
-                       MX8MN_IOMUXC_SD2_CLK_USDHC2_CLK         0x196
-                       MX8MN_IOMUXC_SD2_CMD_USDHC2_CMD         0x1d6
-                       MX8MN_IOMUXC_SD2_DATA0_USDHC2_DATA0     0x1d6
-                       MX8MN_IOMUXC_SD2_DATA1_USDHC2_DATA1     0x1d6
-                       MX8MN_IOMUXC_SD2_DATA2_USDHC2_DATA2     0x1d6
-                       MX8MN_IOMUXC_SD2_DATA3_USDHC2_DATA3     0x1d6
-                       MX8MN_IOMUXC_GPIO1_IO04_USDHC2_VSELECT  0x1d0
-               >;
-       };
-
-       pinctrl_usdhc3: usdhc3grp {
-               fsl,pins = <
-                       MX8MN_IOMUXC_NAND_WE_B_USDHC3_CLK               0x40000190
-                       MX8MN_IOMUXC_NAND_WP_B_USDHC3_CMD               0x1d0
-                       MX8MN_IOMUXC_NAND_DATA04_USDHC3_DATA0           0x1d0
-                       MX8MN_IOMUXC_NAND_DATA05_USDHC3_DATA1           0x1d0
-                       MX8MN_IOMUXC_NAND_DATA06_USDHC3_DATA2           0x1d0
-                       MX8MN_IOMUXC_NAND_DATA07_USDHC3_DATA3           0x1d0
-                       MX8MN_IOMUXC_NAND_RE_B_USDHC3_DATA4             0x1d0
-                       MX8MN_IOMUXC_NAND_CE2_B_USDHC3_DATA5            0x1d0
-                       MX8MN_IOMUXC_NAND_CE3_B_USDHC3_DATA6            0x1d0
-                       MX8MN_IOMUXC_NAND_CLE_USDHC3_DATA7              0x1d0
-                       MX8MN_IOMUXC_NAND_CE1_B_USDHC3_STROBE           0x190
-               >;
-       };
-
-       pinctrl_usdhc3_100mhz: usdhc3grp100mhz {
-               fsl,pins = <
-                       MX8MN_IOMUXC_NAND_WE_B_USDHC3_CLK               0x40000194
-                       MX8MN_IOMUXC_NAND_WP_B_USDHC3_CMD               0x1d4
-                       MX8MN_IOMUXC_NAND_DATA04_USDHC3_DATA0           0x1d4
-                       MX8MN_IOMUXC_NAND_DATA05_USDHC3_DATA1           0x1d4
-                       MX8MN_IOMUXC_NAND_DATA06_USDHC3_DATA2           0x1d4
-                       MX8MN_IOMUXC_NAND_DATA07_USDHC3_DATA3           0x1d4
-                       MX8MN_IOMUXC_NAND_RE_B_USDHC3_DATA4             0x1d4
-                       MX8MN_IOMUXC_NAND_CE2_B_USDHC3_DATA5            0x1d4
-                       MX8MN_IOMUXC_NAND_CE3_B_USDHC3_DATA6            0x1d4
-                       MX8MN_IOMUXC_NAND_CLE_USDHC3_DATA7              0x1d4
-                       MX8MN_IOMUXC_NAND_CE1_B_USDHC3_STROBE           0x194
-               >;
-       };
-
-       pinctrl_usdhc3_200mhz: usdhc3grp200mhz {
-               fsl,pins = <
-                       MX8MN_IOMUXC_NAND_WE_B_USDHC3_CLK               0x40000196
-                       MX8MN_IOMUXC_NAND_WP_B_USDHC3_CMD               0x1d6
-                       MX8MN_IOMUXC_NAND_DATA04_USDHC3_DATA0           0x1d6
-                       MX8MN_IOMUXC_NAND_DATA05_USDHC3_DATA1           0x1d6
-                       MX8MN_IOMUXC_NAND_DATA06_USDHC3_DATA2           0x1d6
-                       MX8MN_IOMUXC_NAND_DATA07_USDHC3_DATA3           0x1d6
-                       MX8MN_IOMUXC_NAND_RE_B_USDHC3_DATA4             0x1d6
-                       MX8MN_IOMUXC_NAND_CE2_B_USDHC3_DATA5            0x1d6
-                       MX8MN_IOMUXC_NAND_CE3_B_USDHC3_DATA6            0x1d6
-                       MX8MN_IOMUXC_NAND_CLE_USDHC3_DATA7              0x1d6
-                       MX8MN_IOMUXC_NAND_CE1_B_USDHC3_STROBE           0x196
-               >;
-       };
-
-       pinctrl_wdog: wdoggrp {
-               fsl,pins = <
-                       MX8MN_IOMUXC_GPIO1_IO02_WDOG1_WDOG_B            0xc6
-               >;
-       };
-};
-
-&fec1 {
-       pinctrl-names = "default";
-       pinctrl-0 = <&pinctrl_fec1>;
-       phy-mode = "rgmii-id";
-       phy-handle = <&ethphy0>;
-       fsl,magic-packet;
-       status = "okay";
-
-       mdio {
-               #address-cells = <1>;
-               #size-cells = <0>;
-
-               ethphy0: ethernet-phy@0 {
-                       compatible = "ethernet-phy-ieee802.3-c22";
-                       reg = <0>;
-                       at803x,led-act-blind-workaround;
-                       at803x,eee-disabled;
-                       at803x,vddio-1p8v;
-               };
-       };
-};
-
 &i2c1 {
-       clock-frequency = <400000>;
-       pinctrl-names = "default";
-       pinctrl-0 = <&pinctrl_i2c1>;
-       status = "okay";
-
        pmic@4b {
                compatible = "rohm,bd71847";
                reg = <0x4b>;
        };
 };
 
-&snvs_pwrkey {
-       status = "okay";
-};
-
-&uart2 { /* console */
-       pinctrl-names = "default";
-       pinctrl-0 = <&pinctrl_uart2>;
-       status = "okay";
-};
-
-&usdhc2 {
-       pinctrl-names = "default", "state_100mhz", "state_200mhz";
-       pinctrl-0 = <&pinctrl_usdhc2>, <&pinctrl_usdhc2_gpio>;
-       pinctrl-1 = <&pinctrl_usdhc2_100mhz>, <&pinctrl_usdhc2_gpio>;
-       pinctrl-2 = <&pinctrl_usdhc2_200mhz>, <&pinctrl_usdhc2_gpio>;
-       cd-gpios = <&gpio1 15 GPIO_ACTIVE_LOW>;
-       bus-width = <4>;
-       vmmc-supply = <&reg_usdhc2_vmmc>;
-       status = "okay";
-};
-
-&usdhc3 {
-       pinctrl-names = "default", "state_100mhz", "state_200mhz";
-       pinctrl-0 = <&pinctrl_usdhc3>;
-       pinctrl-1 = <&pinctrl_usdhc3_100mhz>;
-       pinctrl-2 = <&pinctrl_usdhc3_200mhz>;
-       bus-width = <8>;
-       non-removable;
-       status = "okay";
-};
-
-&wdog1 {
-       pinctrl-names = "default";
-       pinctrl-0 = <&pinctrl_wdog>;
-       fsl,ext-reset-output;
-       status = "okay";
+&iomuxc {
+       pinctrl_pmic: pmicirq {
+               fsl,pins = <
+                       MX8MN_IOMUXC_GPIO1_IO03_GPIO1_IO3       0x41
+               >;
+       };
 };
diff --git a/arch/arm64/boot/dts/freescale/imx8mn-evk.dts b/arch/arm64/boot/dts/freescale/imx8mn-evk.dts
new file mode 100644 (file)
index 0000000..61f3519
--- /dev/null
@@ -0,0 +1,30 @@
+// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
+/*
+ * Copyright 2019 NXP
+ */
+
+/dts-v1/;
+
+#include "imx8mn.dtsi"
+#include "imx8mn-evk.dtsi"
+
+/ {
+       model = "NXP i.MX8MNano EVK board";
+       compatible = "fsl,imx8mn-evk", "fsl,imx8mn";
+};
+
+&A53_0 {
+       /delete-property/operating-points-v2;
+};
+
+&A53_1 {
+       /delete-property/operating-points-v2;
+};
+
+&A53_2 {
+       /delete-property/operating-points-v2;
+};
+
+&A53_3 {
+       /delete-property/operating-points-v2;
+};
diff --git a/arch/arm64/boot/dts/freescale/imx8mn-evk.dtsi b/arch/arm64/boot/dts/freescale/imx8mn-evk.dtsi
new file mode 100644 (file)
index 0000000..2a74330
--- /dev/null
@@ -0,0 +1,249 @@
+// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
+/*
+ * Copyright 2019 NXP
+ */
+
+#include "imx8mn.dtsi"
+
+/ {
+       chosen {
+               stdout-path = &uart2;
+       };
+
+       gpio-leds {
+               compatible = "gpio-leds";
+               pinctrl-names = "default";
+               pinctrl-0 = <&pinctrl_gpio_led>;
+
+               status {
+                       label = "yellow:status";
+                       gpios = <&gpio3 16 GPIO_ACTIVE_HIGH>;
+                       default-state = "on";
+               };
+       };
+
+       reg_usdhc2_vmmc: regulator-usdhc2 {
+               compatible = "regulator-fixed";
+               pinctrl-names = "default";
+               pinctrl-0 = <&pinctrl_reg_usdhc2_vmmc>;
+               regulator-name = "VSD_3V3";
+               regulator-min-microvolt = <3300000>;
+               regulator-max-microvolt = <3300000>;
+               gpio = <&gpio2 19 GPIO_ACTIVE_HIGH>;
+               enable-active-high;
+       };
+};
+
+&fec1 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_fec1>;
+       phy-mode = "rgmii-id";
+       phy-handle = <&ethphy0>;
+       fsl,magic-packet;
+       status = "okay";
+
+       mdio {
+               #address-cells = <1>;
+               #size-cells = <0>;
+
+               ethphy0: ethernet-phy@0 {
+                       compatible = "ethernet-phy-ieee802.3-c22";
+                       reg = <0>;
+               };
+       };
+};
+
+&i2c1 {
+       clock-frequency = <400000>;
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_i2c1>;
+       status = "okay";
+};
+
+&snvs_pwrkey {
+       status = "okay";
+};
+
+&uart2 { /* console */
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_uart2>;
+       status = "okay";
+};
+
+&usdhc2 {
+       assigned-clocks = <&clk IMX8MN_CLK_USDHC2>;
+       assigned-clock-rates = <200000000>;
+       pinctrl-names = "default", "state_100mhz", "state_200mhz";
+       pinctrl-0 = <&pinctrl_usdhc2>, <&pinctrl_usdhc2_gpio>;
+       pinctrl-1 = <&pinctrl_usdhc2_100mhz>, <&pinctrl_usdhc2_gpio>;
+       pinctrl-2 = <&pinctrl_usdhc2_200mhz>, <&pinctrl_usdhc2_gpio>;
+       cd-gpios = <&gpio1 15 GPIO_ACTIVE_LOW>;
+       bus-width = <4>;
+       vmmc-supply = <&reg_usdhc2_vmmc>;
+       status = "okay";
+};
+
+&usdhc3 {
+       assigned-clocks = <&clk IMX8MN_CLK_USDHC3_ROOT>;
+       assigned-clock-rates = <400000000>;
+       pinctrl-names = "default", "state_100mhz", "state_200mhz";
+       pinctrl-0 = <&pinctrl_usdhc3>;
+       pinctrl-1 = <&pinctrl_usdhc3_100mhz>;
+       pinctrl-2 = <&pinctrl_usdhc3_200mhz>;
+       bus-width = <8>;
+       non-removable;
+       status = "okay";
+};
+
+&wdog1 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_wdog>;
+       fsl,ext-reset-output;
+       status = "okay";
+};
+
+&iomuxc {
+       pinctrl-names = "default";
+
+       pinctrl_fec1: fec1grp {
+               fsl,pins = <
+                       MX8MN_IOMUXC_ENET_MDC_ENET1_MDC         0x3
+                       MX8MN_IOMUXC_ENET_MDIO_ENET1_MDIO       0x3
+                       MX8MN_IOMUXC_ENET_TD3_ENET1_RGMII_TD3   0x1f
+                       MX8MN_IOMUXC_ENET_TD2_ENET1_RGMII_TD2   0x1f
+                       MX8MN_IOMUXC_ENET_TD1_ENET1_RGMII_TD1   0x1f
+                       MX8MN_IOMUXC_ENET_TD0_ENET1_RGMII_TD0   0x1f
+                       MX8MN_IOMUXC_ENET_RD3_ENET1_RGMII_RD3   0x91
+                       MX8MN_IOMUXC_ENET_RD2_ENET1_RGMII_RD2   0x91
+                       MX8MN_IOMUXC_ENET_RD1_ENET1_RGMII_RD1   0x91
+                       MX8MN_IOMUXC_ENET_RD0_ENET1_RGMII_RD0   0x91
+                       MX8MN_IOMUXC_ENET_TXC_ENET1_RGMII_TXC   0x1f
+                       MX8MN_IOMUXC_ENET_RXC_ENET1_RGMII_RXC   0x91
+                       MX8MN_IOMUXC_ENET_RX_CTL_ENET1_RGMII_RX_CTL     0x91
+                       MX8MN_IOMUXC_ENET_TX_CTL_ENET1_RGMII_TX_CTL     0x1f
+                       MX8MN_IOMUXC_SAI2_RXC_GPIO4_IO22        0x19
+               >;
+       };
+
+       pinctrl_gpio_led: gpioledgrp {
+               fsl,pins = <
+                       MX8MN_IOMUXC_NAND_READY_B_GPIO3_IO16    0x19
+               >;
+       };
+
+       pinctrl_i2c1: i2c1grp {
+               fsl,pins = <
+                       MX8MN_IOMUXC_I2C1_SCL_I2C1_SCL          0x400001c3
+                       MX8MN_IOMUXC_I2C1_SDA_I2C1_SDA          0x400001c3
+               >;
+       };
+
+       pinctrl_reg_usdhc2_vmmc: regusdhc2vmmc {
+               fsl,pins = <
+                       MX8MN_IOMUXC_SD2_RESET_B_GPIO2_IO19     0x41
+               >;
+       };
+
+       pinctrl_uart2: uart2grp {
+               fsl,pins = <
+                       MX8MN_IOMUXC_UART2_RXD_UART2_DCE_RX     0x140
+                       MX8MN_IOMUXC_UART2_TXD_UART2_DCE_TX     0x140
+               >;
+       };
+
+       pinctrl_usdhc2_gpio: usdhc2grpgpio {
+               fsl,pins = <
+                       MX8MN_IOMUXC_GPIO1_IO15_GPIO1_IO15      0x1c4
+               >;
+       };
+
+       pinctrl_usdhc2: usdhc2grp {
+               fsl,pins = <
+                       MX8MN_IOMUXC_SD2_CLK_USDHC2_CLK         0x190
+                       MX8MN_IOMUXC_SD2_CMD_USDHC2_CMD         0x1d0
+                       MX8MN_IOMUXC_SD2_DATA0_USDHC2_DATA0     0x1d0
+                       MX8MN_IOMUXC_SD2_DATA1_USDHC2_DATA1     0x1d0
+                       MX8MN_IOMUXC_SD2_DATA2_USDHC2_DATA2     0x1d0
+                       MX8MN_IOMUXC_SD2_DATA3_USDHC2_DATA3     0x1d0
+                       MX8MN_IOMUXC_GPIO1_IO04_USDHC2_VSELECT  0x1d0
+               >;
+       };
+
+       pinctrl_usdhc2_100mhz: usdhc2grp100mhz {
+               fsl,pins = <
+                       MX8MN_IOMUXC_SD2_CLK_USDHC2_CLK         0x194
+                       MX8MN_IOMUXC_SD2_CMD_USDHC2_CMD         0x1d4
+                       MX8MN_IOMUXC_SD2_DATA0_USDHC2_DATA0     0x1d4
+                       MX8MN_IOMUXC_SD2_DATA1_USDHC2_DATA1     0x1d4
+                       MX8MN_IOMUXC_SD2_DATA2_USDHC2_DATA2     0x1d4
+                       MX8MN_IOMUXC_SD2_DATA3_USDHC2_DATA3     0x1d4
+                       MX8MN_IOMUXC_GPIO1_IO04_USDHC2_VSELECT  0x1d0
+               >;
+       };
+
+       pinctrl_usdhc2_200mhz: usdhc2grp200mhz {
+               fsl,pins = <
+                       MX8MN_IOMUXC_SD2_CLK_USDHC2_CLK         0x196
+                       MX8MN_IOMUXC_SD2_CMD_USDHC2_CMD         0x1d6
+                       MX8MN_IOMUXC_SD2_DATA0_USDHC2_DATA0     0x1d6
+                       MX8MN_IOMUXC_SD2_DATA1_USDHC2_DATA1     0x1d6
+                       MX8MN_IOMUXC_SD2_DATA2_USDHC2_DATA2     0x1d6
+                       MX8MN_IOMUXC_SD2_DATA3_USDHC2_DATA3     0x1d6
+                       MX8MN_IOMUXC_GPIO1_IO04_USDHC2_VSELECT  0x1d0
+               >;
+       };
+
+       pinctrl_usdhc3: usdhc3grp {
+               fsl,pins = <
+                       MX8MN_IOMUXC_NAND_WE_B_USDHC3_CLK               0x40000190
+                       MX8MN_IOMUXC_NAND_WP_B_USDHC3_CMD               0x1d0
+                       MX8MN_IOMUXC_NAND_DATA04_USDHC3_DATA0           0x1d0
+                       MX8MN_IOMUXC_NAND_DATA05_USDHC3_DATA1           0x1d0
+                       MX8MN_IOMUXC_NAND_DATA06_USDHC3_DATA2           0x1d0
+                       MX8MN_IOMUXC_NAND_DATA07_USDHC3_DATA3           0x1d0
+                       MX8MN_IOMUXC_NAND_RE_B_USDHC3_DATA4             0x1d0
+                       MX8MN_IOMUXC_NAND_CE2_B_USDHC3_DATA5            0x1d0
+                       MX8MN_IOMUXC_NAND_CE3_B_USDHC3_DATA6            0x1d0
+                       MX8MN_IOMUXC_NAND_CLE_USDHC3_DATA7              0x1d0
+                       MX8MN_IOMUXC_NAND_CE1_B_USDHC3_STROBE           0x190
+               >;
+       };
+
+       pinctrl_usdhc3_100mhz: usdhc3grp100mhz {
+               fsl,pins = <
+                       MX8MN_IOMUXC_NAND_WE_B_USDHC3_CLK               0x40000194
+                       MX8MN_IOMUXC_NAND_WP_B_USDHC3_CMD               0x1d4
+                       MX8MN_IOMUXC_NAND_DATA04_USDHC3_DATA0           0x1d4
+                       MX8MN_IOMUXC_NAND_DATA05_USDHC3_DATA1           0x1d4
+                       MX8MN_IOMUXC_NAND_DATA06_USDHC3_DATA2           0x1d4
+                       MX8MN_IOMUXC_NAND_DATA07_USDHC3_DATA3           0x1d4
+                       MX8MN_IOMUXC_NAND_RE_B_USDHC3_DATA4             0x1d4
+                       MX8MN_IOMUXC_NAND_CE2_B_USDHC3_DATA5            0x1d4
+                       MX8MN_IOMUXC_NAND_CE3_B_USDHC3_DATA6            0x1d4
+                       MX8MN_IOMUXC_NAND_CLE_USDHC3_DATA7              0x1d4
+                       MX8MN_IOMUXC_NAND_CE1_B_USDHC3_STROBE           0x194
+               >;
+       };
+
+       pinctrl_usdhc3_200mhz: usdhc3grp200mhz {
+               fsl,pins = <
+                       MX8MN_IOMUXC_NAND_WE_B_USDHC3_CLK               0x40000196
+                       MX8MN_IOMUXC_NAND_WP_B_USDHC3_CMD               0x1d6
+                       MX8MN_IOMUXC_NAND_DATA04_USDHC3_DATA0           0x1d6
+                       MX8MN_IOMUXC_NAND_DATA05_USDHC3_DATA1           0x1d6
+                       MX8MN_IOMUXC_NAND_DATA06_USDHC3_DATA2           0x1d6
+                       MX8MN_IOMUXC_NAND_DATA07_USDHC3_DATA3           0x1d6
+                       MX8MN_IOMUXC_NAND_RE_B_USDHC3_DATA4             0x1d6
+                       MX8MN_IOMUXC_NAND_CE2_B_USDHC3_DATA5            0x1d6
+                       MX8MN_IOMUXC_NAND_CE3_B_USDHC3_DATA6            0x1d6
+                       MX8MN_IOMUXC_NAND_CLE_USDHC3_DATA7              0x1d6
+                       MX8MN_IOMUXC_NAND_CE1_B_USDHC3_STROBE           0x196
+               >;
+       };
+
+       pinctrl_wdog: wdoggrp {
+               fsl,pins = <
+                       MX8MN_IOMUXC_GPIO1_IO02_WDOG1_WDOG_B            0xc6
+               >;
+       };
+};
index 43c4db3..e916250 100644 (file)
@@ -11,7 +11,6 @@
 #include "imx8mn-pinfunc.h"
 
 / {
-       compatible = "fsl,imx8mn";
        interrupt-parent = <&gic>;
        #address-cells = <2>;
        #size-cells = <2>;
                #address-cells = <1>;
                #size-cells = <0>;
 
+               idle-states {
+                       entry-method = "psci";
+
+                       cpu_pd_wait: cpu-pd-wait {
+                               compatible = "arm,idle-state";
+                               arm,psci-suspend-param = <0x0010033>;
+                               local-timer-stop;
+                               entry-latency-us = <1000>;
+                               exit-latency-us = <700>;
+                               min-residency-us = <2700>;
+                       };
+               };
+
                A53_0: cpu@0 {
                        device_type = "cpu";
                        compatible = "arm,cortex-a53";
@@ -54,6 +66,7 @@
                        operating-points-v2 = <&a53_opp_table>;
                        nvmem-cells = <&cpu_speed_grade>;
                        nvmem-cell-names = "speed_grade";
+                       cpu-idle-states = <&cpu_pd_wait>;
                };
 
                A53_1: cpu@1 {
@@ -65,6 +78,7 @@
                        enable-method = "psci";
                        next-level-cache = <&A53_L2>;
                        operating-points-v2 = <&a53_opp_table>;
+                       cpu-idle-states = <&cpu_pd_wait>;
                };
 
                A53_2: cpu@2 {
@@ -76,6 +90,7 @@
                        enable-method = "psci";
                        next-level-cache = <&A53_L2>;
                        operating-points-v2 = <&a53_opp_table>;
+                       cpu-idle-states = <&cpu_pd_wait>;
                };
 
                A53_3: cpu@3 {
                        enable-method = "psci";
                        next-level-cache = <&A53_L2>;
                        operating-points-v2 = <&a53_opp_table>;
+                       cpu-idle-states = <&cpu_pd_wait>;
                };
 
                A53_L2: l2-cache0 {
                        };
 
                        ocotp: ocotp-ctrl@30350000 {
-                               compatible = "fsl,imx8mn-ocotp", "fsl,imx7d-ocotp", "syscon";
+                               compatible = "fsl,imx8mn-ocotp", "fsl,imx8mm-ocotp", "syscon";
                                reg = <0x30350000 0x10000>;
                                clocks = <&clk IMX8MN_CLK_OCOTP_ROOT>;
                                #address-cells = <1>;
                        };
 
                        src: reset-controller@30390000 {
-                               compatible = "fsl,imx8mn-src", "syscon";
+                               compatible = "fsl,imx8mn-src", "fsl,imx8mq-src", "syscon";
                                reg = <0x30390000 0x10000>;
                                interrupts = <GIC_SPI 89 IRQ_TYPE_LEVEL_HIGH>;
                                #reset-cells = <1>;
                                #pwm-cells = <2>;
                                status = "disabled";
                        };
+
+                       system_counter: timer@306a0000 {
+                               compatible = "nxp,sysctr-timer";
+                               reg = <0x306a0000 0x20000>;
+                               interrupts = <GIC_SPI 47 IRQ_TYPE_LEVEL_HIGH>;
+                               clocks = <&osc_24m>;
+                               clock-names = "per";
+                       };
                };
 
                aips3: bus@30800000 {
                                         <&clk IMX8MN_CLK_NAND_USDHC_BUS>,
                                         <&clk IMX8MN_CLK_USDHC1_ROOT>;
                                clock-names = "ipg", "ahb", "per";
-                               assigned-clocks = <&clk IMX8MN_CLK_USDHC1>;
-                               assigned-clock-rates = <400000000>;
                                fsl,tuning-start-tap = <20>;
                                fsl,tuning-step= <2>;
                                bus-width = <4>;
                                         <&clk IMX8MN_CLK_NAND_USDHC_BUS>,
                                         <&clk IMX8MN_CLK_USDHC3_ROOT>;
                                clock-names = "ipg", "ahb", "per";
-                               assigned-clocks = <&clk IMX8MN_CLK_USDHC3_ROOT>;
-                               assigned-clock-rates = <400000000>;
                                fsl,tuning-start-tap = <20>;
                                fsl,tuning-step= <2>;
                                bus-width = <4>;
                        interrupt-controller;
                        interrupts = <GIC_PPI 9 IRQ_TYPE_LEVEL_HIGH>;
                };
+
+               ddr-pmu@3d800000 {
+                       compatible = "fsl,imx8mn-ddr-pmu", "fsl,imx8m-ddr-pmu";
+                       reg = <0x3d800000 0x400000>;
+                       interrupts = <GIC_SPI 98 IRQ_TYPE_LEVEL_HIGH>;
+               };
        };
 
        usbphynop1: usbphynop1 {
index 0595812..c366859 100644 (file)
                gpios = <&gpio1 13 GPIO_ACTIVE_HIGH>;
                states = <1000000 0x0
                          900000 0x1>;
+               regulator-boot-on;
+               regulator-always-on;
+       };
+
+       ir-receiver {
+               compatible = "gpio-ir-receiver";
+               gpios = <&gpio1 12 GPIO_ACTIVE_LOW>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&pinctrl_ir>;
        };
 
        wm8524: audio-codec {
        };
 };
 
-&sai2 {
-       pinctrl-names = "default";
-       pinctrl-0 = <&pinctrl_sai2>;
-       assigned-clocks = <&clk IMX8MQ_AUDIO_PLL1_BYPASS>, <&clk IMX8MQ_CLK_SAI2>;
-       assigned-clock-parents = <&clk IMX8MQ_AUDIO_PLL1>, <&clk IMX8MQ_AUDIO_PLL1_OUT>;
-       assigned-clock-rates = <0>, <24576000>;
-       status = "okay";
-};
-
 &gpio5 {
        pinctrl-names = "default";
        pinctrl-0 = <&pinctrl_wifi_reset>;
        power-supply = <&sw1a_reg>;
 };
 
+&qspi0 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_qspi>;
+       status = "okay";
+
+       n25q256a: flash@0 {
+               reg = <0>;
+               #address-cells = <1>;
+               #size-cells = <1>;
+               compatible = "micron,n25q256a", "jedec,spi-nor";
+               spi-max-frequency = <29000000>;
+       };
+};
+
+&sai2 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_sai2>;
+       assigned-clocks = <&clk IMX8MQ_AUDIO_PLL1_BYPASS>, <&clk IMX8MQ_CLK_SAI2>;
+       assigned-clock-parents = <&clk IMX8MQ_AUDIO_PLL1>, <&clk IMX8MQ_AUDIO_PLL1_OUT>;
+       assigned-clock-rates = <0>, <24576000>;
+       status = "okay";
+};
+
 &snvs_pwrkey {
        status = "okay";
 };
        status = "okay";
 };
 
-&qspi0 {
-       pinctrl-names = "default";
-       pinctrl-0 = <&pinctrl_qspi>;
-       status = "okay";
-
-       n25q256a: flash@0 {
-               reg = <0>;
-               #address-cells = <1>;
-               #size-cells = <1>;
-               compatible = "micron,n25q256a", "jedec,spi-nor";
-               spi-max-frequency = <29000000>;
-       };
-};
-
 &usdhc1 {
+       assigned-clocks = <&clk IMX8MQ_CLK_USDHC1>;
+       assigned-clock-rates = <400000000>;
        pinctrl-names = "default", "state_100mhz", "state_200mhz";
        pinctrl-0 = <&pinctrl_usdhc1>;
        pinctrl-1 = <&pinctrl_usdhc1_100mhz>;
 };
 
 &usdhc2 {
+       assigned-clocks = <&clk IMX8MQ_CLK_USDHC2>;
+       assigned-clock-rates = <200000000>;
        pinctrl-names = "default", "state_100mhz", "state_200mhz";
        pinctrl-0 = <&pinctrl_usdhc2>;
        pinctrl-1 = <&pinctrl_usdhc2_100mhz>;
                >;
        };
 
+       pinctrl_ir: irgrp {
+               fsl,pins = <
+                       MX8MQ_IOMUXC_GPIO1_IO12_GPIO1_IO12              0x4f
+               >;
+       };
+
        pinctrl_pcie0: pcie0grp {
                fsl,pins = <
                        MX8MQ_IOMUXC_I2C4_SCL_PCIE1_CLKREQ_B            0x76
index f52e872..b8cb20c 100644 (file)
 };
 
 &usdhc2 {
+       assigned-clocks = <&clk IMX8MQ_CLK_USDHC2>;
+       assigned-clock-rates = <200000000>;
        pinctrl-names = "default", "state_100mhz", "state_200mhz";
        pinctrl-0 = <&pinctrl_usdhc2>, <&pinctrl_usdhc2_gpio>;
        pinctrl-1 = <&pinctrl_usdhc2_100mhz>, <&pinctrl_usdhc2_gpio>;
index 683a110..2a759df 100644 (file)
 };
 
 &usdhc1 {
+       assigned-clocks = <&clk IMX8MQ_CLK_USDHC1>;
+       assigned-clock-rates = <400000000>;
        pinctrl-names = "default", "state_100mhz", "state_200mhz";
        pinctrl-0 = <&pinctrl_usdhc1>;
        pinctrl-1 = <&pinctrl_usdhc1_100mhz>;
 };
 
 &usdhc2 {
+       assigned-clocks = <&clk IMX8MQ_CLK_USDHC2>;
+       assigned-clock-rates = <200000000>;
        pinctrl-names = "default", "state_100mhz", "state_200mhz";
        pinctrl-0 = <&pinctrl_usdhc2>;
        pinctrl-1 = <&pinctrl_usdhc2_100mhz>;
index c832bf0..81d2692 100644 (file)
 };
 
 &usdhc1 {
+       assigned-clocks = <&clk IMX8MQ_CLK_USDHC1>;
+       assigned-clock-rates = <400000000>;
        bus-width = <8>;
        pinctrl-names = "default";
        pinctrl-0 = <&pinctrl_usdhc1>;
index 8a4aee2..59da96b 100644 (file)
 };
 
 &usdhc1 {
+       assigned-clocks = <&clk IMX8MQ_CLK_USDHC1>;
+       assigned-clock-rates = <400000000>;
        pinctrl-names = "default", "state_100mhz", "state_200mhz";
        pinctrl-0 = <&pinctrl_usdhc1>;
        pinctrl-1 = <&pinctrl_usdhc1_100mhz>;
 };
 
 &usdhc2 {
+       assigned-clocks = <&clk IMX8MQ_CLK_USDHC2>;
+       assigned-clock-rates = <200000000>;
        pinctrl-names = "default", "state_100mhz", "state_200mhz";
        pinctrl-0 = <&pinctrl_usdhc2>, <&pinctrl_usdhc2_gpio>;
        pinctrl-1 = <&pinctrl_usdhc2_100mhz>, <&pinctrl_usdhc2_gpio>;
index d7f03c6..3dc4411 100644 (file)
 };
 
 &usdhc1 {
+       assigned-clocks = <&clk IMX8MQ_CLK_USDHC1>;
+       assigned-clock-rates = <400000000>;
        pinctrl-names = "default", "state_100mhz", "state_200mhz";
        pinctrl-0 = <&pinctrl_usdhc1>;
        pinctrl-1 = <&pinctrl_usdhc1_100mhz>;
index 32ce149..6a55165 100644 (file)
        reg_3p3_main: regulator-3p3-main {
                compatible = "regulator-fixed";
                vin-supply = <&reg_12p0_main>;
-               regulator-name = "3V3V_MAIN";
+               regulator-name = "3V3_MAIN";
+               regulator-min-microvolt = <3300000>;
+               regulator-max-microvolt = <3300000>;
+               regulator-always-on;
+       };
+
+       reg_gen_3p3: regulator-gen-3p3 {
+               compatible = "regulator-fixed";
+               vin-supply = <&reg_3p3_main>;
+               regulator-name = "GEN_3V3";
                regulator-min-microvolt = <3300000>;
                regulator-max-microvolt = <3300000>;
                regulator-always-on;
@@ -72,7 +81,7 @@
                pinctrl-names = "default";
                pinctrl-0 = <&pinctrl_reg_usdhc2>;
                compatible = "regulator-fixed";
-               vin-supply = <&reg_3p3_main>;
+               vin-supply = <&reg_gen_3p3>;
                regulator-name = "3V3_SD";
                regulator-min-microvolt = <3300000>;
                regulator-max-microvolt = <3300000>;
        pinctrl-0 = <&pinctrl_i2c1>;
        status = "okay";
 
+       accelerometer@1c {
+               compatible = "fsl,mma8451";
+               pinctrl-names = "default";
+               pinctrl-0 = <&pinctrl_accel>;
+               reg = <0x1c>;
+               interrupt-parent = <&gpio3>;
+               interrupts = <20 IRQ_TYPE_LEVEL_LOW>;
+               interrupt-names = "INT2";
+               vdd-supply = <&reg_gen_3p3>;
+               vddio-supply = <&reg_gen_3p3>;
+       };
+
        ucs1002: charger@32 {
                compatible = "microchip,ucs1002";
                pinctrl-names = "default";
                reg = <0x2c>;
                reset-gpios = <&gpio3 25 GPIO_ACTIVE_LOW>;
        };
+
+       watchdog@38 {
+               compatible = "zii,rave-wdt";
+               reg = <0x38>;
+       };
 };
 
 &i2c4 {
 };
 
 &usdhc1 {
+       assigned-clocks = <&clk IMX8MQ_CLK_USDHC1>;
+       assigned-clock-rates = <400000000>;
        pinctrl-names = "default", "state_100mhz", "state_200mhz";
        pinctrl-0 = <&pinctrl_usdhc1>;
        pinctrl-1 = <&pinctrl_usdhc1_100mhz>;
 };
 
 &usdhc2 {
+       assigned-clocks = <&clk IMX8MQ_CLK_USDHC2>;
+       assigned-clock-rates = <200000000>;
        pinctrl-names = "default", "state_100mhz", "state_200mhz";
        pinctrl-0 = <&pinctrl_usdhc2>;
        pinctrl-1 = <&pinctrl_usdhc2_100mhz>;
 };
 
 &iomuxc {
+       pinctrl_accel: accelgrp {
+               fsl,pins = <
+                       MX8MQ_IOMUXC_SAI5_RXC_GPIO3_IO20                0x41
+               >;
+       };
+
        pinctrl_fec1: fec1grp {
                fsl,pins = <
                        MX8MQ_IOMUXC_ENET_MDC_ENET1_MDC                 0x3
index 55a3d1c..7f93194 100644 (file)
                        thermal-sensors = <&tmu 1>;
 
                        trips {
+                               gpu_alert: gpu-alert {
+                                       temperature = <80000>;
+                                       hysteresis = <2000>;
+                                       type = "passive";
+                               };
+
                                gpu-crit {
                                        temperature = <90000>;
                                        hysteresis = <2000>;
                                        type = "critical";
                                };
                        };
+
+                       cooling-maps {
+                               map0 {
+                                       trip = <&gpu_alert>;
+                                       cooling-device =
+                                               <&gpu THERMAL_NO_LIMIT THERMAL_NO_LIMIT>;
+                               };
+                       };
                };
 
                vpu-thermal {
                                         <&clk IMX8MQ_CLK_NAND_USDHC_BUS>,
                                         <&clk IMX8MQ_CLK_USDHC1_ROOT>;
                                clock-names = "ipg", "ahb", "per";
-                               assigned-clocks = <&clk IMX8MQ_CLK_USDHC1>;
-                               assigned-clock-rates = <400000000>;
                                fsl,tuning-start-tap = <20>;
                                fsl,tuning-step = <2>;
                                bus-width = <4>;
                                 <&clk IMX8MQ_CLK_GPU_AXI>,
                                 <&clk IMX8MQ_CLK_GPU_AHB>;
                        clock-names = "core", "shader", "bus", "reg";
+                       #cooling-cells = <2>;
                        assigned-clocks = <&clk IMX8MQ_CLK_GPU_CORE_SRC>,
                                          <&clk IMX8MQ_CLK_GPU_SHADER_SRC>,
                                          <&clk IMX8MQ_CLK_GPU_AXI>,
index 91eef97..a3f8cf1 100644 (file)
 &usdhc1 {
        #address-cells = <1>;
        #size-cells = <0>;
+       assigned-clocks = <&clk IMX_CONN_SDHC0_CLK>;
+       assigned-clock-rates = <200000000>;
        pinctrl-names = "default";
        pinctrl-0 = <&pinctrl_usdhc1>;
        bus-width = <4>;
 
 /* SD */
 &usdhc2 {
+       assigned-clocks = <&clk IMX_CONN_SDHC1_CLK>;
+       assigned-clock-rates = <200000000>;
        pinctrl-names = "default";
        pinctrl-0 = <&pinctrl_usdhc2>;
        bus-width = <4>;
diff --git a/arch/arm64/boot/dts/freescale/imx8qxp-colibri-eval-v3.dts b/arch/arm64/boot/dts/freescale/imx8qxp-colibri-eval-v3.dts
new file mode 100644 (file)
index 0000000..6b21a29
--- /dev/null
@@ -0,0 +1,15 @@
+// SPDX-License-Identifier: GPL-2.0+ OR MIT
+/*
+ * Copyright 2019 Toradex
+ */
+
+/dts-v1/;
+
+#include "imx8qxp-colibri.dtsi"
+#include "imx8qxp-colibri-eval-v3.dtsi"
+
+/ {
+       model = "Toradex Colibri iMX8QXP/DX on Colibri Evaluation Board V3";
+       compatible = "toradex,colibri-imx8x-eval-v3",
+                    "toradex,colibri-imx8x", "fsl,imx8qxp";
+};
diff --git a/arch/arm64/boot/dts/freescale/imx8qxp-colibri-eval-v3.dtsi b/arch/arm64/boot/dts/freescale/imx8qxp-colibri-eval-v3.dtsi
new file mode 100644 (file)
index 0000000..c7336f3
--- /dev/null
@@ -0,0 +1,62 @@
+// SPDX-License-Identifier: GPL-2.0+ OR MIT
+/*
+ * Copyright 2019 Toradex
+ */
+
+#include "dt-bindings/input/linux-event-codes.h"
+
+/ {
+       aliases {
+               rtc0 = &rtc_i2c;
+               rtc1 = &rtc;
+       };
+
+       gpio-keys {
+               compatible = "gpio-keys";
+               pinctrl-names = "default";
+               pinctrl-0 = <&pinctrl_gpiokeys>;
+
+               wakeup {
+                       label = "Wake-Up";
+                       gpios = <&lsio_gpio3 10 GPIO_ACTIVE_HIGH>;
+                       linux,code = <KEY_WAKEUP>;
+                       debounce-interval = <10>;
+                       wakeup-source;
+               };
+       };
+};
+
+&adma_i2c1 {
+       status = "okay";
+
+       /* M41T0M6 real time clock on carrier board */
+       rtc_i2c: rtc@68 {
+               compatible = "st,m41t0";
+               reg = <0x68>;
+       };
+};
+
+/* Colibri UART_B */
+&adma_lpuart0 {
+       status= "okay";
+};
+
+/* Colibri UART_C */
+&adma_lpuart2 {
+       status= "okay";
+};
+
+/* Colibri UART_A */
+&adma_lpuart3 {
+       status= "okay";
+};
+
+/* Colibri FastEthernet */
+&fec1 {
+       status = "okay";
+};
+
+/* Colibri SD/MMC Card */
+&usdhc2 {
+       status = "okay";
+};
diff --git a/arch/arm64/boot/dts/freescale/imx8qxp-colibri.dtsi b/arch/arm64/boot/dts/freescale/imx8qxp-colibri.dtsi
new file mode 100644 (file)
index 0000000..75f17a2
--- /dev/null
@@ -0,0 +1,598 @@
+// SPDX-License-Identifier: GPL-2.0+ OR MIT
+/*
+ * Copyright 2019 Toradex
+ */
+
+#include "imx8qxp.dtsi"
+
+/ {
+       model = "Toradex Colibri iMX8QXP/DX Module";
+       compatible = "toradex,colibri-imx8x", "fsl,imx8qxp";
+
+       chosen {
+               stdout-path = &adma_lpuart3;
+       };
+
+       reg_module_3v3: regulator-module-3v3 {
+               compatible = "regulator-fixed";
+               regulator-name = "+V3.3";
+               regulator-min-microvolt = <3300000>;
+               regulator-max-microvolt = <3300000>;
+       };
+};
+
+/* On-module I2C */
+&adma_i2c0 {
+       #address-cells = <1>;
+       #size-cells = <0>;
+       clock-frequency = <100000>;
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_i2c0>, <&pinctrl_sgtl5000_usb_clk>;
+       status = "okay";
+
+       /* Touch controller */
+       touchscreen@2c {
+               compatible = "adi,ad7879-1";
+               pinctrl-names = "default";
+               pinctrl-0 = <&pinctrl_ad7879_int>;
+               reg = <0x2c>;
+               interrupt-parent = <&lsio_gpio3>;
+               interrupts = <5 IRQ_TYPE_EDGE_FALLING>;
+               touchscreen-max-pressure = <4096>;
+               adi,resistance-plate-x = <120>;
+               adi,first-conversion-delay = /bits/ 8 <3>;
+               adi,acquisition-time = /bits/ 8 <1>;
+               adi,median-filter-size = /bits/ 8 <2>;
+               adi,averaging = /bits/ 8 <1>;
+               adi,conversion-interval = /bits/ 8 <255>;
+       };
+};
+
+/* Colibri I2C */
+&adma_i2c1 {
+       #address-cells = <1>;
+       #size-cells = <0>;
+       clock-frequency = <100000>;
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_i2c1>;
+};
+
+/* Colibri UART_B */
+&adma_lpuart0 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_lpuart0>;
+};
+
+/* Colibri UART_C */
+&adma_lpuart2 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_lpuart2>;
+};
+
+/* Colibri UART_A */
+&adma_lpuart3 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_lpuart3>, <&pinctrl_lpuart3_ctrl>;
+};
+
+/* Colibri FastEthernet */
+&fec1 {
+       pinctrl-names = "default", "sleep";
+       pinctrl-0 = <&pinctrl_fec1>;
+       pinctrl-1 = <&pinctrl_fec1_sleep>;
+       phy-mode = "rmii";
+       phy-handle = <&ethphy0>;
+       fsl,magic-packet;
+
+       mdio {
+               #address-cells = <1>;
+               #size-cells = <0>;
+
+               ethphy0: ethernet-phy@2 {
+                       compatible = "ethernet-phy-ieee802.3-c22";
+                       max-speed = <100>;
+                       reg = <2>;
+               };
+       };
+};
+
+/* On-module eMMC */
+&usdhc1 {
+       bus-width = <8>;
+       non-removable;
+       no-sd;
+       no-sdio;
+       pinctrl-names = "default", "state_100mhz", "state_200mhz";
+       pinctrl-0 = <&pinctrl_usdhc1>;
+       pinctrl-1 = <&pinctrl_usdhc1_100mhz>;
+       pinctrl-2 = <&pinctrl_usdhc1_200mhz>;
+       status = "okay";
+};
+
+/* Colibri SD/MMC Card */
+&usdhc2 {
+       bus-width = <4>;
+       cd-gpios = <&lsio_gpio3 9 GPIO_ACTIVE_LOW>;
+       vmmc-supply = <&reg_module_3v3>;
+       pinctrl-names = "default", "state_100mhz", "state_200mhz", "sleep";
+       pinctrl-0 = <&pinctrl_usdhc2>, <&pinctrl_usdhc2_gpio>;
+       pinctrl-1 = <&pinctrl_usdhc2_100mhz>, <&pinctrl_usdhc2_gpio>;
+       pinctrl-2 = <&pinctrl_usdhc2_200mhz>, <&pinctrl_usdhc2_gpio>;
+       pinctrl-3 = <&pinctrl_usdhc2_sleep>, <&pinctrl_usdhc2_gpio_sleep>;
+       disable-wp;
+};
+
+&iomuxc {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_ext_io0>, <&pinctrl_hog0>, <&pinctrl_hog1>;
+
+       /* On-module touch pen-down interrupt */
+       pinctrl_ad7879_int: ad7879intgrp {
+               fsl,pins = <
+                       IMX8QXP_MIPI_CSI0_I2C0_SCL_LSIO_GPIO3_IO05      0x21
+               >;
+       };
+
+       /* Colibri Analogue Inputs */
+       pinctrl_adc0: adc0grp {
+               fsl,pins = <
+                       IMX8QXP_ADC_IN0_ADMA_ADC_IN0                    0x60            /* SODIMM   8 */
+                       IMX8QXP_ADC_IN1_ADMA_ADC_IN1                    0x60            /* SODIMM   6 */
+                       IMX8QXP_ADC_IN4_ADMA_ADC_IN4                    0x60            /* SODIMM   4 */
+                       IMX8QXP_ADC_IN5_ADMA_ADC_IN5                    0x60            /* SODIMM   2 */
+               >;
+       };
+
+       pinctrl_can_int: canintgrp {
+               fsl,pins = <
+                       IMX8QXP_QSPI0A_DQS_LSIO_GPIO3_IO13              0x40            /* SODIMM  73 */
+               >;
+       };
+
+       pinctrl_csi_ctl: csictlgrp {
+               fsl,pins = <
+                       IMX8QXP_QSPI0A_SS0_B_LSIO_GPIO3_IO14            0x20            /* SODIMM  77 */
+                       IMX8QXP_QSPI0A_SS1_B_LSIO_GPIO3_IO15            0x20            /* SODIMM  89 */
+               >;
+       };
+
+       pinctrl_ext_io0: extio0grp {
+               fsl,pins = <
+                       IMX8QXP_ENET0_RGMII_RXD3_LSIO_GPIO5_IO08        0x06000040      /* SODIMM 135 */
+               >;
+       };
+
+       /* Colibri Ethernet: On-module 100Mbps PHY Micrel KSZ8041 */
+       pinctrl_fec1: fec1grp {
+               fsl,pins = <
+                       IMX8QXP_ENET0_MDC_CONN_ENET0_MDC                        0x06000020
+                       IMX8QXP_ENET0_MDIO_CONN_ENET0_MDIO                      0x06000020
+                       IMX8QXP_ENET0_RGMII_TX_CTL_CONN_ENET0_RGMII_TX_CTL      0x61
+                       IMX8QXP_ENET0_RGMII_TXC_CONN_ENET0_RCLK50M_OUT          0x06000061
+                       IMX8QXP_ENET0_RGMII_TXD0_CONN_ENET0_RGMII_TXD0          0x61
+                       IMX8QXP_ENET0_RGMII_TXD1_CONN_ENET0_RGMII_TXD1          0x61
+                       IMX8QXP_ENET0_RGMII_RX_CTL_CONN_ENET0_RGMII_RX_CTL      0x61
+                       IMX8QXP_ENET0_RGMII_RXD0_CONN_ENET0_RGMII_RXD0          0x61
+                       IMX8QXP_ENET0_RGMII_RXD1_CONN_ENET0_RGMII_RXD1          0x61
+                       IMX8QXP_ENET0_RGMII_RXD2_CONN_ENET0_RMII_RX_ER          0x61
+               >;
+       };
+
+       pinctrl_fec1_sleep: fec1slpgrp {
+               fsl,pins = <
+                       IMX8QXP_ENET0_MDC_LSIO_GPIO5_IO11               0x06000041
+                       IMX8QXP_ENET0_MDIO_LSIO_GPIO5_IO10              0x06000041
+                       IMX8QXP_ENET0_RGMII_TX_CTL_LSIO_GPIO4_IO30      0x41
+                       IMX8QXP_ENET0_RGMII_TXC_LSIO_GPIO4_IO29         0x41
+                       IMX8QXP_ENET0_RGMII_TXD0_LSIO_GPIO4_IO31        0x41
+                       IMX8QXP_ENET0_RGMII_TXD1_LSIO_GPIO5_IO00        0x41
+                       IMX8QXP_ENET0_RGMII_RX_CTL_LSIO_GPIO5_IO04      0x41
+                       IMX8QXP_ENET0_RGMII_RXD0_LSIO_GPIO5_IO05        0x41
+                       IMX8QXP_ENET0_RGMII_RXD1_LSIO_GPIO5_IO06        0x41
+                       IMX8QXP_ENET0_RGMII_RXD2_LSIO_GPIO5_IO07        0x41
+               >;
+       };
+
+       /* Colibri optional CAN on UART_B RTS/CTS */
+       pinctrl_flexcan1: flexcan0grp {
+               fsl,pins = <
+                       IMX8QXP_FLEXCAN0_TX_ADMA_FLEXCAN0_TX            0x21            /* SODIMM  32 */
+                       IMX8QXP_FLEXCAN0_RX_ADMA_FLEXCAN0_RX            0x21            /* SODIMM  34 */
+               >;
+       };
+
+       /* Colibri optional CAN on PS2 */
+       pinctrl_flexcan2: flexcan1grp {
+               fsl,pins = <
+                       IMX8QXP_FLEXCAN1_TX_ADMA_FLEXCAN1_TX            0x21            /* SODIMM  55 */
+                       IMX8QXP_FLEXCAN1_RX_ADMA_FLEXCAN1_RX            0x21            /* SODIMM  63 */
+               >;
+       };
+
+       /* Colibri optional CAN on UART_A TXD/RXD */
+       pinctrl_flexcan3: flexcan2grp {
+               fsl,pins = <
+                       IMX8QXP_FLEXCAN2_TX_ADMA_FLEXCAN2_TX            0x21            /* SODIMM  35 */
+                       IMX8QXP_FLEXCAN2_RX_ADMA_FLEXCAN2_RX            0x21            /* SODIMM  33 */
+               >;
+       };
+
+       /* Colibri LCD Back-Light GPIO */
+       pinctrl_gpio_bl_on: gpioblongrp {
+               fsl,pins = <
+                       IMX8QXP_QSPI0A_DATA3_LSIO_GPIO3_IO12            0x60            /* SODIMM  71 */
+               >;
+       };
+
+       pinctrl_gpiokeys: gpiokeysgrp {
+               fsl,pins = <
+                       IMX8QXP_QSPI0A_DATA1_LSIO_GPIO3_IO10            0x06700041      /* SODIMM  45 */
+               >;
+       };
+
+       pinctrl_hog0: hog0grp {
+               fsl,pins = <
+                       IMX8QXP_ENET0_RGMII_TXD3_LSIO_GPIO5_IO02        0x06000020      /* SODIMM  65 */
+                       IMX8QXP_CSI_D07_CI_PI_D09                       0x61            /* SODIMM  65 */
+                       IMX8QXP_QSPI0A_DATA2_LSIO_GPIO3_IO11            0x20            /* SODIMM  69 */
+                       IMX8QXP_SAI0_TXC_LSIO_GPIO0_IO26                0x20            /* SODIMM  79 */
+                       IMX8QXP_CSI_D02_CI_PI_D04                       0x61            /* SODIMM  79 */
+                       IMX8QXP_ENET0_RGMII_RXC_LSIO_GPIO5_IO03         0x06000020      /* SODIMM  85 */
+                       IMX8QXP_CSI_D06_CI_PI_D08                       0x61            /* SODIMM  85 */
+                       IMX8QXP_QSPI0B_SCLK_LSIO_GPIO3_IO17             0x20            /* SODIMM  95 */
+                       IMX8QXP_SAI0_RXD_LSIO_GPIO0_IO27                0x20            /* SODIMM  97 */
+                       IMX8QXP_CSI_D03_CI_PI_D05                       0x61            /* SODIMM  97 */
+                       IMX8QXP_QSPI0B_DATA0_LSIO_GPIO3_IO18            0x20            /* SODIMM  99 */
+                       IMX8QXP_SAI0_TXFS_LSIO_GPIO0_IO28               0x20            /* SODIMM 101 */
+                       IMX8QXP_CSI_D00_CI_PI_D02                       0x61            /* SODIMM 101 */
+                       IMX8QXP_SAI0_TXD_LSIO_GPIO0_IO25                0x20            /* SODIMM 103 */
+                       IMX8QXP_CSI_D01_CI_PI_D03                       0x61            /* SODIMM 103 */
+                       IMX8QXP_QSPI0B_DATA1_LSIO_GPIO3_IO19            0x20            /* SODIMM 105 */
+                       IMX8QXP_QSPI0B_DATA2_LSIO_GPIO3_IO20            0x20            /* SODIMM 107 */
+                       IMX8QXP_USB_SS3_TC2_LSIO_GPIO4_IO05             0x20            /* SODIMM 127 */
+                       IMX8QXP_USB_SS3_TC3_LSIO_GPIO4_IO06             0x20            /* SODIMM 131 */
+                       IMX8QXP_USB_SS3_TC1_LSIO_GPIO4_IO04             0x20            /* SODIMM 133 */
+                       IMX8QXP_CSI_PCLK_LSIO_GPIO3_IO00                0x20            /* SODIMM  96 */
+                       IMX8QXP_QSPI0B_DATA3_LSIO_GPIO3_IO21            0x20            /* SODIMM  98 */
+                       IMX8QXP_SAI1_RXFS_LSIO_GPIO0_IO31               0x20            /* SODIMM 100 */
+                       IMX8QXP_QSPI0B_DQS_LSIO_GPIO3_IO22              0x20            /* SODIMM 102 */
+                       IMX8QXP_QSPI0B_SS0_B_LSIO_GPIO3_IO23            0x20            /* SODIMM 104 */
+                       IMX8QXP_QSPI0B_SS1_B_LSIO_GPIO3_IO24            0x20            /* SODIMM 106 */
+               >;
+       };
+
+       pinctrl_hog1: hog1grp {
+               fsl,pins = <
+                       IMX8QXP_CSI_MCLK_LSIO_GPIO3_IO01                0x20            /* SODIMM  75 */
+                       IMX8QXP_QSPI0A_SCLK_LSIO_GPIO3_IO16             0x20            /* SODIMM  93 */
+               >;
+       };
+
+       /*
+        * This pin is used in the SCFW as a UART. Using it from
+        * Linux would require rewritting the SCFW board file.
+        */
+       pinctrl_hog_scfw: hogscfwgrp {
+               fsl,pins = <
+                       IMX8QXP_SCU_GPIO0_00_LSIO_GPIO2_IO03            0x20            /* SODIMM 144 */
+               >;
+       };
+
+       /* On Module I2C */
+       pinctrl_i2c0: i2c0grp {
+               fsl,pins = <
+                       IMX8QXP_MIPI_CSI0_GPIO0_00_ADMA_I2C0_SCL        0x06000021
+                       IMX8QXP_MIPI_CSI0_GPIO0_01_ADMA_I2C0_SDA        0x06000021
+               >;
+       };
+
+       /* MIPI DSI I2C accessible on SODIMM (X1) and FFC (X2) */
+       pinctrl_i2c0_mipi_lvds0: i2c0mipilvds0grp {
+               fsl,pins = <
+                       IMX8QXP_MIPI_DSI0_I2C0_SCL_MIPI_DSI0_I2C0_SCL   0xc6000020      /* SODIMM 140 */
+                       IMX8QXP_MIPI_DSI0_I2C0_SDA_MIPI_DSI0_I2C0_SDA   0xc6000020      /* SODIMM 142 */
+               >;
+       };
+
+       /* MIPI CSI I2C accessible on SODIMM (X1) and FFC (X3) */
+       pinctrl_i2c0_mipi_lvds1: i2c0mipilvds1grp {
+               fsl,pins = <
+                       IMX8QXP_MIPI_DSI1_I2C0_SCL_MIPI_DSI1_I2C0_SCL   0xc6000020      /* SODIMM 186 */
+                       IMX8QXP_MIPI_DSI1_I2C0_SDA_MIPI_DSI1_I2C0_SDA   0xc6000020      /* SODIMM 188 */
+               >;
+       };
+
+       /* Colibri I2C */
+       pinctrl_i2c1: i2c1grp {
+               fsl,pins = <
+                       IMX8QXP_MIPI_DSI0_GPIO0_00_ADMA_I2C1_SCL        0x06000021      /* SODIMM 196 */
+                       IMX8QXP_MIPI_DSI0_GPIO0_01_ADMA_I2C1_SDA        0x06000021      /* SODIMM 194 */
+               >;
+       };
+
+       /* Colibri Parallel RGB LCD Interface */
+       pinctrl_lcdif: lcdifgrp {
+               fsl,pins = <
+                       IMX8QXP_MCLK_OUT0_ADMA_LCDIF_CLK                0x60            /* SODIMM  56 */
+                       IMX8QXP_SPI3_CS0_ADMA_LCDIF_HSYNC               0x60            /* SODIMM  68 */
+                       IMX8QXP_MCLK_IN0_ADMA_LCDIF_VSYNC               0x60            /* SODIMM  82 */
+                       IMX8QXP_MCLK_IN1_ADMA_LCDIF_EN                  0x60            /* SODIMM  44 */
+                       IMX8QXP_USDHC1_RESET_B_LSIO_GPIO4_IO19          0x60            /* SODIMM  44 */
+                       IMX8QXP_ESAI0_FSR_ADMA_LCDIF_D00                0x60            /* SODIMM  76 */
+                       IMX8QXP_USDHC1_WP_LSIO_GPIO4_IO21               0x60            /* SODIMM  76 */
+                       IMX8QXP_ESAI0_FST_ADMA_LCDIF_D01                0x60            /* SODIMM  70 */
+                       IMX8QXP_ESAI0_SCKR_ADMA_LCDIF_D02               0x60            /* SODIMM  60 */
+                       IMX8QXP_ESAI0_SCKT_ADMA_LCDIF_D03               0x60            /* SODIMM  58 */
+                       IMX8QXP_ESAI0_TX0_ADMA_LCDIF_D04                0x60            /* SODIMM  78 */
+                       IMX8QXP_ESAI0_TX1_ADMA_LCDIF_D05                0x60            /* SODIMM  72 */
+                       IMX8QXP_ESAI0_TX2_RX3_ADMA_LCDIF_D06            0x60            /* SODIMM  80 */
+                       IMX8QXP_ESAI0_TX3_RX2_ADMA_LCDIF_D07            0x60            /* SODIMM  46 */
+                       IMX8QXP_ESAI0_TX4_RX1_ADMA_LCDIF_D08            0x60            /* SODIMM  62 */
+                       IMX8QXP_ESAI0_TX5_RX0_ADMA_LCDIF_D09            0x60            /* SODIMM  48 */
+                       IMX8QXP_SPDIF0_RX_ADMA_LCDIF_D10                0x60            /* SODIMM  74 */
+                       IMX8QXP_SPDIF0_TX_ADMA_LCDIF_D11                0x60            /* SODIMM  50 */
+                       IMX8QXP_SPDIF0_EXT_CLK_ADMA_LCDIF_D12           0x60            /* SODIMM  52 */
+                       IMX8QXP_SPI3_SCK_ADMA_LCDIF_D13                 0x60            /* SODIMM  54 */
+                       IMX8QXP_SPI3_SDO_ADMA_LCDIF_D14                 0x60            /* SODIMM  66 */
+                       IMX8QXP_SPI3_SDI_ADMA_LCDIF_D15                 0x60            /* SODIMM  64 */
+                       IMX8QXP_SPI3_CS1_ADMA_LCDIF_D16                 0x60            /* SODIMM  57 */
+                       IMX8QXP_ENET0_RGMII_TXD2_LSIO_GPIO5_IO01        0x60            /* SODIMM  57 */
+                       IMX8QXP_UART1_CTS_B_ADMA_LCDIF_D17              0x60            /* SODIMM  61 */
+               >;
+       };
+
+       /* Colibri SPI */
+       pinctrl_lpspi2: lpspi2grp {
+               fsl,pins = <
+                       IMX8QXP_SPI2_CS0_LSIO_GPIO1_IO00                0x21            /* SODIMM  86 */
+                       IMX8QXP_SPI2_SDO_ADMA_SPI2_SDO                  0x06000040      /* SODIMM  92 */
+                       IMX8QXP_SPI2_SDI_ADMA_SPI2_SDI                  0x06000040      /* SODIMM  90 */
+                       IMX8QXP_SPI2_SCK_ADMA_SPI2_SCK                  0x06000040      /* SODIMM  88 */
+               >;
+       };
+
+       /* Colibri UART_B */
+       pinctrl_lpuart0: lpuart0grp {
+               fsl,pins = <
+                       IMX8QXP_UART0_RX_ADMA_UART0_RX                  0x06000020      /* SODIMM  36 */
+                       IMX8QXP_UART0_TX_ADMA_UART0_TX                  0x06000020      /* SODIMM  38 */
+                       IMX8QXP_FLEXCAN0_RX_ADMA_UART0_RTS_B            0x06000020      /* SODIMM  34 */
+                       IMX8QXP_FLEXCAN0_TX_ADMA_UART0_CTS_B            0x06000020      /* SODIMM  32 */
+               >;
+       };
+
+       /* Colibri UART_C */
+       pinctrl_lpuart2: lpuart2grp {
+               fsl,pins = <
+                       IMX8QXP_UART2_RX_ADMA_UART2_RX                  0x06000020      /* SODIMM  19 */
+                       IMX8QXP_UART2_TX_ADMA_UART2_TX                  0x06000020      /* SODIMM  21 */
+               >;
+       };
+
+       /* Colibri UART_A */
+       pinctrl_lpuart3: lpuart3grp {
+               fsl,pins = <
+                       IMX8QXP_FLEXCAN2_RX_ADMA_UART3_RX               0x06000020      /* SODIMM  33 */
+                       IMX8QXP_FLEXCAN2_TX_ADMA_UART3_TX               0x06000020      /* SODIMM  35 */
+               >;
+       };
+
+       /* Colibri UART_A Control */
+       pinctrl_lpuart3_ctrl: lpuart3ctrlgrp {
+               fsl,pins = <
+                       IMX8QXP_MIPI_DSI1_GPIO0_01_LSIO_GPIO2_IO00      0x20            /* SODIMM  23 */
+                       IMX8QXP_SAI1_RXD_LSIO_GPIO0_IO29                0x20            /* SODIMM  25 */
+                       IMX8QXP_SAI1_RXC_LSIO_GPIO0_IO30                0x20            /* SODIMM  27 */
+                       IMX8QXP_CSI_RESET_LSIO_GPIO3_IO03               0x20            /* SODIMM  29 */
+                       IMX8QXP_USDHC1_CD_B_LSIO_GPIO4_IO22             0x20            /* SODIMM  31 */
+                       IMX8QXP_CSI_EN_LSIO_GPIO3_IO02                  0x20            /* SODIMM  37 */
+               >;
+       };
+
+       /* On module wifi module */
+       pinctrl_pcieb: pciebgrp {
+               fsl,pins = <
+                       IMX8QXP_PCIE_CTRL0_CLKREQ_B_LSIO_GPIO4_IO01     0x04000061      /* SODIMM 178 */
+                       IMX8QXP_PCIE_CTRL0_WAKE_B_LSIO_GPIO4_IO02       0x04000061      /* SODIMM  94 */
+                       IMX8QXP_PCIE_CTRL0_PERST_B_LSIO_GPIO4_IO00      0x60            /* SODIMM  81 */
+               >;
+       };
+
+       /* Colibri PWM_A */
+       pinctrl_pwm_a: pwmagrp {
+       /* both pins are connected together, reserve the unused CSI_D05 */
+               fsl,pins = <
+                       IMX8QXP_CSI_D05_CI_PI_D07                       0x61            /* SODIMM  59 */
+                       IMX8QXP_SPI0_CS1_ADMA_LCD_PWM0_OUT              0x60            /* SODIMM  59 */
+               >;
+       };
+
+       /* Colibri PWM_B */
+       pinctrl_pwm_b: pwmbgrp {
+               fsl,pins = <
+                       IMX8QXP_UART1_TX_LSIO_PWM0_OUT                  0x60            /* SODIMM  28 */
+               >;
+       };
+
+       /* Colibri PWM_C */
+       pinctrl_pwm_c: pwmcgrp {
+               fsl,pins = <
+                       IMX8QXP_UART1_RX_LSIO_PWM1_OUT                  0x60            /* SODIMM  30 */
+               >;
+       };
+
+       /* Colibri PWM_D */
+       pinctrl_pwm_d: pwmdgrp {
+       /* both pins are connected together, reserve the unused CSI_D04 */
+               fsl,pins = <
+                       IMX8QXP_CSI_D04_CI_PI_D06                       0x61            /* SODIMM  67 */
+                       IMX8QXP_UART1_RTS_B_LSIO_PWM2_OUT               0x60            /* SODIMM  67 */
+               >;
+       };
+
+       /* On-module I2S */
+       pinctrl_sai0: sai0grp {
+               fsl,pins = <
+                       IMX8QXP_SPI0_SDI_ADMA_SAI0_TXD                  0x06000040
+                       IMX8QXP_SPI0_CS0_ADMA_SAI0_RXD                  0x06000040
+                       IMX8QXP_SPI0_SCK_ADMA_SAI0_TXC                  0x06000040
+                       IMX8QXP_SPI0_SDO_ADMA_SAI0_TXFS                 0x06000040
+               >;
+       };
+
+       /* Colibri Audio Analogue Microphone GND */
+       pinctrl_sgtl5000: sgtl5000grp {
+               fsl,pins = <
+                       /* MIC GND EN */
+                       IMX8QXP_MIPI_CSI0_I2C0_SDA_LSIO_GPIO3_IO06      0x41
+               >;
+       };
+
+       /* On-module SGTL5000 clock */
+       pinctrl_sgtl5000_usb_clk: sgtl5000usbclkgrp {
+               fsl,pins = <
+                       IMX8QXP_ADC_IN3_ADMA_ACM_MCLK_OUT0              0x21
+               >;
+       };
+
+       /* On-module USB interrupt */
+       pinctrl_usb3503a: usb3503agrp {
+               fsl,pins = <
+                       IMX8QXP_MIPI_CSI0_MCLK_OUT_LSIO_GPIO3_IO04      0x61
+               >;
+       };
+
+       /* Colibri USB Client Cable Detect */
+       pinctrl_usbc_det: usbcdetgrp {
+               fsl,pins = <
+                       IMX8QXP_ENET0_REFCLK_125M_25M_LSIO_GPIO5_IO09   0x06000040      /* SODIMM 137 */
+               >;
+       };
+
+       /* USB Host Power Enable */
+       pinctrl_usbh1_reg: usbh1reggrp {
+               fsl,pins = <
+                       IMX8QXP_USB_SS3_TC0_LSIO_GPIO4_IO03             0x06000040      /* SODIMM 129 */
+               >;
+       };
+
+       /* On-module eMMC */
+       pinctrl_usdhc1: usdhc1grp {
+               fsl,pins = <
+                       IMX8QXP_EMMC0_CLK_CONN_EMMC0_CLK                0x06000041
+                       IMX8QXP_EMMC0_CMD_CONN_EMMC0_CMD                0x21
+                       IMX8QXP_EMMC0_DATA0_CONN_EMMC0_DATA0            0x21
+                       IMX8QXP_EMMC0_DATA1_CONN_EMMC0_DATA1            0x21
+                       IMX8QXP_EMMC0_DATA2_CONN_EMMC0_DATA2            0x21
+                       IMX8QXP_EMMC0_DATA3_CONN_EMMC0_DATA3            0x21
+                       IMX8QXP_EMMC0_DATA4_CONN_EMMC0_DATA4            0x21
+                       IMX8QXP_EMMC0_DATA5_CONN_EMMC0_DATA5            0x21
+                       IMX8QXP_EMMC0_DATA6_CONN_EMMC0_DATA6            0x21
+                       IMX8QXP_EMMC0_DATA7_CONN_EMMC0_DATA7            0x21
+                       IMX8QXP_EMMC0_STROBE_CONN_EMMC0_STROBE          0x41
+                       IMX8QXP_EMMC0_RESET_B_CONN_EMMC0_RESET_B        0x21
+               >;
+       };
+
+       pinctrl_usdhc1_100mhz: usdhc1grp100mhz {
+               fsl,pins = <
+                       IMX8QXP_EMMC0_CLK_CONN_EMMC0_CLK                0x06000041
+                       IMX8QXP_EMMC0_CMD_CONN_EMMC0_CMD                0x21
+                       IMX8QXP_EMMC0_DATA0_CONN_EMMC0_DATA0            0x21
+                       IMX8QXP_EMMC0_DATA1_CONN_EMMC0_DATA1            0x21
+                       IMX8QXP_EMMC0_DATA2_CONN_EMMC0_DATA2            0x21
+                       IMX8QXP_EMMC0_DATA3_CONN_EMMC0_DATA3            0x21
+                       IMX8QXP_EMMC0_DATA4_CONN_EMMC0_DATA4            0x21
+                       IMX8QXP_EMMC0_DATA5_CONN_EMMC0_DATA5            0x21
+                       IMX8QXP_EMMC0_DATA6_CONN_EMMC0_DATA6            0x21
+                       IMX8QXP_EMMC0_DATA7_CONN_EMMC0_DATA7            0x21
+                       IMX8QXP_EMMC0_STROBE_CONN_EMMC0_STROBE          0x41
+                       IMX8QXP_EMMC0_RESET_B_CONN_EMMC0_RESET_B        0x21
+               >;
+       };
+
+       pinctrl_usdhc1_200mhz: usdhc1grp200mhz {
+               fsl,pins = <
+                       IMX8QXP_EMMC0_CLK_CONN_EMMC0_CLK                0x06000041
+                       IMX8QXP_EMMC0_CMD_CONN_EMMC0_CMD                0x21
+                       IMX8QXP_EMMC0_DATA0_CONN_EMMC0_DATA0            0x21
+                       IMX8QXP_EMMC0_DATA1_CONN_EMMC0_DATA1            0x21
+                       IMX8QXP_EMMC0_DATA2_CONN_EMMC0_DATA2            0x21
+                       IMX8QXP_EMMC0_DATA3_CONN_EMMC0_DATA3            0x21
+                       IMX8QXP_EMMC0_DATA4_CONN_EMMC0_DATA4            0x21
+                       IMX8QXP_EMMC0_DATA5_CONN_EMMC0_DATA5            0x21
+                       IMX8QXP_EMMC0_DATA6_CONN_EMMC0_DATA6            0x21
+                       IMX8QXP_EMMC0_DATA7_CONN_EMMC0_DATA7            0x21
+                       IMX8QXP_EMMC0_STROBE_CONN_EMMC0_STROBE          0x41
+                       IMX8QXP_EMMC0_RESET_B_CONN_EMMC0_RESET_B        0x21
+               >;
+       };
+
+       /* Colibri SD/MMC Card Detect */
+       pinctrl_usdhc2_gpio: usdhc2gpiogrp {
+               fsl,pins = <
+                       IMX8QXP_QSPI0A_DATA0_LSIO_GPIO3_IO09            0x06000021      /* SODIMM  43 */
+               >;
+       };
+
+       pinctrl_usdhc2_gpio_sleep: usdhc2gpioslpgrp {
+               fsl,pins = <
+                       IMX8QXP_QSPI0A_DATA0_LSIO_GPIO3_IO09            0x60            /* SODIMM  43 */
+               >;
+       };
+
+       /* Colibri SD/MMC Card */
+       pinctrl_usdhc2: usdhc2grp {
+               fsl,pins = <
+                       IMX8QXP_USDHC1_CLK_CONN_USDHC1_CLK              0x06000041      /* SODIMM  47 */
+                       IMX8QXP_USDHC1_CMD_CONN_USDHC1_CMD              0x21            /* SODIMM 190 */
+                       IMX8QXP_USDHC1_DATA0_CONN_USDHC1_DATA0          0x21            /* SODIMM 192 */
+                       IMX8QXP_USDHC1_DATA1_CONN_USDHC1_DATA1          0x21            /* SODIMM  49 */
+                       IMX8QXP_USDHC1_DATA2_CONN_USDHC1_DATA2          0x21            /* SODIMM  51 */
+                       IMX8QXP_USDHC1_DATA3_CONN_USDHC1_DATA3          0x21            /* SODIMM  53 */
+                       IMX8QXP_USDHC1_VSELECT_CONN_USDHC1_VSELECT      0x21
+               >;
+       };
+
+       pinctrl_usdhc2_100mhz: usdhc2grp100mhz {
+               fsl,pins = <
+                       IMX8QXP_USDHC1_CLK_CONN_USDHC1_CLK              0x06000041      /* SODIMM  47 */
+                       IMX8QXP_USDHC1_CMD_CONN_USDHC1_CMD              0x21            /* SODIMM 190 */
+                       IMX8QXP_USDHC1_DATA0_CONN_USDHC1_DATA0          0x21            /* SODIMM 192 */
+                       IMX8QXP_USDHC1_DATA1_CONN_USDHC1_DATA1          0x21            /* SODIMM  49 */
+                       IMX8QXP_USDHC1_DATA2_CONN_USDHC1_DATA2          0x21            /* SODIMM  51 */
+                       IMX8QXP_USDHC1_DATA3_CONN_USDHC1_DATA3          0x21            /* SODIMM  53 */
+                       IMX8QXP_USDHC1_VSELECT_CONN_USDHC1_VSELECT      0x21
+               >;
+       };
+
+       pinctrl_usdhc2_200mhz: usdhc2grp200mhz {
+               fsl,pins = <
+                       IMX8QXP_USDHC1_CLK_CONN_USDHC1_CLK              0x06000041      /* SODIMM  47 */
+                       IMX8QXP_USDHC1_CMD_CONN_USDHC1_CMD              0x21            /* SODIMM 190 */
+                       IMX8QXP_USDHC1_DATA0_CONN_USDHC1_DATA0          0x21            /* SODIMM 192 */
+                       IMX8QXP_USDHC1_DATA1_CONN_USDHC1_DATA1          0x21            /* SODIMM  49 */
+                       IMX8QXP_USDHC1_DATA2_CONN_USDHC1_DATA2          0x21            /* SODIMM  51 */
+                       IMX8QXP_USDHC1_DATA3_CONN_USDHC1_DATA3          0x21            /* SODIMM  53 */
+                       IMX8QXP_USDHC1_VSELECT_CONN_USDHC1_VSELECT      0x21
+               >;
+       };
+
+       pinctrl_usdhc2_sleep: usdhc2slpgrp {
+               fsl,pins = <
+                       IMX8QXP_USDHC1_CLK_LSIO_GPIO4_IO23              0x60            /* SODIMM  47 */
+                       IMX8QXP_USDHC1_CMD_LSIO_GPIO4_IO24              0x60            /* SODIMM 190 */
+                       IMX8QXP_USDHC1_DATA0_LSIO_GPIO4_IO25            0x60            /* SODIMM 192 */
+                       IMX8QXP_USDHC1_DATA1_LSIO_GPIO4_IO26            0x60            /* SODIMM  49 */
+                       IMX8QXP_USDHC1_DATA2_LSIO_GPIO4_IO27            0x60            /* SODIMM  51 */
+                       IMX8QXP_USDHC1_DATA3_LSIO_GPIO4_IO28            0x60            /* SODIMM  53 */
+                       IMX8QXP_USDHC1_VSELECT_CONN_USDHC1_VSELECT      0x21
+               >;
+       };
+
+       pinctrl_wifi: wifigrp {
+               fsl,pins = <
+                       IMX8QXP_SCU_BOOT_MODE3_SCU_DSC_RTC_CLOCK_OUTPUT_32K     0x20
+               >;
+       };
+};
index 1946805..d3d26cc 100644 (file)
 };
 
 &usdhc1 {
+       assigned-clocks = <&clk IMX_CONN_SDHC0_CLK>;
+       assigned-clock-rates = <200000000>;
        pinctrl-names = "default";
        pinctrl-0 = <&pinctrl_usdhc1>;
        bus-width = <8>;
 };
 
 &usdhc2 {
+       assigned-clocks = <&clk IMX_CONN_SDHC1_CLK>;
+       assigned-clock-rates = <200000000>;
        pinctrl-names = "default";
        pinctrl-0 = <&pinctrl_usdhc2>;
        bus-width = <4>;
 &adma_dsp {
        status = "okay";
 };
+
+&scu_key {
+       status = "okay";
+};
index 1133b41..9646a41 100644 (file)
@@ -8,6 +8,7 @@
 #include <dt-bindings/clock/imx8-clock.h>
 #include <dt-bindings/firmware/imx/rsrc.h>
 #include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/input/input.h>
 #include <dt-bindings/interrupt-controller/arm-gic.h>
 #include <dt-bindings/pinctrl/pads-imx8qxp.h>
 
                        #power-domain-cells = <1>;
                };
 
+               scu_key: scu-key {
+                       compatible = "fsl,imx8qxp-sc-key", "fsl,imx-sc-key";
+                       linux,keycodes = <KEY_POWER>;
+                       status = "disabled";
+               };
+
                rtc: rtc {
                        compatible = "fsl,imx8qxp-sc-rtc";
                };
                                 <&conn_lpcg IMX_CONN_LPCG_SDHC0_PER_CLK>,
                                 <&conn_lpcg IMX_CONN_LPCG_SDHC0_HCLK>;
                        clock-names = "ipg", "per", "ahb";
-                       assigned-clocks = <&clk IMX_CONN_SDHC0_CLK>;
-                       assigned-clock-rates = <200000000>;
                        power-domains = <&pd IMX_SC_R_SDHC_0>;
                        status = "disabled";
                };
                                 <&conn_lpcg IMX_CONN_LPCG_SDHC1_PER_CLK>,
                                 <&conn_lpcg IMX_CONN_LPCG_SDHC1_HCLK>;
                        clock-names = "ipg", "per", "ahb";
-                       assigned-clocks = <&clk IMX_CONN_SDHC1_CLK>;
-                       assigned-clock-rates = <200000000>;
                        power-domains = <&pd IMX_SC_R_SDHC_1>;
                        fsl,tuning-start-tap = <20>;
                        fsl,tuning-step= <2>;
                                 <&conn_lpcg IMX_CONN_LPCG_SDHC2_PER_CLK>,
                                 <&conn_lpcg IMX_CONN_LPCG_SDHC2_HCLK>;
                        clock-names = "ipg", "per", "ahb";
-                       assigned-clocks = <&clk IMX_CONN_SDHC2_CLK>;
-                       assigned-clock-rates = <200000000>;
                        power-domains = <&pd IMX_SC_R_SDHC_2>;
                        status = "disabled";
                };
diff --git a/arch/arm64/boot/dts/freescale/s32v234-evb.dts b/arch/arm64/boot/dts/freescale/s32v234-evb.dts
new file mode 100644 (file)
index 0000000..4b80251
--- /dev/null
@@ -0,0 +1,25 @@
+// SPDX-License-Identifier: GPL-2.0-or-later
+/*
+ * Copyright 2015-2016 Freescale Semiconductor, Inc.
+ * Copyright 2016-2017 NXP
+ */
+
+/dts-v1/;
+#include "s32v234.dtsi"
+
+/ {
+       model = "NXP S32V234-EVB2 Board";
+       compatible = "fsl,s32v234-evb", "fsl,s32v234";
+
+       chosen {
+               stdout-path = "serial0:115200n8";
+       };
+};
+
+&uart0 {
+       status = "okay";
+};
+
+&uart1 {
+       status = "okay";
+};
diff --git a/arch/arm64/boot/dts/freescale/s32v234.dtsi b/arch/arm64/boot/dts/freescale/s32v234.dtsi
new file mode 100644 (file)
index 0000000..e746b9c
--- /dev/null
@@ -0,0 +1,139 @@
+// SPDX-License-Identifier: GPL-2.0-or-later
+/*
+ * Copyright 2015-2016 Freescale Semiconductor, Inc.
+ * Copyright 2016-2018 NXP
+ */
+
+#include <dt-bindings/interrupt-controller/arm-gic.h>
+
+/memreserve/ 0x80000000 0x00010000;
+
+/ {
+       compatible = "fsl,s32v234";
+       interrupt-parent = <&gic>;
+       #address-cells = <2>;
+       #size-cells = <2>;
+
+       aliases {
+               serial0 = &uart0;
+               serial1 = &uart1;
+       };
+
+       cpus {
+               #address-cells = <2>;
+               #size-cells = <0>;
+
+               cpu0: cpu@0 {
+                       device_type = "cpu";
+                       compatible = "arm,cortex-a53";
+                       reg = <0x0 0x0>;
+                       enable-method = "spin-table";
+                       cpu-release-addr = <0x0 0x80000000>;
+                       next-level-cache = <&cluster0_l2_cache>;
+               };
+
+               cpu1: cpu@1 {
+                       device_type = "cpu";
+                       compatible = "arm,cortex-a53";
+                       reg = <0x0 0x1>;
+                       enable-method = "spin-table";
+                       cpu-release-addr = <0x0 0x80000000>;
+                       next-level-cache = <&cluster0_l2_cache>;
+               };
+
+               cpu2: cpu@100 {
+                       device_type = "cpu";
+                       compatible = "arm,cortex-a53";
+                       reg = <0x0 0x100>;
+                       enable-method = "spin-table";
+                       cpu-release-addr = <0x0 0x80000000>;
+                       next-level-cache = <&cluster1_l2_cache>;
+               };
+
+               cpu3: cpu@101 {
+                       device_type = "cpu";
+                       compatible = "arm,cortex-a53";
+                       reg = <0x0 0x101>;
+                       enable-method = "spin-table";
+                       cpu-release-addr = <0x0 0x80000000>;
+                       next-level-cache = <&cluster1_l2_cache>;
+               };
+
+               cluster0_l2_cache: l2-cache0 {
+                       compatible = "cache";
+               };
+
+               cluster1_l2_cache: l2-cache1 {
+                       compatible = "cache";
+               };
+       };
+
+       timer {
+               compatible = "arm,armv8-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)>;
+               /* clock-frequency might be modified by u-boot, depending on the
+                * chip version.
+                */
+               clock-frequency = <10000000>;
+       };
+
+       gic: interrupt-controller@7d001000 {
+               compatible = "arm,cortex-a15-gic", "arm,cortex-a9-gic";
+               #interrupt-cells = <3>;
+               #address-cells = <0>;
+               interrupt-controller;
+               reg = <0 0x7d001000 0 0x1000>,
+                     <0 0x7d002000 0 0x2000>,
+                     <0 0x7d004000 0 0x2000>,
+                     <0 0x7d006000 0 0x2000>;
+               interrupts = <GIC_PPI 9 (GIC_CPU_MASK_SIMPLE(4) |
+                                        IRQ_TYPE_LEVEL_HIGH)>;
+       };
+
+       soc {
+               #address-cells = <2>;
+               #size-cells = <2>;
+               compatible = "simple-bus";
+               interrupt-parent = <&gic>;
+               ranges;
+
+               aips0: aips-bus@40000000 {
+                       compatible = "simple-bus";
+                       #address-cells = <2>;
+                       #size-cells = <2>;
+                       interrupt-parent = <&gic>;
+                       reg = <0x0 0x40000000 0x0 0x7d000>;
+                       ranges;
+
+                       uart0: serial@40053000 {
+                               compatible = "fsl,s32v234-linflexuart";
+                               reg = <0x0 0x40053000 0x0 0x1000>;
+                               interrupts = <GIC_SPI 59 IRQ_TYPE_EDGE_RISING>;
+                               status = "disabled";
+                       };
+               };
+
+               aips1: aips-bus@40080000 {
+                       compatible = "simple-bus";
+                       #address-cells = <2>;
+                       #size-cells = <2>;
+                       interrupt-parent = <&gic>;
+                       reg = <0x0 0x40080000 0x0 0x70000>;
+                       ranges;
+
+                       uart1: serial@400bc000 {
+                               compatible = "fsl,s32v234-linflexuart";
+                               reg = <0x0 0x400bc000 0x0 0x1000>;
+                               interrupts = <GIC_SPI 60 IRQ_TYPE_EDGE_RISING>;
+                               status = "disabled";
+                       };
+               };
+       };
+};
index 108e2a4..2072b63 100644 (file)
                        compatible = "hisilicon,hi6220-aoctrl", "syscon";
                        reg = <0x0 0xf7800000 0x0 0x2000>;
                        #clock-cells = <1>;
+                       #reset-cells = <1>;
                };
 
                sys_ctrl: sys_ctrl@f7030000 {
                        clock-names = "apb_pclk";
                        cpu = <&cpu7>;
                };
+
+               mali: gpu@f4080000 {
+                       compatible = "hisilicon,hi6220-mali", "arm,mali-450";
+                       reg = <0x0 0xf4080000 0x0 0x00040000>;
+                       interrupt-parent = <&gic>;
+                       interrupts =    <GIC_PPI 126 IRQ_TYPE_LEVEL_HIGH>,
+                                       <GIC_PPI 126 IRQ_TYPE_LEVEL_HIGH>,
+                                       <GIC_PPI 126 IRQ_TYPE_LEVEL_HIGH>,
+                                       <GIC_PPI 126 IRQ_TYPE_LEVEL_HIGH>,
+                                       <GIC_PPI 126 IRQ_TYPE_LEVEL_HIGH>,
+                                       <GIC_PPI 126 IRQ_TYPE_LEVEL_HIGH>,
+                                       <GIC_PPI 126 IRQ_TYPE_LEVEL_HIGH>,
+                                       <GIC_PPI 126 IRQ_TYPE_LEVEL_HIGH>,
+                                       <GIC_PPI 126 IRQ_TYPE_LEVEL_HIGH>,
+                                       <GIC_PPI 126 IRQ_TYPE_LEVEL_HIGH>,
+                                       <GIC_PPI 126 IRQ_TYPE_LEVEL_HIGH>;
+
+                       interrupt-names = "gp",
+                                         "gpmmu",
+                                         "pp",
+                                         "pp0",
+                                         "ppmmu0",
+                                         "pp1",
+                                         "ppmmu1",
+                                         "pp2",
+                                         "ppmmu2",
+                                         "pp3",
+                                         "ppmmu3";
+                       clocks = <&media_ctrl HI6220_G3D_CLK>,
+                                <&media_ctrl HI6220_G3D_PCLK>;
+                       clock-names = "core", "bus";
+                       assigned-clocks = <&media_ctrl HI6220_G3D_CLK>,
+                                         <&media_ctrl HI6220_G3D_PCLK>;
+                       assigned-clock-rates = <500000000>, <144000000>;
+                       reset-names = "ao_g3d", "media_g3d";
+                       resets = <&ao_ctrl AO_G3D>, <&media_ctrl MEDIA_G3D>;
+               };
        };
 };
 
index 36abc25..94090c6 100644 (file)
        #address-cells = <2>;
        #size-cells = <2>;
 
+       reserved-memory {
+               #address-cells = <2>;
+               #size-cells = <2>;
+               ranges;
+
+               service_reserved: svcbuffer@0 {
+                       compatible = "shared-dma-pool";
+                       reg = <0x0 0x0 0x0 0x1000000>;
+                       alignment = <0x1000>;
+                       no-map;
+               };
+       };
+
        cpus {
                #address-cells = <1>;
                #size-cells = <0>;
                interrupt-parent = <&intc>;
                ranges = <0 0 0 0xffffffff>;
 
+               base_fpga_region {
+                       #address-cells = <0x1>;
+                       #size-cells = <0x1>;
+                       compatible = "fpga-region";
+                       fpga-mgr = <&fpga_mgr>;
+               };
+
                gmac0: ethernet@ff800000 {
                        compatible = "altr,socfpga-stmmac", "snps,dwmac-3.74a", "snps,dwmac";
                        reg = <0xff800000 0x2000>;
 
                        status = "disabled";
                };
+
+               firmware {
+                       svc {
+                               compatible = "intel,stratix10-svc";
+                               method = "smc";
+                               memory-region = <&service_reserved>;
+
+                               fpga_mgr: fpga-mgr {
+                                       compatible = "intel,stratix10-soc-fpga-mgr";
+                               };
+                       };
+               };
        };
 };
index 7814a9e..e794a12 100644 (file)
                stdout-path = "serial0:115200n8";
        };
 
+       leds {
+               compatible = "gpio-leds";
+               hps0 {
+                       label = "hps_led0";
+                       gpios = <&portb 20 GPIO_ACTIVE_HIGH>;
+               };
+
+               hps1 {
+                       label = "hps_led1";
+                       gpios = <&portb 19 GPIO_ACTIVE_HIGH>;
+               };
+
+               hps2 {
+                       label = "hps_led2";
+                       gpios = <&portb 21 GPIO_ACTIVE_HIGH>;
+               };
+       };
+
        memory {
                device_type = "memory";
                /* We expect the bootloader to fill in the reg */
        status = "okay";
 };
 
+&usb0 {
+       status = "okay";
+       disable-over-current;
+};
+
 &watchdog0 {
        status = "okay";
 };
+
+&qspi {
+       flash@0 {
+               #address-cells = <1>;
+               #size-cells = <1>;
+               compatible = "mt25qu02g";
+               reg = <0>;
+               spi-max-frequency = <100000000>;
+
+               m25p,fast-read;
+               cdns,page-size = <256>;
+               cdns,block-size = <16>;
+               cdns,read-delay = <1>;
+               cdns,tshsl-ns = <50>;
+               cdns,tsd2d-ns = <50>;
+               cdns,tchsh-ns = <4>;
+               cdns,tslch-ns = <4>;
+
+               partitions {
+                       compatible = "fixed-partitions";
+                       #address-cells = <1>;
+                       #size-cells = <1>;
+
+                       qspi_boot: partition@0 {
+                               label = "Boot and fpga data";
+                               reg = <0x0 0x034B0000>;
+                       };
+
+                       qspi_rootfs: partition@34B0000 {
+                               label = "Root Filesystem - JFFS2";
+                               reg = <0x034B0000 0x0EB50000>;
+                       };
+               };
+       };
+};
index c8dc9c2..64f3b13 100644 (file)
        amba {
                #address-cells = <2>;
                #size-cells = <1>;
-               #interrupts-cells = <3>;
+               #interrupt-cells = <3>;
 
                compatible = "simple-bus";
                interrupt-parent = <&gic>;
index 82c6645..ac23592 100644 (file)
        amba {
                #address-cells = <2>;
                #size-cells = <1>;
-               #interrupts-cells = <3>;
+               #interrupt-cells = <3>;
 
                compatible = "simple-bus";
                interrupt-parent = <&gic>;
index 243338c..f1b5127 100644 (file)
@@ -10,3 +10,6 @@ dtb-$(CONFIG_ARCH_MVEBU) += armada-8040-db.dtb
 dtb-$(CONFIG_ARCH_MVEBU) += armada-8040-mcbin.dtb
 dtb-$(CONFIG_ARCH_MVEBU) += armada-8040-mcbin-singleshot.dtb
 dtb-$(CONFIG_ARCH_MVEBU) += armada-8080-db.dtb
+dtb-$(CONFIG_ARCH_MVEBU) += cn9130-db.dtb
+dtb-$(CONFIG_ARCH_MVEBU) += cn9131-db.dtb
+dtb-$(CONFIG_ARCH_MVEBU) += cn9132-db.dtb
diff --git a/arch/arm64/boot/dts/marvell/armada-3720-espressobin-emmc.dts b/arch/arm64/boot/dts/marvell/armada-3720-espressobin-emmc.dts
new file mode 100644 (file)
index 0000000..bd9ed9d
--- /dev/null
@@ -0,0 +1,42 @@
+// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
+/*
+ * Device Tree file for Globalscale Marvell ESPRESSOBin Board with eMMC
+ * Copyright (C) 2018 Marvell
+ *
+ * Romain Perier <romain.perier@free-electrons.com>
+ * Konstantin Porotchkin <kostap@marvell.com>
+ *
+ */
+/*
+ * Schematic available at http://espressobin.net/wp-content/uploads/2017/08/ESPRESSObin_V5_Schematics.pdf
+ */
+
+#include "armada-3720-espressobin.dtsi"
+
+/ {
+       model = "Globalscale Marvell ESPRESSOBin Board (eMMC)";
+       compatible = "globalscale,espressobin-emmc", "globalscale,espressobin",
+                    "marvell,armada3720", "marvell,armada3710";
+};
+
+/* U11 */
+&sdhci0 {
+       non-removable;
+       bus-width = <8>;
+       mmc-ddr-1_8v;
+       mmc-hs400-1_8v;
+       marvell,xenon-emmc;
+       marvell,xenon-tun-count = <9>;
+       marvell,pad-type = "fixed-1-8v";
+
+       pinctrl-names = "default";
+       pinctrl-0 = <&mmc_pins>;
+       status = "okay";
+
+       #address-cells = <1>;
+       #size-cells = <0>;
+       mmccard: mmccard@0 {
+               compatible = "mmc-card";
+               reg = <0>;
+       };
+};
diff --git a/arch/arm64/boot/dts/marvell/armada-3720-espressobin-v7-emmc.dts b/arch/arm64/boot/dts/marvell/armada-3720-espressobin-v7-emmc.dts
new file mode 100644 (file)
index 0000000..6e876a6
--- /dev/null
@@ -0,0 +1,59 @@
+// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
+/*
+ * Device Tree file for Globalscale Marvell ESPRESSOBin Board V7 with eMMC
+ * Copyright (C) 2018 Marvell
+ *
+ * Romain Perier <romain.perier@free-electrons.com>
+ * Konstantin Porotchkin <kostap@marvell.com>
+ *
+ */
+/*
+ * Schematic available at http://wiki.espressobin.net/tiki-download_file.php?fileId=200
+ */
+
+#include "armada-3720-espressobin.dtsi"
+
+/ {
+       model = "Globalscale Marvell ESPRESSOBin Board V7 (eMMC)";
+       compatible = "globalscale,espressobin-v7-emmc", "globalscale,espressobin-v7",
+                    "globalscale,espressobin", "marvell,armada3720",
+                    "marvell,armada3710";
+};
+
+&switch0 {
+       ports {
+               port@1 {
+                       reg = <1>;
+                       label = "lan1";
+                       phy-handle = <&switch0phy0>;
+               };
+
+               port@3 {
+                       reg = <3>;
+                       label = "wan";
+                       phy-handle = <&switch0phy2>;
+               };
+       };
+};
+
+/* U11 */
+&sdhci0 {
+       non-removable;
+       bus-width = <8>;
+       mmc-ddr-1_8v;
+       mmc-hs400-1_8v;
+       marvell,xenon-emmc;
+       marvell,xenon-tun-count = <9>;
+       marvell,pad-type = "fixed-1-8v";
+
+       pinctrl-names = "default";
+       pinctrl-0 = <&mmc_pins>;
+       status = "okay";
+
+       #address-cells = <1>;
+       #size-cells = <0>;
+       mmccard: mmccard@0 {
+               compatible = "mmc-card";
+               reg = <0>;
+       };
+};
diff --git a/arch/arm64/boot/dts/marvell/armada-3720-espressobin-v7.dts b/arch/arm64/boot/dts/marvell/armada-3720-espressobin-v7.dts
new file mode 100644 (file)
index 0000000..0f8405d
--- /dev/null
@@ -0,0 +1,36 @@
+// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
+/*
+ * Device Tree file for Globalscale Marvell ESPRESSOBin Board V7
+ * Copyright (C) 2018 Marvell
+ *
+ * Romain Perier <romain.perier@free-electrons.com>
+ * Konstantin Porotchkin <kostap@marvell.com>
+ *
+ */
+/*
+ * Schematic available at http://wiki.espressobin.net/tiki-download_file.php?fileId=200
+ */
+
+#include "armada-3720-espressobin.dtsi"
+
+/ {
+       model = "Globalscale Marvell ESPRESSOBin Board V7";
+       compatible = "globalscale,espressobin-v7", "globalscale,espressobin",
+                    "marvell,armada3720", "marvell,armada3710";
+};
+
+&switch0 {
+       ports {
+               port@1 {
+                       reg = <1>;
+                       label = "lan1";
+                       phy-handle = <&switch0phy0>;
+               };
+
+               port@3 {
+                       reg = <3>;
+                       label = "wan";
+                       phy-handle = <&switch0phy2>;
+               };
+       };
+};
index fbcf03f..1542d83 100644 (file)
 
 /dts-v1/;
 
-#include <dt-bindings/gpio/gpio.h>
-#include "armada-372x.dtsi"
+#include "armada-3720-espressobin.dtsi"
 
 / {
        model = "Globalscale Marvell ESPRESSOBin Board";
        compatible = "globalscale,espressobin", "marvell,armada3720", "marvell,armada3710";
-
-       chosen {
-               stdout-path = "serial0:115200n8";
-       };
-
-       memory@0 {
-               device_type = "memory";
-               reg = <0x00000000 0x00000000 0x00000000 0x20000000>;
-       };
-
-       vcc_sd_reg1: regulator {
-               compatible = "regulator-gpio";
-               regulator-name = "vcc_sd1";
-               regulator-min-microvolt = <1800000>;
-               regulator-max-microvolt = <3300000>;
-               regulator-boot-on;
-
-               gpios = <&gpionb 4 GPIO_ACTIVE_HIGH>;
-               gpios-states = <0>;
-               states = <1800000 0x1
-                         3300000 0x0>;
-               enable-active-high;
-       };
-};
-
-/* J9 */
-&pcie0 {
-       status = "okay";
-       phys = <&comphy1 0>;
-       pinctrl-names = "default";
-       pinctrl-0 = <&pcie_reset_pins &pcie_clkreq_pins>;
-};
-
-/* J6 */
-&sata {
-       status = "okay";
-       phys = <&comphy2 0>;
-       phy-names = "sata-phy";
-};
-
-/* J1 */
-&sdhci1 {
-       wp-inverted;
-       bus-width = <4>;
-       cd-gpios = <&gpionb 3 GPIO_ACTIVE_LOW>;
-       marvell,pad-type = "sd";
-       vqmmc-supply = <&vcc_sd_reg1>;
-
-       pinctrl-names = "default";
-       pinctrl-0 = <&sdio_pins>;
-       status = "okay";
-};
-
-/* U11 */
-&sdhci0 {
-       non-removable;
-       bus-width = <8>;
-       mmc-ddr-1_8v;
-       mmc-hs400-1_8v;
-       marvell,xenon-emmc;
-       marvell,xenon-tun-count = <9>;
-       marvell,pad-type = "fixed-1-8v";
-
-       pinctrl-names = "default";
-       pinctrl-0 = <&mmc_pins>;
-/*
- * This eMMC is not populated on all boards, so disable it by
- * default and let the bootloader enable it, if it is present
- */
-       status = "disabled";
-};
-
-&spi0 {
-       status = "okay";
-
-       flash@0 {
-               reg = <0>;
-               compatible = "jedec,spi-nor";
-               spi-max-frequency = <104000000>;
-               m25p,fast-read;
-       };
-};
-
-/* Exported on the micro USB connector J5 through an FTDI */
-&uart0 {
-       pinctrl-names = "default";
-       pinctrl-0 = <&uart1_pins>;
-       status = "okay";
-};
-
-/*
- * Connector J17 and J18 expose a number of different features. Some pins are
- * multiplexed. This is the case for instance for the following features:
- * - UART1 (pin 24 = RX, pin 26 = TX). See armada-3720-db.dts for an example of
- *   how to enable it. Beware that the signals are 1.8V TTL.
- * - I2C
- * - SPI
- * - MMC
- */
-
-/* J7 */
-&usb3 {
-       status = "okay";
-};
-
-/* J8 */
-&usb2 {
-       status = "okay";
-};
-
-&mdio {
-       switch0: switch0@1 {
-               compatible = "marvell,mv88e6085";
-               #address-cells = <1>;
-               #size-cells = <0>;
-               reg = <1>;
-
-               dsa,member = <0 0>;
-
-               ports {
-                       #address-cells = <1>;
-                       #size-cells = <0>;
-
-                       port@0 {
-                               reg = <0>;
-                               label = "cpu";
-                               ethernet = <&eth0>;
-                               phy-mode = "rgmii-id";
-                               fixed-link {
-                                       speed = <1000>;
-                                       full-duplex;
-                               };
-                       };
-
-                       port@1 {
-                               reg = <1>;
-                               label = "wan";
-                               phy-handle = <&switch0phy0>;
-                       };
-
-                       port@2 {
-                               reg = <2>;
-                               label = "lan0";
-                               phy-handle = <&switch0phy1>;
-                       };
-
-                       port@3 {
-                               reg = <3>;
-                               label = "lan1";
-                               phy-handle = <&switch0phy2>;
-                       };
-
-               };
-
-               mdio {
-                       #address-cells = <1>;
-                       #size-cells = <0>;
-
-                       switch0phy0: switch0phy0@11 {
-                               reg = <0x11>;
-                       };
-                       switch0phy1: switch0phy1@12 {
-                               reg = <0x12>;
-                       };
-                       switch0phy2: switch0phy2@13 {
-                               reg = <0x13>;
-                       };
-               };
-       };
-};
-
-&eth0 {
-       pinctrl-names = "default";
-       pinctrl-0 = <&rgmii_pins>, <&smi_pins>;
-       phy-mode = "rgmii-id";
-       status = "okay";
-
-       fixed-link {
-               speed = <1000>;
-               full-duplex;
-       };
 };
diff --git a/arch/arm64/boot/dts/marvell/armada-3720-espressobin.dtsi b/arch/arm64/boot/dts/marvell/armada-3720-espressobin.dtsi
new file mode 100644 (file)
index 0000000..53b8ac5
--- /dev/null
@@ -0,0 +1,177 @@
+// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
+/*
+ * Device Tree file for Globalscale Marvell ESPRESSOBin Board
+ * Copyright (C) 2016 Marvell
+ *
+ * Romain Perier <romain.perier@free-electrons.com>
+ *
+ */
+
+/dts-v1/;
+
+#include <dt-bindings/gpio/gpio.h>
+#include "armada-372x.dtsi"
+
+/ {
+       chosen {
+               stdout-path = "serial0:115200n8";
+       };
+
+       memory@0 {
+               device_type = "memory";
+               reg = <0x00000000 0x00000000 0x00000000 0x20000000>;
+       };
+
+       vcc_sd_reg1: regulator {
+               compatible = "regulator-gpio";
+               regulator-name = "vcc_sd1";
+               regulator-min-microvolt = <1800000>;
+               regulator-max-microvolt = <3300000>;
+               regulator-boot-on;
+
+               gpios = <&gpionb 4 GPIO_ACTIVE_HIGH>;
+               gpios-states = <0>;
+               states = <1800000 0x1
+                         3300000 0x0>;
+               enable-active-high;
+       };
+};
+
+/* J9 */
+&pcie0 {
+       status = "okay";
+       phys = <&comphy1 0>;
+       pinctrl-names = "default";
+       pinctrl-0 = <&pcie_reset_pins &pcie_clkreq_pins>;
+};
+
+/* J6 */
+&sata {
+       status = "okay";
+       phys = <&comphy2 0>;
+       phy-names = "sata-phy";
+};
+
+/* J1 */
+&sdhci1 {
+       wp-inverted;
+       bus-width = <4>;
+       cd-gpios = <&gpionb 3 GPIO_ACTIVE_LOW>;
+       marvell,pad-type = "sd";
+       vqmmc-supply = <&vcc_sd_reg1>;
+
+       pinctrl-names = "default";
+       pinctrl-0 = <&sdio_pins>;
+       status = "okay";
+};
+
+&spi0 {
+       status = "okay";
+
+       flash@0 {
+               reg = <0>;
+               compatible = "jedec,spi-nor";
+               spi-max-frequency = <104000000>;
+               m25p,fast-read;
+       };
+};
+
+/* Exported on the micro USB connector J5 through an FTDI */
+&uart0 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&uart1_pins>;
+       status = "okay";
+};
+
+/*
+ * Connector J17 and J18 expose a number of different features. Some pins are
+ * multiplexed. This is the case for instance for the following features:
+ * - UART1 (pin 24 = RX, pin 26 = TX). See armada-3720-db.dts for an example of
+ *   how to enable it. Beware that the signals are 1.8V TTL.
+ * - I2C
+ * - SPI
+ * - MMC
+ */
+
+/* J7 */
+&usb3 {
+       status = "okay";
+};
+
+/* J8 */
+&usb2 {
+       status = "okay";
+};
+
+&mdio {
+       switch0: switch0@1 {
+               compatible = "marvell,mv88e6085";
+               #address-cells = <1>;
+               #size-cells = <0>;
+               reg = <1>;
+
+               dsa,member = <0 0>;
+
+               ports {
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+
+                       port@0 {
+                               reg = <0>;
+                               label = "cpu";
+                               ethernet = <&eth0>;
+                               phy-mode = "rgmii-id";
+                               fixed-link {
+                                       speed = <1000>;
+                                       full-duplex;
+                               };
+                       };
+
+                       port@1 {
+                               reg = <1>;
+                               label = "wan";
+                               phy-handle = <&switch0phy0>;
+                       };
+
+                       port@2 {
+                               reg = <2>;
+                               label = "lan0";
+                               phy-handle = <&switch0phy1>;
+                       };
+
+                       port@3 {
+                               reg = <3>;
+                               label = "lan1";
+                               phy-handle = <&switch0phy2>;
+                       };
+
+               };
+
+               mdio {
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+
+                       switch0phy0: switch0phy0@11 {
+                               reg = <0x11>;
+                       };
+                       switch0phy1: switch0phy1@12 {
+                               reg = <0x12>;
+                       };
+                       switch0phy2: switch0phy2@13 {
+                               reg = <0x13>;
+                       };
+               };
+       };
+};
+
+&eth0 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&rgmii_pins>, <&smi_pins>;
+       phy-mode = "rgmii-id";
+       status = "okay";
+
+       fixed-link {
+               speed = <1000>;
+               full-duplex;
+       };
+};
index 5f350cc..bb42d1e 100644 (file)
                /* enabled by U-Boot if SFP module is present */
                status = "disabled";
        };
+
+       firmware {
+               turris-mox-rwtm {
+                       compatible = "cznic,turris-mox-rwtm";
+                       mboxes = <&rwtm 0>;
+                       status = "okay";
+               };
+       };
 };
 
 &i2c0 {
index e5c6d7c..293403a 100644 (file)
 /*
  * Instantiate the CP110
  */
-#define CP110_NAME             cp0
-#define CP110_BASE             f2000000
-#define CP110_PCIE_IO_BASE     0xf9000000
-#define CP110_PCIE_MEM_BASE    0xf6000000
-#define CP110_PCIE0_BASE       f2600000
-#define CP110_PCIE1_BASE       f2620000
-#define CP110_PCIE2_BASE       f2640000
+#define CP11X_NAME             cp0
+#define CP11X_BASE             f2000000
+#define CP11X_PCIEx_MEM_BASE(iface) (0xf6000000 + (iface * 0x1000000))
+#define CP11X_PCIEx_MEM_SIZE(iface) 0xf00000
+#define CP11X_PCIE0_BASE       f2600000
+#define CP11X_PCIE1_BASE       f2620000
+#define CP11X_PCIE2_BASE       f2640000
 
 #include "armada-cp110.dtsi"
 
-#undef CP110_NAME
-#undef CP110_BASE
-#undef CP110_PCIE_IO_BASE
-#undef CP110_PCIE_MEM_BASE
-#undef CP110_PCIE0_BASE
-#undef CP110_PCIE1_BASE
-#undef CP110_PCIE2_BASE
+#undef CP11X_NAME
+#undef CP11X_BASE
+#undef CP11X_PCIEx_MEM_BASE
+#undef CP11X_PCIEx_MEM_SIZE
+#undef CP11X_PCIE0_BASE
+#undef CP11X_PCIE1_BASE
+#undef CP11X_PCIE2_BASE
 
 &cp0_gpio1 {
        status = "okay";
index d250f4b..572e261 100644 (file)
        num-lanes = <4>;
        num-viewport = <8>;
        reset-gpios = <&cp0_gpio2 20 GPIO_ACTIVE_LOW>;
-       ranges = <0x81000000 0x0 0xf9010000 0x0 0xf9010000 0x0 0x10000
-                 0x82000000 0x0 0xc0000000 0x0 0xc0000000 0x0 0x20000000>;
+       ranges = <0x82000000 0x0 0xc0000000 0x0 0xc0000000 0x0 0x20000000>;
        phys = <&cp0_comphy0 0>, <&cp0_comphy1 0>,
               <&cp0_comphy2 0>, <&cp0_comphy3 0>;
        phy-names = "cp0-pcie0-x4-lane0-phy", "cp0-pcie0-x4-lane1-phy",
index 8129b40..ee67c70 100644 (file)
 /*
  * Instantiate the master CP110
  */
-#define CP110_NAME             cp0
-#define CP110_BASE             f2000000
-#define CP110_PCIE_IO_BASE     0xf9000000
-#define CP110_PCIE_MEM_BASE    0xf6000000
-#define CP110_PCIE0_BASE       f2600000
-#define CP110_PCIE1_BASE       f2620000
-#define CP110_PCIE2_BASE       f2640000
+#define CP11X_NAME             cp0
+#define CP11X_BASE             f2000000
+#define CP11X_PCIEx_MEM_BASE(iface) (0xf6000000 + (iface * 0x1000000))
+#define CP11X_PCIEx_MEM_SIZE(iface) 0xf00000
+#define CP11X_PCIE0_BASE       f2600000
+#define CP11X_PCIE1_BASE       f2620000
+#define CP11X_PCIE2_BASE       f2640000
 
 #include "armada-cp110.dtsi"
 
-#undef CP110_NAME
-#undef CP110_BASE
-#undef CP110_PCIE_IO_BASE
-#undef CP110_PCIE_MEM_BASE
-#undef CP110_PCIE0_BASE
-#undef CP110_PCIE1_BASE
-#undef CP110_PCIE2_BASE
+#undef CP11X_NAME
+#undef CP11X_BASE
+#undef CP11X_PCIEx_MEM_BASE
+#undef CP11X_PCIEx_MEM_SIZE
+#undef CP11X_PCIE0_BASE
+#undef CP11X_PCIE1_BASE
+#undef CP11X_PCIE2_BASE
 
 /*
  * Instantiate the slave CP110
  */
-#define CP110_NAME             cp1
-#define CP110_BASE             f4000000
-#define CP110_PCIE_IO_BASE     0xfd000000
-#define CP110_PCIE_MEM_BASE    0xfa000000
-#define CP110_PCIE0_BASE       f4600000
-#define CP110_PCIE1_BASE       f4620000
-#define CP110_PCIE2_BASE       f4640000
+#define CP11X_NAME             cp1
+#define CP11X_BASE             f4000000
+#define CP11X_PCIEx_MEM_BASE(iface) (0xfa000000 + (iface * 0x1000000))
+#define CP11X_PCIEx_MEM_SIZE(iface) 0xf00000
+#define CP11X_PCIE0_BASE       f4600000
+#define CP11X_PCIE1_BASE       f4620000
+#define CP11X_PCIE2_BASE       f4640000
 
 #include "armada-cp110.dtsi"
 
-#undef CP110_NAME
-#undef CP110_BASE
-#undef CP110_PCIE_IO_BASE
-#undef CP110_PCIE_MEM_BASE
-#undef CP110_PCIE0_BASE
-#undef CP110_PCIE1_BASE
-#undef CP110_PCIE2_BASE
+#undef CP11X_NAME
+#undef CP11X_BASE
+#undef CP11X_PCIEx_MEM_BASE
+#undef CP11X_PCIEx_MEM_SIZE
+#undef CP11X_PCIE0_BASE
+#undef CP11X_PCIE1_BASE
+#undef CP11X_PCIE2_BASE
 
 /* The 80x0 has two CP blocks, but uses only one block from each. */
 &cp1_gpio1 {
index 9024a2d..0984955 100644 (file)
                        reg = <0x000>;
                        enable-method = "psci";
                        #cooling-cells = <2>;
+                       clocks = <&cpu_clk 0>;
+                       i-cache-size = <0xc000>;
+                       i-cache-line-size = <64>;
+                       i-cache-sets = <256>;
+                       d-cache-size = <0x8000>;
+                       d-cache-line-size = <64>;
+                       d-cache-sets = <256>;
+                       next-level-cache = <&l2>;
                };
                cpu1: cpu@1 {
                        device_type = "cpu";
                        reg = <0x001>;
                        enable-method = "psci";
                        #cooling-cells = <2>;
+                       clocks = <&cpu_clk 0>;
+                       i-cache-size = <0xc000>;
+                       i-cache-line-size = <64>;
+                       i-cache-sets = <256>;
+                       d-cache-size = <0x8000>;
+                       d-cache-line-size = <64>;
+                       d-cache-sets = <256>;
+                       next-level-cache = <&l2>;
+               };
+
+               l2: l2-cache {
+                       compatible = "cache";
+                       cache-size = <0x80000>;
+                       cache-line-size = <64>;
+                       cache-sets = <512>;
                };
        };
 };
index c25bc65..3db4271 100644 (file)
                        enable-method = "psci";
                        #cooling-cells = <2>;
                        clocks = <&cpu_clk 0>;
+                       i-cache-size = <0xc000>;
+                       i-cache-line-size = <64>;
+                       i-cache-sets = <256>;
+                       d-cache-size = <0x8000>;
+                       d-cache-line-size = <64>;
+                       d-cache-sets = <256>;
+                       next-level-cache = <&l2_0>;
                };
                cpu1: cpu@1 {
                        device_type = "cpu";
                        enable-method = "psci";
                        #cooling-cells = <2>;
                        clocks = <&cpu_clk 0>;
+                       i-cache-size = <0xc000>;
+                       i-cache-line-size = <64>;
+                       i-cache-sets = <256>;
+                       d-cache-size = <0x8000>;
+                       d-cache-line-size = <64>;
+                       d-cache-sets = <256>;
+                       next-level-cache = <&l2_0>;
                };
                cpu2: cpu@100 {
                        device_type = "cpu";
                        enable-method = "psci";
                        #cooling-cells = <2>;
                        clocks = <&cpu_clk 1>;
+                       i-cache-size = <0xc000>;
+                       i-cache-line-size = <64>;
+                       i-cache-sets = <256>;
+                       d-cache-size = <0x8000>;
+                       d-cache-line-size = <64>;
+                       d-cache-sets = <256>;
+                       next-level-cache = <&l2_1>;
                };
                cpu3: cpu@101 {
                        device_type = "cpu";
                        enable-method = "psci";
                        #cooling-cells = <2>;
                        clocks = <&cpu_clk 1>;
+                       i-cache-size = <0xc000>;
+                       i-cache-line-size = <64>;
+                       i-cache-sets = <256>;
+                       d-cache-size = <0x8000>;
+                       d-cache-line-size = <64>;
+                       d-cache-sets = <256>;
+                       next-level-cache = <&l2_1>;
+               };
+
+               l2_0: l2-cache0 {
+                       compatible = "cache";
+                       cache-size = <0x80000>;
+                       cache-line-size = <64>;
+                       cache-sets = <512>;
+               };
+
+               l2_1: l2-cache1 {
+                       compatible = "cache";
+                       cache-size = <0x80000>;
+                       cache-line-size = <64>;
+                       cache-sets = <512>;
                };
        };
 };
index d06dd19..8666286 100644 (file)
  * Device Tree file for Marvell Armada AP806.
  */
 
-#include <dt-bindings/interrupt-controller/arm-gic.h>
-#include <dt-bindings/thermal/thermal.h>
-
-/dts-v1/;
+#define AP_NAME                ap806
+#include "armada-ap80x.dtsi"
 
 / {
        model = "Marvell Armada AP806";
        compatible = "marvell,armada-ap806";
-       #address-cells = <2>;
-       #size-cells = <2>;
-
-       aliases {
-               serial0 = &uart0;
-               serial1 = &uart1;
-               gpio0 = &ap_gpio;
-               spi0 = &spi0;
-       };
-
-       psci {
-               compatible = "arm,psci-0.2";
-               method = "smc";
-       };
-
-       reserved-memory {
-               #address-cells = <2>;
-               #size-cells = <2>;
-               ranges;
-
-               /*
-                * This area matches the mapping done with a
-                * mainline U-Boot, and should be updated by the
-                * bootloader.
-                */
-
-               psci-area@4000000 {
-                       reg = <0x0 0x4000000 0x0 0x200000>;
-                       no-map;
-               };
-       };
-
-       ap806 {
-               #address-cells = <2>;
-               #size-cells = <2>;
-               compatible = "simple-bus";
-               interrupt-parent = <&gic>;
-               ranges;
-
-               config-space@f0000000 {
-                       #address-cells = <1>;
-                       #size-cells = <1>;
-                       compatible = "simple-bus";
-                       ranges = <0x0 0x0 0xf0000000 0x1000000>;
-
-                       gic: interrupt-controller@210000 {
-                               compatible = "arm,gic-400";
-                               #interrupt-cells = <3>;
-                               #address-cells = <1>;
-                               #size-cells = <1>;
-                               ranges;
-                               interrupt-controller;
-                               interrupts = <GIC_PPI 9 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_HIGH)>;
-                               reg = <0x210000 0x10000>,
-                                     <0x220000 0x20000>,
-                                     <0x240000 0x20000>,
-                                     <0x260000 0x20000>;
-
-                               gic_v2m0: v2m@280000 {
-                                       compatible = "arm,gic-v2m-frame";
-                                       msi-controller;
-                                       reg = <0x280000 0x1000>;
-                                       arm,msi-base-spi = <160>;
-                                       arm,msi-num-spis = <32>;
-                               };
-                               gic_v2m1: v2m@290000 {
-                                       compatible = "arm,gic-v2m-frame";
-                                       msi-controller;
-                                       reg = <0x290000 0x1000>;
-                                       arm,msi-base-spi = <192>;
-                                       arm,msi-num-spis = <32>;
-                               };
-                               gic_v2m2: v2m@2a0000 {
-                                       compatible = "arm,gic-v2m-frame";
-                                       msi-controller;
-                                       reg = <0x2a0000 0x1000>;
-                                       arm,msi-base-spi = <224>;
-                                       arm,msi-num-spis = <32>;
-                               };
-                               gic_v2m3: v2m@2b0000 {
-                                       compatible = "arm,gic-v2m-frame";
-                                       msi-controller;
-                                       reg = <0x2b0000 0x1000>;
-                                       arm,msi-base-spi = <256>;
-                                       arm,msi-num-spis = <32>;
-                               };
-                       };
-
-                       timer {
-                               compatible = "arm,armv8-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)>;
-                       };
-
-                       pmu {
-                               compatible = "arm,cortex-a72-pmu";
-                               interrupt-parent = <&pic>;
-                               interrupts = <17>;
-                       };
-
-                       odmi: odmi@300000 {
-                               compatible = "marvell,odmi-controller";
-                               interrupt-controller;
-                               msi-controller;
-                               marvell,odmi-frames = <4>;
-                               reg = <0x300000 0x4000>,
-                                     <0x304000 0x4000>,
-                                     <0x308000 0x4000>,
-                                     <0x30C000 0x4000>;
-                               marvell,spi-base = <128>, <136>, <144>, <152>;
-                       };
-
-                       gicp: gicp@3f0040 {
-                               compatible = "marvell,ap806-gicp";
-                               reg = <0x3f0040 0x10>;
-                               marvell,spi-ranges = <64 64>, <288 64>;
-                               msi-controller;
-                       };
-
-                       pic: interrupt-controller@3f0100 {
-                               compatible = "marvell,armada-8k-pic";
-                               reg = <0x3f0100 0x10>;
-                               #interrupt-cells = <1>;
-                               interrupt-controller;
-                               interrupts = <GIC_PPI 15 IRQ_TYPE_LEVEL_HIGH>;
-                       };
-
-                       sei: interrupt-controller@3f0200 {
-                               compatible = "marvell,ap806-sei";
-                               reg = <0x3f0200 0x40>;
-                               interrupts = <GIC_SPI 0 IRQ_TYPE_LEVEL_HIGH>;
-                               #interrupt-cells = <1>;
-                               interrupt-controller;
-                               msi-controller;
-                       };
-
-                       xor@400000 {
-                               compatible = "marvell,armada-7k-xor", "marvell,xor-v2";
-                               reg = <0x400000 0x1000>,
-                                     <0x410000 0x1000>;
-                               msi-parent = <&gic_v2m0>;
-                               clocks = <&ap_clk 3>;
-                               dma-coherent;
-                       };
-
-                       xor@420000 {
-                               compatible = "marvell,armada-7k-xor", "marvell,xor-v2";
-                               reg = <0x420000 0x1000>,
-                                     <0x430000 0x1000>;
-                               msi-parent = <&gic_v2m0>;
-                               clocks = <&ap_clk 3>;
-                               dma-coherent;
-                       };
-
-                       xor@440000 {
-                               compatible = "marvell,armada-7k-xor", "marvell,xor-v2";
-                               reg = <0x440000 0x1000>,
-                                     <0x450000 0x1000>;
-                               msi-parent = <&gic_v2m0>;
-                               clocks = <&ap_clk 3>;
-                               dma-coherent;
-                       };
-
-                       xor@460000 {
-                               compatible = "marvell,armada-7k-xor", "marvell,xor-v2";
-                               reg = <0x460000 0x1000>,
-                                     <0x470000 0x1000>;
-                               msi-parent = <&gic_v2m0>;
-                               clocks = <&ap_clk 3>;
-                               dma-coherent;
-                       };
-
-                       spi0: spi@510600 {
-                               compatible = "marvell,armada-380-spi";
-                               reg = <0x510600 0x50>;
-                               #address-cells = <1>;
-                               #size-cells = <0>;
-                               interrupts = <GIC_SPI 21 IRQ_TYPE_LEVEL_HIGH>;
-                               clocks = <&ap_clk 3>;
-                               status = "disabled";
-                       };
-
-                       i2c0: i2c@511000 {
-                               compatible = "marvell,mv78230-i2c";
-                               reg = <0x511000 0x20>;
-                               #address-cells = <1>;
-                               #size-cells = <0>;
-                               interrupts = <GIC_SPI 20 IRQ_TYPE_LEVEL_HIGH>;
-                               timeout-ms = <1000>;
-                               clocks = <&ap_clk 3>;
-                               status = "disabled";
-                       };
-
-                       uart0: serial@512000 {
-                               compatible = "snps,dw-apb-uart";
-                               reg = <0x512000 0x100>;
-                               reg-shift = <2>;
-                               interrupts = <GIC_SPI 19 IRQ_TYPE_LEVEL_HIGH>;
-                               reg-io-width = <1>;
-                               clocks = <&ap_clk 3>;
-                               status = "disabled";
-                       };
-
-                       uart1: serial@512100 {
-                               compatible = "snps,dw-apb-uart";
-                               reg = <0x512100 0x100>;
-                               reg-shift = <2>;
-                               interrupts = <GIC_SPI 29 IRQ_TYPE_LEVEL_HIGH>;
-                               reg-io-width = <1>;
-                               clocks = <&ap_clk 3>;
-                               status = "disabled";
-
-                       };
-
-                       watchdog: watchdog@610000 {
-                               compatible = "arm,sbsa-gwdt";
-                               reg = <0x610000 0x1000>, <0x600000 0x1000>;
-                               interrupts = <GIC_SPI 2 IRQ_TYPE_LEVEL_HIGH>;
-                       };
-
-                       ap_sdhci0: sdhci@6e0000 {
-                               compatible = "marvell,armada-ap806-sdhci";
-                               reg = <0x6e0000 0x300>;
-                               interrupts = <GIC_SPI 16 IRQ_TYPE_LEVEL_HIGH>;
-                               clock-names = "core";
-                               clocks = <&ap_clk 4>;
-                               dma-coherent;
-                               marvell,xenon-phy-slow-mode;
-                               status = "disabled";
-                       };
-
-                       ap_syscon: system-controller@6f4000 {
-                               compatible = "syscon", "simple-mfd";
-                               reg = <0x6f4000 0x2000>;
-
-                               ap_clk: clock {
-                                       compatible = "marvell,ap806-clock";
-                                       #clock-cells = <1>;
-                               };
-
-                               ap_pinctrl: pinctrl {
-                                       compatible = "marvell,ap806-pinctrl";
-
-                                       uart0_pins: uart0-pins {
-                                               marvell,pins = "mpp11", "mpp19";
-                                               marvell,function = "uart0";
-                                       };
-                               };
-
-                               ap_gpio: gpio@1040 {
-                                       compatible = "marvell,armada-8k-gpio";
-                                       offset = <0x1040>;
-                                       ngpios = <20>;
-                                       gpio-controller;
-                                       #gpio-cells = <2>;
-                                       gpio-ranges = <&ap_pinctrl 0 0 20>;
-                               };
-                       };
-
-                       ap_syscon1: system-controller@6f8000 {
-                               compatible = "syscon", "simple-mfd";
-                               reg = <0x6f8000 0x1000>;
-                               #address-cells = <1>;
-                               #size-cells = <1>;
-
-                               cpu_clk: clock-cpu@278 {
-                                       compatible = "marvell,ap806-cpu-clock";
-                                       clocks = <&ap_clk 0>, <&ap_clk 1>;
-                                       #clock-cells = <1>;
-                                       reg = <0x278 0xa30>;
-                               };
+};
 
-                               ap_thermal: thermal-sensor@80 {
-                                       compatible = "marvell,armada-ap806-thermal";
-                                       reg = <0x80 0x10>;
-                                       interrupt-parent = <&sei>;
-                                       interrupts = <18>;
-                                       #thermal-sensor-cells = <1>;
-                               };
-                       };
-               };
+&ap_syscon0 {
+       ap_clk: clock {
+               compatible = "marvell,ap806-clock";
+               #clock-cells = <1>;
        };
+};
 
-       /*
-        * The thermal IP features one internal sensor plus, if applicable, one
-        * remote channel wired to one sensor per CPU.
-        *
-        * Only one thermal zone per AP/CP may trigger interrupts at a time, the
-        * first one that will have a critical trip point will be chosen.
-        */
-       thermal-zones {
-               ap_thermal_ic: ap-thermal-ic {
-                       polling-delay-passive = <0>; /* Interrupt driven */
-                       polling-delay = <0>; /* Interrupt driven */
-
-                       thermal-sensors = <&ap_thermal 0>;
-
-                       trips {
-                               ap_crit: ap-crit {
-                                       temperature = <100000>; /* mC degrees */
-                                       hysteresis = <2000>; /* mC degrees */
-                                       type = "critical";
-                               };
-                       };
-
-                       cooling-maps { };
-               };
-
-               ap_thermal_cpu0: ap-thermal-cpu0 {
-                       polling-delay-passive = <1000>;
-                       polling-delay = <1000>;
-
-                       thermal-sensors = <&ap_thermal 1>;
-
-                       trips {
-                               cpu0_hot: cpu0-hot {
-                                       temperature = <85000>;
-                                       hysteresis = <2000>;
-                                       type = "passive";
-                               };
-                               cpu0_emerg: cpu0-emerg {
-                                       temperature = <95000>;
-                                       hysteresis = <2000>;
-                                       type = "passive";
-                               };
-                       };
-
-                       cooling-maps {
-                               map0_hot: map0-hot {
-                                       trip = <&cpu0_hot>;
-                                       cooling-device = <&cpu0 1 2>,
-                                               <&cpu1 1 2>;
-                               };
-                               map0_emerg: map0-ermerg {
-                                       trip = <&cpu0_emerg>;
-                                       cooling-device = <&cpu0 3 3>,
-                                               <&cpu1 3 3>;
-                               };
-                       };
-               };
-
-               ap_thermal_cpu1: ap-thermal-cpu1 {
-                       polling-delay-passive = <1000>;
-                       polling-delay = <1000>;
-
-                       thermal-sensors = <&ap_thermal 2>;
-
-                       trips {
-                               cpu1_hot: cpu1-hot {
-                                       temperature = <85000>;
-                                       hysteresis = <2000>;
-                                       type = "passive";
-                               };
-                               cpu1_emerg: cpu1-emerg {
-                                       temperature = <95000>;
-                                       hysteresis = <2000>;
-                                       type = "passive";
-                               };
-                       };
-
-                       cooling-maps {
-                               map1_hot: map1-hot {
-                                       trip = <&cpu1_hot>;
-                                       cooling-device = <&cpu0 1 2>,
-                                               <&cpu1 1 2>;
-                               };
-                               map1_emerg: map1-emerg {
-                                       trip = <&cpu1_emerg>;
-                                       cooling-device = <&cpu0 3 3>,
-                                               <&cpu1 3 3>;
-                               };
-                       };
-               };
-
-               ap_thermal_cpu2: ap-thermal-cpu2 {
-                       polling-delay-passive = <1000>;
-                       polling-delay = <1000>;
-
-                       thermal-sensors = <&ap_thermal 3>;
-
-                       trips {
-                               cpu2_hot: cpu2-hot {
-                                       temperature = <85000>;
-                                       hysteresis = <2000>;
-                                       type = "passive";
-                               };
-                               cpu2_emerg: cpu2-emerg {
-                                       temperature = <95000>;
-                                       hysteresis = <2000>;
-                                       type = "passive";
-                               };
-                       };
-
-                       cooling-maps {
-                               map2_hot: map2-hot {
-                                       trip = <&cpu2_hot>;
-                                       cooling-device = <&cpu2 1 2>,
-                                               <&cpu3 1 2>;
-                               };
-                               map2_emerg: map2-emerg {
-                                       trip = <&cpu2_emerg>;
-                                       cooling-device = <&cpu2 3 3>,
-                                               <&cpu3 3 3>;
-                               };
-                       };
-               };
-
-               ap_thermal_cpu3: ap-thermal-cpu3 {
-                       polling-delay-passive = <1000>;
-                       polling-delay = <1000>;
-
-                       thermal-sensors = <&ap_thermal 4>;
-
-                       trips {
-                               cpu3_hot: cpu3-hot {
-                                       temperature = <85000>;
-                                       hysteresis = <2000>;
-                                       type = "passive";
-                               };
-                               cpu3_emerg: cpu3-emerg {
-                                       temperature = <95000>;
-                                       hysteresis = <2000>;
-                                       type = "passive";
-                               };
-                       };
-
-                       cooling-maps {
-                               map3_hot: map3-bhot {
-                                       trip = <&cpu3_hot>;
-                                       cooling-device = <&cpu2 1 2>,
-                                               <&cpu3 1 2>;
-                               };
-                               map3_emerg: map3-emerg {
-                                       trip = <&cpu3_emerg>;
-                                       cooling-device = <&cpu2 3 3>,
-                                               <&cpu3 3 3>;
-                               };
-                       };
-               };
+&ap_syscon1 {
+       cpu_clk: clock-cpu@278 {
+               compatible = "marvell,ap806-cpu-clock";
+               clocks = <&ap_clk 0>, <&ap_clk 1>;
+               #clock-cells = <1>;
+               reg = <0x278 0xa30>;
        };
 };
diff --git a/arch/arm64/boot/dts/marvell/armada-ap807-quad.dtsi b/arch/arm64/boot/dts/marvell/armada-ap807-quad.dtsi
new file mode 100644 (file)
index 0000000..840466e
--- /dev/null
@@ -0,0 +1,93 @@
+// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
+/*
+ * Device Tree file for Marvell Armada AP807 Quad
+ *
+ * Copyright (C) 2019 Marvell Technology Group Ltd.
+ */
+
+#include "armada-ap807.dtsi"
+
+/ {
+       model = "Marvell Armada AP807 Quad";
+       compatible = "marvell,armada-ap807-quad", "marvell,armada-ap807";
+
+       cpus {
+               #address-cells = <1>;
+               #size-cells = <0>;
+
+               cpu0: cpu@0 {
+                       device_type = "cpu";
+                       compatible = "arm,cortex-a72", "arm,armv8";
+                       reg = <0x000>;
+                       enable-method = "psci";
+                       #cooling-cells = <2>;
+                       clocks = <&cpu_clk 0>;
+                       i-cache-size = <0xc000>;
+                       i-cache-line-size = <64>;
+                       i-cache-sets = <256>;
+                       d-cache-size = <0x8000>;
+                       d-cache-line-size = <64>;
+                       d-cache-sets = <256>;
+                       next-level-cache = <&l2_0>;
+               };
+               cpu1: cpu@1 {
+                       device_type = "cpu";
+                       compatible = "arm,cortex-a72", "arm,armv8";
+                       reg = <0x001>;
+                       enable-method = "psci";
+                       #cooling-cells = <2>;
+                       clocks = <&cpu_clk 0>;
+                       i-cache-size = <0xc000>;
+                       i-cache-line-size = <64>;
+                       i-cache-sets = <256>;
+                       d-cache-size = <0x8000>;
+                       d-cache-line-size = <64>;
+                       d-cache-sets = <256>;
+                       next-level-cache = <&l2_0>;
+               };
+               cpu2: cpu@100 {
+                       device_type = "cpu";
+                       compatible = "arm,cortex-a72", "arm,armv8";
+                       reg = <0x100>;
+                       enable-method = "psci";
+                       #cooling-cells = <2>;
+                       clocks = <&cpu_clk 1>;
+                       i-cache-size = <0xc000>;
+                       i-cache-line-size = <64>;
+                       i-cache-sets = <256>;
+                       d-cache-size = <0x8000>;
+                       d-cache-line-size = <64>;
+                       d-cache-sets = <256>;
+                       next-level-cache = <&l2_1>;
+               };
+               cpu3: cpu@101 {
+                       device_type = "cpu";
+                       compatible = "arm,cortex-a72", "arm,armv8";
+                       reg = <0x101>;
+                       enable-method = "psci";
+                       #cooling-cells = <2>;
+                       clocks = <&cpu_clk 1>;
+                       i-cache-size = <0xc000>;
+                       i-cache-line-size = <64>;
+                       i-cache-sets = <256>;
+                       d-cache-size = <0x8000>;
+                       d-cache-line-size = <64>;
+                       d-cache-sets = <256>;
+                       next-level-cache = <&l2_1>;
+               };
+
+               l2_0: l2-cache0 {
+                       compatible = "cache";
+                       cache-size = <0x80000>;
+                       cache-line-size = <64>;
+                       cache-sets = <512>;
+               };
+
+               l2_1: l2-cache1 {
+                       compatible = "cache";
+                       cache-size = <0x80000>;
+                       cache-line-size = <64>;
+                       cache-sets = <512>;
+               };
+       };
+};
diff --git a/arch/arm64/boot/dts/marvell/armada-ap807.dtsi b/arch/arm64/boot/dts/marvell/armada-ap807.dtsi
new file mode 100644 (file)
index 0000000..623010f
--- /dev/null
@@ -0,0 +1,29 @@
+// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
+/*
+ * Device Tree file for Marvell Armada AP807
+ *
+ * Copyright (C) 2019 Marvell Technology Group Ltd.
+ */
+
+#define AP_NAME                ap807
+#include "armada-ap80x.dtsi"
+
+/ {
+       model = "Marvell Armada AP807";
+       compatible = "marvell,armada-ap807";
+};
+
+&ap_syscon0 {
+       ap_clk: clock {
+               compatible = "marvell,ap807-clock";
+               #clock-cells = <1>;
+       };
+};
+
+&ap_syscon1 {
+       cpu_clk: clock-cpu {
+               compatible = "marvell,ap807-cpu-clock";
+               clocks = <&ap_clk 0>, <&ap_clk 1>;
+               #clock-cells = <1>;
+       };
+};
diff --git a/arch/arm64/boot/dts/marvell/armada-ap80x.dtsi b/arch/arm64/boot/dts/marvell/armada-ap80x.dtsi
new file mode 100644 (file)
index 0000000..e7438c2
--- /dev/null
@@ -0,0 +1,444 @@
+// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
+/*
+ * Copyright (C) 2019 Marvell Technology Group Ltd.
+ *
+ * Device Tree file for Marvell Armada AP80x.
+ */
+
+#include <dt-bindings/interrupt-controller/arm-gic.h>
+#include <dt-bindings/thermal/thermal.h>
+
+/dts-v1/;
+
+/ {
+       #address-cells = <2>;
+       #size-cells = <2>;
+
+       aliases {
+               serial0 = &uart0;
+               serial1 = &uart1;
+               gpio0 = &ap_gpio;
+               spi0 = &spi0;
+       };
+
+       psci {
+               compatible = "arm,psci-0.2";
+               method = "smc";
+       };
+
+       reserved-memory {
+               #address-cells = <2>;
+               #size-cells = <2>;
+               ranges;
+
+               /*
+                * This area matches the mapping done with a
+                * mainline U-Boot, and should be updated by the
+                * bootloader.
+                */
+
+               psci-area@4000000 {
+                       reg = <0x0 0x4000000 0x0 0x200000>;
+                       no-map;
+               };
+       };
+
+       AP_NAME {
+               #address-cells = <2>;
+               #size-cells = <2>;
+               compatible = "simple-bus";
+               interrupt-parent = <&gic>;
+               ranges;
+
+               config-space@f0000000 {
+                       #address-cells = <1>;
+                       #size-cells = <1>;
+                       compatible = "simple-bus";
+                       ranges = <0x0 0x0 0xf0000000 0x1000000>;
+
+                       gic: interrupt-controller@210000 {
+                               compatible = "arm,gic-400";
+                               #interrupt-cells = <3>;
+                               #address-cells = <1>;
+                               #size-cells = <1>;
+                               ranges;
+                               interrupt-controller;
+                               interrupts = <GIC_PPI 9 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_HIGH)>;
+                               reg = <0x210000 0x10000>,
+                                     <0x220000 0x20000>,
+                                     <0x240000 0x20000>,
+                                     <0x260000 0x20000>;
+
+                               gic_v2m0: v2m@280000 {
+                                       compatible = "arm,gic-v2m-frame";
+                                       msi-controller;
+                                       reg = <0x280000 0x1000>;
+                                       arm,msi-base-spi = <160>;
+                                       arm,msi-num-spis = <32>;
+                               };
+                               gic_v2m1: v2m@290000 {
+                                       compatible = "arm,gic-v2m-frame";
+                                       msi-controller;
+                                       reg = <0x290000 0x1000>;
+                                       arm,msi-base-spi = <192>;
+                                       arm,msi-num-spis = <32>;
+                               };
+                               gic_v2m2: v2m@2a0000 {
+                                       compatible = "arm,gic-v2m-frame";
+                                       msi-controller;
+                                       reg = <0x2a0000 0x1000>;
+                                       arm,msi-base-spi = <224>;
+                                       arm,msi-num-spis = <32>;
+                               };
+                               gic_v2m3: v2m@2b0000 {
+                                       compatible = "arm,gic-v2m-frame";
+                                       msi-controller;
+                                       reg = <0x2b0000 0x1000>;
+                                       arm,msi-base-spi = <256>;
+                                       arm,msi-num-spis = <32>;
+                               };
+                       };
+
+                       timer {
+                               compatible = "arm,armv8-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)>;
+                       };
+
+                       pmu {
+                               compatible = "arm,cortex-a72-pmu";
+                               interrupt-parent = <&pic>;
+                               interrupts = <17>;
+                       };
+
+                       odmi: odmi@300000 {
+                               compatible = "marvell,odmi-controller";
+                               interrupt-controller;
+                               msi-controller;
+                               marvell,odmi-frames = <4>;
+                               reg = <0x300000 0x4000>,
+                                     <0x304000 0x4000>,
+                                     <0x308000 0x4000>,
+                                     <0x30C000 0x4000>;
+                               marvell,spi-base = <128>, <136>, <144>, <152>;
+                       };
+
+                       gicp: gicp@3f0040 {
+                               compatible = "marvell,ap806-gicp";
+                               reg = <0x3f0040 0x10>;
+                               marvell,spi-ranges = <64 64>, <288 64>;
+                               msi-controller;
+                       };
+
+                       pic: interrupt-controller@3f0100 {
+                               compatible = "marvell,armada-8k-pic";
+                               reg = <0x3f0100 0x10>;
+                               #interrupt-cells = <1>;
+                               interrupt-controller;
+                               interrupts = <GIC_PPI 15 IRQ_TYPE_LEVEL_HIGH>;
+                       };
+
+                       sei: interrupt-controller@3f0200 {
+                               compatible = "marvell,ap806-sei";
+                               reg = <0x3f0200 0x40>;
+                               interrupts = <GIC_SPI 0 IRQ_TYPE_LEVEL_HIGH>;
+                               #interrupt-cells = <1>;
+                               interrupt-controller;
+                               msi-controller;
+                       };
+
+                       xor@400000 {
+                               compatible = "marvell,armada-7k-xor", "marvell,xor-v2";
+                               reg = <0x400000 0x1000>,
+                                     <0x410000 0x1000>;
+                               msi-parent = <&gic_v2m0>;
+                               clocks = <&ap_clk 3>;
+                               dma-coherent;
+                       };
+
+                       xor@420000 {
+                               compatible = "marvell,armada-7k-xor", "marvell,xor-v2";
+                               reg = <0x420000 0x1000>,
+                                     <0x430000 0x1000>;
+                               msi-parent = <&gic_v2m0>;
+                               clocks = <&ap_clk 3>;
+                               dma-coherent;
+                       };
+
+                       xor@440000 {
+                               compatible = "marvell,armada-7k-xor", "marvell,xor-v2";
+                               reg = <0x440000 0x1000>,
+                                     <0x450000 0x1000>;
+                               msi-parent = <&gic_v2m0>;
+                               clocks = <&ap_clk 3>;
+                               dma-coherent;
+                       };
+
+                       xor@460000 {
+                               compatible = "marvell,armada-7k-xor", "marvell,xor-v2";
+                               reg = <0x460000 0x1000>,
+                                     <0x470000 0x1000>;
+                               msi-parent = <&gic_v2m0>;
+                               clocks = <&ap_clk 3>;
+                               dma-coherent;
+                       };
+
+                       spi0: spi@510600 {
+                               compatible = "marvell,armada-380-spi";
+                               reg = <0x510600 0x50>;
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+                               interrupts = <GIC_SPI 21 IRQ_TYPE_LEVEL_HIGH>;
+                               clocks = <&ap_clk 3>;
+                               status = "disabled";
+                       };
+
+                       i2c0: i2c@511000 {
+                               compatible = "marvell,mv78230-i2c";
+                               reg = <0x511000 0x20>;
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+                               interrupts = <GIC_SPI 20 IRQ_TYPE_LEVEL_HIGH>;
+                               timeout-ms = <1000>;
+                               clocks = <&ap_clk 3>;
+                               status = "disabled";
+                       };
+
+                       uart0: serial@512000 {
+                               compatible = "snps,dw-apb-uart";
+                               reg = <0x512000 0x100>;
+                               reg-shift = <2>;
+                               interrupts = <GIC_SPI 19 IRQ_TYPE_LEVEL_HIGH>;
+                               reg-io-width = <1>;
+                               clocks = <&ap_clk 3>;
+                               status = "disabled";
+                       };
+
+                       uart1: serial@512100 {
+                               compatible = "snps,dw-apb-uart";
+                               reg = <0x512100 0x100>;
+                               reg-shift = <2>;
+                               interrupts = <GIC_SPI 29 IRQ_TYPE_LEVEL_HIGH>;
+                               reg-io-width = <1>;
+                               clocks = <&ap_clk 3>;
+                               status = "disabled";
+
+                       };
+
+                       watchdog: watchdog@610000 {
+                               compatible = "arm,sbsa-gwdt";
+                               reg = <0x610000 0x1000>, <0x600000 0x1000>;
+                               interrupts = <GIC_SPI 2 IRQ_TYPE_LEVEL_HIGH>;
+                       };
+
+                       ap_sdhci0: sdhci@6e0000 {
+                               compatible = "marvell,armada-ap806-sdhci";
+                               reg = <0x6e0000 0x300>;
+                               interrupts = <GIC_SPI 16 IRQ_TYPE_LEVEL_HIGH>;
+                               clock-names = "core";
+                               clocks = <&ap_clk 4>;
+                               dma-coherent;
+                               marvell,xenon-phy-slow-mode;
+                               status = "disabled";
+                       };
+
+                       ap_syscon0: system-controller@6f4000 {
+                               compatible = "syscon", "simple-mfd";
+                               reg = <0x6f4000 0x2000>;
+
+                               ap_pinctrl: pinctrl {
+                                       compatible = "marvell,ap806-pinctrl";
+
+                                       uart0_pins: uart0-pins {
+                                               marvell,pins = "mpp11", "mpp19";
+                                               marvell,function = "uart0";
+                                       };
+                               };
+
+                               ap_gpio: gpio@1040 {
+                                       compatible = "marvell,armada-8k-gpio";
+                                       offset = <0x1040>;
+                                       ngpios = <20>;
+                                       gpio-controller;
+                                       #gpio-cells = <2>;
+                                       gpio-ranges = <&ap_pinctrl 0 0 20>;
+                               };
+                       };
+
+                       ap_syscon1: system-controller@6f8000 {
+                               compatible = "syscon", "simple-mfd";
+                               reg = <0x6f8000 0x1000>;
+                               #address-cells = <1>;
+                               #size-cells = <1>;
+
+                               ap_thermal: thermal-sensor@80 {
+                                       compatible = "marvell,armada-ap806-thermal";
+                                       reg = <0x80 0x10>;
+                                       interrupt-parent = <&sei>;
+                                       interrupts = <18>;
+                                       #thermal-sensor-cells = <1>;
+                               };
+                       };
+               };
+       };
+
+       /*
+        * The thermal IP features one internal sensor plus, if applicable, one
+        * remote channel wired to one sensor per CPU.
+        *
+        * Only one thermal zone per AP/CP may trigger interrupts at a time, the
+        * first one that will have a critical trip point will be chosen.
+        */
+       thermal-zones {
+               ap_thermal_ic: ap-thermal-ic {
+                       polling-delay-passive = <0>; /* Interrupt driven */
+                       polling-delay = <0>; /* Interrupt driven */
+
+                       thermal-sensors = <&ap_thermal 0>;
+
+                       trips {
+                               ap_crit: ap-crit {
+                                       temperature = <100000>; /* mC degrees */
+                                       hysteresis = <2000>; /* mC degrees */
+                                       type = "critical";
+                               };
+                       };
+
+                       cooling-maps { };
+               };
+
+               ap_thermal_cpu0: ap-thermal-cpu0 {
+                       polling-delay-passive = <1000>;
+                       polling-delay = <1000>;
+
+                       thermal-sensors = <&ap_thermal 1>;
+
+                       trips {
+                               cpu0_hot: cpu0-hot {
+                                       temperature = <85000>;
+                                       hysteresis = <2000>;
+                                       type = "passive";
+                               };
+                               cpu0_emerg: cpu0-emerg {
+                                       temperature = <95000>;
+                                       hysteresis = <2000>;
+                                       type = "passive";
+                               };
+                       };
+
+                       cooling-maps {
+                               map0_hot: map0-hot {
+                                       trip = <&cpu0_hot>;
+                                       cooling-device = <&cpu0 1 2>,
+                                               <&cpu1 1 2>;
+                               };
+                               map0_emerg: map0-ermerg {
+                                       trip = <&cpu0_emerg>;
+                                       cooling-device = <&cpu0 3 3>,
+                                               <&cpu1 3 3>;
+                               };
+                       };
+               };
+
+               ap_thermal_cpu1: ap-thermal-cpu1 {
+                       polling-delay-passive = <1000>;
+                       polling-delay = <1000>;
+
+                       thermal-sensors = <&ap_thermal 2>;
+
+                       trips {
+                               cpu1_hot: cpu1-hot {
+                                       temperature = <85000>;
+                                       hysteresis = <2000>;
+                                       type = "passive";
+                               };
+                               cpu1_emerg: cpu1-emerg {
+                                       temperature = <95000>;
+                                       hysteresis = <2000>;
+                                       type = "passive";
+                               };
+                       };
+
+                       cooling-maps {
+                               map1_hot: map1-hot {
+                                       trip = <&cpu1_hot>;
+                                       cooling-device = <&cpu0 1 2>,
+                                               <&cpu1 1 2>;
+                               };
+                               map1_emerg: map1-emerg {
+                                       trip = <&cpu1_emerg>;
+                                       cooling-device = <&cpu0 3 3>,
+                                               <&cpu1 3 3>;
+                               };
+                       };
+               };
+
+               ap_thermal_cpu2: ap-thermal-cpu2 {
+                       polling-delay-passive = <1000>;
+                       polling-delay = <1000>;
+
+                       thermal-sensors = <&ap_thermal 3>;
+
+                       trips {
+                               cpu2_hot: cpu2-hot {
+                                       temperature = <85000>;
+                                       hysteresis = <2000>;
+                                       type = "passive";
+                               };
+                               cpu2_emerg: cpu2-emerg {
+                                       temperature = <95000>;
+                                       hysteresis = <2000>;
+                                       type = "passive";
+                               };
+                       };
+
+                       cooling-maps {
+                               map2_hot: map2-hot {
+                                       trip = <&cpu2_hot>;
+                                       cooling-device = <&cpu2 1 2>,
+                                               <&cpu3 1 2>;
+                               };
+                               map2_emerg: map2-emerg {
+                                       trip = <&cpu2_emerg>;
+                                       cooling-device = <&cpu2 3 3>,
+                                               <&cpu3 3 3>;
+                               };
+                       };
+               };
+
+               ap_thermal_cpu3: ap-thermal-cpu3 {
+                       polling-delay-passive = <1000>;
+                       polling-delay = <1000>;
+
+                       thermal-sensors = <&ap_thermal 4>;
+
+                       trips {
+                               cpu3_hot: cpu3-hot {
+                                       temperature = <85000>;
+                                       hysteresis = <2000>;
+                                       type = "passive";
+                               };
+                               cpu3_emerg: cpu3-emerg {
+                                       temperature = <95000>;
+                                       hysteresis = <2000>;
+                                       type = "passive";
+                               };
+                       };
+
+                       cooling-maps {
+                               map3_hot: map3-bhot {
+                                       trip = <&cpu3_hot>;
+                                       cooling-device = <&cpu2 1 2>,
+                                               <&cpu3 1 2>;
+                               };
+                               map3_emerg: map3-emerg {
+                                       trip = <&cpu3_emerg>;
+                                       cooling-device = <&cpu2 3 3>,
+                                               <&cpu3 3 3>;
+                               };
+                       };
+               };
+       };
+};
index b29c640..c04c6c4 100644 (file)
@@ -6,6 +6,6 @@
 /* Common definitions used by Armada 7K/8K DTs */
 #define PASTER(x, y) x ## y
 #define EVALUATOR(x, y) PASTER(x, y)
-#define CP110_LABEL(name) EVALUATOR(CP110_NAME, EVALUATOR(_, name))
-#define CP110_NODE_NAME(name) EVALUATOR(CP110_NAME, EVALUATOR(-, name))
+#define CP11X_LABEL(name) EVALUATOR(CP11X_NAME, EVALUATOR(_, name))
+#define CP11X_NODE_NAME(name) EVALUATOR(CP11X_NAME, EVALUATOR(-, name))
 #define ADDRESSIFY(addr) EVALUATOR(0x, addr)
index d819449..4fd33b0 100644 (file)
 // SPDX-License-Identifier: (GPL-2.0+ OR MIT)
 /*
- * Copyright (C) 2016 Marvell Technology Group Ltd.
+ * Copyright (C) 2019 Marvell Technology Group Ltd.
  *
  * Device Tree file for Marvell Armada CP110.
  */
 
-#include <dt-bindings/interrupt-controller/mvebu-icu.h>
-#include <dt-bindings/thermal/thermal.h>
+#define CP11X_TYPE cp110
 
-#include "armada-common.dtsi"
+#include "armada-cp11x.dtsi"
 
-#define CP110_PCIEx_IO_BASE(iface)     (CP110_PCIE_IO_BASE + (iface *  0x10000))
-#define CP110_PCIEx_MEM_BASE(iface)    (CP110_PCIE_MEM_BASE + (iface *  0x1000000))
-#define CP110_PCIEx_CONF_BASE(iface)   (CP110_PCIEx_MEM_BASE(iface) + 0xf00000)
-
-/ {
-       /*
-        * The contents of the node are defined below, in order to
-        * save one indentation level
-        */
-       CP110_NAME: CP110_NAME { };
-
-       /*
-        * CPs only have one sensor in the thermal IC.
-        *
-        * The cooling maps are empty as there are no cooling devices.
-        */
-       thermal-zones {
-               CP110_LABEL(thermal_ic): CP110_NODE_NAME(thermal-ic) {
-                       polling-delay-passive = <0>; /* Interrupt driven */
-                       polling-delay = <0>; /* Interrupt driven */
-
-                       thermal-sensors = <&CP110_LABEL(thermal) 0>;
-
-                       trips {
-                               CP110_LABEL(crit): crit {
-                                       temperature = <100000>; /* mC degrees */
-                                       hysteresis = <2000>; /* mC degrees */
-                                       type = "critical";
-                               };
-                       };
-
-                       cooling-maps { };
-               };
-       };
-};
-
-&CP110_NAME {
-       #address-cells = <2>;
-       #size-cells = <2>;
-       compatible = "simple-bus";
-       interrupt-parent = <&CP110_LABEL(icu_nsr)>;
-       ranges;
-
-       config-space@CP110_BASE {
-               #address-cells = <1>;
-               #size-cells = <1>;
-               compatible = "simple-bus";
-               ranges = <0x0 0x0 ADDRESSIFY(CP110_BASE) 0x2000000>;
-
-               CP110_LABEL(ethernet): ethernet@0 {
-                       compatible = "marvell,armada-7k-pp22";
-                       reg = <0x0 0x100000>, <0x129000 0xb000>;
-                       clocks = <&CP110_LABEL(clk) 1 3>, <&CP110_LABEL(clk) 1 9>,
-                                <&CP110_LABEL(clk) 1 5>, <&CP110_LABEL(clk) 1 6>,
-                                <&CP110_LABEL(clk) 1 18>;
-                       clock-names = "pp_clk", "gop_clk",
-                                     "mg_clk", "mg_core_clk", "axi_clk";
-                       marvell,system-controller = <&CP110_LABEL(syscon0)>;
-                       status = "disabled";
-                       dma-coherent;
-
-                       CP110_LABEL(eth0): eth0 {
-                               interrupts = <39 IRQ_TYPE_LEVEL_HIGH>,
-                                       <43 IRQ_TYPE_LEVEL_HIGH>,
-                                       <47 IRQ_TYPE_LEVEL_HIGH>,
-                                       <51 IRQ_TYPE_LEVEL_HIGH>,
-                                       <55 IRQ_TYPE_LEVEL_HIGH>,
-                                       <59 IRQ_TYPE_LEVEL_HIGH>,
-                                       <63 IRQ_TYPE_LEVEL_HIGH>,
-                                       <67 IRQ_TYPE_LEVEL_HIGH>,
-                                       <71 IRQ_TYPE_LEVEL_HIGH>,
-                                       <129 IRQ_TYPE_LEVEL_HIGH>;
-                               interrupt-names = "hif0", "hif1", "hif2",
-                                       "hif3", "hif4", "hif5", "hif6", "hif7",
-                                       "hif8", "link";
-                               port-id = <0>;
-                               gop-port-id = <0>;
-                               status = "disabled";
-                       };
-
-                       CP110_LABEL(eth1): eth1 {
-                               interrupts = <40 IRQ_TYPE_LEVEL_HIGH>,
-                                       <44 IRQ_TYPE_LEVEL_HIGH>,
-                                       <48 IRQ_TYPE_LEVEL_HIGH>,
-                                       <52 IRQ_TYPE_LEVEL_HIGH>,
-                                       <56 IRQ_TYPE_LEVEL_HIGH>,
-                                       <60 IRQ_TYPE_LEVEL_HIGH>,
-                                       <64 IRQ_TYPE_LEVEL_HIGH>,
-                                       <68 IRQ_TYPE_LEVEL_HIGH>,
-                                       <72 IRQ_TYPE_LEVEL_HIGH>,
-                                       <128 IRQ_TYPE_LEVEL_HIGH>;
-                               interrupt-names = "hif0", "hif1", "hif2",
-                                       "hif3", "hif4", "hif5", "hif6", "hif7",
-                                       "hif8", "link";
-                               port-id = <1>;
-                               gop-port-id = <2>;
-                               status = "disabled";
-                       };
-
-                       CP110_LABEL(eth2): eth2 {
-                               interrupts = <41 IRQ_TYPE_LEVEL_HIGH>,
-                                       <45 IRQ_TYPE_LEVEL_HIGH>,
-                                       <49 IRQ_TYPE_LEVEL_HIGH>,
-                                       <53 IRQ_TYPE_LEVEL_HIGH>,
-                                       <57 IRQ_TYPE_LEVEL_HIGH>,
-                                       <61 IRQ_TYPE_LEVEL_HIGH>,
-                                       <65 IRQ_TYPE_LEVEL_HIGH>,
-                                       <69 IRQ_TYPE_LEVEL_HIGH>,
-                                       <73 IRQ_TYPE_LEVEL_HIGH>,
-                                       <127 IRQ_TYPE_LEVEL_HIGH>;
-                               interrupt-names = "hif0", "hif1", "hif2",
-                                       "hif3", "hif4", "hif5", "hif6", "hif7",
-                                       "hif8", "link";
-                               port-id = <2>;
-                               gop-port-id = <3>;
-                               status = "disabled";
-                       };
-               };
-
-               CP110_LABEL(comphy): phy@120000 {
-                       compatible = "marvell,comphy-cp110";
-                       reg = <0x120000 0x6000>;
-                       marvell,system-controller = <&CP110_LABEL(syscon0)>;
-                       clocks = <&CP110_LABEL(clk) 1 5>, <&CP110_LABEL(clk) 1 6>,
-                                <&CP110_LABEL(clk) 1 18>;
-                       clock-names = "mg_clk", "mg_core_clk", "axi_clk";
-                       #address-cells = <1>;
-                       #size-cells = <0>;
-
-                       CP110_LABEL(comphy0): phy@0 {
-                               reg = <0>;
-                               #phy-cells = <1>;
-                       };
-
-                       CP110_LABEL(comphy1): phy@1 {
-                               reg = <1>;
-                               #phy-cells = <1>;
-                       };
-
-                       CP110_LABEL(comphy2): phy@2 {
-                               reg = <2>;
-                               #phy-cells = <1>;
-                       };
-
-                       CP110_LABEL(comphy3): phy@3 {
-                               reg = <3>;
-                               #phy-cells = <1>;
-                       };
-
-                       CP110_LABEL(comphy4): phy@4 {
-                               reg = <4>;
-                               #phy-cells = <1>;
-                       };
-
-                       CP110_LABEL(comphy5): phy@5 {
-                               reg = <5>;
-                               #phy-cells = <1>;
-                       };
-               };
-
-               CP110_LABEL(mdio): mdio@12a200 {
-                       #address-cells = <1>;
-                       #size-cells = <0>;
-                       compatible = "marvell,orion-mdio";
-                       reg = <0x12a200 0x10>;
-                       clocks = <&CP110_LABEL(clk) 1 9>, <&CP110_LABEL(clk) 1 5>,
-                                <&CP110_LABEL(clk) 1 6>, <&CP110_LABEL(clk) 1 18>;
-                       status = "disabled";
-               };
-
-               CP110_LABEL(xmdio): mdio@12a600 {
-                       #address-cells = <1>;
-                       #size-cells = <0>;
-                       compatible = "marvell,xmdio";
-                       reg = <0x12a600 0x10>;
-                       clocks = <&CP110_LABEL(clk) 1 5>,
-                                <&CP110_LABEL(clk) 1 6>, <&CP110_LABEL(clk) 1 18>;
-                       status = "disabled";
-               };
-
-               CP110_LABEL(icu): interrupt-controller@1e0000 {
-                       compatible = "marvell,cp110-icu";
-                       reg = <0x1e0000 0x440>;
-                       #address-cells = <1>;
-                       #size-cells = <1>;
-
-                       CP110_LABEL(icu_nsr): interrupt-controller@10 {
-                               compatible = "marvell,cp110-icu-nsr";
-                               reg = <0x10 0x20>;
-                               #interrupt-cells = <2>;
-                               interrupt-controller;
-                               msi-parent = <&gicp>;
-                       };
-
-                       CP110_LABEL(icu_sei): interrupt-controller@50 {
-                               compatible = "marvell,cp110-icu-sei";
-                               reg = <0x50 0x10>;
-                               #interrupt-cells = <2>;
-                               interrupt-controller;
-                               msi-parent = <&sei>;
-                       };
-               };
-
-               CP110_LABEL(rtc): rtc@284000 {
-                       compatible = "marvell,armada-8k-rtc";
-                       reg = <0x284000 0x20>, <0x284080 0x24>;
-                       reg-names = "rtc", "rtc-soc";
-                       interrupts = <77 IRQ_TYPE_LEVEL_HIGH>;
-               };
-
-               CP110_LABEL(syscon0): system-controller@440000 {
-                       compatible = "syscon", "simple-mfd";
-                       reg = <0x440000 0x2000>;
-
-                       CP110_LABEL(clk): clock {
-                               compatible = "marvell,cp110-clock";
-                               #clock-cells = <2>;
-                       };
-
-                       CP110_LABEL(gpio1): gpio@100 {
-                               compatible = "marvell,armada-8k-gpio";
-                               offset = <0x100>;
-                               ngpios = <32>;
-                               gpio-controller;
-                               #gpio-cells = <2>;
-                               gpio-ranges = <&CP110_LABEL(pinctrl) 0 0 32>;
-                               interrupt-controller;
-                               interrupts = <86 IRQ_TYPE_LEVEL_HIGH>,
-                                       <85 IRQ_TYPE_LEVEL_HIGH>,
-                                       <84 IRQ_TYPE_LEVEL_HIGH>,
-                                       <83 IRQ_TYPE_LEVEL_HIGH>;
-                               #interrupt-cells = <2>;
-                               status = "disabled";
-                       };
-
-                       CP110_LABEL(gpio2): gpio@140 {
-                               compatible = "marvell,armada-8k-gpio";
-                               offset = <0x140>;
-                               ngpios = <31>;
-                               gpio-controller;
-                               #gpio-cells = <2>;
-                               gpio-ranges = <&CP110_LABEL(pinctrl) 0 32 31>;
-                               interrupt-controller;
-                               interrupts = <82 IRQ_TYPE_LEVEL_HIGH>,
-                                       <81 IRQ_TYPE_LEVEL_HIGH>,
-                                       <80 IRQ_TYPE_LEVEL_HIGH>,
-                                       <79 IRQ_TYPE_LEVEL_HIGH>;
-                               #interrupt-cells = <2>;
-                               status = "disabled";
-                       };
-               };
-
-               CP110_LABEL(syscon1): system-controller@400000 {
-                       compatible = "syscon", "simple-mfd";
-                       reg = <0x400000 0x1000>;
-                       #address-cells = <1>;
-                       #size-cells = <1>;
-
-                       CP110_LABEL(thermal): thermal-sensor@70 {
-                               compatible = "marvell,armada-cp110-thermal";
-                               reg = <0x70 0x10>;
-                               interrupts-extended =
-                                       <&CP110_LABEL(icu_sei) 116 IRQ_TYPE_LEVEL_HIGH>;
-                               #thermal-sensor-cells = <1>;
-                       };
-               };
-
-               CP110_LABEL(usb3_0): usb3@500000 {
-                       compatible = "marvell,armada-8k-xhci",
-                       "generic-xhci";
-                       reg = <0x500000 0x4000>;
-                       dma-coherent;
-                       interrupts = <106 IRQ_TYPE_LEVEL_HIGH>;
-                       clock-names = "core", "reg";
-                       clocks = <&CP110_LABEL(clk) 1 22>,
-                                <&CP110_LABEL(clk) 1 16>;
-                       status = "disabled";
-               };
-
-               CP110_LABEL(usb3_1): usb3@510000 {
-                       compatible = "marvell,armada-8k-xhci",
-                       "generic-xhci";
-                       reg = <0x510000 0x4000>;
-                       dma-coherent;
-                       interrupts = <105 IRQ_TYPE_LEVEL_HIGH>;
-                       clock-names = "core", "reg";
-                       clocks = <&CP110_LABEL(clk) 1 23>,
-                                <&CP110_LABEL(clk) 1 16>;
-                       status = "disabled";
-               };
-
-               CP110_LABEL(sata0): sata@540000 {
-                       compatible = "marvell,armada-8k-ahci",
-                       "generic-ahci";
-                       reg = <0x540000 0x30000>;
-                       dma-coherent;
-                       interrupts = <107 IRQ_TYPE_LEVEL_HIGH>;
-                       clocks = <&CP110_LABEL(clk) 1 15>,
-                                <&CP110_LABEL(clk) 1 16>;
-                       #address-cells = <1>;
-                       #size-cells = <0>;
-                       status = "disabled";
-
-                       sata-port@0 {
-                               reg = <0>;
-                       };
-
-                       sata-port@1 {
-                               reg = <1>;
-                       };
-               };
-
-               CP110_LABEL(xor0): xor@6a0000 {
-                       compatible = "marvell,armada-7k-xor", "marvell,xor-v2";
-                       reg = <0x6a0000 0x1000>, <0x6b0000 0x1000>;
-                       dma-coherent;
-                       msi-parent = <&gic_v2m0>;
-                       clock-names = "core", "reg";
-                       clocks = <&CP110_LABEL(clk) 1 8>,
-                                <&CP110_LABEL(clk) 1 14>;
-               };
-
-               CP110_LABEL(xor1): xor@6c0000 {
-                       compatible = "marvell,armada-7k-xor", "marvell,xor-v2";
-                       reg = <0x6c0000 0x1000>, <0x6d0000 0x1000>;
-                       dma-coherent;
-                       msi-parent = <&gic_v2m0>;
-                       clock-names = "core", "reg";
-                       clocks = <&CP110_LABEL(clk) 1 7>,
-                                <&CP110_LABEL(clk) 1 14>;
-               };
-
-               CP110_LABEL(spi0): spi@700600 {
-                       compatible = "marvell,armada-380-spi";
-                       reg = <0x700600 0x50>;
-                       #address-cells = <0x1>;
-                       #size-cells = <0x0>;
-                       clock-names = "core", "axi";
-                       clocks = <&CP110_LABEL(clk) 1 21>,
-                                <&CP110_LABEL(clk) 1 17>;
-                       status = "disabled";
-               };
-
-               CP110_LABEL(spi1): spi@700680 {
-                       compatible = "marvell,armada-380-spi";
-                       reg = <0x700680 0x50>;
-                       #address-cells = <1>;
-                       #size-cells = <0>;
-                       clock-names = "core", "axi";
-                       clocks = <&CP110_LABEL(clk) 1 21>,
-                                <&CP110_LABEL(clk) 1 17>;
-                       status = "disabled";
-               };
-
-               CP110_LABEL(i2c0): i2c@701000 {
-                       compatible = "marvell,mv78230-i2c";
-                       reg = <0x701000 0x20>;
-                       #address-cells = <1>;
-                       #size-cells = <0>;
-                       interrupts = <120 IRQ_TYPE_LEVEL_HIGH>;
-                       clock-names = "core", "reg";
-                       clocks = <&CP110_LABEL(clk) 1 21>,
-                                <&CP110_LABEL(clk) 1 17>;
-                       status = "disabled";
-               };
-
-               CP110_LABEL(i2c1): i2c@701100 {
-                       compatible = "marvell,mv78230-i2c";
-                       reg = <0x701100 0x20>;
-                       #address-cells = <1>;
-                       #size-cells = <0>;
-                       interrupts = <121 IRQ_TYPE_LEVEL_HIGH>;
-                       clock-names = "core", "reg";
-                       clocks = <&CP110_LABEL(clk) 1 21>,
-                                <&CP110_LABEL(clk) 1 17>;
-                       status = "disabled";
-               };
-
-               CP110_LABEL(uart0): serial@702000 {
-                       compatible = "snps,dw-apb-uart";
-                       reg = <0x702000 0x100>;
-                       reg-shift = <2>;
-                       interrupts = <122 IRQ_TYPE_LEVEL_HIGH>;
-                       reg-io-width = <1>;
-                       clock-names = "baudclk", "apb_pclk";
-                       clocks = <&CP110_LABEL(clk) 1 21>,
-                                <&CP110_LABEL(clk) 1 17>;
-                       status = "disabled";
-               };
-
-               CP110_LABEL(uart1): serial@702100 {
-                       compatible = "snps,dw-apb-uart";
-                       reg = <0x702100 0x100>;
-                       reg-shift = <2>;
-                       interrupts = <123 IRQ_TYPE_LEVEL_HIGH>;
-                       reg-io-width = <1>;
-                       clock-names = "baudclk", "apb_pclk";
-                       clocks = <&CP110_LABEL(clk) 1 21>,
-                                <&CP110_LABEL(clk) 1 17>;
-                       status = "disabled";
-               };
-
-               CP110_LABEL(uart2): serial@702200 {
-                       compatible = "snps,dw-apb-uart";
-                       reg = <0x702200 0x100>;
-                       reg-shift = <2>;
-                       interrupts = <124 IRQ_TYPE_LEVEL_HIGH>;
-                       reg-io-width = <1>;
-                       clock-names = "baudclk", "apb_pclk";
-                       clocks = <&CP110_LABEL(clk) 1 21>,
-                                <&CP110_LABEL(clk) 1 17>;
-                       status = "disabled";
-               };
-
-               CP110_LABEL(uart3): serial@702300 {
-                       compatible = "snps,dw-apb-uart";
-                       reg = <0x702300 0x100>;
-                       reg-shift = <2>;
-                       interrupts = <125 IRQ_TYPE_LEVEL_HIGH>;
-                       reg-io-width = <1>;
-                       clock-names = "baudclk", "apb_pclk";
-                       clocks = <&CP110_LABEL(clk) 1 21>,
-                                <&CP110_LABEL(clk) 1 17>;
-                       status = "disabled";
-               };
-
-               CP110_LABEL(nand_controller): nand@720000 {
-                       /*
-                       * Due to the limitation of the pins available
-                       * this controller is only usable on the CPM
-                       * for A7K and on the CPS for A8K.
-                       */
-                       compatible = "marvell,armada-8k-nand-controller",
-                               "marvell,armada370-nand-controller";
-                       reg = <0x720000 0x54>;
-                       #address-cells = <1>;
-                       #size-cells = <0>;
-                       interrupts = <115 IRQ_TYPE_LEVEL_HIGH>;
-                       clock-names = "core", "reg";
-                       clocks = <&CP110_LABEL(clk) 1 2>,
-                                <&CP110_LABEL(clk) 1 17>;
-                       marvell,system-controller = <&CP110_LABEL(syscon0)>;
-                       status = "disabled";
-               };
-
-               CP110_LABEL(trng): trng@760000 {
-                       compatible = "marvell,armada-8k-rng",
-                       "inside-secure,safexcel-eip76";
-                       reg = <0x760000 0x7d>;
-                       interrupts = <95 IRQ_TYPE_LEVEL_HIGH>;
-                       clock-names = "core", "reg";
-                       clocks = <&CP110_LABEL(clk) 1 25>,
-                                <&CP110_LABEL(clk) 1 17>;
-                       status = "okay";
-               };
-
-               CP110_LABEL(sdhci0): sdhci@780000 {
-                       compatible = "marvell,armada-cp110-sdhci";
-                       reg = <0x780000 0x300>;
-                       interrupts = <27 IRQ_TYPE_LEVEL_HIGH>;
-                       clock-names = "core", "axi";
-                       clocks = <&CP110_LABEL(clk) 1 4>, <&CP110_LABEL(clk) 1 18>;
-                       dma-coherent;
-                       status = "disabled";
-               };
-
-               CP110_LABEL(crypto): crypto@800000 {
-                       compatible = "inside-secure,safexcel-eip197b";
-                       reg = <0x800000 0x200000>;
-                       interrupts = <87 IRQ_TYPE_LEVEL_HIGH>,
-                               <88 IRQ_TYPE_LEVEL_HIGH>,
-                               <89 IRQ_TYPE_LEVEL_HIGH>,
-                               <90 IRQ_TYPE_LEVEL_HIGH>,
-                               <91 IRQ_TYPE_LEVEL_HIGH>,
-                               <92 IRQ_TYPE_LEVEL_HIGH>;
-                       interrupt-names = "mem", "ring0", "ring1",
-                               "ring2", "ring3", "eip";
-                       clock-names = "core", "reg";
-                       clocks = <&CP110_LABEL(clk) 1 26>,
-                                <&CP110_LABEL(clk) 1 17>;
-                       dma-coherent;
-               };
-       };
-
-       CP110_LABEL(pcie0): pcie@CP110_PCIE0_BASE {
-               compatible = "marvell,armada8k-pcie", "snps,dw-pcie";
-               reg = <0 ADDRESSIFY(CP110_PCIE0_BASE) 0 0x10000>,
-                     <0 CP110_PCIEx_CONF_BASE(0) 0 0x80000>;
-               reg-names = "ctrl", "config";
-               #address-cells = <3>;
-               #size-cells = <2>;
-               #interrupt-cells = <1>;
-               device_type = "pci";
-               dma-coherent;
-               msi-parent = <&gic_v2m0>;
-
-               bus-range = <0 0xff>;
-               ranges =
-               /* downstream I/O */
-               <0x81000000 0 CP110_PCIEx_IO_BASE(0) 0  CP110_PCIEx_IO_BASE(0) 0 0x10000
-               /* non-prefetchable memory */
-               0x82000000 0 CP110_PCIEx_MEM_BASE(0) 0  CP110_PCIEx_MEM_BASE(0) 0 0xf00000>;
-               interrupt-map-mask = <0 0 0 0>;
-               interrupt-map = <0 0 0 0 &CP110_LABEL(icu_nsr) 22 IRQ_TYPE_LEVEL_HIGH>;
-               interrupts = <22 IRQ_TYPE_LEVEL_HIGH>;
-               num-lanes = <1>;
-               clock-names = "core", "reg";
-               clocks = <&CP110_LABEL(clk) 1 13>, <&CP110_LABEL(clk) 1 14>;
-               status = "disabled";
-       };
-
-       CP110_LABEL(pcie1): pcie@CP110_PCIE1_BASE {
-               compatible = "marvell,armada8k-pcie", "snps,dw-pcie";
-               reg = <0 ADDRESSIFY(CP110_PCIE1_BASE) 0 0x10000>,
-                     <0 CP110_PCIEx_CONF_BASE(1) 0 0x80000>;
-               reg-names = "ctrl", "config";
-               #address-cells = <3>;
-               #size-cells = <2>;
-               #interrupt-cells = <1>;
-               device_type = "pci";
-               dma-coherent;
-               msi-parent = <&gic_v2m0>;
-
-               bus-range = <0 0xff>;
-               ranges =
-               /* downstream I/O */
-               <0x81000000 0 CP110_PCIEx_IO_BASE(1) 0  CP110_PCIEx_IO_BASE(1) 0 0x10000
-               /* non-prefetchable memory */
-               0x82000000 0 CP110_PCIEx_MEM_BASE(1) 0  CP110_PCIEx_MEM_BASE(1) 0 0xf00000>;
-               interrupt-map-mask = <0 0 0 0>;
-               interrupt-map = <0 0 0 0 &CP110_LABEL(icu_nsr) 24 IRQ_TYPE_LEVEL_HIGH>;
-               interrupts = <24 IRQ_TYPE_LEVEL_HIGH>;
-
-               num-lanes = <1>;
-               clock-names = "core", "reg";
-               clocks = <&CP110_LABEL(clk) 1 11>, <&CP110_LABEL(clk) 1 14>;
-               status = "disabled";
-       };
-
-       CP110_LABEL(pcie2): pcie@CP110_PCIE2_BASE {
-               compatible = "marvell,armada8k-pcie", "snps,dw-pcie";
-               reg = <0 ADDRESSIFY(CP110_PCIE2_BASE) 0 0x10000>,
-                     <0 CP110_PCIEx_CONF_BASE(2) 0 0x80000>;
-               reg-names = "ctrl", "config";
-               #address-cells = <3>;
-               #size-cells = <2>;
-               #interrupt-cells = <1>;
-               device_type = "pci";
-               dma-coherent;
-               msi-parent = <&gic_v2m0>;
-
-               bus-range = <0 0xff>;
-               ranges =
-               /* downstream I/O */
-               <0x81000000 0 CP110_PCIEx_IO_BASE(2) 0  CP110_PCIEx_IO_BASE(2) 0 0x10000
-               /* non-prefetchable memory */
-               0x82000000 0 CP110_PCIEx_MEM_BASE(2) 0  CP110_PCIEx_MEM_BASE(2) 0 0xf00000>;
-               interrupt-map-mask = <0 0 0 0>;
-               interrupt-map = <0 0 0 0 &CP110_LABEL(icu_nsr) 23 IRQ_TYPE_LEVEL_HIGH>;
-               interrupts = <23 IRQ_TYPE_LEVEL_HIGH>;
-
-               num-lanes = <1>;
-               clock-names = "core", "reg";
-               clocks = <&CP110_LABEL(clk) 1 12>, <&CP110_LABEL(clk) 1 14>;
-               status = "disabled";
-       };
-};
+#undef CP11X_TYPE
diff --git a/arch/arm64/boot/dts/marvell/armada-cp115.dtsi b/arch/arm64/boot/dts/marvell/armada-cp115.dtsi
new file mode 100644 (file)
index 0000000..1d0a965
--- /dev/null
@@ -0,0 +1,12 @@
+// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
+/*
+ * Copyright (C) 2019 Marvell Technology Group Ltd.
+ *
+ * Device Tree file for Marvell Armada CP115.
+ */
+
+#define CP11X_TYPE cp115
+
+#include "armada-cp11x.dtsi"
+
+#undef CP11X_TYPE
diff --git a/arch/arm64/boot/dts/marvell/armada-cp11x.dtsi b/arch/arm64/boot/dts/marvell/armada-cp11x.dtsi
new file mode 100644 (file)
index 0000000..9dcf16b
--- /dev/null
@@ -0,0 +1,568 @@
+// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
+/*
+ * Copyright (C) 2016 Marvell Technology Group Ltd.
+ *
+ * Device Tree file for Marvell Armada CP11x.
+ */
+
+#include <dt-bindings/interrupt-controller/mvebu-icu.h>
+#include <dt-bindings/thermal/thermal.h>
+
+#include "armada-common.dtsi"
+
+#define CP11X_PCIEx_CONF_BASE(iface)   (CP11X_PCIEx_MEM_BASE(iface) + CP11X_PCIEx_MEM_SIZE(iface))
+
+/ {
+       /*
+        * The contents of the node are defined below, in order to
+        * save one indentation level
+        */
+       CP11X_NAME: CP11X_NAME { };
+
+       /*
+        * CPs only have one sensor in the thermal IC.
+        *
+        * The cooling maps are empty as there are no cooling devices.
+        */
+       thermal-zones {
+               CP11X_LABEL(thermal_ic): CP11X_NODE_NAME(thermal-ic) {
+                       polling-delay-passive = <0>; /* Interrupt driven */
+                       polling-delay = <0>; /* Interrupt driven */
+
+                       thermal-sensors = <&CP11X_LABEL(thermal) 0>;
+
+                       trips {
+                               CP11X_LABEL(crit): crit {
+                                       temperature = <100000>; /* mC degrees */
+                                       hysteresis = <2000>; /* mC degrees */
+                                       type = "critical";
+                               };
+                       };
+
+                       cooling-maps { };
+               };
+       };
+};
+
+&CP11X_NAME {
+       #address-cells = <2>;
+       #size-cells = <2>;
+       compatible = "simple-bus";
+       interrupt-parent = <&CP11X_LABEL(icu_nsr)>;
+       ranges;
+
+       config-space@CP11X_BASE {
+               #address-cells = <1>;
+               #size-cells = <1>;
+               compatible = "simple-bus";
+               ranges = <0x0 0x0 ADDRESSIFY(CP11X_BASE) 0x2000000>;
+
+               CP11X_LABEL(ethernet): ethernet@0 {
+                       compatible = "marvell,armada-7k-pp22";
+                       reg = <0x0 0x100000>, <0x129000 0xb000>;
+                       clocks = <&CP11X_LABEL(clk) 1 3>, <&CP11X_LABEL(clk) 1 9>,
+                                <&CP11X_LABEL(clk) 1 5>, <&CP11X_LABEL(clk) 1 6>,
+                                <&CP11X_LABEL(clk) 1 18>;
+                       clock-names = "pp_clk", "gop_clk",
+                                     "mg_clk", "mg_core_clk", "axi_clk";
+                       marvell,system-controller = <&CP11X_LABEL(syscon0)>;
+                       status = "disabled";
+                       dma-coherent;
+
+                       CP11X_LABEL(eth0): eth0 {
+                               interrupts = <39 IRQ_TYPE_LEVEL_HIGH>,
+                                       <43 IRQ_TYPE_LEVEL_HIGH>,
+                                       <47 IRQ_TYPE_LEVEL_HIGH>,
+                                       <51 IRQ_TYPE_LEVEL_HIGH>,
+                                       <55 IRQ_TYPE_LEVEL_HIGH>,
+                                       <59 IRQ_TYPE_LEVEL_HIGH>,
+                                       <63 IRQ_TYPE_LEVEL_HIGH>,
+                                       <67 IRQ_TYPE_LEVEL_HIGH>,
+                                       <71 IRQ_TYPE_LEVEL_HIGH>,
+                                       <129 IRQ_TYPE_LEVEL_HIGH>;
+                               interrupt-names = "hif0", "hif1", "hif2",
+                                       "hif3", "hif4", "hif5", "hif6", "hif7",
+                                       "hif8", "link";
+                               port-id = <0>;
+                               gop-port-id = <0>;
+                               status = "disabled";
+                       };
+
+                       CP11X_LABEL(eth1): eth1 {
+                               interrupts = <40 IRQ_TYPE_LEVEL_HIGH>,
+                                       <44 IRQ_TYPE_LEVEL_HIGH>,
+                                       <48 IRQ_TYPE_LEVEL_HIGH>,
+                                       <52 IRQ_TYPE_LEVEL_HIGH>,
+                                       <56 IRQ_TYPE_LEVEL_HIGH>,
+                                       <60 IRQ_TYPE_LEVEL_HIGH>,
+                                       <64 IRQ_TYPE_LEVEL_HIGH>,
+                                       <68 IRQ_TYPE_LEVEL_HIGH>,
+                                       <72 IRQ_TYPE_LEVEL_HIGH>,
+                                       <128 IRQ_TYPE_LEVEL_HIGH>;
+                               interrupt-names = "hif0", "hif1", "hif2",
+                                       "hif3", "hif4", "hif5", "hif6", "hif7",
+                                       "hif8", "link";
+                               port-id = <1>;
+                               gop-port-id = <2>;
+                               status = "disabled";
+                       };
+
+                       CP11X_LABEL(eth2): eth2 {
+                               interrupts = <41 IRQ_TYPE_LEVEL_HIGH>,
+                                       <45 IRQ_TYPE_LEVEL_HIGH>,
+                                       <49 IRQ_TYPE_LEVEL_HIGH>,
+                                       <53 IRQ_TYPE_LEVEL_HIGH>,
+                                       <57 IRQ_TYPE_LEVEL_HIGH>,
+                                       <61 IRQ_TYPE_LEVEL_HIGH>,
+                                       <65 IRQ_TYPE_LEVEL_HIGH>,
+                                       <69 IRQ_TYPE_LEVEL_HIGH>,
+                                       <73 IRQ_TYPE_LEVEL_HIGH>,
+                                       <127 IRQ_TYPE_LEVEL_HIGH>;
+                               interrupt-names = "hif0", "hif1", "hif2",
+                                       "hif3", "hif4", "hif5", "hif6", "hif7",
+                                       "hif8", "link";
+                               port-id = <2>;
+                               gop-port-id = <3>;
+                               status = "disabled";
+                       };
+               };
+
+               CP11X_LABEL(comphy): phy@120000 {
+                       compatible = "marvell,comphy-cp110";
+                       reg = <0x120000 0x6000>;
+                       marvell,system-controller = <&CP11X_LABEL(syscon0)>;
+                       clocks = <&CP11X_LABEL(clk) 1 5>, <&CP11X_LABEL(clk) 1 6>,
+                                <&CP11X_LABEL(clk) 1 18>;
+                       clock-names = "mg_clk", "mg_core_clk", "axi_clk";
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+
+                       CP11X_LABEL(comphy0): phy@0 {
+                               reg = <0>;
+                               #phy-cells = <1>;
+                       };
+
+                       CP11X_LABEL(comphy1): phy@1 {
+                               reg = <1>;
+                               #phy-cells = <1>;
+                       };
+
+                       CP11X_LABEL(comphy2): phy@2 {
+                               reg = <2>;
+                               #phy-cells = <1>;
+                       };
+
+                       CP11X_LABEL(comphy3): phy@3 {
+                               reg = <3>;
+                               #phy-cells = <1>;
+                       };
+
+                       CP11X_LABEL(comphy4): phy@4 {
+                               reg = <4>;
+                               #phy-cells = <1>;
+                       };
+
+                       CP11X_LABEL(comphy5): phy@5 {
+                               reg = <5>;
+                               #phy-cells = <1>;
+                       };
+               };
+
+               CP11X_LABEL(mdio): mdio@12a200 {
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       compatible = "marvell,orion-mdio";
+                       reg = <0x12a200 0x10>;
+                       clocks = <&CP11X_LABEL(clk) 1 9>, <&CP11X_LABEL(clk) 1 5>,
+                                <&CP11X_LABEL(clk) 1 6>, <&CP11X_LABEL(clk) 1 18>;
+                       status = "disabled";
+               };
+
+               CP11X_LABEL(xmdio): mdio@12a600 {
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       compatible = "marvell,xmdio";
+                       reg = <0x12a600 0x10>;
+                       clocks = <&CP11X_LABEL(clk) 1 5>,
+                                <&CP11X_LABEL(clk) 1 6>, <&CP11X_LABEL(clk) 1 18>;
+                       status = "disabled";
+               };
+
+               CP11X_LABEL(icu): interrupt-controller@1e0000 {
+                       compatible = "marvell,cp110-icu";
+                       reg = <0x1e0000 0x440>;
+                       #address-cells = <1>;
+                       #size-cells = <1>;
+
+                       CP11X_LABEL(icu_nsr): interrupt-controller@10 {
+                               compatible = "marvell,cp110-icu-nsr";
+                               reg = <0x10 0x20>;
+                               #interrupt-cells = <2>;
+                               interrupt-controller;
+                               msi-parent = <&gicp>;
+                       };
+
+                       CP11X_LABEL(icu_sei): interrupt-controller@50 {
+                               compatible = "marvell,cp110-icu-sei";
+                               reg = <0x50 0x10>;
+                               #interrupt-cells = <2>;
+                               interrupt-controller;
+                               msi-parent = <&sei>;
+                       };
+               };
+
+               CP11X_LABEL(rtc): rtc@284000 {
+                       compatible = "marvell,armada-8k-rtc";
+                       reg = <0x284000 0x20>, <0x284080 0x24>;
+                       reg-names = "rtc", "rtc-soc";
+                       interrupts = <77 IRQ_TYPE_LEVEL_HIGH>;
+               };
+
+               CP11X_LABEL(syscon0): system-controller@440000 {
+                       compatible = "syscon", "simple-mfd";
+                       reg = <0x440000 0x2000>;
+
+                       CP11X_LABEL(clk): clock {
+                               compatible = "marvell,cp110-clock";
+                               #clock-cells = <2>;
+                       };
+
+                       CP11X_LABEL(gpio1): gpio@100 {
+                               compatible = "marvell,armada-8k-gpio";
+                               offset = <0x100>;
+                               ngpios = <32>;
+                               gpio-controller;
+                               #gpio-cells = <2>;
+                               gpio-ranges = <&CP11X_LABEL(pinctrl) 0 0 32>;
+                               interrupt-controller;
+                               interrupts = <86 IRQ_TYPE_LEVEL_HIGH>,
+                                       <85 IRQ_TYPE_LEVEL_HIGH>,
+                                       <84 IRQ_TYPE_LEVEL_HIGH>,
+                                       <83 IRQ_TYPE_LEVEL_HIGH>;
+                               #interrupt-cells = <2>;
+                               status = "disabled";
+                       };
+
+                       CP11X_LABEL(gpio2): gpio@140 {
+                               compatible = "marvell,armada-8k-gpio";
+                               offset = <0x140>;
+                               ngpios = <31>;
+                               gpio-controller;
+                               #gpio-cells = <2>;
+                               gpio-ranges = <&CP11X_LABEL(pinctrl) 0 32 31>;
+                               interrupt-controller;
+                               interrupts = <82 IRQ_TYPE_LEVEL_HIGH>,
+                                       <81 IRQ_TYPE_LEVEL_HIGH>,
+                                       <80 IRQ_TYPE_LEVEL_HIGH>,
+                                       <79 IRQ_TYPE_LEVEL_HIGH>;
+                               #interrupt-cells = <2>;
+                               status = "disabled";
+                       };
+               };
+
+               CP11X_LABEL(syscon1): system-controller@400000 {
+                       compatible = "syscon", "simple-mfd";
+                       reg = <0x400000 0x1000>;
+                       #address-cells = <1>;
+                       #size-cells = <1>;
+
+                       CP11X_LABEL(thermal): thermal-sensor@70 {
+                               compatible = "marvell,armada-cp110-thermal";
+                               reg = <0x70 0x10>;
+                               interrupts-extended =
+                                       <&CP11X_LABEL(icu_sei) 116 IRQ_TYPE_LEVEL_HIGH>;
+                               #thermal-sensor-cells = <1>;
+                       };
+               };
+
+               CP11X_LABEL(usb3_0): usb3@500000 {
+                       compatible = "marvell,armada-8k-xhci",
+                       "generic-xhci";
+                       reg = <0x500000 0x4000>;
+                       dma-coherent;
+                       interrupts = <106 IRQ_TYPE_LEVEL_HIGH>;
+                       clock-names = "core", "reg";
+                       clocks = <&CP11X_LABEL(clk) 1 22>,
+                                <&CP11X_LABEL(clk) 1 16>;
+                       status = "disabled";
+               };
+
+               CP11X_LABEL(usb3_1): usb3@510000 {
+                       compatible = "marvell,armada-8k-xhci",
+                       "generic-xhci";
+                       reg = <0x510000 0x4000>;
+                       dma-coherent;
+                       interrupts = <105 IRQ_TYPE_LEVEL_HIGH>;
+                       clock-names = "core", "reg";
+                       clocks = <&CP11X_LABEL(clk) 1 23>,
+                                <&CP11X_LABEL(clk) 1 16>;
+                       status = "disabled";
+               };
+
+               CP11X_LABEL(sata0): sata@540000 {
+                       compatible = "marvell,armada-8k-ahci",
+                       "generic-ahci";
+                       reg = <0x540000 0x30000>;
+                       dma-coherent;
+                       interrupts = <107 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&CP11X_LABEL(clk) 1 15>,
+                                <&CP11X_LABEL(clk) 1 16>;
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       status = "disabled";
+
+                       sata-port@0 {
+                               reg = <0>;
+                       };
+
+                       sata-port@1 {
+                               reg = <1>;
+                       };
+               };
+
+               CP11X_LABEL(xor0): xor@6a0000 {
+                       compatible = "marvell,armada-7k-xor", "marvell,xor-v2";
+                       reg = <0x6a0000 0x1000>, <0x6b0000 0x1000>;
+                       dma-coherent;
+                       msi-parent = <&gic_v2m0>;
+                       clock-names = "core", "reg";
+                       clocks = <&CP11X_LABEL(clk) 1 8>,
+                                <&CP11X_LABEL(clk) 1 14>;
+               };
+
+               CP11X_LABEL(xor1): xor@6c0000 {
+                       compatible = "marvell,armada-7k-xor", "marvell,xor-v2";
+                       reg = <0x6c0000 0x1000>, <0x6d0000 0x1000>;
+                       dma-coherent;
+                       msi-parent = <&gic_v2m0>;
+                       clock-names = "core", "reg";
+                       clocks = <&CP11X_LABEL(clk) 1 7>,
+                                <&CP11X_LABEL(clk) 1 14>;
+               };
+
+               CP11X_LABEL(spi0): spi@700600 {
+                       compatible = "marvell,armada-380-spi";
+                       reg = <0x700600 0x50>;
+                       #address-cells = <0x1>;
+                       #size-cells = <0x0>;
+                       clock-names = "core", "axi";
+                       clocks = <&CP11X_LABEL(clk) 1 21>,
+                                <&CP11X_LABEL(clk) 1 17>;
+                       status = "disabled";
+               };
+
+               CP11X_LABEL(spi1): spi@700680 {
+                       compatible = "marvell,armada-380-spi";
+                       reg = <0x700680 0x50>;
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       clock-names = "core", "axi";
+                       clocks = <&CP11X_LABEL(clk) 1 21>,
+                                <&CP11X_LABEL(clk) 1 17>;
+                       status = "disabled";
+               };
+
+               CP11X_LABEL(i2c0): i2c@701000 {
+                       compatible = "marvell,mv78230-i2c";
+                       reg = <0x701000 0x20>;
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       interrupts = <120 IRQ_TYPE_LEVEL_HIGH>;
+                       clock-names = "core", "reg";
+                       clocks = <&CP11X_LABEL(clk) 1 21>,
+                                <&CP11X_LABEL(clk) 1 17>;
+                       status = "disabled";
+               };
+
+               CP11X_LABEL(i2c1): i2c@701100 {
+                       compatible = "marvell,mv78230-i2c";
+                       reg = <0x701100 0x20>;
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       interrupts = <121 IRQ_TYPE_LEVEL_HIGH>;
+                       clock-names = "core", "reg";
+                       clocks = <&CP11X_LABEL(clk) 1 21>,
+                                <&CP11X_LABEL(clk) 1 17>;
+                       status = "disabled";
+               };
+
+               CP11X_LABEL(uart0): serial@702000 {
+                       compatible = "snps,dw-apb-uart";
+                       reg = <0x702000 0x100>;
+                       reg-shift = <2>;
+                       interrupts = <122 IRQ_TYPE_LEVEL_HIGH>;
+                       reg-io-width = <1>;
+                       clock-names = "baudclk", "apb_pclk";
+                       clocks = <&CP11X_LABEL(clk) 1 21>,
+                                <&CP11X_LABEL(clk) 1 17>;
+                       status = "disabled";
+               };
+
+               CP11X_LABEL(uart1): serial@702100 {
+                       compatible = "snps,dw-apb-uart";
+                       reg = <0x702100 0x100>;
+                       reg-shift = <2>;
+                       interrupts = <123 IRQ_TYPE_LEVEL_HIGH>;
+                       reg-io-width = <1>;
+                       clock-names = "baudclk", "apb_pclk";
+                       clocks = <&CP11X_LABEL(clk) 1 21>,
+                                <&CP11X_LABEL(clk) 1 17>;
+                       status = "disabled";
+               };
+
+               CP11X_LABEL(uart2): serial@702200 {
+                       compatible = "snps,dw-apb-uart";
+                       reg = <0x702200 0x100>;
+                       reg-shift = <2>;
+                       interrupts = <124 IRQ_TYPE_LEVEL_HIGH>;
+                       reg-io-width = <1>;
+                       clock-names = "baudclk", "apb_pclk";
+                       clocks = <&CP11X_LABEL(clk) 1 21>,
+                                <&CP11X_LABEL(clk) 1 17>;
+                       status = "disabled";
+               };
+
+               CP11X_LABEL(uart3): serial@702300 {
+                       compatible = "snps,dw-apb-uart";
+                       reg = <0x702300 0x100>;
+                       reg-shift = <2>;
+                       interrupts = <125 IRQ_TYPE_LEVEL_HIGH>;
+                       reg-io-width = <1>;
+                       clock-names = "baudclk", "apb_pclk";
+                       clocks = <&CP11X_LABEL(clk) 1 21>,
+                                <&CP11X_LABEL(clk) 1 17>;
+                       status = "disabled";
+               };
+
+               CP11X_LABEL(nand_controller): nand@720000 {
+                       /*
+                        * Due to the limitation of the pins available
+                        * this controller is only usable on the CPM
+                        * for A7K and on the CPS for A8K.
+                        */
+                       compatible = "marvell,armada-8k-nand-controller",
+                               "marvell,armada370-nand-controller";
+                       reg = <0x720000 0x54>;
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       interrupts = <115 IRQ_TYPE_LEVEL_HIGH>;
+                       clock-names = "core", "reg";
+                       clocks = <&CP11X_LABEL(clk) 1 2>,
+                                <&CP11X_LABEL(clk) 1 17>;
+                       marvell,system-controller = <&CP11X_LABEL(syscon0)>;
+                       status = "disabled";
+               };
+
+               CP11X_LABEL(trng): trng@760000 {
+                       compatible = "marvell,armada-8k-rng",
+                       "inside-secure,safexcel-eip76";
+                       reg = <0x760000 0x7d>;
+                       interrupts = <95 IRQ_TYPE_LEVEL_HIGH>;
+                       clock-names = "core", "reg";
+                       clocks = <&CP11X_LABEL(clk) 1 25>,
+                                <&CP11X_LABEL(clk) 1 17>;
+                       status = "okay";
+               };
+
+               CP11X_LABEL(sdhci0): sdhci@780000 {
+                       compatible = "marvell,armada-cp110-sdhci";
+                       reg = <0x780000 0x300>;
+                       interrupts = <27 IRQ_TYPE_LEVEL_HIGH>;
+                       clock-names = "core", "axi";
+                       clocks = <&CP11X_LABEL(clk) 1 4>, <&CP11X_LABEL(clk) 1 18>;
+                       dma-coherent;
+                       status = "disabled";
+               };
+
+               CP11X_LABEL(crypto): crypto@800000 {
+                       compatible = "inside-secure,safexcel-eip197b";
+                       reg = <0x800000 0x200000>;
+                       interrupts = <87 IRQ_TYPE_LEVEL_HIGH>,
+                               <88 IRQ_TYPE_LEVEL_HIGH>,
+                               <89 IRQ_TYPE_LEVEL_HIGH>,
+                               <90 IRQ_TYPE_LEVEL_HIGH>,
+                               <91 IRQ_TYPE_LEVEL_HIGH>,
+                               <92 IRQ_TYPE_LEVEL_HIGH>;
+                       interrupt-names = "mem", "ring0", "ring1",
+                               "ring2", "ring3", "eip";
+                       clock-names = "core", "reg";
+                       clocks = <&CP11X_LABEL(clk) 1 26>,
+                                <&CP11X_LABEL(clk) 1 17>;
+                       dma-coherent;
+               };
+       };
+
+       CP11X_LABEL(pcie0): pcie@CP11X_PCIE0_BASE {
+               compatible = "marvell,armada8k-pcie", "snps,dw-pcie";
+               reg = <0 ADDRESSIFY(CP11X_PCIE0_BASE) 0 0x10000>,
+                     <0 CP11X_PCIEx_CONF_BASE(0) 0 0x80000>;
+               reg-names = "ctrl", "config";
+               #address-cells = <3>;
+               #size-cells = <2>;
+               #interrupt-cells = <1>;
+               device_type = "pci";
+               dma-coherent;
+               msi-parent = <&gic_v2m0>;
+
+               bus-range = <0 0xff>;
+               /* non-prefetchable memory */
+               ranges = <0x82000000 0 CP11X_PCIEx_MEM_BASE(0) 0  CP11X_PCIEx_MEM_BASE(0) 0 CP11X_PCIEx_MEM_SIZE(0)>;
+               interrupt-map-mask = <0 0 0 0>;
+               interrupt-map = <0 0 0 0 &CP11X_LABEL(icu_nsr) 22 IRQ_TYPE_LEVEL_HIGH>;
+               interrupts = <22 IRQ_TYPE_LEVEL_HIGH>;
+               num-lanes = <1>;
+               clock-names = "core", "reg";
+               clocks = <&CP11X_LABEL(clk) 1 13>, <&CP11X_LABEL(clk) 1 14>;
+               status = "disabled";
+       };
+
+       CP11X_LABEL(pcie1): pcie@CP11X_PCIE1_BASE {
+               compatible = "marvell,armada8k-pcie", "snps,dw-pcie";
+               reg = <0 ADDRESSIFY(CP11X_PCIE1_BASE) 0 0x10000>,
+                     <0 CP11X_PCIEx_CONF_BASE(1) 0 0x80000>;
+               reg-names = "ctrl", "config";
+               #address-cells = <3>;
+               #size-cells = <2>;
+               #interrupt-cells = <1>;
+               device_type = "pci";
+               dma-coherent;
+               msi-parent = <&gic_v2m0>;
+
+               bus-range = <0 0xff>;
+               /* non-prefetchable memory */
+               ranges = <0x82000000 0 CP11X_PCIEx_MEM_BASE(1) 0  CP11X_PCIEx_MEM_BASE(1) 0 CP11X_PCIEx_MEM_SIZE(1)>;
+               interrupt-map-mask = <0 0 0 0>;
+               interrupt-map = <0 0 0 0 &CP11X_LABEL(icu_nsr) 24 IRQ_TYPE_LEVEL_HIGH>;
+               interrupts = <24 IRQ_TYPE_LEVEL_HIGH>;
+
+               num-lanes = <1>;
+               clock-names = "core", "reg";
+               clocks = <&CP11X_LABEL(clk) 1 11>, <&CP11X_LABEL(clk) 1 14>;
+               status = "disabled";
+       };
+
+       CP11X_LABEL(pcie2): pcie@CP11X_PCIE2_BASE {
+               compatible = "marvell,armada8k-pcie", "snps,dw-pcie";
+               reg = <0 ADDRESSIFY(CP11X_PCIE2_BASE) 0 0x10000>,
+                     <0 CP11X_PCIEx_CONF_BASE(2) 0 0x80000>;
+               reg-names = "ctrl", "config";
+               #address-cells = <3>;
+               #size-cells = <2>;
+               #interrupt-cells = <1>;
+               device_type = "pci";
+               dma-coherent;
+               msi-parent = <&gic_v2m0>;
+
+               bus-range = <0 0xff>;
+               /* non-prefetchable memory */
+               ranges = <0x82000000 0 CP11X_PCIEx_MEM_BASE(2) 0  CP11X_PCIEx_MEM_BASE(2) 0 CP11X_PCIEx_MEM_SIZE(2)>;
+               interrupt-map-mask = <0 0 0 0>;
+               interrupt-map = <0 0 0 0 &CP11X_LABEL(icu_nsr) 23 IRQ_TYPE_LEVEL_HIGH>;
+               interrupts = <23 IRQ_TYPE_LEVEL_HIGH>;
+
+               num-lanes = <1>;
+               clock-names = "core", "reg";
+               clocks = <&CP11X_LABEL(clk) 1 12>, <&CP11X_LABEL(clk) 1 14>;
+               status = "disabled";
+       };
+};
diff --git a/arch/arm64/boot/dts/marvell/cn9130-db.dts b/arch/arm64/boot/dts/marvell/cn9130-db.dts
new file mode 100644 (file)
index 0000000..ce49a70
--- /dev/null
@@ -0,0 +1,403 @@
+// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
+/*
+ * Copyright (C) 2019 Marvell International Ltd.
+ *
+ * Device tree for the CN9130-DB board.
+ */
+
+#include "cn9130.dtsi"
+
+#include <dt-bindings/gpio/gpio.h>
+
+/ {
+       model = "Marvell Armada CN9130-DB";
+
+       chosen {
+               stdout-path = "serial0:115200n8";
+       };
+
+       aliases {
+               gpio1 = &cp0_gpio1;
+               gpio2 = &cp0_gpio2;
+               i2c0 = &cp0_i2c0;
+               ethernet0 = &cp0_eth0;
+               ethernet1 = &cp0_eth1;
+               ethernet2 = &cp0_eth2;
+               spi1 = &cp0_spi0;
+               spi2 = &cp0_spi1;
+       };
+
+       memory@00000000 {
+               device_type = "memory";
+               reg = <0x0 0x0 0x0 0x80000000>;
+       };
+
+       ap0_reg_sd_vccq: ap0_sd_vccq@0 {
+               compatible = "regulator-gpio";
+               regulator-name = "ap0_sd_vccq";
+               regulator-min-microvolt = <1800000>;
+               regulator-max-microvolt = <3300000>;
+               gpios = <&expander0 8 GPIO_ACTIVE_HIGH>;
+               states = <1800000 0x1 3300000 0x0>;
+       };
+
+       cp0_reg_usb3_vbus0: cp0_usb3_vbus@0 {
+               compatible = "regulator-fixed";
+               regulator-name = "cp0-xhci0-vbus";
+               regulator-min-microvolt = <5000000>;
+               regulator-max-microvolt = <5000000>;
+               enable-active-high;
+               gpio = <&expander0 0 GPIO_ACTIVE_HIGH>;
+       };
+
+       cp0_usb3_0_phy0: cp0_usb3_phy@0 {
+               compatible = "usb-nop-xceiv";
+               vcc-supply = <&cp0_reg_usb3_vbus0>;
+       };
+
+       cp0_reg_usb3_vbus1: cp0_usb3_vbus@1 {
+               compatible = "regulator-fixed";
+               regulator-name = "cp0-xhci1-vbus";
+               regulator-min-microvolt = <5000000>;
+               regulator-max-microvolt = <5000000>;
+               enable-active-high;
+               gpio = <&expander0 1 GPIO_ACTIVE_HIGH>;
+       };
+
+       cp0_usb3_0_phy1: cp0_usb3_phy@1 {
+               compatible = "usb-nop-xceiv";
+               vcc-supply = <&cp0_reg_usb3_vbus1>;
+       };
+
+       cp0_reg_sd_vccq: cp0_sd_vccq@0 {
+               compatible = "regulator-gpio";
+               regulator-name = "cp0_sd_vccq";
+               regulator-min-microvolt = <1800000>;
+               regulator-max-microvolt = <3300000>;
+               gpios = <&expander0 15 GPIO_ACTIVE_HIGH>;
+               states = <1800000 0x1
+                         3300000 0x0>;
+       };
+
+       cp0_reg_sd_vcc: cp0_sd_vcc@0 {
+               compatible = "regulator-fixed";
+               regulator-name = "cp0_sd_vcc";
+               regulator-min-microvolt = <3300000>;
+               regulator-max-microvolt = <3300000>;
+               gpio = <&expander0 14 GPIO_ACTIVE_HIGH>;
+               enable-active-high;
+               regulator-always-on;
+       };
+
+       cp0_sfp_eth0: sfp-eth@0 {
+               compatible = "sff,sfp";
+               i2c-bus = <&cp0_sfpp0_i2c>;
+               los-gpio = <&cp0_module_expander1 11 GPIO_ACTIVE_HIGH>;
+               mod-def0-gpio = <&cp0_module_expander1 10 GPIO_ACTIVE_LOW>;
+               tx-disable-gpio = <&cp0_module_expander1 9 GPIO_ACTIVE_HIGH>;
+               tx-fault-gpio = <&cp0_module_expander1 8 GPIO_ACTIVE_HIGH>;
+               /*
+                * SFP cages are unconnected on early PCBs because of an the I2C
+                * lanes not being connected. Prevent the port for being
+                * unusable by disabling the SFP node.
+                */
+               status = "disabled";
+       };
+};
+
+&uart0 {
+       status = "okay";
+};
+
+/* on-board eMMC - U9 */
+&ap_sdhci0 {
+       pinctrl-names = "default";
+       bus-width = <8>;
+       vqmmc-supply = <&ap0_reg_sd_vccq>;
+       status = "okay";
+};
+
+&cp0_crypto {
+       status = "disabled";
+};
+
+&cp0_ethernet {
+       status = "okay";
+};
+
+/* SLM-1521-V2, CON9 */
+&cp0_eth0 {
+       status = "disabled";
+       phy-mode = "10gbase-kr";
+       /* Generic PHY, providing serdes lanes */
+       phys = <&cp0_comphy4 0>;
+       managed = "in-band-status";
+       sfp = <&cp0_sfp_eth0>;
+};
+
+/* CON56 */
+&cp0_eth1 {
+       status = "okay";
+       phy = <&phy0>;
+       phy-mode = "rgmii-id";
+};
+
+/* CON57 */
+&cp0_eth2 {
+       status = "okay";
+       phy = <&phy1>;
+       phy-mode = "rgmii-id";
+};
+
+&cp0_gpio1 {
+       status = "okay";
+};
+
+&cp0_gpio2 {
+       status = "okay";
+};
+
+&cp0_i2c0 {
+       status = "okay";
+       pinctrl-names = "default";
+       pinctrl-0 = <&cp0_i2c0_pins>;
+       clock-frequency = <100000>;
+
+       /* U36 */
+       expander0: pca953x@21 {
+               compatible = "nxp,pca9555";
+               pinctrl-names = "default";
+               gpio-controller;
+               #gpio-cells = <2>;
+               reg = <0x21>;
+               status = "okay";
+       };
+
+       /* U42 */
+       eeprom0: eeprom@50 {
+               compatible = "atmel,24c64";
+               reg = <0x50>;
+               pagesize = <0x20>;
+       };
+
+       /* U38 */
+       eeprom1: eeprom@57 {
+               compatible = "atmel,24c64";
+               reg = <0x57>;
+               pagesize = <0x20>;
+       };
+};
+
+&cp0_i2c1 {
+       status = "okay";
+       clock-frequency = <100000>;
+
+       /* SLM-1521-V2 - U3 */
+       i2c-mux@72 { /* verify address - depends on dpr */
+               compatible = "nxp,pca9544";
+               #address-cells = <1>;
+               #size-cells = <0>;
+               reg = <0x72>;
+               cp0_sfpp0_i2c: i2c@0 {
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       reg = <0>;
+               };
+
+               i2c@1 {
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       reg = <1>;
+                       /* U12 */
+                       cp0_module_expander1: pca9555@21 {
+                               compatible = "nxp,pca9555";
+                               pinctrl-names = "default";
+                               gpio-controller;
+                               #gpio-cells = <2>;
+                               reg = <0x21>;
+                       };
+
+               };
+       };
+};
+
+&cp0_mdio {
+       status = "okay";
+
+       phy0: ethernet-phy@0 {
+               reg = <0>;
+       };
+
+       phy1: ethernet-phy@1 {
+               reg = <1>;
+       };
+};
+
+/* U54 */
+&cp0_nand_controller {
+       pinctrl-names = "default";
+       pinctrl-0 = <&nand_pins &nand_rb>;
+
+       nand@0 {
+               reg = <0>;
+               label = "main-storage";
+               nand-rb = <0>;
+               nand-ecc-mode = "hw";
+               nand-on-flash-bbt;
+               nand-ecc-strength = <8>;
+               nand-ecc-step-size = <512>;
+
+               partitions {
+                       compatible = "fixed-partitions";
+                       #address-cells = <1>;
+                       #size-cells = <1>;
+
+                       partition@0 {
+                               label = "U-Boot";
+                               reg = <0 0x200000>;
+                       };
+                       partition@200000 {
+                               label = "Linux";
+                               reg = <0x200000 0xd00000>;
+                       };
+                       partition@1000000 {
+                               label = "Filesystem";
+                               reg = <0x1000000 0x3f000000>;
+                       };
+               };
+       };
+};
+
+/* SLM-1521-V2, CON6 */
+&cp0_pcie0 {
+       status = "okay";
+       num-lanes = <4>;
+       num-viewport = <8>;
+       /* Generic PHY, providing serdes lanes */
+       phys = <&cp0_comphy0 0
+               &cp0_comphy1 0
+               &cp0_comphy2 0
+               &cp0_comphy3 0>;
+};
+
+&cp0_sata0 {
+       status = "okay";
+
+       /* SLM-1521-V2, CON2 */
+       sata-port@1 {
+               status = "okay";
+               /* Generic PHY, providing serdes lanes */
+               phys = <&cp0_comphy5 1>;
+       };
+};
+
+/* CON 28 */
+&cp0_sdhci0 {
+       status = "okay";
+       pinctrl-names = "default";
+       pinctrl-0 = <&cp0_sdhci_pins
+                    &cp0_sdhci_cd_pins>;
+       bus-width = <4>;
+       cd-gpios = <&cp0_gpio2 11 GPIO_ACTIVE_LOW>;
+       no-1-8-v;
+       vqmmc-supply = <&cp0_reg_sd_vccq>;
+       vmmc-supply = <&cp0_reg_sd_vcc>;
+};
+
+/* U55 */
+&cp0_spi1 {
+       status = "okay";
+       pinctrl-names = "default";
+       pinctrl-0 = <&cp0_spi0_pins>;
+       reg = <0x700680 0x50>;
+
+       spi-flash@0 {
+               #address-cells = <0x1>;
+               #size-cells = <0x1>;
+               compatible = "jedec,spi-nor";
+               reg = <0x0>;
+               /* On-board MUX does not allow higher frequencies */
+               spi-max-frequency = <40000000>;
+
+               partitions {
+                       compatible = "fixed-partitions";
+                       #address-cells = <1>;
+                       #size-cells = <1>;
+
+                       partition@0 {
+                               label = "U-Boot-0";
+                               reg = <0x0 0x200000>;
+                       };
+
+                       partition@400000 {
+                               label = "Filesystem-0";
+                               reg = <0x200000 0xe00000>;
+                       };
+               };
+       };
+};
+
+&cp0_syscon0 {
+       cp0_pinctrl: pinctrl {
+               compatible = "marvell,cp115-standalone-pinctrl";
+
+               cp0_i2c0_pins: cp0-i2c-pins-0 {
+                       marvell,pins = "mpp37", "mpp38";
+                       marvell,function = "i2c0";
+               };
+               cp0_i2c1_pins: cp0-i2c-pins-1 {
+                       marvell,pins = "mpp35", "mpp36";
+                       marvell,function = "i2c1";
+               };
+               cp0_ge1_rgmii_pins: cp0-ge-rgmii-pins-0 {
+                       marvell,pins = "mpp0", "mpp1", "mpp2",
+                                      "mpp3", "mpp4", "mpp5",
+                                      "mpp6", "mpp7", "mpp8",
+                                      "mpp9", "mpp10", "mpp11";
+                       marvell,function = "ge0";
+               };
+               cp0_ge2_rgmii_pins: cp0-ge-rgmii-pins-1 {
+                       marvell,pins = "mpp44", "mpp45", "mpp46",
+                                      "mpp47", "mpp48", "mpp49",
+                                      "mpp50", "mpp51", "mpp52",
+                                      "mpp53", "mpp54", "mpp55";
+                       marvell,function = "ge1";
+               };
+               cp0_sdhci_cd_pins: cp0-sdhci-cd-pins-0 {
+                       marvell,pins = "mpp43";
+                       marvell,function = "gpio";
+               };
+               cp0_sdhci_pins: cp0-sdhi-pins-0 {
+                       marvell,pins = "mpp56", "mpp57", "mpp58",
+                                      "mpp59", "mpp60", "mpp61";
+                       marvell,function = "sdio";
+               };
+               cp0_spi0_pins: cp0-spi-pins-0 {
+                       marvell,pins = "mpp13", "mpp14", "mpp15", "mpp16";
+                       marvell,function = "spi1";
+               };
+               nand_pins: nand-pins {
+                       marvell,pins = "mpp15", "mpp16", "mpp17", "mpp18",
+                                      "mpp19", "mpp20", "mpp21", "mpp22",
+                                      "mpp23", "mpp24", "mpp25", "mpp26",
+                                      "mpp27";
+                       marvell,function = "dev";
+               };
+               nand_rb: nand-rb {
+                       marvell,pins = "mpp13";
+                       marvell,function = "nf";
+               };
+       };
+};
+
+&cp0_usb3_0 {
+       status = "okay";
+       usb-phy = <&cp0_usb3_0_phy0>;
+       phy-names = "usb";
+};
+
+&cp0_usb3_1 {
+       status = "okay";
+       usb-phy = <&cp0_usb3_0_phy1>;
+       phy-names = "usb";
+};
diff --git a/arch/arm64/boot/dts/marvell/cn9130.dtsi b/arch/arm64/boot/dts/marvell/cn9130.dtsi
new file mode 100644 (file)
index 0000000..a2b7e5e
--- /dev/null
@@ -0,0 +1,37 @@
+// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
+/*
+ * Copyright (C) 2019 Marvell International Ltd.
+ *
+ * Device tree for the CN9130 SoC.
+ */
+
+#include "armada-ap807-quad.dtsi"
+
+/ {
+       model = "Marvell Armada CN9130 SoC";
+       compatible = "marvell,cn9130", "marvell,armada-ap807-quad",
+                    "marvell,armada-ap807";
+};
+
+/*
+ * Instantiate the internal CP115
+ */
+
+#define CP11X_NAME             cp0
+#define CP11X_BASE             f2000000
+#define CP11X_PCIEx_MEM_BASE(iface) ((iface == 0) ? 0xc0000000 : \
+                                                   0xe0000000 + ((iface - 1) * 0x1000000))
+#define CP11X_PCIEx_MEM_SIZE(iface) ((iface == 0) ? 0x1ff00000 : 0xf00000)
+#define CP11X_PCIE0_BASE       f2600000
+#define CP11X_PCIE1_BASE       f2620000
+#define CP11X_PCIE2_BASE       f2640000
+
+#include "armada-cp115.dtsi"
+
+#undef CP11X_NAME
+#undef CP11X_BASE
+#undef CP11X_PCIEx_MEM_BASE
+#undef CP11X_PCIEx_MEM_SIZE
+#undef CP11X_PCIE0_BASE
+#undef CP11X_PCIE1_BASE
+#undef CP11X_PCIE2_BASE
diff --git a/arch/arm64/boot/dts/marvell/cn9131-db.dts b/arch/arm64/boot/dts/marvell/cn9131-db.dts
new file mode 100644 (file)
index 0000000..3c975f9
--- /dev/null
@@ -0,0 +1,202 @@
+// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
+/*
+ * Copyright (C) 2019 Marvell International Ltd.
+ *
+ * Device tree for the CN9131-DB board.
+ */
+
+#include "cn9130-db.dts"
+
+/ {
+       model = "Marvell Armada CN9131-DB";
+       compatible = "marvell,cn9131", "marvell,cn9130",
+                    "marvell,armada-ap807-quad", "marvell,armada-ap807";
+
+       aliases {
+               gpio3 = &cp1_gpio1;
+               gpio4 = &cp1_gpio2;
+               ethernet3 = &cp1_eth0;
+               ethernet4 = &cp1_eth1;
+       };
+
+       cp1_reg_usb3_vbus0: cp1_usb3_vbus@0 {
+               compatible = "regulator-fixed";
+               pinctrl-names = "default";
+               pinctrl-0 = <&cp1_xhci0_vbus_pins>;
+               regulator-name = "cp1-xhci0-vbus";
+               regulator-min-microvolt = <5000000>;
+               regulator-max-microvolt = <5000000>;
+               enable-active-high;
+               gpio = <&cp1_gpio1 3 GPIO_ACTIVE_HIGH>;
+       };
+
+       cp1_usb3_0_phy0: cp1_usb3_phy0 {
+               compatible = "usb-nop-xceiv";
+               vcc-supply = <&cp1_reg_usb3_vbus0>;
+       };
+
+       cp1_sfp_eth1: sfp-eth1 {
+               compatible = "sff,sfp";
+               i2c-bus = <&cp1_i2c0>;
+               los-gpio = <&cp1_gpio1 11 GPIO_ACTIVE_HIGH>;
+               mod-def0-gpio = <&cp1_gpio1 10 GPIO_ACTIVE_LOW>;
+               tx-disable-gpio = <&cp1_gpio1 9 GPIO_ACTIVE_HIGH>;
+               tx-fault-gpio = <&cp1_gpio1 8 GPIO_ACTIVE_HIGH>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&cp1_sfp_pins>;
+               /*
+                * SFP cages are unconnected on early PCBs because of an the I2C
+                * lanes not being connected. Prevent the port for being
+                * unusable by disabling the SFP node.
+                */
+               status = "disabled";
+       };
+};
+
+/*
+ * Instantiate the first slave CP115
+ */
+
+#define CP11X_NAME             cp1
+#define CP11X_BASE             f4000000
+#define CP11X_PCIEx_MEM_BASE(iface) (0xe2000000 + (iface * 0x1000000))
+#define CP11X_PCIEx_MEM_SIZE(iface) 0xf00000
+#define CP11X_PCIE0_BASE       f4600000
+#define CP11X_PCIE1_BASE       f4620000
+#define CP11X_PCIE2_BASE       f4640000
+
+#include "armada-cp115.dtsi"
+
+#undef CP11X_NAME
+#undef CP11X_BASE
+#undef CP11X_PCIEx_MEM_BASE
+#undef CP11X_PCIEx_MEM_SIZE
+#undef CP11X_PCIE0_BASE
+#undef CP11X_PCIE1_BASE
+#undef CP11X_PCIE2_BASE
+
+&cp1_crypto {
+       status = "disabled";
+};
+
+&cp1_ethernet {
+       status = "okay";
+};
+
+/* CON50 */
+&cp1_eth0 {
+       status = "disabled";
+       phy-mode = "10gbase-kr";
+       /* Generic PHY, providing serdes lanes */
+       phys = <&cp1_comphy4 0>;
+       managed = "in-band-status";
+       sfp = <&cp1_sfp_eth1>;
+};
+
+&cp1_gpio1 {
+       status = "okay";
+};
+
+&cp1_gpio2 {
+       status = "okay";
+};
+
+&cp1_i2c0 {
+       status = "okay";
+       pinctrl-names = "default";
+       pinctrl-0 = <&cp1_i2c0_pins>;
+       clock-frequency = <100000>;
+};
+
+/* CON40 */
+&cp1_pcie0 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&cp1_pcie_reset_pins>;
+       num-lanes = <2>;
+       num-viewport = <8>;
+       marvell,reset-gpio = <&cp1_gpio1 0 GPIO_ACTIVE_HIGH>;
+       status = "okay";
+       /* Generic PHY, providing serdes lanes */
+       phys = <&cp1_comphy0 0
+               &cp1_comphy1 0>;
+};
+
+&cp1_sata0 {
+       status = "okay";
+
+       /* CON32 */
+       sata-port@1 {
+               /* Generic PHY, providing serdes lanes */
+               phys = <&cp1_comphy5 1>;
+       };
+};
+
+/* U24 */
+&cp1_spi1 {
+       status = "okay";
+       pinctrl-names = "default";
+       pinctrl-0 = <&cp1_spi0_pins>;
+       reg = <0x700680 0x50>;
+
+       spi-flash@0 {
+               #address-cells = <0x1>;
+               #size-cells = <0x1>;
+               compatible = "jedec,spi-nor";
+               reg = <0x0>;
+               /* On-board MUX does not allow higher frequencies */
+               spi-max-frequency = <40000000>;
+
+               partitions {
+                       compatible = "fixed-partitions";
+                       #address-cells = <1>;
+                       #size-cells = <1>;
+
+                       partition@0 {
+                               label = "U-Boot-1";
+                               reg = <0x0 0x200000>;
+                       };
+
+                       partition@400000 {
+                               label = "Filesystem-1";
+                               reg = <0x200000 0xe00000>;
+                       };
+               };
+       };
+
+};
+
+&cp1_syscon0 {
+       cp1_pinctrl: pinctrl {
+               compatible = "marvell,cp115-standalone-pinctrl";
+
+               cp1_i2c0_pins: cp1-i2c-pins-0 {
+                       marvell,pins = "mpp37", "mpp38";
+                       marvell,function = "i2c0";
+               };
+               cp1_spi0_pins: cp1-spi-pins-0 {
+                       marvell,pins = "mpp13", "mpp14", "mpp15", "mpp16";
+                       marvell,function = "spi1";
+               };
+               cp1_xhci0_vbus_pins: cp1-xhci0-vbus-pins {
+                       marvell,pins = "mpp3";
+                       marvell,function = "gpio";
+               };
+               cp1_sfp_pins: sfp-pins {
+                       marvell,pins = "mpp8", "mpp9", "mpp10", "mpp11";
+                       marvell,function = "gpio";
+               };
+               cp1_pcie_reset_pins: cp1-pcie-reset-pins {
+                       marvell,pins = "mpp0";
+                       marvell,function = "gpio";
+               };
+       };
+};
+
+/* CON58 */
+&cp1_usb3_1 {
+       status = "okay";
+       usb-phy = <&cp1_usb3_0_phy0>;
+       /* Generic PHY, providing serdes lanes */
+       phys = <&cp1_comphy3 1>;
+       phy-names = "usb";
+};
diff --git a/arch/arm64/boot/dts/marvell/cn9132-db.dts b/arch/arm64/boot/dts/marvell/cn9132-db.dts
new file mode 100644 (file)
index 0000000..4ef0df3
--- /dev/null
@@ -0,0 +1,221 @@
+// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
+/*
+ * Copyright (C) 2019 Marvell International Ltd.
+ *
+ * Device tree for the CN9132-DB board.
+ */
+
+#include "cn9131-db.dts"
+
+/ {
+       model = "Marvell Armada CN9132-DB";
+       compatible = "marvell,cn9132", "marvell,cn9131", "marvell,cn9130",
+                    "marvell,armada-ap807-quad", "marvell,armada-ap807";
+
+       aliases {
+               gpio5 = &cp2_gpio1;
+               gpio6 = &cp2_gpio2;
+               ethernet5 = &cp2_eth0;
+       };
+
+       cp2_reg_usb3_vbus0: cp2_usb3_vbus@0 {
+               compatible = "regulator-fixed";
+               regulator-name = "cp2-xhci0-vbus";
+               regulator-min-microvolt = <5000000>;
+               regulator-max-microvolt = <5000000>;
+               enable-active-high;
+               gpio = <&cp2_gpio1 2 GPIO_ACTIVE_HIGH>;
+       };
+
+       cp2_usb3_0_phy0: cp2_usb3_phy0 {
+               compatible = "usb-nop-xceiv";
+               vcc-supply = <&cp2_reg_usb3_vbus0>;
+       };
+
+       cp2_reg_usb3_vbus1: cp2_usb3_vbus@1 {
+               compatible = "regulator-fixed";
+               regulator-name = "cp2-xhci1-vbus";
+               regulator-min-microvolt = <5000000>;
+               regulator-max-microvolt = <5000000>;
+               enable-active-high;
+               gpio = <&cp2_gpio1 3 GPIO_ACTIVE_HIGH>;
+       };
+
+       cp2_usb3_0_phy1: cp2_usb3_phy1 {
+               compatible = "usb-nop-xceiv";
+               vcc-supply = <&cp2_reg_usb3_vbus1>;
+       };
+
+       cp2_reg_sd_vccq: cp2_sd_vccq@0 {
+               compatible = "regulator-gpio";
+               regulator-name = "cp2_sd_vcc";
+               regulator-min-microvolt = <1800000>;
+               regulator-max-microvolt = <3300000>;
+               gpios = <&cp2_gpio2 17 GPIO_ACTIVE_HIGH>;
+               states = <1800000 0x1 3300000 0x0>;
+       };
+
+       cp2_sfp_eth0: sfp-eth0 {
+               compatible = "sff,sfp";
+               i2c-bus = <&cp2_sfpp0_i2c>;
+               los-gpio = <&cp2_module_expander1 11 GPIO_ACTIVE_HIGH>;
+               mod-def0-gpio = <&cp2_module_expander1 10 GPIO_ACTIVE_LOW>;
+               tx-disable-gpio = <&cp2_module_expander1 9 GPIO_ACTIVE_HIGH>;
+               tx-fault-gpio = <&cp2_module_expander1 8 GPIO_ACTIVE_HIGH>;
+               /*
+                * SFP cages are unconnected on early PCBs because of an the I2C
+                * lanes not being connected. Prevent the port for being
+                * unusable by disabling the SFP node.
+                */
+               status = "disabled";
+       };
+};
+
+/*
+ * Instantiate the second slave CP115
+ */
+
+#define CP11X_NAME             cp2
+#define CP11X_BASE             f6000000
+#define CP11X_PCIEx_MEM_BASE(iface) (0xe5000000 + (iface * 0x1000000))
+#define CP11X_PCIEx_MEM_SIZE(iface) 0xf00000
+#define CP11X_PCIE0_BASE       f6600000
+#define CP11X_PCIE1_BASE       f6620000
+#define CP11X_PCIE2_BASE       f6640000
+
+#include "armada-cp115.dtsi"
+
+#undef CP11X_NAME
+#undef CP11X_BASE
+#undef CP11X_PCIEx_MEM_BASE
+#undef CP11X_PCIEx_MEM_SIZE
+#undef CP11X_PCIE0_BASE
+#undef CP11X_PCIE1_BASE
+#undef CP11X_PCIE2_BASE
+
+&cp2_crypto {
+       status = "disabled";
+};
+
+&cp2_ethernet {
+       status = "okay";
+};
+
+/* SLM-1521-V2, CON9 */
+&cp2_eth0 {
+       status = "disabled";
+       phy-mode = "10gbase-kr";
+       /* Generic PHY, providing serdes lanes */
+       phys = <&cp2_comphy4 0>;
+       managed = "in-band-status";
+       sfp = <&cp2_sfp_eth0>;
+};
+
+&cp2_gpio1 {
+       status = "okay";
+};
+
+&cp2_gpio2 {
+       status = "okay";
+};
+
+&cp2_i2c0 {
+       clock-frequency = <100000>;
+
+       /* SLM-1521-V2 - U3 */
+       i2c-mux@72 {
+               compatible = "nxp,pca9544";
+               #address-cells = <1>;
+               #size-cells = <0>;
+               reg = <0x72>;
+               cp2_sfpp0_i2c: i2c@0 {
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       reg = <0>;
+               };
+
+               i2c@1 {
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       reg = <1>;
+                       /* U12 */
+                       cp2_module_expander1: pca9555@21 {
+                               compatible = "nxp,pca9555";
+                               pinctrl-names = "default";
+                               gpio-controller;
+                               #gpio-cells = <2>;
+                               reg = <0x21>;
+                       };
+               };
+       };
+};
+
+/* SLM-1521-V2, CON6 */
+&cp2_pcie0 {
+       status = "okay";
+       num-lanes = <2>;
+       num-viewport = <8>;
+       /* Generic PHY, providing serdes lanes */
+       phys = <&cp2_comphy0 0
+               &cp2_comphy1 0>;
+};
+
+/* SLM-1521-V2, CON8 */
+&cp2_pcie2 {
+       status = "okay";
+       num-lanes = <1>;
+       num-viewport = <8>;
+       /* Generic PHY, providing serdes lanes */
+       phys = <&cp2_comphy5 2>;
+};
+
+&cp2_sata0 {
+       status = "okay";
+
+       /* SLM-1521-V2, CON4 */
+       sata-port@0 {
+               /* Generic PHY, providing serdes lanes */
+               phys = <&cp2_comphy2 0>;
+       };
+};
+
+/* CON 2 on SLM-1683 - microSD */
+&cp2_sdhci0 {
+       status = "okay";
+       pinctrl-names = "default";
+       pinctrl-0 = <&cp2_sdhci_pins>;
+       bus-width = <4>;
+       cd-gpios = <&cp2_gpio2 23 GPIO_ACTIVE_LOW>;
+       vqmmc-supply = <&cp2_reg_sd_vccq>;
+};
+
+&cp2_syscon0 {
+       cp2_pinctrl: pinctrl {
+               compatible = "marvell,cp115-standalone-pinctrl";
+
+               cp2_i2c0_pins: cp2-i2c-pins-0 {
+                       marvell,pins = "mpp37", "mpp38";
+                       marvell,function = "i2c0";
+               };
+               cp2_sdhci_pins: cp2-sdhi-pins-0 {
+                       marvell,pins = "mpp56", "mpp57", "mpp58",
+                                      "mpp59", "mpp60", "mpp61";
+                       marvell,function = "sdio";
+               };
+       };
+};
+
+&cp2_usb3_0 {
+       status = "okay";
+       usb-phy = <&cp2_usb3_0_phy0>;
+       phy-names = "usb";
+};
+
+/* SLM-1521-V2, CON11 */
+&cp2_usb3_1 {
+       status = "okay";
+       usb-phy = <&cp2_usb3_0_phy1>;
+       phy-names = "usb";
+       /* Generic PHY, providing serdes lanes */
+       phys = <&cp2_comphy3 1>;
+};
index 97f84aa..10b3247 100644 (file)
                        clock-names = "spi", "wrap";
                };
 
+               systimer: timer@10017000 {
+                       compatible = "mediatek,mt8183-timer",
+                                    "mediatek,mt6765-timer";
+                       reg = <0 0x10017000 0 0x1000>;
+                       interrupts = <GIC_SPI 200 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&topckgen CLK_TOP_CLK13M>;
+                       clock-names = "clk13m";
+               };
+
                auxadc: auxadc@11001000 {
                        compatible = "mediatek,mt8183-auxadc",
                                     "mediatek,mt8173-auxadc";
index bdace01..f1de4ff 100644 (file)
        };
 
        padctl@3520000 {
-               status = "disabled";
+               status = "okay";
 
                avdd-pll-erefeut-supply = <&vdd_1v8_pll>;
                avdd-usb-supply = <&vdd_3v3_sys>;
        };
 
        usb@3530000 {
-               status = "disabled";
+               status = "okay";
 
                phys = <&{/padctl@3520000/pads/usb2/lanes/usb2-0}>,
                       <&{/padctl@3520000/pads/usb2/lanes/usb2-1}>,
                        status = "disabled";
                };
 
+               /* DP on E3320 */
                sor@15540000 {
-                       status = "disabled";
+                       status = "okay";
+
+                       avdd-io-hdmi-dp-supply = <&vdd_hdmi_1v05>;
+                       vdd-hdmi-dp-pll = <&vdd_1v8_ap>;
 
-                       nvidia,dpaux = <&dpaux1>;
+                       nvidia,dpaux = <&dpaux>;
                };
 
                sor@15580000 {
index 47cd831..7893d78 100644 (file)
                      <0x0 0x03538000 0x0 0x1000>;
                reg-names = "hcd", "fpci";
 
+               iommus = <&smmu TEGRA186_SID_XUSB_HOST>;
                interrupts = <GIC_SPI 163 IRQ_TYPE_LEVEL_HIGH>,
                             <GIC_SPI 164 IRQ_TYPE_LEVEL_HIGH>,
                             <GIC_SPI 167 IRQ_TYPE_LEVEL_HIGH>;
                        reset-names = "vic";
 
                        power-domains = <&bpmp TEGRA186_POWER_DOMAIN_VIC>;
+                       iommus = <&smmu TEGRA186_SID_VIC>;
                };
 
                dsib: dsi@15400000 {
                };
 
                sor1: sor@15580000 {
-                       compatible = "nvidia,tegra186-sor1";
+                       compatible = "nvidia,tegra186-sor";
                        reg = <0x15580000 0x10000>;
                        interrupts = <GIC_SPI 158 IRQ_TYPE_LEVEL_HIGH>;
                        clocks = <&bpmp TEGRA186_CLK_SOR1>,
index 4c38426..c7f2a20 100644 (file)
@@ -8,17 +8,18 @@
        compatible = "nvidia,p2888", "nvidia,tegra194";
 
        aliases {
-               sdhci0 = "/cbb/sdhci@3460000";
-               sdhci1 = "/cbb/sdhci@3400000";
+               ethernet0 = "/cbb@0/ethernet@2490000";
+               sdhci0 = "/cbb@0/sdhci@3460000";
+               sdhci1 = "/cbb@0/sdhci@3400000";
                serial0 = &tcu;
                i2c0 = "/bpmp/i2c";
-               i2c1 = "/cbb/i2c@3160000";
-               i2c2 = "/cbb/i2c@c240000";
-               i2c3 = "/cbb/i2c@3180000";
-               i2c4 = "/cbb/i2c@3190000";
-               i2c5 = "/cbb/i2c@31c0000";
-               i2c6 = "/cbb/i2c@c250000";
-               i2c7 = "/cbb/i2c@31e0000";
+               i2c1 = "/cbb@0/i2c@3160000";
+               i2c2 = "/cbb@0/i2c@c240000";
+               i2c3 = "/cbb@0/i2c@3180000";
+               i2c4 = "/cbb@0/i2c@3190000";
+               i2c5 = "/cbb@0/i2c@31c0000";
+               i2c6 = "/cbb@0/i2c@c250000";
+               i2c7 = "/cbb@0/i2c@31e0000";
        };
 
        chosen {
@@ -26,7 +27,7 @@
                stdout-path = "serial0:115200n8";
        };
 
-       cbb {
+       cbb@0 {
                ethernet@2490000 {
                        status = "okay";
 
                                        in-ldo7-8-supply = <&vdd_1v8ls>;
 
                                        vdd_1v0: sd0 {
-                                               regulator-name = "VDD_1V0";
+                                               regulator-name = "VDDIO_SYS_1V0";
                                                regulator-min-microvolt = <1000000>;
                                                regulator-max-microvolt = <1000000>;
                                                regulator-always-on;
                                        };
 
                                        vdd_1v8hs: sd1 {
-                                               regulator-name = "VDD_1V8HS";
+                                               regulator-name = "VDDIO_SYS_1V8HS";
                                                regulator-min-microvolt = <1800000>;
                                                regulator-max-microvolt = <1800000>;
                                                regulator-always-on;
                                        };
 
                                        vdd_1v8ls: sd2 {
-                                               regulator-name = "VDD_1V8LS";
+                                               regulator-name = "VDDIO_SYS_1V8LS";
                                                regulator-min-microvolt = <1800000>;
                                                regulator-max-microvolt = <1800000>;
                                                regulator-always-on;
                                        };
 
                                        vdd_1v8ao: sd3 {
-                                               regulator-name = "VDD_1V8AO";
+                                               regulator-name = "VDDIO_AO_1V8";
                                                regulator-min-microvolt = <1800000>;
                                                regulator-max-microvolt = <1800000>;
                                                regulator-always-on;
                                        };
 
                                        ldo2 {
-                                               regulator-name = "VDD_AO_3V3";
+                                               regulator-name = "VDDIO_AO_3V3";
                                                regulator-min-microvolt = <3300000>;
                                                regulator-max-microvolt = <3300000>;
                                                regulator-always-on;
                                        };
 
                                        ldo7 {
-                                               regulator-name = "VDD_CSI_1V2";
+                                               regulator-name = "AVDD_CSI_1V2";
                                                regulator-min-microvolt = <1200000>;
                                                regulator-max-microvolt = <1200000>;
                                        };
                        regulator-name = "VDD_12V";
                        regulator-min-microvolt = <1200000>;
                        regulator-max-microvolt = <1200000>;
-                       gpio = <&gpio TEGRA194_MAIN_GPIO(A, 1) GPIO_ACTIVE_LOW>;
+                       gpio = <&gpio TEGRA194_MAIN_GPIO(A, 1) GPIO_ACTIVE_HIGH>;
                        regulator-boot-on;
-                       enable-active-low;
                };
        };
 };
index d47cd8c..353a6a2 100644 (file)
@@ -10,8 +10,8 @@
        model = "NVIDIA Jetson AGX Xavier Developer Kit";
        compatible = "nvidia,p2972-0000", "nvidia,tegra194";
 
-       cbb {
-               aconnect {
+       cbb@0 {
+               aconnect@2900000 {
                        status = "okay";
 
                        dma-controller@2930000 {
                                status = "okay";
                        };
 
+                       dpaux@155c0000 {
+                               status = "okay";
+                       };
+
+                       dpaux@155d0000 {
+                               status = "okay";
+                       };
+
                        dpaux@155e0000 {
                                status = "okay";
                        };
 
+                       /* DP0 */
+                       sor@15b00000 {
+                               status = "okay";
+
+                               avdd-io-hdmi-dp-supply = <&vdd_1v0>;
+                               vdd-hdmi-dp-pll-supply = <&vdd_1v8hs>;
+
+                               nvidia,dpaux = <&dpaux0>;
+                       };
+
+                       /* DP1 */
+                       sor@15b40000 {
+                               status = "okay";
+
+                               avdd-io-hdmi-dp-supply = <&vdd_1v0>;
+                               vdd-hdmi-dp-pll-supply = <&vdd_1v8hs>;
+
+                               nvidia,dpaux = <&dpaux1>;
+                       };
+
+                       /* HDMI */
                        sor@15b80000 {
                                status = "okay";
 
index 3c0cf54..11220d9 100644 (file)
@@ -15,7 +15,7 @@
        #size-cells = <2>;
 
        /* control backbone */
-       cbb {
+       cbb@0 {
                compatible = "simple-bus";
                #address-cells = <1>;
                #size-cells = <1>;
@@ -39,7 +39,8 @@
                };
 
                ethernet@2490000 {
-                       compatible = "nvidia,tegra186-eqos",
+                       compatible = "nvidia,tegra194-eqos",
+                                    "nvidia,tegra186-eqos",
                                     "snps,dwc-qos-ethernet-4.10";
                        reg = <0x02490000 0x10000>;
                        interrupts = <GIC_SPI 194 IRQ_TYPE_LEVEL_HIGH>;
@@ -60,7 +61,7 @@
                        snps,rxpbl = <8>;
                };
 
-               aconnect {
+               aconnect@2900000 {
                        compatible = "nvidia,tegra194-aconnect",
                                     "nvidia,tegra210-aconnect";
                        clocks = <&bpmp TEGRA194_CLK_APE>,
 
                        sor1: sor@15b40000 {
                                compatible = "nvidia,tegra194-sor";
-                               reg = <0x155c0000 0x40000>;
+                               reg = <0x15b40000 0x40000>;
                                interrupts = <GIC_SPI 158 IRQ_TYPE_LEVEL_HIGH>;
                                clocks = <&bpmp TEGRA194_CLK_SOR1_REF>,
                                         <&bpmp TEGRA194_CLK_SOR1_OUT>,
 
                nvidia,bpmp = <&bpmp 1>;
 
-               supports-clkreq;
                nvidia,aspm-cmrt-us = <60>;
                nvidia,aspm-pwr-on-t-us = <20>;
                nvidia,aspm-l0s-entrance-latency-us = <3>;
 
                nvidia,bpmp = <&bpmp 2>;
 
-               supports-clkreq;
                nvidia,aspm-cmrt-us = <60>;
                nvidia,aspm-pwr-on-t-us = <20>;
                nvidia,aspm-l0s-entrance-latency-us = <3>;
 
                nvidia,bpmp = <&bpmp 3>;
 
-               supports-clkreq;
                nvidia,aspm-cmrt-us = <60>;
                nvidia,aspm-pwr-on-t-us = <20>;
                nvidia,aspm-l0s-entrance-latency-us = <3>;
 
                nvidia,bpmp = <&bpmp 4>;
 
-               supports-clkreq;
                nvidia,aspm-cmrt-us = <60>;
                nvidia,aspm-pwr-on-t-us = <20>;
                nvidia,aspm-l0s-entrance-latency-us = <3>;
 
                nvidia,bpmp = <&bpmp 0>;
 
-               supports-clkreq;
                nvidia,aspm-cmrt-us = <60>;
                nvidia,aspm-pwr-on-t-us = <20>;
                nvidia,aspm-l0s-entrance-latency-us = <3>;
                interrupt-map-mask = <0 0 0 0>;
                interrupt-map = <0 0 0 0 &gic GIC_SPI 53 IRQ_TYPE_LEVEL_HIGH>;
 
-               supports-clkreq;
                nvidia,aspm-cmrt-us = <60>;
                nvidia,aspm-pwr-on-t-us = <20>;
                nvidia,aspm-l0s-entrance-latency-us = <3>;
                #address-cells = <1>;
                #size-cells = <0>;
 
-               cpu@0 {
+               cpu0_0: cpu@0 {
                        compatible = "nvidia,tegra194-carmel";
                        device_type = "cpu";
-                       reg = <0x10000>;
+                       reg = <0x000>;
                        enable-method = "psci";
+                       i-cache-size = <131072>;
+                       i-cache-line-size = <64>;
+                       i-cache-sets = <512>;
+                       d-cache-size = <65536>;
+                       d-cache-line-size = <64>;
+                       d-cache-sets = <256>;
+                       next-level-cache = <&l2c_0>;
                };
 
-               cpu@1 {
+               cpu0_1: cpu@1 {
                        compatible = "nvidia,tegra194-carmel";
                        device_type = "cpu";
-                       reg = <0x10001>;
+                       reg = <0x001>;
                        enable-method = "psci";
+                       i-cache-size = <131072>;
+                       i-cache-line-size = <64>;
+                       i-cache-sets = <512>;
+                       d-cache-size = <65536>;
+                       d-cache-line-size = <64>;
+                       d-cache-sets = <256>;
+                       next-level-cache = <&l2c_0>;
                };
 
-               cpu@2 {
+               cpu1_0: cpu@100 {
                        compatible = "nvidia,tegra194-carmel";
                        device_type = "cpu";
                        reg = <0x100>;
                        enable-method = "psci";
+                       i-cache-size = <131072>;
+                       i-cache-line-size = <64>;
+                       i-cache-sets = <512>;
+                       d-cache-size = <65536>;
+                       d-cache-line-size = <64>;
+                       d-cache-sets = <256>;
+                       next-level-cache = <&l2c_1>;
                };
 
-               cpu@3 {
+               cpu1_1: cpu@101 {
                        compatible = "nvidia,tegra194-carmel";
                        device_type = "cpu";
                        reg = <0x101>;
                        enable-method = "psci";
+                       i-cache-size = <131072>;
+                       i-cache-line-size = <64>;
+                       i-cache-sets = <512>;
+                       d-cache-size = <65536>;
+                       d-cache-line-size = <64>;
+                       d-cache-sets = <256>;
+                       next-level-cache = <&l2c_1>;
                };
 
-               cpu@4 {
+               cpu2_0: cpu@200 {
                        compatible = "nvidia,tegra194-carmel";
                        device_type = "cpu";
                        reg = <0x200>;
                        enable-method = "psci";
+                       i-cache-size = <131072>;
+                       i-cache-line-size = <64>;
+                       i-cache-sets = <512>;
+                       d-cache-size = <65536>;
+                       d-cache-line-size = <64>;
+                       d-cache-sets = <256>;
+                       next-level-cache = <&l2c_2>;
                };
 
-               cpu@5 {
+               cpu2_1: cpu@201 {
                        compatible = "nvidia,tegra194-carmel";
                        device_type = "cpu";
                        reg = <0x201>;
                        enable-method = "psci";
+                       i-cache-size = <131072>;
+                       i-cache-line-size = <64>;
+                       i-cache-sets = <512>;
+                       d-cache-size = <65536>;
+                       d-cache-line-size = <64>;
+                       d-cache-sets = <256>;
+                       next-level-cache = <&l2c_2>;
                };
 
-               cpu@6 {
+               cpu3_0: cpu@300 {
                        compatible = "nvidia,tegra194-carmel";
                        device_type = "cpu";
-                       reg = <0x10300>;
+                       reg = <0x300>;
                        enable-method = "psci";
+                       i-cache-size = <131072>;
+                       i-cache-line-size = <64>;
+                       i-cache-sets = <512>;
+                       d-cache-size = <65536>;
+                       d-cache-line-size = <64>;
+                       d-cache-sets = <256>;
+                       next-level-cache = <&l2c_3>;
                };
 
-               cpu@7 {
+               cpu3_1: cpu@301 {
                        compatible = "nvidia,tegra194-carmel";
                        device_type = "cpu";
-                       reg = <0x10301>;
+                       reg = <0x301>;
                        enable-method = "psci";
+                       i-cache-size = <131072>;
+                       i-cache-line-size = <64>;
+                       i-cache-sets = <512>;
+                       d-cache-size = <65536>;
+                       d-cache-line-size = <64>;
+                       d-cache-sets = <256>;
+                       next-level-cache = <&l2c_3>;
+               };
+
+               cpu-map {
+                       cluster0 {
+                               core0 {
+                                       cpu = <&cpu0_0>;
+                               };
+
+                               core1 {
+                                       cpu = <&cpu0_1>;
+                               };
+                       };
+
+                       cluster1 {
+                               core0 {
+                                       cpu = <&cpu1_0>;
+                               };
+
+                               core1 {
+                                       cpu = <&cpu1_1>;
+                               };
+                       };
+
+                       cluster2 {
+                               core0 {
+                                       cpu = <&cpu2_0>;
+                               };
+
+                               core1 {
+                                       cpu = <&cpu2_1>;
+                               };
+                       };
+
+                       cluster3 {
+                               core0 {
+                                       cpu = <&cpu3_0>;
+                               };
+
+                               core1 {
+                                       cpu = <&cpu3_1>;
+                               };
+                       };
+               };
+
+               l2c_0: l2-cache0 {
+                       cache-size = <2097152>;
+                       cache-line-size = <64>;
+                       cache-sets = <2048>;
+                       next-level-cache = <&l3c>;
+               };
+
+               l2c_1: l2-cache1 {
+                       cache-size = <2097152>;
+                       cache-line-size = <64>;
+                       cache-sets = <2048>;
+                       next-level-cache = <&l3c>;
+               };
+
+               l2c_2: l2-cache2 {
+                       cache-size = <2097152>;
+                       cache-line-size = <64>;
+                       cache-sets = <2048>;
+                       next-level-cache = <&l3c>;
+               };
+
+               l2c_3: l2-cache3 {
+                       cache-size = <2097152>;
+                       cache-line-size = <64>;
+                       cache-sets = <2048>;
+                       next-level-cache = <&l3c>;
+               };
+
+               l3c: l3-cache {
+                       cache-size = <4194304>;
+                       cache-line-size = <64>;
+                       cache-sets = <4096>;
                };
        };
 
index 2772382..cb58f79 100644 (file)
 
        pmc@7000e400 {
                nvidia,invert-interrupt;
+               nvidia,suspend-mode = <0>;
+               nvidia,cpu-pwr-good-time = <0>;
+               nvidia,cpu-pwr-off-time = <0>;
+               nvidia,core-pwr-good-time = <4587 3876>;
+               nvidia,core-pwr-off-time = <39065>;
+               nvidia,core-power-req-active-high;
+               nvidia,sys-clock-req-active-high;
        };
 
        /* eMMC */
index a7dc319..b009507 100644 (file)
                        regulator-name = "VDD_HDMI_5V0";
                        regulator-min-microvolt = <5000000>;
                        regulator-max-microvolt = <5000000>;
-                       gpio = <&exp1 12 GPIO_ACTIVE_LOW>;
+                       gpio = <&exp1 12 GPIO_ACTIVE_HIGH>;
                        enable-active-high;
                        vin-supply = <&vdd_5v0_sys>;
                };
index 9d17ec7..90381d5 100644 (file)
                        status = "okay";
                };
 
+               sor@54540000 {
+                       status = "okay";
+
+                       avdd-io-hdmi-dp-supply = <&avdd_io_edp_1v05>;
+                       vdd-hdmi-dp-pll-supply = <&vdd_1v8>;
+
+                       nvidia,xbar-cfg = <2 1 0 3 4>;
+                       nvidia,dpaux = <&dpaux>;
+               };
+
                sor@54580000 {
                        status = "okay";
 
                                           GPIO_ACTIVE_LOW>;
                        nvidia,xbar-cfg = <0 1 2 3 4>;
                };
+
+               dpaux@545c0000 {
+                       status = "okay";
+               };
        };
 
        gpu@57000000 {
 
        pmc@7000e400 {
                nvidia,invert-interrupt;
+               nvidia,suspend-mode = <0>;
+               nvidia,cpu-pwr-good-time = <0>;
+               nvidia,cpu-pwr-off-time = <0>;
+               nvidia,core-pwr-good-time = <4587 3876>;
+               nvidia,core-pwr-off-time = <39065>;
+               nvidia,core-power-req-active-high;
+               nvidia,sys-clock-req-active-high;
        };
 
        hda@70030000 {
                        enable-gpios = <&pmic 6 GPIO_ACTIVE_HIGH>;
                        vin-supply = <&vdd_5v0_sys>;
                };
+
+               avdd_io_edp_1v05: regulator@7 {
+                       compatible = "regulator-fixed";
+                       reg = <7>;
+
+                       regulator-name = "AVDD_IO_EDP_1V05";
+                       regulator-min-microvolt = <1050000>;
+                       regulator-max-microvolt = <1050000>;
+
+                       gpio = <&pmic 7 GPIO_ACTIVE_HIGH>;
+                       enable-active-high;
+
+                       vin-supply = <&avdd_1v05_pll>;
+               };
        };
 };
index 6597531..48c6325 100644 (file)
                        reg = <0x0 0x54540000 0x0 0x00040000>;
                        interrupts = <GIC_SPI 76 IRQ_TYPE_LEVEL_HIGH>;
                        clocks = <&tegra_car TEGRA210_CLK_SOR0>,
+                                <&tegra_car TEGRA210_CLK_SOR0_OUT>,
                                 <&tegra_car TEGRA210_CLK_PLL_D_OUT0>,
                                 <&tegra_car TEGRA210_CLK_PLL_DP>,
                                 <&tegra_car TEGRA210_CLK_SOR_SAFE>;
-                       clock-names = "sor", "parent", "dp", "safe";
+                       clock-names = "sor", "out", "parent", "dp", "safe";
                        resets = <&tegra_car 182>;
                        reset-names = "sor";
                        pinctrl-0 = <&state_dpaux_aux>;
        rtc@7000e000 {
                compatible = "nvidia,tegra210-rtc", "nvidia,tegra20-rtc";
                reg = <0x0 0x7000e000 0x0 0x100>;
-               interrupts = <GIC_SPI 2 IRQ_TYPE_LEVEL_HIGH>;
+               interrupts = <16 IRQ_TYPE_LEVEL_HIGH>;
+               interrupt-parent = <&pmc>;
                clocks = <&tegra_car TEGRA210_CLK_RTC>;
                clock-names = "rtc";
        };
                reg = <0x0 0x7000e400 0x0 0x400>;
                clocks = <&tegra_car TEGRA210_CLK_PCLK>, <&clk32k_in>;
                clock-names = "pclk", "clk32k_in";
+               #interrupt-cells = <2>;
+               interrupt-controller;
 
                powergates {
                        pd_audio: aud {
                };
        };
 
+       pmu {
+               compatible = "arm,armv8-pmuv3";
+               interrupts = <GIC_SPI 144 IRQ_TYPE_LEVEL_HIGH>,
+                            <GIC_SPI 145 IRQ_TYPE_LEVEL_HIGH>,
+                            <GIC_SPI 146 IRQ_TYPE_LEVEL_HIGH>,
+                            <GIC_SPI 147 IRQ_TYPE_LEVEL_HIGH>;
+               interrupt-affinity = <&{/cpus/cpu@0} &{/cpus/cpu@1}
+                                     &{/cpus/cpu@2} &{/cpus/cpu@3}>;
+       };
+
        timer {
                compatible = "arm,armv8-timer";
                interrupts = <GIC_PPI 13
                reg = <0x0 0x700e2000 0x0 0x600 /* SOC_THERM reg_base */
                        0x0 0x60006000 0x0 0x400>; /* CAR reg_base */
                reg-names = "soctherm-reg", "car-reg";
-               interrupts = <GIC_SPI 48 IRQ_TYPE_LEVEL_HIGH>;
+               interrupts = <GIC_SPI 48 IRQ_TYPE_LEVEL_HIGH>,
+                            <GIC_SPI 51 IRQ_TYPE_LEVEL_HIGH>;
+               interrupt-names = "thermal", "edp";
                clocks = <&tegra_car TEGRA210_CLK_TSENSOR>,
                        <&tegra_car TEGRA210_CLK_SOC_THERM>;
                clock-names = "tsensor", "soctherm";
                                };
                        };
                };
+
                mem {
                        polling-delay-passive = <0>;
                        polling-delay = <0>;
                                 */
                        };
                };
+
                gpu {
                        polling-delay-passive = <1000>;
                        polling-delay = <0>;
                                };
                        };
                };
+
                pllx {
                        polling-delay-passive = <0>;
                        polling-delay = <0>;
index 04ad2fb..dba3488 100644 (file)
                                l21 {
                                        regulator-min-microvolt = <2950000>;
                                        regulator-max-microvolt = <2950000>;
+                                       regulator-allow-set-load;
+                                       regulator-system-load = <200000>;
                                };
                                l22 {
                                        regulator-min-microvolt = <3300000>;
index 2b28e38..d1ccb94 100644 (file)
@@ -5,6 +5,7 @@
 #include "msm8916.dtsi"
 #include "pm8916.dtsi"
 #include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/input/input.h>
 
 / {
        model = "Longcheer L8150";
                stdout-path = "serial0";
        };
 
+       reserved-memory {
+               // wcnss.mdt is not relocatable, so it must be loaded at 0x8b600000
+               /delete-node/ wcnss@89300000;
+
+               wcnss_mem: wcnss@8b600000 {
+                       reg = <0x0 0x8b600000 0x0 0x600000>;
+                       no-map;
+               };
+       };
+
        soc {
                sdhci@7824000 {
                        status = "okay";
                        };
                };
 
+               wcnss@a21b000 {
+                       status = "okay";
+               };
+
                /*
                 * Attempting to enable these devices causes a "synchronous
                 * external abort". Suspected cause is that the debug power
                pinctrl-names = "default";
                pinctrl-0 = <&usb_vbus_default>;
        };
+
+       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>;
+               };
+       };
 };
 
 &msmgpio {
+       gpio_keys_default: gpio_keys_default {
+               pinmux {
+                       function = "gpio";
+                       pins = "gpio107";
+               };
+               pinconf {
+                       pins = "gpio107";
+                       drive-strength = <2>;
+                       bias-pull-up;
+               };
+       };
+
        usb_vbus_default: usb-vbus-default {
                pinmux {
                        function = "gpio";
        };
 };
 
+&spmi_bus {
+       pm8916@0 {
+               pon@800 {
+                       volume-down {
+                               compatible = "qcom,pm8941-resin";
+                               interrupts = <0x0 0x8 1 IRQ_TYPE_EDGE_BOTH>;
+                               bias-pull-up;
+                               linux,code = <KEY_VOLUMEDOWN>;
+                       };
+               };
+       };
+};
+
 &smd_rpm_regulators {
        vdd_l1_l2_l3-supply = <&pm8916_s3>;
        vdd_l4_l5_l6-supply = <&pm8916_s4>;
index e675ff4..bd1eb3e 100644 (file)
@@ -3,6 +3,7 @@
 #include "msm8916.dtsi"
 #include "pm8916.dtsi"
 #include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/input/input.h>
 #include <dt-bindings/interrupt-controller/irq.h>
 
 / {
                        };
                };
 
+               wcnss@a21b000 {
+                       status = "okay";
+               };
+
                /*
                 * Attempting to enable these devices causes a "synchronous
                 * external abort". Suspected cause is that the debug power
                etm@85f000 { status = "disabled"; };
        };
 
+       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;
+               };
+       };
+
        i2c-muic {
                compatible = "i2c-gpio";
                sda-gpios = <&msmgpio 105 (GPIO_ACTIVE_HIGH|GPIO_OPEN_DRAIN)>;
 };
 
 &msmgpio {
+       gpio_keys_default: gpio_keys_default {
+               pinmux {
+                       function = "gpio";
+                       pins = "gpio107", "gpio109";
+               };
+               pinconf {
+                       pins = "gpio107", "gpio109";
+                       drive-strength = <2>;
+                       bias-pull-up;
+               };
+       };
+
+       gpio_hall_sensor_default: gpio_hall_sensor_default {
+               pinmux {
+                       function = "gpio";
+                       pins = "gpio52";
+               };
+               pinconf {
+                       pins = "gpio52";
+                       drive-strength = <2>;
+                       bias-disable;
+               };
+       };
+
        muic_int_default: muic_int_default {
                pinmux {
                        function = "gpio";
                regulator-max-microvolt = <2700000>;
        };
 };
+
+&spmi_bus {
+       pm8916@0 {
+               pon@800 {
+                       volume-down {
+                               compatible = "qcom,pm8941-resin";
+                               interrupts = <0x0 0x8 1 IRQ_TYPE_EDGE_BOTH>;
+                               bias-pull-up;
+                               linux,code = <KEY_VOLUMEDOWN>;
+                       };
+               };
+       };
+};
index 1aa59da..6629a62 100644 (file)
@@ -8,3 +8,9 @@
        model = "Samsung Galaxy A5U (EUR)";
        compatible = "samsung,a5u-eur", "qcom,msm8916";
 };
+
+&pronto {
+       iris {
+               compatible = "qcom,wcn3680";
+       };
+};
index 5ea9fb8..8686e10 100644 (file)
                        polling-delay-passive = <250>;
                        polling-delay = <1000>;
 
-                       thermal-sensors = <&tsens 4>;
+                       thermal-sensors = <&tsens 5>;
 
                        trips {
                                cpu0_1_alert0: trip-point@0 {
                        polling-delay-passive = <250>;
                        polling-delay = <1000>;
 
-                       thermal-sensors = <&tsens 3>;
+                       thermal-sensors = <&tsens 4>;
 
                        trips {
                                cpu2_3_alert0: trip-point@0 {
index 87f4d9c..4ca2e7b 100644 (file)
                        reg = <0x4a9000 0x1000>, /* TM */
                              <0x4a8000 0x1000>; /* SROT */
                        #qcom,sensors = <13>;
+                       interrupts = <GIC_SPI 458 IRQ_TYPE_LEVEL_HIGH>;
+                       interrupt-names = "uplow";
                        #thermal-sensor-cells = <1>;
                };
 
                        reg = <0x4ad000 0x1000>, /* TM */
                              <0x4ac000 0x1000>; /* SROT */
                        #qcom,sensors = <8>;
+                       interrupts = <GIC_SPI 184 IRQ_TYPE_LEVEL_HIGH>;
+                       interrupt-names = "uplow";
                        #thermal-sensor-cells = <1>;
                };
 
index 9682d4d..6138b58 100644 (file)
        };
 };
 
+&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>;
+       };
+};
+
+/*
+ * The laptop FW does not appear to support the retention state as it is
+ * not advertised as enabled in ACPI, and enabling it in DT can cause boot
+ * hangs.
+ */
+&CPU0 {
+       cpu-idle-states = <&LITTLE_CPU_SLEEP_1>;
+};
+
+&CPU1 {
+       cpu-idle-states = <&LITTLE_CPU_SLEEP_1>;
+};
+
+&CPU2 {
+       cpu-idle-states = <&LITTLE_CPU_SLEEP_1>;
+};
+
+&CPU3 {
+       cpu-idle-states = <&LITTLE_CPU_SLEEP_1>;
+};
+
+&CPU4 {
+       cpu-idle-states = <&BIG_CPU_SLEEP_1>;
+};
+
+&CPU5 {
+       cpu-idle-states = <&BIG_CPU_SLEEP_1>;
+};
+
+&CPU6 {
+       cpu-idle-states = <&BIG_CPU_SLEEP_1>;
+};
+
+&CPU7 {
+       cpu-idle-states = <&BIG_CPU_SLEEP_1>;
+};
+
 &qusb2phy {
        status = "okay";
 
                vreg_l7a_1p8: l7 {
                        regulator-min-microvolt = <1800000>;
                        regulator-max-microvolt = <1800000>;
+                       regulator-allow-set-load;
                };
                vreg_l8a_1p2: l8 {
                        regulator-min-microvolt = <1200000>;
                vreg_l17a_1p3: l17 {
                        regulator-min-microvolt = <1304000>;
                        regulator-max-microvolt = <1304000>;
+                       regulator-allow-set-load;
                };
                vreg_l18a_2p7: l18 {
                        regulator-min-microvolt = <2704000>;
                vreg_l25a_3p3: l25 {
                        regulator-min-microvolt = <3104000>;
                        regulator-max-microvolt = <3312000>;
+                       regulator-allow-set-load;
                };
                vreg_l26a_1p2: l26 {
                        regulator-min-microvolt = <1200000>;
index 108667c..5f101a2 100644 (file)
        };
 };
 
+&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>;
+       };
+};
+
 &blsp2_uart1 {
        status = "okay";
 };
 
+&etf {
+       status = "okay";
+};
+
+&etm1 {
+       status = "okay";
+};
+
+&etm2 {
+       status = "okay";
+};
+
+&etm3 {
+       status = "okay";
+};
+
+&etm4 {
+       status = "okay";
+};
+
+&etm5 {
+       status = "okay";
+};
+
+&etm6 {
+       status = "okay";
+};
+
+&etm7 {
+       status = "okay";
+};
+
+&etm8 {
+       status = "okay";
+};
+
+&etr {
+       status = "okay";
+};
+
+&funnel1 {
+       status = "okay";
+};
+
+&funnel2 {
+       status = "okay";
+};
+
+&funnel3 {
+       status = "okay";
+};
+
+&funnel4 {
+       status = "okay";
+};
+
+&funnel5 {
+       status = "okay";
+};
+
 &pm8005_lsid1 {
        pm8005-regulators {
                compatible = "qcom,pm8005-regulators";
        vdda-phy-dpdm-supply = <&vreg_l24a_3p075>;
 };
 
+&replicator1 {
+       status = "okay";
+};
+
 &rpm_requests {
        pm8998-regulators {
                compatible = "qcom,rpm-pm8998-regulators";
        pinctrl-1 = <&sdc2_clk_off &sdc2_cmd_off &sdc2_data_off &sdc2_cd_off>;
 };
 
+&stm {
+       status = "okay";
+};
+
 &ufshc {
        vcc-supply = <&vreg_l20a_2p95>;
        vccq-supply = <&vreg_l26a_1p2>;
index 6db70ac..e32d3ab 100644 (file)
                        drive-strength = <2>;   /* 2 mA */
                };
        };
+
+       blsp1_uart3_on: blsp1_uart3_on {
+               mux {
+                       pins = "gpio45", "gpio46", "gpio47", "gpio48";
+                       function = "blsp_uart3_a";
+               };
+
+               config {
+                       pins = "gpio45", "gpio46", "gpio47", "gpio48";
+                       drive-strength = <2>;
+                       bias-disable;
+               };
+       };
 };
index c6f8143..fc7838e 100644 (file)
                        compatible = "qcom,msm8998-tsens", "qcom,tsens-v2";
                        reg = <0x010ab000 0x1000>, /* TM */
                              <0x010aa000 0x1000>; /* SROT */
-
                        #qcom,sensors = <14>;
+                       interrupts = <GIC_SPI 458 IRQ_TYPE_LEVEL_HIGH>;
+                       interrupt-names = "uplow";
                        #thermal-sensor-cells = <1>;
                };
 
                        compatible = "qcom,msm8998-tsens", "qcom,tsens-v2";
                        reg = <0x010ae000 0x1000>, /* TM */
                              <0x010ad000 0x1000>; /* SROT */
-
                        #qcom,sensors = <8>;
+                       interrupts = <GIC_SPI 184 IRQ_TYPE_LEVEL_HIGH>;
+                       interrupt-names = "uplow";
                        #thermal-sensor-cells = <1>;
                };
 
                        #interrupt-cells = <0x2>;
                };
 
-               stm@6002000 {
+               stm: stm@6002000 {
                        compatible = "arm,coresight-stm", "arm,primecell";
                        reg = <0x06002000 0x1000>,
                              <0x16280000 0x180000>;
                        reg-names = "stm-base", "stm-data-base";
+                       status = "disabled";
 
                        clocks = <&rpmcc RPM_SMD_QDSS_CLK>, <&rpmcc RPM_SMD_QDSS_A_CLK>;
                        clock-names = "apb_pclk", "atclk";
                        };
                };
 
-               funnel@6041000 {
+               funnel1: funnel@6041000 {
                        compatible = "arm,coresight-dynamic-funnel", "arm,primecell";
                        reg = <0x06041000 0x1000>;
+                       status = "disabled";
 
                        clocks = <&rpmcc RPM_SMD_QDSS_CLK>, <&rpmcc RPM_SMD_QDSS_A_CLK>;
                        clock-names = "apb_pclk", "atclk";
                        };
                };
 
-               funnel@6042000 {
+               funnel2: funnel@6042000 {
                        compatible = "arm,coresight-dynamic-funnel", "arm,primecell";
                        reg = <0x06042000 0x1000>;
+                       status = "disabled";
 
                        clocks = <&rpmcc RPM_SMD_QDSS_CLK>, <&rpmcc RPM_SMD_QDSS_A_CLK>;
                        clock-names = "apb_pclk", "atclk";
                        };
                };
 
-               funnel@6045000 {
+               funnel3: funnel@6045000 {
                        compatible = "arm,coresight-dynamic-funnel", "arm,primecell";
                        reg = <0x06045000 0x1000>;
+                       status = "disabled";
 
                        clocks = <&rpmcc RPM_SMD_QDSS_CLK>, <&rpmcc RPM_SMD_QDSS_A_CLK>;
                        clock-names = "apb_pclk", "atclk";
                        };
                };
 
-               replicator@6046000 {
+               replicator1: replicator@6046000 {
                        compatible = "arm,coresight-dynamic-replicator", "arm,primecell";
                        reg = <0x06046000 0x1000>;
+                       status = "disabled";
 
                        clocks = <&rpmcc RPM_SMD_QDSS_CLK>, <&rpmcc RPM_SMD_QDSS_A_CLK>;
                        clock-names = "apb_pclk", "atclk";
                        };
                };
 
-               etf@6047000 {
+               etf: etf@6047000 {
                        compatible = "arm,coresight-tmc", "arm,primecell";
                        reg = <0x06047000 0x1000>;
+                       status = "disabled";
 
                        clocks = <&rpmcc RPM_SMD_QDSS_CLK>, <&rpmcc RPM_SMD_QDSS_A_CLK>;
                        clock-names = "apb_pclk", "atclk";
                        };
                };
 
-               etr@6048000 {
+               etr: etr@6048000 {
                        compatible = "arm,coresight-tmc", "arm,primecell";
                        reg = <0x06048000 0x1000>;
+                       status = "disabled";
 
                        clocks = <&rpmcc RPM_SMD_QDSS_CLK>, <&rpmcc RPM_SMD_QDSS_A_CLK>;
                        clock-names = "apb_pclk", "atclk";
                        };
                };
 
-               etm@7840000 {
+               etm1: etm@7840000 {
                        compatible = "arm,coresight-etm4x", "arm,primecell";
                        reg = <0x07840000 0x1000>;
+                       status = "disabled";
 
                        clocks = <&rpmcc RPM_SMD_QDSS_CLK>, <&rpmcc RPM_SMD_QDSS_A_CLK>;
                        clock-names = "apb_pclk", "atclk";
                        };
                };
 
-               etm@7940000 {
+               etm2: etm@7940000 {
                        compatible = "arm,coresight-etm4x", "arm,primecell";
                        reg = <0x07940000 0x1000>;
+                       status = "disabled";
 
                        clocks = <&rpmcc RPM_SMD_QDSS_CLK>, <&rpmcc RPM_SMD_QDSS_A_CLK>;
                        clock-names = "apb_pclk", "atclk";
                        };
                };
 
-               etm@7a40000 {
+               etm3: etm@7a40000 {
                        compatible = "arm,coresight-etm4x", "arm,primecell";
                        reg = <0x07a40000 0x1000>;
+                       status = "disabled";
 
                        clocks = <&rpmcc RPM_SMD_QDSS_CLK>, <&rpmcc RPM_SMD_QDSS_A_CLK>;
                        clock-names = "apb_pclk", "atclk";
                        };
                };
 
-               etm@7b40000 {
+               etm4: etm@7b40000 {
                        compatible = "arm,coresight-etm4x", "arm,primecell";
                        reg = <0x07b40000 0x1000>;
+                       status = "disabled";
 
                        clocks = <&rpmcc RPM_SMD_QDSS_CLK>, <&rpmcc RPM_SMD_QDSS_A_CLK>;
                        clock-names = "apb_pclk", "atclk";
                        };
                };
 
-               funnel@7b60000 { /* APSS Funnel */
+               funnel4: funnel@7b60000 { /* APSS Funnel */
                        compatible = "arm,coresight-etm4x", "arm,primecell";
                        reg = <0x07b60000 0x1000>;
+                       status = "disabled";
 
                        clocks = <&rpmcc RPM_SMD_QDSS_CLK>, <&rpmcc RPM_SMD_QDSS_A_CLK>;
                        clock-names = "apb_pclk", "atclk";
                        };
                };
 
-               funnel@7b70000 {
+               funnel5: funnel@7b70000 {
                        compatible = "arm,coresight-dynamic-funnel", "arm,primecell";
                        reg = <0x07b70000 0x1000>;
+                       status = "disabled";
 
                        clocks = <&rpmcc RPM_SMD_QDSS_CLK>, <&rpmcc RPM_SMD_QDSS_A_CLK>;
                        clock-names = "apb_pclk", "atclk";
                        };
                };
 
-               etm@7c40000 {
+               etm5: etm@7c40000 {
                        compatible = "arm,coresight-etm4x", "arm,primecell";
                        reg = <0x07c40000 0x1000>;
+                       status = "disabled";
 
                        clocks = <&rpmcc RPM_SMD_QDSS_CLK>, <&rpmcc RPM_SMD_QDSS_A_CLK>;
                        clock-names = "apb_pclk", "atclk";
                        };
                };
 
-               etm@7d40000 {
+               etm6: etm@7d40000 {
                        compatible = "arm,coresight-etm4x", "arm,primecell";
                        reg = <0x07d40000 0x1000>;
+                       status = "disabled";
 
                        clocks = <&rpmcc RPM_SMD_QDSS_CLK>, <&rpmcc RPM_SMD_QDSS_A_CLK>;
                        clock-names = "apb_pclk", "atclk";
                        };
                };
 
-               etm@7e40000 {
+               etm7: etm@7e40000 {
                        compatible = "arm,coresight-etm4x", "arm,primecell";
                        reg = <0x07e40000 0x1000>;
+                       status = "disabled";
 
                        clocks = <&rpmcc RPM_SMD_QDSS_CLK>, <&rpmcc RPM_SMD_QDSS_A_CLK>;
                        clock-names = "apb_pclk", "atclk";
                        };
                };
 
-               etm@7f40000 {
+               etm8: etm@7f40000 {
                        compatible = "arm,coresight-etm4x", "arm,primecell";
                        reg = <0x07f40000 0x1000>;
+                       status = "disabled";
 
                        clocks = <&rpmcc RPM_SMD_QDSS_CLK>, <&rpmcc RPM_SMD_QDSS_A_CLK>;
                        clock-names = "apb_pclk", "atclk";
                        status = "disabled";
                };
 
+               blsp1_dma: dma@c144000 {
+                       compatible = "qcom,bam-v1.7.0";
+                       reg = <0x0c144000 0x25000>;
+                       interrupts = <GIC_SPI 238 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&gcc GCC_BLSP1_AHB_CLK>;
+                       clock-names = "bam_clk";
+                       #dma-cells = <1>;
+                       qcom,ee = <0>;
+                       qcom,controlled-remotely;
+                       num-channels = <18>;
+                       qcom,num-ees = <4>;
+               };
+
+               blsp1_uart3: serial@c171000 {
+                       compatible = "qcom,msm-uartdm-v1.4", "qcom,msm-uartdm";
+                       reg = <0x0c171000 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";
+                       dmas = <&blsp1_dma 4>, <&blsp1_dma 5>;
+                       dma-names = "tx", "rx";
+                       pinctrl-names = "default";
+                       pinctrl-0 = <&blsp1_uart3_on>;
+                       status = "disabled";
+               };
+
                blsp1_i2c1: i2c@c175000 {
                        compatible = "qcom,i2c-qup-v2.2.1";
                        reg = <0x0c175000 0x600>;
index a97eeb4..f5f0c4c 100644 (file)
                        #clock-cells = <0>;
                        clock-frequency = <19200000>;
                };
+
+               sleep_clk: sleep-clk {
+                       compatible = "fixed-clock";
+                       #clock-cells = <0>;
+                       clock-frequency = <32768>;
+               };
        };
 
        cpus {
                        clock-names = "core";
                };
 
+               bimc: interconnect@400000 {
+                       reg = <0x00400000 0x80000>;
+                       compatible = "qcom,qcs404-bimc";
+                       #interconnect-cells = <1>;
+                       clock-names = "bus", "bus_a";
+                       clocks = <&rpmcc RPM_SMD_BIMC_CLK>,
+                               <&rpmcc RPM_SMD_BIMC_A_CLK>;
+               };
+
                tsens: thermal-sensor@4a9000 {
                        compatible = "qcom,qcs404-tsens", "qcom,tsens-v1";
                        reg = <0x004a9000 0x1000>, /* TM */
                        nvmem-cells = <&tsens_caldata>;
                        nvmem-cell-names = "calib";
                        #qcom,sensors = <10>;
+                       interrupts = <GIC_SPI 184 IRQ_TYPE_LEVEL_HIGH>;
+                       interrupt-names = "uplow";
                        #thermal-sensor-cells = <1>;
                };
 
+               pcnoc: interconnect@500000 {
+                       reg = <0x00500000 0x15080>;
+                       compatible = "qcom,qcs404-pcnoc";
+                       #interconnect-cells = <1>;
+                       clock-names = "bus", "bus_a";
+                       clocks = <&rpmcc RPM_SMD_PNOC_CLK>,
+                               <&rpmcc RPM_SMD_PNOC_A_CLK>;
+               };
+
+               snoc: interconnect@580000 {
+                       reg = <0x00580000 0x23080>;
+                       compatible = "qcom,qcs404-snoc";
+                       #interconnect-cells = <1>;
+                       clock-names = "bus", "bus_a";
+                       clocks = <&rpmcc RPM_SMD_SNOC_CLK>,
+                               <&rpmcc RPM_SMD_SNOC_A_CLK>;
+               };
+
                remoteproc_cdsp: remoteproc@b00000 {
                        compatible = "qcom,qcs404-cdsp-pas";
                        reg = <0x00b00000 0x4040>;
                        #mbox-cells = <1>;
                };
 
+               watchdog@b017000 {
+                       compatible = "qcom,kpss-wdt";
+                       reg = <0x0b017000 0x1000>;
+                       clocks = <&sleep_clk>;
+               };
+
                timer@b120000 {
                        #address-cells = <1>;
                        #size-cells = <1>;
index 34881c0..9a4ff57 100644 (file)
 /delete-node/ &venus_mem;
 /delete-node/ &cdsp_mem;
 /delete-node/ &cdsp_pas;
+/delete-node/ &zap_shader;
+/delete-node/ &gpu_mem;
 
 /* Increase the size from 120 MB to 128 MB */
 &mpss_region {
@@ -701,9 +703,8 @@ ap_ts_i2c: &i2c14 {
 
 &ufs_mem_hc {
        status = "okay";
-       pinctrl-names = "init", "default";
-       pinctrl-0 = <&ufs_dev_reset_assert>;
-       pinctrl-1 = <&ufs_dev_reset_deassert>;
+
+       reset-gpios = <&tlmm 150 GPIO_ACTIVE_LOW>;
 
        vcc-supply = <&src_pp2950_l20a>;
        vcc-max-microamp = <600000>;
@@ -1258,52 +1259,6 @@ ap_ts_i2c: &i2c14 {
                };
        };
 
-       ufs_dev_reset_assert: ufs_dev_reset_assert {
-               config {
-                       pins = "ufs_reset";
-                       bias-pull-down;         /* default: pull down */
-                       /*
-                        * UFS_RESET driver strengths are having
-                        * different values/steps compared to typical
-                        * GPIO drive strengths.
-                        *
-                        * Following table clarifies:
-                        *
-                        * HDRV value | UFS_RESET | Typical GPIO
-                        *   (dec)    |   (mA)    |    (mA)
-                        *     0      |   0.8     |    2
-                        *     1      |   1.55    |    4
-                        *     2      |   2.35    |    6
-                        *     3      |   3.1     |    8
-                        *     4      |   3.9     |    10
-                        *     5      |   4.65    |    12
-                        *     6      |   5.4     |    14
-                        *     7      |   6.15    |    16
-                        *
-                        * POR value for UFS_RESET HDRV is 3 which means
-                        * 3.1mA and we want to use that. Hence just
-                        * specify 8mA to "drive-strength" binding and
-                        * that should result into writing 3 to HDRV
-                        * field.
-                        */
-                       drive-strength = <8>;   /* default: 3.1 mA */
-                       output-low; /* active low reset */
-               };
-       };
-
-       ufs_dev_reset_deassert: ufs_dev_reset_deassert {
-               config {
-                       pins = "ufs_reset";
-                       bias-pull-down;         /* default: pull down */
-                       /*
-                        * default: 3.1 mA
-                        * check comments under ufs_dev_reset_assert
-                        */
-                       drive-strength = <8>;
-                       output-high; /* active low reset */
-               };
-       };
-
        ap_suspend_l_assert: ap_suspend_l_assert {
                config {
                        pins = "gpio126";
index f5a85ca..d100f46 100644 (file)
                        regulator-max-microvolt = <1200000>;
                        regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
                };
+
+               vreg_lvs1a_1p8: lvs1 {
+                       regulator-min-microvolt = <1800000>;
+                       regulator-max-microvolt = <1800000>;
+                       regulator-always-on;
+               };
+
+               vreg_lvs2a_1p8: lvs2 {
+                       regulator-min-microvolt = <1800000>;
+                       regulator-max-microvolt = <1800000>;
+                       regulator-always-on;
+               };
        };
 
        pmi8998-rpmh-regulators {
index f406a43..ddb1f23 100644 (file)
 
                        qcom,gmu = <&gmu>;
 
-                       zap-shader {
+                       zap_shader: zap-shader {
                                memory-region = <&gpu_mem>;
                        };
 
                        reg = <0 0x0c263000 0 0x1ff>, /* TM */
                              <0 0x0c222000 0 0x1ff>; /* SROT */
                        #qcom,sensors = <13>;
+                       interrupts = <GIC_SPI 506 IRQ_TYPE_LEVEL_HIGH>;
+                       interrupt-names = "uplow";
                        #thermal-sensor-cells = <1>;
                };
 
                        reg = <0 0x0c265000 0 0x1ff>, /* TM */
                              <0 0x0c223000 0 0x1ff>; /* SROT */
                        #qcom,sensors = <8>;
+                       interrupts = <GIC_SPI 507 IRQ_TYPE_LEVEL_HIGH>;
+                       interrupt-names = "uplow";
                        #thermal-sensor-cells = <1>;
                };
 
                        status = "disabled";
                };
 
+               watchdog@17980000 {
+                       compatible = "qcom,apss-wdt-sdm845", "qcom,kpss-wdt";
+                       reg = <0 0x17980000 0 0x1000>;
+                       clocks = <&sleep_clk>;
+               };
+
                apss_shared: mailbox@17990000 {
                        compatible = "qcom,sdm845-apss-shared";
                        reg = <0 0x17990000 0 0x1000>;
index ded120d..13dc619 100644 (file)
        };
 };
 
+&adsp_pas {
+       firmware-name = "qcom/LENOVO/81JL/qcadsp850.mbn";
+       status = "okay";
+};
+
 &apps_rsc {
        pm8998-rpmh-regulators {
                compatible = "qcom,pm8998-rpmh-regulators";
        status = "disabled";
 };
 
+&cdsp_pas {
+       firmware-name = "qcom/LENOVO/81JL/qccdsp850.mbn";
+       status = "okay";
+};
+
 &gcc {
        protected-clocks = <GCC_QSPI_CORE_CLK>,
                           <GCC_QSPI_CORE_CLK_SRC>,
        };
 };
 
+&mss_pil {
+       firmware-name = "qcom/LENOVO/81JL/qcdsp1v2850.mbn", "qcom/LENOVO/81JL/qcdsp2850.mbn";
+};
+
 &qup_i2c12_default {
        drive-strength = <2>;
        bias-disable;
index 90c897a..555638a 100644 (file)
@@ -1,4 +1,9 @@
 # SPDX-License-Identifier: GPL-2.0-only
+
+dtb-$(CONFIG_ARCH_REALTEK) += rtd1293-ds418j.dtb
+
 dtb-$(CONFIG_ARCH_REALTEK) += rtd1295-mele-v9.dtb
 dtb-$(CONFIG_ARCH_REALTEK) += rtd1295-probox2-ava.dtb
 dtb-$(CONFIG_ARCH_REALTEK) += rtd1295-zidoo-x9s.dtb
+
+dtb-$(CONFIG_ARCH_REALTEK) += rtd1296-ds418.dtb
diff --git a/arch/arm64/boot/dts/realtek/rtd1293-ds418j.dts b/arch/arm64/boot/dts/realtek/rtd1293-ds418j.dts
new file mode 100644 (file)
index 0000000..b2dd583
--- /dev/null
@@ -0,0 +1,30 @@
+// SPDX-License-Identifier: (GPL-2.0-or-later OR BSD-2-Clause)
+/*
+ * Copyright (c) 2017 Andreas Färber
+ */
+
+/dts-v1/;
+
+#include "rtd1293.dtsi"
+
+/ {
+       compatible = "synology,ds418j", "realtek,rtd1293";
+       model = "Synology DiskStation DS418j";
+
+       memory@0 {
+               device_type = "memory";
+               reg = <0x0 0x40000000>;
+       };
+
+       aliases {
+               serial0 = &uart0;
+       };
+
+       chosen {
+               stdout-path = "serial0:115200n8";
+       };
+};
+
+&uart0 {
+       status = "okay";
+};
diff --git a/arch/arm64/boot/dts/realtek/rtd1293.dtsi b/arch/arm64/boot/dts/realtek/rtd1293.dtsi
new file mode 100644 (file)
index 0000000..bd4e227
--- /dev/null
@@ -0,0 +1,51 @@
+// SPDX-License-Identifier: (GPL-2.0-or-later OR BSD-2-Clause)
+/*
+ * Realtek RTD1293 SoC
+ *
+ * Copyright (c) 2017-2019 Andreas Färber
+ */
+
+#include "rtd129x.dtsi"
+
+/ {
+       compatible = "realtek,rtd1293";
+
+       cpus {
+               #address-cells = <2>;
+               #size-cells = <0>;
+
+               cpu0: cpu@0 {
+                       device_type = "cpu";
+                       compatible = "arm,cortex-a53";
+                       reg = <0x0 0x0>;
+                       next-level-cache = <&l2>;
+               };
+
+               cpu1: cpu@1 {
+                       device_type = "cpu";
+                       compatible = "arm,cortex-a53";
+                       reg = <0x0 0x1>;
+                       next-level-cache = <&l2>;
+               };
+
+               l2: l2-cache {
+                       compatible = "cache";
+               };
+       };
+
+       timer {
+               compatible = "arm,armv8-timer";
+               interrupts = <GIC_PPI 13
+                       (GIC_CPU_MASK_RAW(0xf) | IRQ_TYPE_LEVEL_LOW)>,
+                            <GIC_PPI 14
+                       (GIC_CPU_MASK_RAW(0xf) | IRQ_TYPE_LEVEL_LOW)>,
+                            <GIC_PPI 11
+                       (GIC_CPU_MASK_RAW(0xf) | IRQ_TYPE_LEVEL_LOW)>,
+                            <GIC_PPI 10
+                       (GIC_CPU_MASK_RAW(0xf) | IRQ_TYPE_LEVEL_LOW)>;
+       };
+};
+
+&arm_pmu {
+       interrupt-affinity = <&cpu0>, <&cpu1>;
+};
index da19faa..e98e508 100644 (file)
@@ -1,7 +1,6 @@
+// SPDX-License-Identifier: (GPL-2.0-or-later OR BSD-2-Clause)
 /*
  * Copyright (c) 2016-2017 Andreas Färber
- *
- * SPDX-License-Identifier: (GPL-2.0+ OR MIT)
  */
 
 /dts-v1/;
index 41d7858..93f0e1d 100644 (file)
@@ -1,9 +1,8 @@
+// SPDX-License-Identifier: (GPL-2.0-or-later OR BSD-2-Clause)
 /*
  * Realtek RTD1295 SoC
  *
  * Copyright (c) 2016-2017 Andreas Färber
- *
- * SPDX-License-Identifier: (GPL-2.0+ OR MIT)
  */
 
 #include "rtd129x.dtsi"
diff --git a/arch/arm64/boot/dts/realtek/rtd1296-ds418.dts b/arch/arm64/boot/dts/realtek/rtd1296-ds418.dts
new file mode 100644 (file)
index 0000000..5a051a5
--- /dev/null
@@ -0,0 +1,30 @@
+// SPDX-License-Identifier: (GPL-2.0-or-later OR BSD-2-Clause)
+/*
+ * Copyright (c) 2017-2019 Andreas Färber
+ */
+
+/dts-v1/;
+
+#include "rtd1296.dtsi"
+
+/ {
+       compatible = "synology,ds418", "realtek,rtd1296";
+       model = "Synology DiskStation DS418";
+
+       memory@0 {
+               device_type = "memory";
+               reg = <0x0 0x80000000>;
+       };
+
+       aliases {
+               serial0 = &uart0;
+       };
+
+       chosen {
+               stdout-path = "serial0:115200n8";
+       };
+};
+
+&uart0 {
+       status = "okay";
+};
diff --git a/arch/arm64/boot/dts/realtek/rtd1296.dtsi b/arch/arm64/boot/dts/realtek/rtd1296.dtsi
new file mode 100644 (file)
index 0000000..0f9e59c
--- /dev/null
@@ -0,0 +1,65 @@
+// SPDX-License-Identifier: (GPL-2.0-or-later OR BSD-2-Clause)
+/*
+ * Realtek RTD1296 SoC
+ *
+ * Copyright (c) 2017-2019 Andreas Färber
+ */
+
+#include "rtd129x.dtsi"
+
+/ {
+       compatible = "realtek,rtd1296";
+
+       cpus {
+               #address-cells = <2>;
+               #size-cells = <0>;
+
+               cpu0: cpu@0 {
+                       device_type = "cpu";
+                       compatible = "arm,cortex-a53";
+                       reg = <0x0 0x0>;
+                       next-level-cache = <&l2>;
+               };
+
+               cpu1: cpu@1 {
+                       device_type = "cpu";
+                       compatible = "arm,cortex-a53";
+                       reg = <0x0 0x1>;
+                       next-level-cache = <&l2>;
+               };
+
+               cpu2: cpu@2 {
+                       device_type = "cpu";
+                       compatible = "arm,cortex-a53";
+                       reg = <0x0 0x2>;
+                       next-level-cache = <&l2>;
+               };
+
+               cpu3: cpu@3 {
+                       device_type = "cpu";
+                       compatible = "arm,cortex-a53";
+                       reg = <0x0 0x3>;
+                       next-level-cache = <&l2>;
+               };
+
+               l2: l2-cache {
+                       compatible = "cache";
+               };
+       };
+
+       timer {
+               compatible = "arm,armv8-timer";
+               interrupts = <GIC_PPI 13
+                       (GIC_CPU_MASK_RAW(0xf) | IRQ_TYPE_LEVEL_LOW)>,
+                            <GIC_PPI 14
+                       (GIC_CPU_MASK_RAW(0xf) | IRQ_TYPE_LEVEL_LOW)>,
+                            <GIC_PPI 11
+                       (GIC_CPU_MASK_RAW(0xf) | IRQ_TYPE_LEVEL_LOW)>,
+                            <GIC_PPI 10
+                       (GIC_CPU_MASK_RAW(0xf) | IRQ_TYPE_LEVEL_LOW)>;
+       };
+};
+
+&arm_pmu {
+       interrupt-affinity = <&cpu0>, <&cpu1>, <&cpu2>, <&cpu3>;
+};
index b9cb924..4433114 100644 (file)
@@ -1,9 +1,8 @@
+// SPDX-License-Identifier: (GPL-2.0-or-later OR BSD-2-Clause)
 /*
  * Realtek RTD1293/RTD1295/RTD1296 SoC
  *
  * Copyright (c) 2016-2017 Andreas Färber
- *
- * SPDX-License-Identifier: (GPL-2.0+ OR MIT)
  */
 
 /memreserve/   0x0000000000000000 0x0000000000030000;
@@ -13,6 +12,7 @@
 /memreserve/   0x0000000001ffe000 0x0000000000004000;
 
 #include <dt-bindings/interrupt-controller/arm-gic.h>
+#include <dt-bindings/reset/realtek,rtd1295.h>
 
 / {
        interrupt-parent = <&gic>;
                interrupts = <GIC_SPI 48 IRQ_TYPE_LEVEL_HIGH>;
        };
 
+       osc27M: osc {
+               compatible = "fixed-clock";
+               clock-frequency = <27000000>;
+               #clock-cells = <0>;
+               clock-output-names = "osc27M";
+       };
+
        soc {
                compatible = "simple-bus";
                #address-cells = <1>;
                /* Exclude up to 2 GiB of RAM */
                ranges = <0x80000000 0x80000000 0x80000000>;
 
+               reset1: reset-controller@98000000 {
+                       compatible = "snps,dw-low-reset";
+                       reg = <0x98000000 0x4>;
+                       #reset-cells = <1>;
+               };
+
+               reset2: reset-controller@98000004 {
+                       compatible = "snps,dw-low-reset";
+                       reg = <0x98000004 0x4>;
+                       #reset-cells = <1>;
+               };
+
+               reset3: reset-controller@98000008 {
+                       compatible = "snps,dw-low-reset";
+                       reg = <0x98000008 0x4>;
+                       #reset-cells = <1>;
+               };
+
+               reset4: reset-controller@98000050 {
+                       compatible = "snps,dw-low-reset";
+                       reg = <0x98000050 0x4>;
+                       #reset-cells = <1>;
+               };
+
+               iso_reset: reset-controller@98007088 {
+                       compatible = "snps,dw-low-reset";
+                       reg = <0x98007088 0x4>;
+                       #reset-cells = <1>;
+               };
+
+               wdt: watchdog@98007680 {
+                       compatible = "realtek,rtd1295-watchdog";
+                       reg = <0x98007680 0x100>;
+                       clocks = <&osc27M>;
+               };
+
                uart0: serial@98007800 {
                        compatible = "snps,dw-apb-uart";
                        reg = <0x98007800 0x400>;
                        reg-shift = <2>;
                        reg-io-width = <4>;
                        clock-frequency = <27000000>;
+                       resets = <&iso_reset RTD1295_ISO_RSTN_UR0>;
                        status = "disabled";
                };
 
@@ -46,6 +90,7 @@
                        reg-shift = <2>;
                        reg-io-width = <4>;
                        clock-frequency = <432000000>;
+                       resets = <&reset2 RTD1295_RSTN_UR1>;
                        status = "disabled";
                };
 
                        reg-shift = <2>;
                        reg-io-width = <4>;
                        clock-frequency = <432000000>;
+                       resets = <&reset2 RTD1295_RSTN_UR2>;
                        status = "disabled";
                };
 
index 42b74c2..8fdbd22 100644 (file)
@@ -1,6 +1,8 @@
 # SPDX-License-Identifier: GPL-2.0
 dtb-$(CONFIG_ARCH_R8A774A1) += r8a774a1-hihope-rzg2m.dtb
 dtb-$(CONFIG_ARCH_R8A774A1) += r8a774a1-hihope-rzg2m-ex.dtb
+dtb-$(CONFIG_ARCH_R8A774B1) += r8a774b1-hihope-rzg2n.dtb
+dtb-$(CONFIG_ARCH_R8A774B1) += r8a774b1-hihope-rzg2n-ex.dtb
 dtb-$(CONFIG_ARCH_R8A774C0) += r8a774c0-cat874.dtb r8a774c0-ek874.dtb
 dtb-$(CONFIG_ARCH_R8A7795) += r8a7795-salvator-x.dtb r8a7795-h3ulcb.dtb
 dtb-$(CONFIG_ARCH_R8A7795) += r8a7795-h3ulcb-kf.dtb
@@ -10,6 +12,10 @@ dtb-$(CONFIG_ARCH_R8A7795) += r8a7795-es1-h3ulcb-kf.dtb
 dtb-$(CONFIG_ARCH_R8A7796) += r8a7796-salvator-x.dtb r8a7796-m3ulcb.dtb
 dtb-$(CONFIG_ARCH_R8A7796) += r8a7796-m3ulcb-kf.dtb
 dtb-$(CONFIG_ARCH_R8A7796) += r8a7796-salvator-xs.dtb
+dtb-$(CONFIG_ARCH_R8A77960) += r8a7796-salvator-x.dtb r8a7796-m3ulcb.dtb
+dtb-$(CONFIG_ARCH_R8A77960) += r8a7796-m3ulcb-kf.dtb
+dtb-$(CONFIG_ARCH_R8A77960) += r8a7796-salvator-xs.dtb
+dtb-$(CONFIG_ARCH_R8A77961) += r8a77961-salvator-xs.dtb
 dtb-$(CONFIG_ARCH_R8A77965) += r8a77965-salvator-x.dtb r8a77965-salvator-xs.dtb
 dtb-$(CONFIG_ARCH_R8A77965) += r8a77965-m3nulcb.dtb
 dtb-$(CONFIG_ARCH_R8A77965) += r8a77965-m3nulcb-kf.dtb
index 3e376d2..2c942a7 100644 (file)
@@ -86,7 +86,7 @@
 
                label = "rcar-sound";
 
-               dais = <&rsnd_port0>;
+               dais = <&rsnd_port>;
        };
 
        vbus0_usb2: regulator-vbus0-usb2 {
 };
 
 &du {
-       clocks = <&cpg CPG_MOD 724>,
-                <&cpg CPG_MOD 723>,
-                <&cpg CPG_MOD 722>,
-                <&versaclock5 1>,
-                <&x302_clk>,
-                <&versaclock5 2>;
-       clock-names = "du.0", "du.1", "du.2",
-                     "dclkin.0", "dclkin.1", "dclkin.2";
        status = "okay";
 };
 
                port@2 {
                        reg = <2>;
                        dw_hdmi0_snd_in: endpoint {
-                               remote-endpoint = <&rsnd_endpoint0>;
+                               remote-endpoint = <&rsnd_endpoint>;
                        };
                };
        };
        /* Single DAI */
        #sound-dai-cells = <0>;
 
-       ports {
-               rsnd_port0: port@0 {
-                       rsnd_endpoint0: endpoint {
-                               remote-endpoint = <&dw_hdmi0_snd_in>;
+       rsnd_port: port {
+               rsnd_endpoint: endpoint {
+                       remote-endpoint = <&dw_hdmi0_snd_in>;
 
-                               dai-format = "i2s";
-                               bitclock-master = <&rsnd_endpoint0>;
-                               frame-master = <&rsnd_endpoint0>;
+                       dai-format = "i2s";
+                       bitclock-master = <&rsnd_endpoint>;
+                       frame-master = <&rsnd_endpoint>;
 
-                               playback = <&ssi2>;
-                       };
+                       playback = <&ssi2>;
                };
        };
 };
index 4280b19..28fe17e 100644 (file)
        chosen {
                bootargs = "ignore_loglevel rw root=/dev/nfs ip=on";
        };
+
+       backlight {
+               compatible = "pwm-backlight";
+               pwms = <&pwm0 0 50000>;
+
+               brightness-levels = <0 2 8 16 32 64 128 255>;
+               default-brightness-level = <6>;
+       };
 };
 
 &avb {
        status = "okay";
 };
 
-&pciec0 {
-       status = "okay";
+&gpio1 {
+       /*
+        * When GP1_20 is LOW LVDS0 is connected to the LVDS connector
+        * When GP1_20 is HIGH LVDS0 is connected to the LT8918L
+        */
+       lvds-connector-en-gpio {
+               gpio-hog;
+               gpios = <20 GPIO_ACTIVE_HIGH>;
+               output-low;
+               line-name = "lvds-connector-en-gpio";
+       };
+};
+
+&lvds0 {
+       /*
+        * Please include the LVDS panel .dtsi file and uncomment the below line
+        * to enable LVDS panel connected to RZ/G2[MN] boards.
+        */
+
+       /* status = "okay"; */
+
+       ports {
+               port@1 {
+                       lvds_connector: endpoint {
+                       };
+               };
+       };
 };
 
-&pciec1 {
+&pciec0 {
        status = "okay";
 };
 
                groups = "can1_data";
                function = "can1";
        };
+
+       pwm0_pins: pwm0 {
+               groups = "pwm0";
+               function = "pwm0";
+       };
+};
+
+&pwm0 {
+       pinctrl-0 = <&pwm0_pins>;
+       pinctrl-names = "default";
+
+       status = "okay";
 };
index 6e33a3b..c754fca 100644 (file)
@@ -13,3 +13,7 @@
        compatible = "hoperun,hihope-rzg2-ex", "hoperun,hihope-rzg2m",
                     "renesas,r8a774a1";
 };
+
+&pciec1 {
+       status = "okay";
+};
index 93ca973..96f2fb0 100644 (file)
                reg = <0x6 0x00000000 0x0 0x80000000>;
        };
 };
+
+&du {
+       clocks = <&cpg CPG_MOD 724>,
+                <&cpg CPG_MOD 723>,
+                <&cpg CPG_MOD 722>,
+                <&versaclock5 1>,
+                <&x302_clk>,
+                <&versaclock5 2>;
+       clock-names = "du.0", "du.1", "du.2",
+                     "dclkin.0", "dclkin.1", "dclkin.2";
+};
index 06c7c84..34a9f47 100644 (file)
                                      "ssi.1", "ssi.0";
                        status = "disabled";
 
-                       ports {
-                               #address-cells = <1>;
-                               #size-cells = <0>;
-                               port@0 {
-                                       reg = <0>;
-                               };
-                               port@1 {
-                                       reg = <1>;
-                               };
-                       };
-
                        rcar_sound,ctu {
                                ctu00: ctu-0 { };
                                ctu01: ctu-1 { };
                        clock-names = "du.0", "du.1", "du.2";
                        status = "disabled";
 
-                       vsps = <&vspd0 &vspd1 &vspd2>;
+                       vsps = <&vspd0 0>, <&vspd1 0>, <&vspd2 0>;
 
                        ports {
                                #address-cells = <1>;
diff --git a/arch/arm64/boot/dts/renesas/r8a774b1-hihope-rzg2n-ex.dts b/arch/arm64/boot/dts/renesas/r8a774b1-hihope-rzg2n-ex.dts
new file mode 100644 (file)
index 0000000..ab47c0b
--- /dev/null
@@ -0,0 +1,15 @@
+// SPDX-License-Identifier: GPL-2.0
+/*
+ * Device Tree Source for the HiHope RZ/G2N sub board
+ *
+ * Copyright (C) 2019 Renesas Electronics Corp.
+ */
+
+#include "r8a774b1-hihope-rzg2n.dts"
+#include "hihope-rzg2-ex.dtsi"
+
+/ {
+       model = "HopeRun HiHope RZ/G2N with sub board";
+       compatible = "hoperun,hihope-rzg2-ex", "hoperun,hihope-rzg2n",
+                    "renesas,r8a774b1";
+};
diff --git a/arch/arm64/boot/dts/renesas/r8a774b1-hihope-rzg2n.dts b/arch/arm64/boot/dts/renesas/r8a774b1-hihope-rzg2n.dts
new file mode 100644 (file)
index 0000000..9910c1a
--- /dev/null
@@ -0,0 +1,41 @@
+// SPDX-License-Identifier: GPL-2.0
+/*
+ * Device Tree Source for the HiHope RZ/G2N main board
+ *
+ * Copyright (C) 2019 Renesas Electronics Corp.
+ */
+
+/dts-v1/;
+#include "r8a774b1.dtsi"
+#include "hihope-common.dtsi"
+
+/ {
+       model = "HopeRun HiHope RZ/G2N main board based on r8a774b1";
+       compatible = "hoperun,hihope-rzg2n", "renesas,r8a774b1";
+
+       memory@48000000 {
+               device_type = "memory";
+               /* first 128MB is reserved for secure area. */
+               reg = <0x0 0x48000000 0x0 0x78000000>;
+       };
+
+       memory@480000000 {
+               device_type = "memory";
+               reg = <0x4 0x80000000 0x0 0x80000000>;
+       };
+};
+
+&du {
+       clocks = <&cpg CPG_MOD 724>,
+                <&cpg CPG_MOD 723>,
+                <&cpg CPG_MOD 721>,
+                <&versaclock5 1>,
+                <&x302_clk>,
+                <&versaclock5 2>;
+       clock-names = "du.0", "du.1", "du.3",
+                     "dclkin.0", "dclkin.1", "dclkin.3";
+};
+
+&sdhi3 {
+       mmc-hs400-1_8v;
+};
diff --git a/arch/arm64/boot/dts/renesas/r8a774b1.dtsi b/arch/arm64/boot/dts/renesas/r8a774b1.dtsi
new file mode 100644 (file)
index 0000000..fe78387
--- /dev/null
@@ -0,0 +1,2627 @@
+// SPDX-License-Identifier: GPL-2.0
+/*
+ * Device Tree Source for the r8a774b1 SoC
+ *
+ * Copyright (C) 2019 Renesas Electronics Corp.
+ */
+
+#include <dt-bindings/interrupt-controller/irq.h>
+#include <dt-bindings/interrupt-controller/arm-gic.h>
+#include <dt-bindings/clock/r8a774b1-cpg-mssr.h>
+#include <dt-bindings/power/r8a774b1-sysc.h>
+
+/ {
+       compatible = "renesas,r8a774b1";
+       #address-cells = <2>;
+       #size-cells = <2>;
+
+       /*
+        * The external audio clocks are configured as 0 Hz fixed frequency
+        * clocks by default.
+        * Boards that provide audio clocks should override them.
+        */
+       audio_clk_a: audio_clk_a {
+               compatible = "fixed-clock";
+               #clock-cells = <0>;
+               clock-frequency = <0>;
+       };
+
+       audio_clk_b: audio_clk_b {
+               compatible = "fixed-clock";
+               #clock-cells = <0>;
+               clock-frequency = <0>;
+       };
+
+       audio_clk_c: audio_clk_c {
+               compatible = "fixed-clock";
+               #clock-cells = <0>;
+               clock-frequency = <0>;
+       };
+
+       /* External CAN clock - to be overridden by boards that provide it */
+       can_clk: can {
+               compatible = "fixed-clock";
+               #clock-cells = <0>;
+               clock-frequency = <0>;
+       };
+
+       cluster0_opp: opp_table0 {
+               compatible = "operating-points-v2";
+               opp-shared;
+
+               opp-500000000 {
+                       opp-hz = /bits/ 64 <500000000>;
+                       opp-microvolt = <830000>;
+                       clock-latency-ns = <300000>;
+               };
+               opp-1000000000 {
+                       opp-hz = /bits/ 64 <1000000000>;
+                       opp-microvolt = <830000>;
+                       clock-latency-ns = <300000>;
+               };
+               opp-1500000000 {
+                       opp-hz = /bits/ 64 <1500000000>;
+                       opp-microvolt = <830000>;
+                       clock-latency-ns = <300000>;
+                       opp-suspend;
+               };
+       };
+
+       cpus {
+               #address-cells = <1>;
+               #size-cells = <0>;
+
+               a57_0: cpu@0 {
+                       compatible = "arm,cortex-a57";
+                       reg = <0x0>;
+                       device_type = "cpu";
+                       power-domains = <&sysc R8A774B1_PD_CA57_CPU0>;
+                       next-level-cache = <&L2_CA57>;
+                       enable-method = "psci";
+                       #cooling-cells = <2>;
+                       dynamic-power-coefficient = <854>;
+                       clocks = <&cpg CPG_CORE R8A774B1_CLK_Z>;
+                       operating-points-v2 = <&cluster0_opp>;
+               };
+
+               a57_1: cpu@1 {
+                       compatible = "arm,cortex-a57";
+                       reg = <0x1>;
+                       device_type = "cpu";
+                       power-domains = <&sysc R8A774B1_PD_CA57_CPU1>;
+                       next-level-cache = <&L2_CA57>;
+                       enable-method = "psci";
+                       clocks = <&cpg CPG_CORE R8A774B1_CLK_Z>;
+                       operating-points-v2 = <&cluster0_opp>;
+               };
+
+               L2_CA57: cache-controller-0 {
+                       compatible = "cache";
+                       power-domains = <&sysc R8A774B1_PD_CA57_SCU>;
+                       cache-unified;
+                       cache-level = <2>;
+               };
+       };
+
+       extal_clk: extal {
+               compatible = "fixed-clock";
+               #clock-cells = <0>;
+               /* This value must be overridden by the board */
+               clock-frequency = <0>;
+       };
+
+       extalr_clk: extalr {
+               compatible = "fixed-clock";
+               #clock-cells = <0>;
+               /* This value must be overridden by the board */
+               clock-frequency = <0>;
+       };
+
+       /* External PCIe clock - can be overridden by the board */
+       pcie_bus_clk: pcie_bus {
+               compatible = "fixed-clock";
+               #clock-cells = <0>;
+               clock-frequency = <0>;
+       };
+
+       pmu_a57 {
+               compatible = "arm,cortex-a57-pmu";
+               interrupts-extended = <&gic GIC_SPI 72 IRQ_TYPE_LEVEL_HIGH>,
+                                     <&gic GIC_SPI 73 IRQ_TYPE_LEVEL_HIGH>;
+               interrupt-affinity = <&a57_0>, <&a57_1>;
+       };
+
+       psci {
+               compatible = "arm,psci-1.0", "arm,psci-0.2";
+               method = "smc";
+       };
+
+       /* External SCIF clock - to be overridden by boards that provide it */
+       scif_clk: scif {
+               compatible = "fixed-clock";
+               #clock-cells = <0>;
+               clock-frequency = <0>;
+       };
+
+       soc {
+               compatible = "simple-bus";
+               interrupt-parent = <&gic>;
+               #address-cells = <2>;
+               #size-cells = <2>;
+               ranges;
+
+               rwdt: watchdog@e6020000 {
+                       compatible = "renesas,r8a774b1-wdt",
+                                    "renesas,rcar-gen3-wdt";
+                       reg = <0 0xe6020000 0 0x0c>;
+                       clocks = <&cpg CPG_MOD 402>;
+                       power-domains = <&sysc R8A774B1_PD_ALWAYS_ON>;
+                       resets = <&cpg 402>;
+                       status = "disabled";
+               };
+
+               gpio0: gpio@e6050000 {
+                       compatible = "renesas,gpio-r8a774b1",
+                                    "renesas,rcar-gen3-gpio";
+                       reg = <0 0xe6050000 0 0x50>;
+                       interrupts = <GIC_SPI 4 IRQ_TYPE_LEVEL_HIGH>;
+                       #gpio-cells = <2>;
+                       gpio-controller;
+                       gpio-ranges = <&pfc 0 0 16>;
+                       #interrupt-cells = <2>;
+                       interrupt-controller;
+                       clocks = <&cpg CPG_MOD 912>;
+                       power-domains = <&sysc R8A774B1_PD_ALWAYS_ON>;
+                       resets = <&cpg 912>;
+               };
+
+               gpio1: gpio@e6051000 {
+                       compatible = "renesas,gpio-r8a774b1",
+                                    "renesas,rcar-gen3-gpio";
+                       reg = <0 0xe6051000 0 0x50>;
+                       interrupts = <GIC_SPI 5 IRQ_TYPE_LEVEL_HIGH>;
+                       #gpio-cells = <2>;
+                       gpio-controller;
+                       gpio-ranges = <&pfc 0 32 29>;
+                       #interrupt-cells = <2>;
+                       interrupt-controller;
+                       clocks = <&cpg CPG_MOD 911>;
+                       power-domains = <&sysc R8A774B1_PD_ALWAYS_ON>;
+                       resets = <&cpg 911>;
+               };
+
+               gpio2: gpio@e6052000 {
+                       compatible = "renesas,gpio-r8a774b1",
+                                    "renesas,rcar-gen3-gpio";
+                       reg = <0 0xe6052000 0 0x50>;
+                       interrupts = <GIC_SPI 6 IRQ_TYPE_LEVEL_HIGH>;
+                       #gpio-cells = <2>;
+                       gpio-controller;
+                       gpio-ranges = <&pfc 0 64 15>;
+                       #interrupt-cells = <2>;
+                       interrupt-controller;
+                       clocks = <&cpg CPG_MOD 910>;
+                       power-domains = <&sysc R8A774B1_PD_ALWAYS_ON>;
+                       resets = <&cpg 910>;
+               };
+
+               gpio3: gpio@e6053000 {
+                       compatible = "renesas,gpio-r8a774b1",
+                                    "renesas,rcar-gen3-gpio";
+                       reg = <0 0xe6053000 0 0x50>;
+                       interrupts = <GIC_SPI 7 IRQ_TYPE_LEVEL_HIGH>;
+                       #gpio-cells = <2>;
+                       gpio-controller;
+                       gpio-ranges = <&pfc 0 96 16>;
+                       #interrupt-cells = <2>;
+                       interrupt-controller;
+                       clocks = <&cpg CPG_MOD 909>;
+                       power-domains = <&sysc R8A774B1_PD_ALWAYS_ON>;
+                       resets = <&cpg 909>;
+               };
+
+               gpio4: gpio@e6054000 {
+                       compatible = "renesas,gpio-r8a774b1",
+                                    "renesas,rcar-gen3-gpio";
+                       reg = <0 0xe6054000 0 0x50>;
+                       interrupts = <GIC_SPI 8 IRQ_TYPE_LEVEL_HIGH>;
+                       #gpio-cells = <2>;
+                       gpio-controller;
+                       gpio-ranges = <&pfc 0 128 18>;
+                       #interrupt-cells = <2>;
+                       interrupt-controller;
+                       clocks = <&cpg CPG_MOD 908>;
+                       power-domains = <&sysc R8A774B1_PD_ALWAYS_ON>;
+                       resets = <&cpg 908>;
+               };
+
+               gpio5: gpio@e6055000 {
+                       compatible = "renesas,gpio-r8a774b1",
+                                    "renesas,rcar-gen3-gpio";
+                       reg = <0 0xe6055000 0 0x50>;
+                       interrupts = <GIC_SPI 9 IRQ_TYPE_LEVEL_HIGH>;
+                       #gpio-cells = <2>;
+                       gpio-controller;
+                       gpio-ranges = <&pfc 0 160 26>;
+                       #interrupt-cells = <2>;
+                       interrupt-controller;
+                       clocks = <&cpg CPG_MOD 907>;
+                       power-domains = <&sysc R8A774B1_PD_ALWAYS_ON>;
+                       resets = <&cpg 907>;
+               };
+
+               gpio6: gpio@e6055400 {
+                       compatible = "renesas,gpio-r8a774b1",
+                                    "renesas,rcar-gen3-gpio";
+                       reg = <0 0xe6055400 0 0x50>;
+                       interrupts = <GIC_SPI 10 IRQ_TYPE_LEVEL_HIGH>;
+                       #gpio-cells = <2>;
+                       gpio-controller;
+                       gpio-ranges = <&pfc 0 192 32>;
+                       #interrupt-cells = <2>;
+                       interrupt-controller;
+                       clocks = <&cpg CPG_MOD 906>;
+                       power-domains = <&sysc R8A774B1_PD_ALWAYS_ON>;
+                       resets = <&cpg 906>;
+               };
+
+               gpio7: gpio@e6055800 {
+                       compatible = "renesas,gpio-r8a774b1",
+                                    "renesas,rcar-gen3-gpio";
+                       reg = <0 0xe6055800 0 0x50>;
+                       interrupts = <GIC_SPI 11 IRQ_TYPE_LEVEL_HIGH>;
+                       #gpio-cells = <2>;
+                       gpio-controller;
+                       gpio-ranges = <&pfc 0 224 4>;
+                       #interrupt-cells = <2>;
+                       interrupt-controller;
+                       clocks = <&cpg CPG_MOD 905>;
+                       power-domains = <&sysc R8A774B1_PD_ALWAYS_ON>;
+                       resets = <&cpg 905>;
+               };
+
+               pfc: pin-controller@e6060000 {
+                       compatible = "renesas,pfc-r8a774b1";
+                       reg = <0 0xe6060000 0 0x50c>;
+               };
+
+               cmt0: timer@e60f0000 {
+                       compatible = "renesas,r8a774b1-cmt0",
+                                    "renesas,rcar-gen3-cmt0";
+                       reg = <0 0xe60f0000 0 0x1004>;
+                       interrupts = <GIC_SPI 142 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 143 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&cpg CPG_MOD 303>;
+                       clock-names = "fck";
+                       power-domains = <&sysc R8A774B1_PD_ALWAYS_ON>;
+                       resets = <&cpg 303>;
+                       status = "disabled";
+               };
+
+               cmt1: timer@e6130000 {
+                       compatible = "renesas,r8a774b1-cmt1",
+                                    "renesas,rcar-gen3-cmt1";
+                       reg = <0 0xe6130000 0 0x1004>;
+                       interrupts = <GIC_SPI 120 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 121 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 122 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 123 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 124 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 125 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 126 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 127 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&cpg CPG_MOD 302>;
+                       clock-names = "fck";
+                       power-domains = <&sysc R8A774B1_PD_ALWAYS_ON>;
+                       resets = <&cpg 302>;
+                       status = "disabled";
+               };
+
+               cmt2: timer@e6140000 {
+                       compatible = "renesas,r8a774b1-cmt1",
+                                    "renesas,rcar-gen3-cmt1";
+                       reg = <0 0xe6140000 0 0x1004>;
+                       interrupts = <GIC_SPI 398 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 399 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 400 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>;
+                       clocks = <&cpg CPG_MOD 301>;
+                       clock-names = "fck";
+                       power-domains = <&sysc R8A774B1_PD_ALWAYS_ON>;
+                       resets = <&cpg 301>;
+                       status = "disabled";
+               };
+
+               cmt3: timer@e6148000 {
+                       compatible = "renesas,r8a774b1-cmt1",
+                                    "renesas,rcar-gen3-cmt1";
+                       reg = <0 0xe6148000 0 0x1004>;
+                       interrupts = <GIC_SPI 470 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 471 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 472 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 473 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 474 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 475 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 476 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 477 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&cpg CPG_MOD 300>;
+                       clock-names = "fck";
+                       power-domains = <&sysc R8A774B1_PD_ALWAYS_ON>;
+                       resets = <&cpg 300>;
+                       status = "disabled";
+               };
+
+               cpg: clock-controller@e6150000 {
+                       compatible = "renesas,r8a774b1-cpg-mssr";
+                       reg = <0 0xe6150000 0 0x1000>;
+                       clocks = <&extal_clk>, <&extalr_clk>;
+                       clock-names = "extal", "extalr";
+                       #clock-cells = <2>;
+                       #power-domain-cells = <0>;
+                       #reset-cells = <1>;
+               };
+
+               rst: reset-controller@e6160000 {
+                       compatible = "renesas,r8a774b1-rst";
+                       reg = <0 0xe6160000 0 0x0200>;
+               };
+
+               sysc: system-controller@e6180000 {
+                       compatible = "renesas,r8a774b1-sysc";
+                       reg = <0 0xe6180000 0 0x0400>;
+                       #power-domain-cells = <1>;
+               };
+
+               tsc: thermal@e6198000 {
+                       compatible = "renesas,r8a774b1-thermal";
+                       reg = <0 0xe6198000 0 0x100>,
+                             <0 0xe61a0000 0 0x100>,
+                             <0 0xe61a8000 0 0x100>;
+                       interrupts = <GIC_SPI 67 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 68 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 69 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&cpg CPG_MOD 522>;
+                       power-domains = <&sysc R8A774B1_PD_ALWAYS_ON>;
+                       resets = <&cpg 522>;
+                       #thermal-sensor-cells = <1>;
+               };
+
+               intc_ex: interrupt-controller@e61c0000 {
+                       compatible = "renesas,intc-ex-r8a774b1", "renesas,irqc";
+                       #interrupt-cells = <2>;
+                       interrupt-controller;
+                       reg = <0 0xe61c0000 0 0x200>;
+                       interrupts = <GIC_SPI 0 IRQ_TYPE_LEVEL_HIGH
+                                     GIC_SPI 1 IRQ_TYPE_LEVEL_HIGH
+                                     GIC_SPI 2 IRQ_TYPE_LEVEL_HIGH
+                                     GIC_SPI 3 IRQ_TYPE_LEVEL_HIGH
+                                     GIC_SPI 18 IRQ_TYPE_LEVEL_HIGH
+                                     GIC_SPI 161 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&cpg CPG_MOD 407>;
+                       power-domains = <&sysc R8A774B1_PD_ALWAYS_ON>;
+                       resets = <&cpg 407>;
+               };
+
+               tmu0: timer@e61e0000 {
+                       compatible = "renesas,tmu-r8a774b1", "renesas,tmu";
+                       reg = <0 0xe61e0000 0 0x30>;
+                       interrupts = <GIC_SPI 136 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 137 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 138 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&cpg CPG_MOD 125>;
+                       clock-names = "fck";
+                       power-domains = <&sysc R8A774B1_PD_ALWAYS_ON>;
+                       resets = <&cpg 125>;
+                       status = "disabled";
+               };
+
+               tmu1: timer@e6fc0000 {
+                       compatible = "renesas,tmu-r8a774b1", "renesas,tmu";
+                       reg = <0 0xe6fc0000 0 0x30>;
+                       interrupts = <GIC_SPI 128 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 129 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 130 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&cpg CPG_MOD 124>;
+                       clock-names = "fck";
+                       power-domains = <&sysc R8A774B1_PD_ALWAYS_ON>;
+                       resets = <&cpg 124>;
+                       status = "disabled";
+               };
+
+               tmu2: timer@e6fd0000 {
+                       compatible = "renesas,tmu-r8a774b1", "renesas,tmu";
+                       reg = <0 0xe6fd0000 0 0x30>;
+                       interrupts = <GIC_SPI 303 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 304 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 305 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&cpg CPG_MOD 123>;
+                       clock-names = "fck";
+                       power-domains = <&sysc R8A774B1_PD_ALWAYS_ON>;
+                       resets = <&cpg 123>;
+                       status = "disabled";
+               };
+
+               tmu3: timer@e6fe0000 {
+                       compatible = "renesas,tmu-r8a774b1", "renesas,tmu";
+                       reg = <0 0xe6fe0000 0 0x30>;
+                       interrupts = <GIC_SPI 131 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 132 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 133 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&cpg CPG_MOD 122>;
+                       clock-names = "fck";
+                       power-domains = <&sysc R8A774B1_PD_ALWAYS_ON>;
+                       resets = <&cpg 122>;
+                       status = "disabled";
+               };
+
+               tmu4: timer@ffc00000 {
+                       compatible = "renesas,tmu-r8a774b1", "renesas,tmu";
+                       reg = <0 0xffc00000 0 0x30>;
+                       interrupts = <GIC_SPI 406 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 407 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 408 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&cpg CPG_MOD 121>;
+                       clock-names = "fck";
+                       power-domains = <&sysc R8A774B1_PD_ALWAYS_ON>;
+                       resets = <&cpg 121>;
+                       status = "disabled";
+               };
+
+               i2c0: i2c@e6500000 {
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       compatible = "renesas,i2c-r8a774b1",
+                                    "renesas,rcar-gen3-i2c";
+                       reg = <0 0xe6500000 0 0x40>;
+                       interrupts = <GIC_SPI 287 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&cpg CPG_MOD 931>;
+                       power-domains = <&sysc R8A774B1_PD_ALWAYS_ON>;
+                       resets = <&cpg 931>;
+                       dmas = <&dmac1 0x91>, <&dmac1 0x90>,
+                              <&dmac2 0x91>, <&dmac2 0x90>;
+                       dma-names = "tx", "rx", "tx", "rx";
+                       i2c-scl-internal-delay-ns = <110>;
+                       status = "disabled";
+               };
+
+               i2c1: i2c@e6508000 {
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       compatible = "renesas,i2c-r8a774b1",
+                                    "renesas,rcar-gen3-i2c";
+                       reg = <0 0xe6508000 0 0x40>;
+                       interrupts = <GIC_SPI 288 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&cpg CPG_MOD 930>;
+                       power-domains = <&sysc R8A774B1_PD_ALWAYS_ON>;
+                       resets = <&cpg 930>;
+                       dmas = <&dmac1 0x93>, <&dmac1 0x92>,
+                              <&dmac2 0x93>, <&dmac2 0x92>;
+                       dma-names = "tx", "rx", "tx", "rx";
+                       i2c-scl-internal-delay-ns = <6>;
+                       status = "disabled";
+               };
+
+               i2c2: i2c@e6510000 {
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       compatible = "renesas,i2c-r8a774b1",
+                                    "renesas,rcar-gen3-i2c";
+                       reg = <0 0xe6510000 0 0x40>;
+                       interrupts = <GIC_SPI 286 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&cpg CPG_MOD 929>;
+                       power-domains = <&sysc R8A774B1_PD_ALWAYS_ON>;
+                       resets = <&cpg 929>;
+                       dmas = <&dmac1 0x95>, <&dmac1 0x94>,
+                              <&dmac2 0x95>, <&dmac2 0x94>;
+                       dma-names = "tx", "rx", "tx", "rx";
+                       i2c-scl-internal-delay-ns = <6>;
+                       status = "disabled";
+               };
+
+               i2c3: i2c@e66d0000 {
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       compatible = "renesas,i2c-r8a774b1",
+                                    "renesas,rcar-gen3-i2c";
+                       reg = <0 0xe66d0000 0 0x40>;
+                       interrupts = <GIC_SPI 290 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&cpg CPG_MOD 928>;
+                       power-domains = <&sysc R8A774B1_PD_ALWAYS_ON>;
+                       resets = <&cpg 928>;
+                       dmas = <&dmac0 0x97>, <&dmac0 0x96>;
+                       dma-names = "tx", "rx";
+                       i2c-scl-internal-delay-ns = <110>;
+                       status = "disabled";
+               };
+
+               i2c4: i2c@e66d8000 {
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       compatible = "renesas,i2c-r8a774b1",
+                                    "renesas,rcar-gen3-i2c";
+                       reg = <0 0xe66d8000 0 0x40>;
+                       interrupts = <GIC_SPI 19 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&cpg CPG_MOD 927>;
+                       power-domains = <&sysc R8A774B1_PD_ALWAYS_ON>;
+                       resets = <&cpg 927>;
+                       dmas = <&dmac0 0x99>, <&dmac0 0x98>;
+                       dma-names = "tx", "rx";
+                       i2c-scl-internal-delay-ns = <110>;
+                       status = "disabled";
+               };
+
+               i2c5: i2c@e66e0000 {
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       compatible = "renesas,i2c-r8a774b1",
+                                    "renesas,rcar-gen3-i2c";
+                       reg = <0 0xe66e0000 0 0x40>;
+                       interrupts = <GIC_SPI 20 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&cpg CPG_MOD 919>;
+                       power-domains = <&sysc R8A774B1_PD_ALWAYS_ON>;
+                       resets = <&cpg 919>;
+                       dmas = <&dmac0 0x9b>, <&dmac0 0x9a>;
+                       dma-names = "tx", "rx";
+                       i2c-scl-internal-delay-ns = <110>;
+                       status = "disabled";
+               };
+
+               i2c6: i2c@e66e8000 {
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       compatible = "renesas,i2c-r8a774b1",
+                                    "renesas,rcar-gen3-i2c";
+                       reg = <0 0xe66e8000 0 0x40>;
+                       interrupts = <GIC_SPI 21 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&cpg CPG_MOD 918>;
+                       power-domains = <&sysc R8A774B1_PD_ALWAYS_ON>;
+                       resets = <&cpg 918>;
+                       dmas = <&dmac0 0x9d>, <&dmac0 0x9c>;
+                       dma-names = "tx", "rx";
+                       i2c-scl-internal-delay-ns = <6>;
+                       status = "disabled";
+               };
+
+               i2c_dvfs: i2c@e60b0000 {
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       compatible = "renesas,iic-r8a774b1",
+                                    "renesas,rcar-gen3-iic",
+                                    "renesas,rmobile-iic";
+                       reg = <0 0xe60b0000 0 0x425>;
+                       interrupts = <GIC_SPI 173 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&cpg CPG_MOD 926>;
+                       power-domains = <&sysc R8A774B1_PD_ALWAYS_ON>;
+                       resets = <&cpg 926>;
+                       dmas = <&dmac0 0x11>, <&dmac0 0x10>;
+                       dma-names = "tx", "rx";
+                       status = "disabled";
+               };
+
+               hscif0: serial@e6540000 {
+                       compatible = "renesas,hscif-r8a774b1",
+                                    "renesas,rcar-gen3-hscif",
+                                    "renesas,hscif";
+                       reg = <0 0xe6540000 0 0x60>;
+                       interrupts = <GIC_SPI 154 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&cpg CPG_MOD 520>,
+                                <&cpg CPG_CORE R8A774B1_CLK_S3D1>,
+                                <&scif_clk>;
+                       clock-names = "fck", "brg_int", "scif_clk";
+                       dmas = <&dmac1 0x31>, <&dmac1 0x30>,
+                              <&dmac2 0x31>, <&dmac2 0x30>;
+                       dma-names = "tx", "rx", "tx", "rx";
+                       power-domains = <&sysc R8A774B1_PD_ALWAYS_ON>;
+                       resets = <&cpg 520>;
+                       status = "disabled";
+               };
+
+               hscif1: serial@e6550000 {
+                       compatible = "renesas,hscif-r8a774b1",
+                                    "renesas,rcar-gen3-hscif",
+                                    "renesas,hscif";
+                       reg = <0 0xe6550000 0 0x60>;
+                       interrupts = <GIC_SPI 155 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&cpg CPG_MOD 519>,
+                                <&cpg CPG_CORE R8A774B1_CLK_S3D1>,
+                                <&scif_clk>;
+                       clock-names = "fck", "brg_int", "scif_clk";
+                       dmas = <&dmac1 0x33>, <&dmac1 0x32>,
+                              <&dmac2 0x33>, <&dmac2 0x32>;
+                       dma-names = "tx", "rx", "tx", "rx";
+                       power-domains = <&sysc R8A774B1_PD_ALWAYS_ON>;
+                       resets = <&cpg 519>;
+                       status = "disabled";
+               };
+
+               hscif2: serial@e6560000 {
+                       compatible = "renesas,hscif-r8a774b1",
+                                    "renesas,rcar-gen3-hscif",
+                                    "renesas,hscif";
+                       reg = <0 0xe6560000 0 0x60>;
+                       interrupts = <GIC_SPI 144 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&cpg CPG_MOD 518>,
+                                <&cpg CPG_CORE R8A774B1_CLK_S3D1>,
+                                <&scif_clk>;
+                       clock-names = "fck", "brg_int", "scif_clk";
+                       dmas = <&dmac1 0x35>, <&dmac1 0x34>,
+                              <&dmac2 0x35>, <&dmac2 0x34>;
+                       dma-names = "tx", "rx", "tx", "rx";
+                       power-domains = <&sysc R8A774B1_PD_ALWAYS_ON>;
+                       resets = <&cpg 518>;
+                       status = "disabled";
+               };
+
+               hscif3: serial@e66a0000 {
+                       compatible = "renesas,hscif-r8a774b1",
+                                    "renesas,rcar-gen3-hscif",
+                                    "renesas,hscif";
+                       reg = <0 0xe66a0000 0 0x60>;
+                       interrupts = <GIC_SPI 145 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&cpg CPG_MOD 517>,
+                                <&cpg CPG_CORE R8A774B1_CLK_S3D1>,
+                                <&scif_clk>;
+                       clock-names = "fck", "brg_int", "scif_clk";
+                       dmas = <&dmac0 0x37>, <&dmac0 0x36>;
+                       dma-names = "tx", "rx";
+                       power-domains = <&sysc R8A774B1_PD_ALWAYS_ON>;
+                       resets = <&cpg 517>;
+                       status = "disabled";
+               };
+
+               hscif4: serial@e66b0000 {
+                       compatible = "renesas,hscif-r8a774b1",
+                                    "renesas,rcar-gen3-hscif",
+                                    "renesas,hscif";
+                       reg = <0 0xe66b0000 0 0x60>;
+                       interrupts = <GIC_SPI 146 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&cpg CPG_MOD 516>,
+                                <&cpg CPG_CORE R8A774B1_CLK_S3D1>,
+                                <&scif_clk>;
+                       clock-names = "fck", "brg_int", "scif_clk";
+                       dmas = <&dmac0 0x39>, <&dmac0 0x38>;
+                       dma-names = "tx", "rx";
+                       power-domains = <&sysc R8A774B1_PD_ALWAYS_ON>;
+                       resets = <&cpg 516>;
+                       status = "disabled";
+               };
+
+               hsusb: usb@e6590000 {
+                       compatible = "renesas,usbhs-r8a774b1",
+                                    "renesas,rcar-gen3-usbhs";
+                       reg = <0 0xe6590000 0 0x200>;
+                       interrupts = <GIC_SPI 107 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&cpg CPG_MOD 704>, <&cpg CPG_MOD 703>;
+                       dmas = <&usb_dmac0 0>, <&usb_dmac0 1>,
+                              <&usb_dmac1 0>, <&usb_dmac1 1>;
+                       dma-names = "ch0", "ch1", "ch2", "ch3";
+                       renesas,buswait = <11>;
+                       phys = <&usb2_phy0 3>;
+                       phy-names = "usb";
+                       power-domains = <&sysc R8A774B1_PD_ALWAYS_ON>;
+                       resets = <&cpg 704>, <&cpg 703>;
+                       status = "disabled";
+               };
+
+               usb_dmac0: dma-controller@e65a0000 {
+                       compatible = "renesas,r8a774b1-usb-dmac",
+                                    "renesas,usb-dmac";
+                       reg = <0 0xe65a0000 0 0x100>;
+                       interrupts = <GIC_SPI 109 IRQ_TYPE_LEVEL_HIGH
+                                     GIC_SPI 109 IRQ_TYPE_LEVEL_HIGH>;
+                       interrupt-names = "ch0", "ch1";
+                       clocks = <&cpg CPG_MOD 330>;
+                       power-domains = <&sysc R8A774B1_PD_ALWAYS_ON>;
+                       resets = <&cpg 330>;
+                       #dma-cells = <1>;
+                       dma-channels = <2>;
+               };
+
+               usb_dmac1: dma-controller@e65b0000 {
+                       compatible = "renesas,r8a774b1-usb-dmac",
+                                    "renesas,usb-dmac";
+                       reg = <0 0xe65b0000 0 0x100>;
+                       interrupts = <GIC_SPI 110 IRQ_TYPE_LEVEL_HIGH
+                                     GIC_SPI 110 IRQ_TYPE_LEVEL_HIGH>;
+                       interrupt-names = "ch0", "ch1";
+                       clocks = <&cpg CPG_MOD 331>;
+                       power-domains = <&sysc R8A774B1_PD_ALWAYS_ON>;
+                       resets = <&cpg 331>;
+                       #dma-cells = <1>;
+                       dma-channels = <2>;
+               };
+
+               usb3_phy0: usb-phy@e65ee000 {
+                       compatible = "renesas,r8a774b1-usb3-phy",
+                                    "renesas,rcar-gen3-usb3-phy";
+                       reg = <0 0xe65ee000 0 0x90>;
+                       clocks = <&cpg CPG_MOD 328>, <&usb3s0_clk>,
+                                <&usb_extal_clk>;
+                       clock-names = "usb3-if", "usb3s_clk", "usb_extal";
+                       power-domains = <&sysc R8A774B1_PD_ALWAYS_ON>;
+                       resets = <&cpg 328>;
+                       #phy-cells = <0>;
+                       status = "disabled";
+               };
+
+               dmac0: dma-controller@e6700000 {
+                       compatible = "renesas,dmac-r8a774b1",
+                                    "renesas,rcar-dmac";
+                       reg = <0 0xe6700000 0 0x10000>;
+                       interrupts = <GIC_SPI 199 IRQ_TYPE_LEVEL_HIGH
+                                     GIC_SPI 200 IRQ_TYPE_LEVEL_HIGH
+                                     GIC_SPI 201 IRQ_TYPE_LEVEL_HIGH
+                                     GIC_SPI 202 IRQ_TYPE_LEVEL_HIGH
+                                     GIC_SPI 203 IRQ_TYPE_LEVEL_HIGH
+                                     GIC_SPI 204 IRQ_TYPE_LEVEL_HIGH
+                                     GIC_SPI 205 IRQ_TYPE_LEVEL_HIGH
+                                     GIC_SPI 206 IRQ_TYPE_LEVEL_HIGH
+                                     GIC_SPI 207 IRQ_TYPE_LEVEL_HIGH
+                                     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>;
+                       interrupt-names = "error",
+                                       "ch0", "ch1", "ch2", "ch3",
+                                       "ch4", "ch5", "ch6", "ch7",
+                                       "ch8", "ch9", "ch10", "ch11",
+                                       "ch12", "ch13", "ch14", "ch15";
+                       clocks = <&cpg CPG_MOD 219>;
+                       clock-names = "fck";
+                       power-domains = <&sysc R8A774B1_PD_ALWAYS_ON>;
+                       resets = <&cpg 219>;
+                       #dma-cells = <1>;
+                       dma-channels = <16>;
+                       iommus = <&ipmmu_ds0 0>, <&ipmmu_ds0 1>,
+                              <&ipmmu_ds0 2>, <&ipmmu_ds0 3>,
+                              <&ipmmu_ds0 4>, <&ipmmu_ds0 5>,
+                              <&ipmmu_ds0 6>, <&ipmmu_ds0 7>,
+                              <&ipmmu_ds0 8>, <&ipmmu_ds0 9>,
+                              <&ipmmu_ds0 10>, <&ipmmu_ds0 11>,
+                              <&ipmmu_ds0 12>, <&ipmmu_ds0 13>,
+                              <&ipmmu_ds0 14>, <&ipmmu_ds0 15>;
+               };
+
+               dmac1: dma-controller@e7300000 {
+                       compatible = "renesas,dmac-r8a774b1",
+                                    "renesas,rcar-dmac";
+                       reg = <0 0xe7300000 0 0x10000>;
+                       interrupts = <GIC_SPI 220 IRQ_TYPE_LEVEL_HIGH
+                                     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 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>;
+                       interrupt-names = "error",
+                                       "ch0", "ch1", "ch2", "ch3",
+                                       "ch4", "ch5", "ch6", "ch7",
+                                       "ch8", "ch9", "ch10", "ch11",
+                                       "ch12", "ch13", "ch14", "ch15";
+                       clocks = <&cpg CPG_MOD 218>;
+                       clock-names = "fck";
+                       power-domains = <&sysc R8A774B1_PD_ALWAYS_ON>;
+                       resets = <&cpg 218>;
+                       #dma-cells = <1>;
+                       dma-channels = <16>;
+                       iommus = <&ipmmu_ds1 0>, <&ipmmu_ds1 1>,
+                              <&ipmmu_ds1 2>, <&ipmmu_ds1 3>,
+                              <&ipmmu_ds1 4>, <&ipmmu_ds1 5>,
+                              <&ipmmu_ds1 6>, <&ipmmu_ds1 7>,
+                              <&ipmmu_ds1 8>, <&ipmmu_ds1 9>,
+                              <&ipmmu_ds1 10>, <&ipmmu_ds1 11>,
+                              <&ipmmu_ds1 12>, <&ipmmu_ds1 13>,
+                              <&ipmmu_ds1 14>, <&ipmmu_ds1 15>;
+               };
+
+               dmac2: dma-controller@e7310000 {
+                       compatible = "renesas,dmac-r8a774b1",
+                                    "renesas,rcar-dmac";
+                       reg = <0 0xe7310000 0 0x10000>;
+                       interrupts = <GIC_SPI 416 IRQ_TYPE_LEVEL_HIGH
+                                     GIC_SPI 417 IRQ_TYPE_LEVEL_HIGH
+                                     GIC_SPI 418 IRQ_TYPE_LEVEL_HIGH
+                                     GIC_SPI 419 IRQ_TYPE_LEVEL_HIGH
+                                     GIC_SPI 420 IRQ_TYPE_LEVEL_HIGH
+                                     GIC_SPI 421 IRQ_TYPE_LEVEL_HIGH
+                                     GIC_SPI 422 IRQ_TYPE_LEVEL_HIGH
+                                     GIC_SPI 423 IRQ_TYPE_LEVEL_HIGH
+                                     GIC_SPI 424 IRQ_TYPE_LEVEL_HIGH
+                                     GIC_SPI 425 IRQ_TYPE_LEVEL_HIGH
+                                     GIC_SPI 426 IRQ_TYPE_LEVEL_HIGH
+                                     GIC_SPI 427 IRQ_TYPE_LEVEL_HIGH
+                                     GIC_SPI 428 IRQ_TYPE_LEVEL_HIGH
+                                     GIC_SPI 429 IRQ_TYPE_LEVEL_HIGH
+                                     GIC_SPI 430 IRQ_TYPE_LEVEL_HIGH
+                                     GIC_SPI 431 IRQ_TYPE_LEVEL_HIGH
+                                     GIC_SPI 397 IRQ_TYPE_LEVEL_HIGH>;
+                       interrupt-names = "error",
+                                       "ch0", "ch1", "ch2", "ch3",
+                                       "ch4", "ch5", "ch6", "ch7",
+                                       "ch8", "ch9", "ch10", "ch11",
+                                       "ch12", "ch13", "ch14", "ch15";
+                       clocks = <&cpg CPG_MOD 217>;
+                       clock-names = "fck";
+                       power-domains = <&sysc R8A774B1_PD_ALWAYS_ON>;
+                       resets = <&cpg 217>;
+                       #dma-cells = <1>;
+                       dma-channels = <16>;
+                       iommus = <&ipmmu_ds1 16>, <&ipmmu_ds1 17>,
+                              <&ipmmu_ds1 18>, <&ipmmu_ds1 19>,
+                              <&ipmmu_ds1 20>, <&ipmmu_ds1 21>,
+                              <&ipmmu_ds1 22>, <&ipmmu_ds1 23>,
+                              <&ipmmu_ds1 24>, <&ipmmu_ds1 25>,
+                              <&ipmmu_ds1 26>, <&ipmmu_ds1 27>,
+                              <&ipmmu_ds1 28>, <&ipmmu_ds1 29>,
+                              <&ipmmu_ds1 30>, <&ipmmu_ds1 31>;
+               };
+
+               ipmmu_ds0: mmu@e6740000 {
+                       compatible = "renesas,ipmmu-r8a774b1";
+                       reg = <0 0xe6740000 0 0x1000>;
+                       renesas,ipmmu-main = <&ipmmu_mm 0>;
+                       power-domains = <&sysc R8A774B1_PD_ALWAYS_ON>;
+                       #iommu-cells = <1>;
+               };
+
+               ipmmu_ds1: mmu@e7740000 {
+                       compatible = "renesas,ipmmu-r8a774b1";
+                       reg = <0 0xe7740000 0 0x1000>;
+                       renesas,ipmmu-main = <&ipmmu_mm 1>;
+                       power-domains = <&sysc R8A774B1_PD_ALWAYS_ON>;
+                       #iommu-cells = <1>;
+               };
+
+               ipmmu_hc: mmu@e6570000 {
+                       compatible = "renesas,ipmmu-r8a774b1";
+                       reg = <0 0xe6570000 0 0x1000>;
+                       renesas,ipmmu-main = <&ipmmu_mm 2>;
+                       power-domains = <&sysc R8A774B1_PD_ALWAYS_ON>;
+                       #iommu-cells = <1>;
+               };
+
+               ipmmu_mm: mmu@e67b0000 {
+                       compatible = "renesas,ipmmu-r8a774b1";
+                       reg = <0 0xe67b0000 0 0x1000>;
+                       interrupts = <GIC_SPI 196 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 197 IRQ_TYPE_LEVEL_HIGH>;
+                       power-domains = <&sysc R8A774B1_PD_ALWAYS_ON>;
+                       #iommu-cells = <1>;
+               };
+
+               ipmmu_mp: mmu@ec670000 {
+                       compatible = "renesas,ipmmu-r8a774b1";
+                       reg = <0 0xec670000 0 0x1000>;
+                       renesas,ipmmu-main = <&ipmmu_mm 4>;
+                       power-domains = <&sysc R8A774B1_PD_ALWAYS_ON>;
+                       #iommu-cells = <1>;
+               };
+
+               ipmmu_pv0: mmu@fd800000 {
+                       compatible = "renesas,ipmmu-r8a774b1";
+                       reg = <0 0xfd800000 0 0x1000>;
+                       renesas,ipmmu-main = <&ipmmu_mm 6>;
+                       power-domains = <&sysc R8A774B1_PD_ALWAYS_ON>;
+                       #iommu-cells = <1>;
+               };
+
+               ipmmu_vc0: mmu@fe6b0000 {
+                       compatible = "renesas,ipmmu-r8a774b1";
+                       reg = <0 0xfe6b0000 0 0x1000>;
+                       renesas,ipmmu-main = <&ipmmu_mm 12>;
+                       power-domains = <&sysc R8A774B1_PD_A3VC>;
+                       #iommu-cells = <1>;
+               };
+
+               ipmmu_vi0: mmu@febd0000 {
+                       compatible = "renesas,ipmmu-r8a774b1";
+                       reg = <0 0xfebd0000 0 0x1000>;
+                       renesas,ipmmu-main = <&ipmmu_mm 14>;
+                       power-domains = <&sysc R8A774B1_PD_ALWAYS_ON>;
+                       #iommu-cells = <1>;
+               };
+
+               ipmmu_vp0: mmu@fe990000 {
+                       compatible = "renesas,ipmmu-r8a774b1";
+                       reg = <0 0xfe990000 0 0x1000>;
+                       renesas,ipmmu-main = <&ipmmu_mm 16>;
+                       power-domains = <&sysc R8A774B1_PD_A3VP>;
+                       #iommu-cells = <1>;
+               };
+
+               avb: ethernet@e6800000 {
+                       compatible = "renesas,etheravb-r8a774b1",
+                                    "renesas,etheravb-rcar-gen3";
+                       reg = <0 0xe6800000 0 0x800>;
+                       interrupts = <GIC_SPI 39 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 40 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 41 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 42 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 43 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 44 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 45 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 46 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 47 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 48 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 49 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 50 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 51 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 52 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 53 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 54 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 55 IRQ_TYPE_LEVEL_HIGH>,
+                                    <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>,
+                                    <GIC_SPI 60 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 61 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 62 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 63 IRQ_TYPE_LEVEL_HIGH>;
+                       interrupt-names = "ch0", "ch1", "ch2", "ch3",
+                                         "ch4", "ch5", "ch6", "ch7",
+                                         "ch8", "ch9", "ch10", "ch11",
+                                         "ch12", "ch13", "ch14", "ch15",
+                                         "ch16", "ch17", "ch18", "ch19",
+                                         "ch20", "ch21", "ch22", "ch23",
+                                         "ch24";
+                       clocks = <&cpg CPG_MOD 812>;
+                       power-domains = <&sysc R8A774B1_PD_ALWAYS_ON>;
+                       resets = <&cpg 812>;
+                       phy-mode = "rgmii";
+                       iommus = <&ipmmu_ds0 16>;
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       status = "disabled";
+               };
+
+               can0: can@e6c30000 {
+                       compatible = "renesas,can-r8a774b1",
+                                    "renesas,rcar-gen3-can";
+                       reg = <0 0xe6c30000 0 0x1000>;
+                       interrupts = <GIC_SPI 186 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&cpg CPG_MOD 916>,
+                                <&cpg CPG_CORE R8A774B1_CLK_CANFD>,
+                                <&can_clk>;
+                       clock-names = "clkp1", "clkp2", "can_clk";
+                       assigned-clocks = <&cpg CPG_CORE R8A774B1_CLK_CANFD>;
+                       assigned-clock-rates = <40000000>;
+                       power-domains = <&sysc R8A774B1_PD_ALWAYS_ON>;
+                       resets = <&cpg 916>;
+                       status = "disabled";
+               };
+
+               can1: can@e6c38000 {
+                       compatible = "renesas,can-r8a774b1",
+                                    "renesas,rcar-gen3-can";
+                       reg = <0 0xe6c38000 0 0x1000>;
+                       interrupts = <GIC_SPI 187 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&cpg CPG_MOD 915>,
+                                <&cpg CPG_CORE R8A774B1_CLK_CANFD>,
+                                <&can_clk>;
+                       clock-names = "clkp1", "clkp2", "can_clk";
+                       assigned-clocks = <&cpg CPG_CORE R8A774B1_CLK_CANFD>;
+                       assigned-clock-rates = <40000000>;
+                       power-domains = <&sysc R8A774B1_PD_ALWAYS_ON>;
+                       resets = <&cpg 915>;
+                       status = "disabled";
+               };
+
+               canfd: can@e66c0000 {
+                       compatible = "renesas,r8a774b1-canfd",
+                                    "renesas,rcar-gen3-canfd";
+                       reg = <0 0xe66c0000 0 0x8000>;
+                       interrupts = <GIC_SPI 29 IRQ_TYPE_LEVEL_HIGH>,
+                                  <GIC_SPI 30 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&cpg CPG_MOD 914>,
+                                <&cpg CPG_CORE R8A774B1_CLK_CANFD>,
+                                <&can_clk>;
+                       clock-names = "fck", "canfd", "can_clk";
+                       assigned-clocks = <&cpg CPG_CORE R8A774B1_CLK_CANFD>;
+                       assigned-clock-rates = <40000000>;
+                       power-domains = <&sysc R8A774B1_PD_ALWAYS_ON>;
+                       resets = <&cpg 914>;
+                       status = "disabled";
+
+                       channel0 {
+                               status = "disabled";
+                       };
+
+                       channel1 {
+                               status = "disabled";
+                       };
+               };
+
+               pwm0: pwm@e6e30000 {
+                       compatible = "renesas,pwm-r8a774b1", "renesas,pwm-rcar";
+                       reg = <0 0xe6e30000 0 0x8>;
+                       #pwm-cells = <2>;
+                       clocks = <&cpg CPG_MOD 523>;
+                       resets = <&cpg 523>;
+                       power-domains = <&sysc R8A774B1_PD_ALWAYS_ON>;
+                       status = "disabled";
+               };
+
+               pwm1: pwm@e6e31000 {
+                       compatible = "renesas,pwm-r8a774b1", "renesas,pwm-rcar";
+                       reg = <0 0xe6e31000 0 0x8>;
+                       #pwm-cells = <2>;
+                       clocks = <&cpg CPG_MOD 523>;
+                       resets = <&cpg 523>;
+                       power-domains = <&sysc R8A774B1_PD_ALWAYS_ON>;
+                       status = "disabled";
+               };
+
+               pwm2: pwm@e6e32000 {
+                       compatible = "renesas,pwm-r8a774b1", "renesas,pwm-rcar";
+                       reg = <0 0xe6e32000 0 0x8>;
+                       #pwm-cells = <2>;
+                       clocks = <&cpg CPG_MOD 523>;
+                       resets = <&cpg 523>;
+                       power-domains = <&sysc R8A774B1_PD_ALWAYS_ON>;
+                       status = "disabled";
+               };
+
+               pwm3: pwm@e6e33000 {
+                       compatible = "renesas,pwm-r8a774b1", "renesas,pwm-rcar";
+                       reg = <0 0xe6e33000 0 0x8>;
+                       #pwm-cells = <2>;
+                       clocks = <&cpg CPG_MOD 523>;
+                       resets = <&cpg 523>;
+                       power-domains = <&sysc R8A774B1_PD_ALWAYS_ON>;
+                       status = "disabled";
+               };
+
+               pwm4: pwm@e6e34000 {
+                       compatible = "renesas,pwm-r8a774b1", "renesas,pwm-rcar";
+                       reg = <0 0xe6e34000 0 0x8>;
+                       #pwm-cells = <2>;
+                       clocks = <&cpg CPG_MOD 523>;
+                       resets = <&cpg 523>;
+                       power-domains = <&sysc R8A774B1_PD_ALWAYS_ON>;
+                       status = "disabled";
+               };
+
+               pwm5: pwm@e6e35000 {
+                       compatible = "renesas,pwm-r8a774b1", "renesas,pwm-rcar";
+                       reg = <0 0xe6e35000 0 0x8>;
+                       #pwm-cells = <2>;
+                       clocks = <&cpg CPG_MOD 523>;
+                       resets = <&cpg 523>;
+                       power-domains = <&sysc R8A774B1_PD_ALWAYS_ON>;
+                       status = "disabled";
+               };
+
+               pwm6: pwm@e6e36000 {
+                       compatible = "renesas,pwm-r8a774b1", "renesas,pwm-rcar";
+                       reg = <0 0xe6e36000 0 0x8>;
+                       #pwm-cells = <2>;
+                       clocks = <&cpg CPG_MOD 523>;
+                       resets = <&cpg 523>;
+                       power-domains = <&sysc R8A774B1_PD_ALWAYS_ON>;
+                       status = "disabled";
+               };
+
+               scif0: serial@e6e60000 {
+                       compatible = "renesas,scif-r8a774b1",
+                                    "renesas,rcar-gen3-scif", "renesas,scif";
+                       reg = <0 0xe6e60000 0 0x40>;
+                       interrupts = <GIC_SPI 152 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&cpg CPG_MOD 207>,
+                                <&cpg CPG_CORE R8A774B1_CLK_S3D1>,
+                                <&scif_clk>;
+                       clock-names = "fck", "brg_int", "scif_clk";
+                       dmas = <&dmac1 0x51>, <&dmac1 0x50>,
+                              <&dmac2 0x51>, <&dmac2 0x50>;
+                       dma-names = "tx", "rx", "tx", "rx";
+                       power-domains = <&sysc R8A774B1_PD_ALWAYS_ON>;
+                       resets = <&cpg 207>;
+                       status = "disabled";
+               };
+
+               scif1: serial@e6e68000 {
+                       compatible = "renesas,scif-r8a774b1",
+                                    "renesas,rcar-gen3-scif", "renesas,scif";
+                       reg = <0 0xe6e68000 0 0x40>;
+                       interrupts = <GIC_SPI 153 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&cpg CPG_MOD 206>,
+                                <&cpg CPG_CORE R8A774B1_CLK_S3D1>,
+                                <&scif_clk>;
+                       clock-names = "fck", "brg_int", "scif_clk";
+                       dmas = <&dmac1 0x53>, <&dmac1 0x52>,
+                              <&dmac2 0x53>, <&dmac2 0x52>;
+                       dma-names = "tx", "rx", "tx", "rx";
+                       power-domains = <&sysc R8A774B1_PD_ALWAYS_ON>;
+                       resets = <&cpg 206>;
+                       status = "disabled";
+               };
+
+               scif2: serial@e6e88000 {
+                       compatible = "renesas,scif-r8a774b1",
+                                    "renesas,rcar-gen3-scif", "renesas,scif";
+                       reg = <0 0xe6e88000 0 0x40>;
+                       interrupts = <GIC_SPI 164 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&cpg CPG_MOD 310>,
+                                <&cpg CPG_CORE R8A774B1_CLK_S3D1>,
+                                <&scif_clk>;
+                       clock-names = "fck", "brg_int", "scif_clk";
+                       dmas = <&dmac1 0x13>, <&dmac1 0x12>,
+                              <&dmac2 0x13>, <&dmac2 0x12>;
+                       dma-names = "tx", "rx", "tx", "rx";
+                       power-domains = <&sysc R8A774B1_PD_ALWAYS_ON>;
+                       resets = <&cpg 310>;
+                       status = "disabled";
+               };
+
+               scif3: serial@e6c50000 {
+                       compatible = "renesas,scif-r8a774b1",
+                                    "renesas,rcar-gen3-scif", "renesas,scif";
+                       reg = <0 0xe6c50000 0 0x40>;
+                       interrupts = <GIC_SPI 23 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&cpg CPG_MOD 204>,
+                                <&cpg CPG_CORE R8A774B1_CLK_S3D1>,
+                                <&scif_clk>;
+                       clock-names = "fck", "brg_int", "scif_clk";
+                       dmas = <&dmac0 0x57>, <&dmac0 0x56>;
+                       dma-names = "tx", "rx";
+                       power-domains = <&sysc R8A774B1_PD_ALWAYS_ON>;
+                       resets = <&cpg 204>;
+                       status = "disabled";
+               };
+
+               scif4: serial@e6c40000 {
+                       compatible = "renesas,scif-r8a774b1",
+                                    "renesas,rcar-gen3-scif", "renesas,scif";
+                       reg = <0 0xe6c40000 0 0x40>;
+                       interrupts = <GIC_SPI 16 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&cpg CPG_MOD 203>,
+                                <&cpg CPG_CORE R8A774B1_CLK_S3D1>,
+                                <&scif_clk>;
+                       clock-names = "fck", "brg_int", "scif_clk";
+                       dmas = <&dmac0 0x59>, <&dmac0 0x58>;
+                       dma-names = "tx", "rx";
+                       power-domains = <&sysc R8A774B1_PD_ALWAYS_ON>;
+                       resets = <&cpg 203>;
+                       status = "disabled";
+               };
+
+               scif5: serial@e6f30000 {
+                       compatible = "renesas,scif-r8a774b1",
+                                    "renesas,rcar-gen3-scif", "renesas,scif";
+                       reg = <0 0xe6f30000 0 0x40>;
+                       interrupts = <GIC_SPI 17 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&cpg CPG_MOD 202>,
+                                <&cpg CPG_CORE R8A774B1_CLK_S3D1>,
+                                <&scif_clk>;
+                       clock-names = "fck", "brg_int", "scif_clk";
+                       dmas = <&dmac1 0x5b>, <&dmac1 0x5a>,
+                              <&dmac2 0x5b>, <&dmac2 0x5a>;
+                       dma-names = "tx", "rx", "tx", "rx";
+                       power-domains = <&sysc R8A774B1_PD_ALWAYS_ON>;
+                       resets = <&cpg 202>;
+                       status = "disabled";
+               };
+
+               msiof0: spi@e6e90000 {
+                       compatible = "renesas,msiof-r8a774b1",
+                                    "renesas,rcar-gen3-msiof";
+                       reg = <0 0xe6e90000 0 0x0064>;
+                       interrupts = <GIC_SPI 156 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&cpg CPG_MOD 211>;
+                       dmas = <&dmac1 0x41>, <&dmac1 0x40>,
+                              <&dmac2 0x41>, <&dmac2 0x40>;
+                       dma-names = "tx", "rx", "tx", "rx";
+                       power-domains = <&sysc R8A774B1_PD_ALWAYS_ON>;
+                       resets = <&cpg 211>;
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       status = "disabled";
+               };
+
+               msiof1: spi@e6ea0000 {
+                       compatible = "renesas,msiof-r8a774b1",
+                                    "renesas,rcar-gen3-msiof";
+                       reg = <0 0xe6ea0000 0 0x0064>;
+                       interrupts = <GIC_SPI 157 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&cpg CPG_MOD 210>;
+                       dmas = <&dmac1 0x43>, <&dmac1 0x42>,
+                              <&dmac2 0x43>, <&dmac2 0x42>;
+                       dma-names = "tx", "rx", "tx", "rx";
+                       power-domains = <&sysc R8A774B1_PD_ALWAYS_ON>;
+                       resets = <&cpg 210>;
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       status = "disabled";
+               };
+
+               msiof2: spi@e6c00000 {
+                       compatible = "renesas,msiof-r8a774b1",
+                                    "renesas,rcar-gen3-msiof";
+                       reg = <0 0xe6c00000 0 0x0064>;
+                       interrupts = <GIC_SPI 158 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&cpg CPG_MOD 209>;
+                       dmas = <&dmac0 0x45>, <&dmac0 0x44>;
+                       dma-names = "tx", "rx";
+                       power-domains = <&sysc R8A774B1_PD_ALWAYS_ON>;
+                       resets = <&cpg 209>;
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       status = "disabled";
+               };
+
+               msiof3: spi@e6c10000 {
+                       compatible = "renesas,msiof-r8a774b1",
+                                    "renesas,rcar-gen3-msiof";
+                       reg = <0 0xe6c10000 0 0x0064>;
+                       interrupts = <GIC_SPI 159 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&cpg CPG_MOD 208>;
+                       dmas = <&dmac0 0x47>, <&dmac0 0x46>;
+                       dma-names = "tx", "rx";
+                       power-domains = <&sysc R8A774B1_PD_ALWAYS_ON>;
+                       resets = <&cpg 208>;
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       status = "disabled";
+               };
+
+               vin0: video@e6ef0000 {
+                       compatible = "renesas,vin-r8a774b1";
+                       reg = <0 0xe6ef0000 0 0x1000>;
+                       interrupts = <GIC_SPI 188 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&cpg CPG_MOD 811>;
+                       power-domains = <&sysc R8A774B1_PD_ALWAYS_ON>;
+                       resets = <&cpg 811>;
+                       renesas,id = <0>;
+                       status = "disabled";
+
+                       ports {
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+
+                               port@1 {
+                                       #address-cells = <1>;
+                                       #size-cells = <0>;
+
+                                       reg = <1>;
+
+                                       vin0csi20: endpoint@0 {
+                                               reg = <0>;
+                                               remote-endpoint = <&csi20vin0>;
+                                       };
+                                       vin0csi40: endpoint@2 {
+                                               reg = <2>;
+                                               remote-endpoint = <&csi40vin0>;
+                                       };
+                               };
+                       };
+               };
+
+               vin1: video@e6ef1000 {
+                       compatible = "renesas,vin-r8a774b1";
+                       reg = <0 0xe6ef1000 0 0x1000>;
+                       interrupts = <GIC_SPI 189 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&cpg CPG_MOD 810>;
+                       power-domains = <&sysc R8A774B1_PD_ALWAYS_ON>;
+                       resets = <&cpg 810>;
+                       renesas,id = <1>;
+                       status = "disabled";
+
+                       ports {
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+
+                               port@1 {
+                                       #address-cells = <1>;
+                                       #size-cells = <0>;
+
+                                       reg = <1>;
+
+                                       vin1csi20: endpoint@0 {
+                                               reg = <0>;
+                                               remote-endpoint = <&csi20vin1>;
+                                       };
+                                       vin1csi40: endpoint@2 {
+                                               reg = <2>;
+                                               remote-endpoint = <&csi40vin1>;
+                                       };
+                               };
+                       };
+               };
+
+               vin2: video@e6ef2000 {
+                       compatible = "renesas,vin-r8a774b1";
+                       reg = <0 0xe6ef2000 0 0x1000>;
+                       interrupts = <GIC_SPI 190 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&cpg CPG_MOD 809>;
+                       power-domains = <&sysc R8A774B1_PD_ALWAYS_ON>;
+                       resets = <&cpg 809>;
+                       renesas,id = <2>;
+                       status = "disabled";
+
+                       ports {
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+
+                               port@1 {
+                                       #address-cells = <1>;
+                                       #size-cells = <0>;
+
+                                       reg = <1>;
+
+                                       vin2csi20: endpoint@0 {
+                                               reg = <0>;
+                                               remote-endpoint = <&csi20vin2>;
+                                       };
+                                       vin2csi40: endpoint@2 {
+                                               reg = <2>;
+                                               remote-endpoint = <&csi40vin2>;
+                                       };
+                               };
+                       };
+               };
+
+               vin3: video@e6ef3000 {
+                       compatible = "renesas,vin-r8a774b1";
+                       reg = <0 0xe6ef3000 0 0x1000>;
+                       interrupts = <GIC_SPI 191 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&cpg CPG_MOD 808>;
+                       power-domains = <&sysc R8A774B1_PD_ALWAYS_ON>;
+                       resets = <&cpg 808>;
+                       renesas,id = <3>;
+                       status = "disabled";
+
+                       ports {
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+
+                               port@1 {
+                                       #address-cells = <1>;
+                                       #size-cells = <0>;
+
+                                       reg = <1>;
+
+                                       vin3csi20: endpoint@0 {
+                                               reg = <0>;
+                                               remote-endpoint = <&csi20vin3>;
+                                       };
+                                       vin3csi40: endpoint@2 {
+                                               reg = <2>;
+                                               remote-endpoint = <&csi40vin3>;
+                                       };
+                               };
+                       };
+               };
+
+               vin4: video@e6ef4000 {
+                       compatible = "renesas,vin-r8a774b1";
+                       reg = <0 0xe6ef4000 0 0x1000>;
+                       interrupts = <GIC_SPI 174 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&cpg CPG_MOD 807>;
+                       power-domains = <&sysc R8A774B1_PD_ALWAYS_ON>;
+                       resets = <&cpg 807>;
+                       renesas,id = <4>;
+                       status = "disabled";
+
+                       ports {
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+
+                               port@1 {
+                                       #address-cells = <1>;
+                                       #size-cells = <0>;
+
+                                       reg = <1>;
+
+                                       vin4csi20: endpoint@0 {
+                                               reg = <0>;
+                                               remote-endpoint = <&csi20vin4>;
+                                       };
+                                       vin4csi40: endpoint@2 {
+                                               reg = <2>;
+                                               remote-endpoint = <&csi40vin4>;
+                                       };
+                               };
+                       };
+               };
+
+               vin5: video@e6ef5000 {
+                       compatible = "renesas,vin-r8a774b1";
+                       reg = <0 0xe6ef5000 0 0x1000>;
+                       interrupts = <GIC_SPI 175 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&cpg CPG_MOD 806>;
+                       power-domains = <&sysc R8A774B1_PD_ALWAYS_ON>;
+                       resets = <&cpg 806>;
+                       renesas,id = <5>;
+                       status = "disabled";
+
+                       ports {
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+
+                               port@1 {
+                                       #address-cells = <1>;
+                                       #size-cells = <0>;
+
+                                       reg = <1>;
+
+                                       vin5csi20: endpoint@0 {
+                                               reg = <0>;
+                                               remote-endpoint = <&csi20vin5>;
+                                       };
+                                       vin5csi40: endpoint@2 {
+                                               reg = <2>;
+                                               remote-endpoint = <&csi40vin5>;
+                                       };
+                               };
+                       };
+               };
+
+               vin6: video@e6ef6000 {
+                       compatible = "renesas,vin-r8a774b1";
+                       reg = <0 0xe6ef6000 0 0x1000>;
+                       interrupts = <GIC_SPI 176 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&cpg CPG_MOD 805>;
+                       power-domains = <&sysc R8A774B1_PD_ALWAYS_ON>;
+                       resets = <&cpg 805>;
+                       renesas,id = <6>;
+                       status = "disabled";
+
+                       ports {
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+
+                               port@1 {
+                                       #address-cells = <1>;
+                                       #size-cells = <0>;
+
+                                       reg = <1>;
+
+                                       vin6csi20: endpoint@0 {
+                                               reg = <0>;
+                                               remote-endpoint = <&csi20vin6>;
+                                       };
+                                       vin6csi40: endpoint@2 {
+                                               reg = <2>;
+                                               remote-endpoint = <&csi40vin6>;
+                                       };
+                               };
+                       };
+               };
+
+               vin7: video@e6ef7000 {
+                       compatible = "renesas,vin-r8a774b1";
+                       reg = <0 0xe6ef7000 0 0x1000>;
+                       interrupts = <GIC_SPI 171 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&cpg CPG_MOD 804>;
+                       power-domains = <&sysc R8A774B1_PD_ALWAYS_ON>;
+                       resets = <&cpg 804>;
+                       renesas,id = <7>;
+                       status = "disabled";
+
+                       ports {
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+
+                               port@1 {
+                                       #address-cells = <1>;
+                                       #size-cells = <0>;
+
+                                       reg = <1>;
+
+                                       vin7csi20: endpoint@0 {
+                                               reg = <0>;
+                                               remote-endpoint = <&csi20vin7>;
+                                       };
+                                       vin7csi40: endpoint@2 {
+                                               reg = <2>;
+                                               remote-endpoint = <&csi40vin7>;
+                                       };
+                               };
+                       };
+               };
+
+               rcar_sound: sound@ec500000 {
+                       /*
+                        * #sound-dai-cells is required
+                        *
+                        * Single DAI : #sound-dai-cells = <0>; <&rcar_sound>;
+                        * Multi  DAI : #sound-dai-cells = <1>; <&rcar_sound N>;
+                        */
+                       /*
+                        * #clock-cells is required for audio_clkout0/1/2/3
+                        *
+                        * clkout       : #clock-cells = <0>;   <&rcar_sound>;
+                        * clkout0/1/2/3: #clock-cells = <1>;   <&rcar_sound N>;
+                        */
+                       compatible =  "renesas,rcar_sound-r8a774b1", "renesas,rcar_sound-gen3";
+                       reg = <0 0xec500000 0 0x1000>, /* SCU */
+                             <0 0xec5a0000 0 0x100>,  /* ADG */
+                             <0 0xec540000 0 0x1000>, /* SSIU */
+                             <0 0xec541000 0 0x280>,  /* SSI */
+                             <0 0xec760000 0 0x200>;  /* Audio DMAC peri peri*/
+                       reg-names = "scu", "adg", "ssiu", "ssi", "audmapp";
+
+                       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>, <&audio_clk_b>,
+                                <&audio_clk_c>,
+                                <&cpg CPG_CORE R8A774B1_CLK_S0D4>;
+                       clock-names = "ssi-all",
+                                     "ssi.9", "ssi.8", "ssi.7", "ssi.6",
+                                     "ssi.5", "ssi.4", "ssi.3", "ssi.2",
+                                     "ssi.1", "ssi.0",
+                                     "src.9", "src.8", "src.7", "src.6",
+                                     "src.5", "src.4", "src.3", "src.2",
+                                     "src.1", "src.0",
+                                     "mix.1", "mix.0",
+                                     "ctu.1", "ctu.0",
+                                     "dvc.0", "dvc.1",
+                                     "clk_a", "clk_b", "clk_c", "clk_i";
+                       power-domains = <&sysc R8A774B1_PD_ALWAYS_ON>;
+                       resets = <&cpg 1005>,
+                                <&cpg 1006>, <&cpg 1007>,
+                                <&cpg 1008>, <&cpg 1009>,
+                                <&cpg 1010>, <&cpg 1011>,
+                                <&cpg 1012>, <&cpg 1013>,
+                                <&cpg 1014>, <&cpg 1015>;
+                       reset-names = "ssi-all",
+                                     "ssi.9", "ssi.8", "ssi.7", "ssi.6",
+                                     "ssi.5", "ssi.4", "ssi.3", "ssi.2",
+                                     "ssi.1", "ssi.0";
+                       status = "disabled";
+
+                       rcar_sound,ctu {
+                               ctu00: ctu-0 { };
+                               ctu01: ctu-1 { };
+                               ctu02: ctu-2 { };
+                               ctu03: ctu-3 { };
+                               ctu10: ctu-4 { };
+                               ctu11: ctu-5 { };
+                               ctu12: ctu-6 { };
+                               ctu13: ctu-7 { };
+                       };
+
+                       rcar_sound,dvc {
+                               dvc0: dvc-0 {
+                                       dmas = <&audma1 0xbc>;
+                                       dma-names = "tx";
+                               };
+                               dvc1: dvc-1 {
+                                       dmas = <&audma1 0xbe>;
+                                       dma-names = "tx";
+                               };
+                       };
+
+                       rcar_sound,mix {
+                               mix0: mix-0 { };
+                               mix1: mix-1 { };
+                       };
+
+                       rcar_sound,src {
+                               src0: src-0 {
+                                       interrupts = <GIC_SPI 352 IRQ_TYPE_LEVEL_HIGH>;
+                                       dmas = <&audma0 0x85>, <&audma1 0x9a>;
+                                       dma-names = "rx", "tx";
+                               };
+                               src1: src-1 {
+                                       interrupts = <GIC_SPI 353 IRQ_TYPE_LEVEL_HIGH>;
+                                       dmas = <&audma0 0x87>, <&audma1 0x9c>;
+                                       dma-names = "rx", "tx";
+                               };
+                               src2: src-2 {
+                                       interrupts = <GIC_SPI 354 IRQ_TYPE_LEVEL_HIGH>;
+                                       dmas = <&audma0 0x89>, <&audma1 0x9e>;
+                                       dma-names = "rx", "tx";
+                               };
+                               src3: src-3 {
+                                       interrupts = <GIC_SPI 355 IRQ_TYPE_LEVEL_HIGH>;
+                                       dmas = <&audma0 0x8b>, <&audma1 0xa0>;
+                                       dma-names = "rx", "tx";
+                               };
+                               src4: src-4 {
+                                       interrupts = <GIC_SPI 356 IRQ_TYPE_LEVEL_HIGH>;
+                                       dmas = <&audma0 0x8d>, <&audma1 0xb0>;
+                                       dma-names = "rx", "tx";
+                               };
+                               src5: src-5 {
+                                       interrupts = <GIC_SPI 357 IRQ_TYPE_LEVEL_HIGH>;
+                                       dmas = <&audma0 0x8f>, <&audma1 0xb2>;
+                                       dma-names = "rx", "tx";
+                               };
+                               src6: src-6 {
+                                       interrupts = <GIC_SPI 358 IRQ_TYPE_LEVEL_HIGH>;
+                                       dmas = <&audma0 0x91>, <&audma1 0xb4>;
+                                       dma-names = "rx", "tx";
+                               };
+                               src7: src-7 {
+                                       interrupts = <GIC_SPI 359 IRQ_TYPE_LEVEL_HIGH>;
+                                       dmas = <&audma0 0x93>, <&audma1 0xb6>;
+                                       dma-names = "rx", "tx";
+                               };
+                               src8: src-8 {
+                                       interrupts = <GIC_SPI 360 IRQ_TYPE_LEVEL_HIGH>;
+                                       dmas = <&audma0 0x95>, <&audma1 0xb8>;
+                                       dma-names = "rx", "tx";
+                               };
+                               src9: src-9 {
+                                       interrupts = <GIC_SPI 361 IRQ_TYPE_LEVEL_HIGH>;
+                                       dmas = <&audma0 0x97>, <&audma1 0xba>;
+                                       dma-names = "rx", "tx";
+                               };
+                       };
+
+                       rcar_sound,ssi {
+                               ssi0: ssi-0 {
+                                       interrupts = <GIC_SPI 370 IRQ_TYPE_LEVEL_HIGH>;
+                                       dmas = <&audma0 0x01>, <&audma1 0x02>;
+                                       dma-names = "rx", "tx";
+                               };
+                               ssi1: ssi-1 {
+                                       interrupts = <GIC_SPI 371 IRQ_TYPE_LEVEL_HIGH>;
+                                       dmas = <&audma0 0x03>, <&audma1 0x04>;
+                                       dma-names = "rx", "tx";
+                               };
+                               ssi2: ssi-2 {
+                                       interrupts = <GIC_SPI 372 IRQ_TYPE_LEVEL_HIGH>;
+                                       dmas = <&audma0 0x05>, <&audma1 0x06>;
+                                       dma-names = "rx", "tx";
+                               };
+                               ssi3: ssi-3 {
+                                       interrupts = <GIC_SPI 373 IRQ_TYPE_LEVEL_HIGH>;
+                                       dmas = <&audma0 0x07>, <&audma1 0x08>;
+                                       dma-names = "rx", "tx";
+                               };
+                               ssi4: ssi-4 {
+                                       interrupts = <GIC_SPI 374 IRQ_TYPE_LEVEL_HIGH>;
+                                       dmas = <&audma0 0x09>, <&audma1 0x0a>;
+                                       dma-names = "rx", "tx";
+                               };
+                               ssi5: ssi-5 {
+                                       interrupts = <GIC_SPI 375 IRQ_TYPE_LEVEL_HIGH>;
+                                       dmas = <&audma0 0x0b>, <&audma1 0x0c>;
+                                       dma-names = "rx", "tx";
+                               };
+                               ssi6: ssi-6 {
+                                       interrupts = <GIC_SPI 376 IRQ_TYPE_LEVEL_HIGH>;
+                                       dmas = <&audma0 0x0d>, <&audma1 0x0e>;
+                                       dma-names = "rx", "tx";
+                               };
+                               ssi7: ssi-7 {
+                                       interrupts = <GIC_SPI 377 IRQ_TYPE_LEVEL_HIGH>;
+                                       dmas = <&audma0 0x0f>, <&audma1 0x10>;
+                                       dma-names = "rx", "tx";
+                               };
+                               ssi8: ssi-8 {
+                                       interrupts = <GIC_SPI 378 IRQ_TYPE_LEVEL_HIGH>;
+                                       dmas = <&audma0 0x11>, <&audma1 0x12>;
+                                       dma-names = "rx", "tx";
+                               };
+                               ssi9: ssi-9 {
+                                       interrupts = <GIC_SPI 379 IRQ_TYPE_LEVEL_HIGH>;
+                                       dmas = <&audma0 0x13>, <&audma1 0x14>;
+                                       dma-names = "rx", "tx";
+                               };
+                       };
+
+                       rcar_sound,ssiu {
+                               ssiu00: ssiu-0 {
+                                       dmas = <&audma0 0x15>, <&audma1 0x16>;
+                                       dma-names = "rx", "tx";
+                               };
+                               ssiu01: ssiu-1 {
+                                       dmas = <&audma0 0x35>, <&audma1 0x36>;
+                                       dma-names = "rx", "tx";
+                               };
+                               ssiu02: ssiu-2 {
+                                       dmas = <&audma0 0x37>, <&audma1 0x38>;
+                                       dma-names = "rx", "tx";
+                               };
+                               ssiu03: ssiu-3 {
+                                       dmas = <&audma0 0x47>, <&audma1 0x48>;
+                                       dma-names = "rx", "tx";
+                               };
+                               ssiu04: ssiu-4 {
+                                       dmas = <&audma0 0x3F>, <&audma1 0x40>;
+                                       dma-names = "rx", "tx";
+                               };
+                               ssiu05: ssiu-5 {
+                                       dmas = <&audma0 0x43>, <&audma1 0x44>;
+                                       dma-names = "rx", "tx";
+                               };
+                               ssiu06: ssiu-6 {
+                                       dmas = <&audma0 0x4F>, <&audma1 0x50>;
+                                       dma-names = "rx", "tx";
+                               };
+                               ssiu07: ssiu-7 {
+                                       dmas = <&audma0 0x53>, <&audma1 0x54>;
+                                       dma-names = "rx", "tx";
+                               };
+                               ssiu10: ssiu-8 {
+                                       dmas = <&audma0 0x49>, <&audma1 0x4a>;
+                                       dma-names = "rx", "tx";
+                               };
+                               ssiu11: ssiu-9 {
+                                       dmas = <&audma0 0x4B>, <&audma1 0x4C>;
+                                       dma-names = "rx", "tx";
+                               };
+                               ssiu12: ssiu-10 {
+                                       dmas = <&audma0 0x57>, <&audma1 0x58>;
+                                       dma-names = "rx", "tx";
+                               };
+                               ssiu13: ssiu-11 {
+                                       dmas = <&audma0 0x59>, <&audma1 0x5A>;
+                                       dma-names = "rx", "tx";
+                               };
+                               ssiu14: ssiu-12 {
+                                       dmas = <&audma0 0x5F>, <&audma1 0x60>;
+                                       dma-names = "rx", "tx";
+                               };
+                               ssiu15: ssiu-13 {
+                                       dmas = <&audma0 0xC3>, <&audma1 0xC4>;
+                                       dma-names = "rx", "tx";
+                               };
+                               ssiu16: ssiu-14 {
+                                       dmas = <&audma0 0xC7>, <&audma1 0xC8>;
+                                       dma-names = "rx", "tx";
+                               };
+                               ssiu17: ssiu-15 {
+                                       dmas = <&audma0 0xCB>, <&audma1 0xCC>;
+                                       dma-names = "rx", "tx";
+                               };
+                               ssiu20: ssiu-16 {
+                                       dmas = <&audma0 0x63>, <&audma1 0x64>;
+                                       dma-names = "rx", "tx";
+                               };
+                               ssiu21: ssiu-17 {
+                                       dmas = <&audma0 0x67>, <&audma1 0x68>;
+                                       dma-names = "rx", "tx";
+                               };
+                               ssiu22: ssiu-18 {
+                                       dmas = <&audma0 0x6B>, <&audma1 0x6C>;
+                                       dma-names = "rx", "tx";
+                               };
+                               ssiu23: ssiu-19 {
+                                       dmas = <&audma0 0x6D>, <&audma1 0x6E>;
+                                       dma-names = "rx", "tx";
+                               };
+                               ssiu24: ssiu-20 {
+                                       dmas = <&audma0 0xCF>, <&audma1 0xCE>;
+                                       dma-names = "rx", "tx";
+                               };
+                               ssiu25: ssiu-21 {
+                                       dmas = <&audma0 0xEB>, <&audma1 0xEC>;
+                                       dma-names = "rx", "tx";
+                               };
+                               ssiu26: ssiu-22 {
+                                       dmas = <&audma0 0xED>, <&audma1 0xEE>;
+                                       dma-names = "rx", "tx";
+                               };
+                               ssiu27: ssiu-23 {
+                                       dmas = <&audma0 0xEF>, <&audma1 0xF0>;
+                                       dma-names = "rx", "tx";
+                               };
+                               ssiu30: ssiu-24 {
+                                       dmas = <&audma0 0x6f>, <&audma1 0x70>;
+                                       dma-names = "rx", "tx";
+                               };
+                               ssiu31: ssiu-25 {
+                                       dmas = <&audma0 0x21>, <&audma1 0x22>;
+                                       dma-names = "rx", "tx";
+                               };
+                               ssiu32: ssiu-26 {
+                                       dmas = <&audma0 0x23>, <&audma1 0x24>;
+                                       dma-names = "rx", "tx";
+                               };
+                               ssiu33: ssiu-27 {
+                                       dmas = <&audma0 0x25>, <&audma1 0x26>;
+                                       dma-names = "rx", "tx";
+                               };
+                               ssiu34: ssiu-28 {
+                                       dmas = <&audma0 0x27>, <&audma1 0x28>;
+                                       dma-names = "rx", "tx";
+                               };
+                               ssiu35: ssiu-29 {
+                                       dmas = <&audma0 0x29>, <&audma1 0x2A>;
+                                       dma-names = "rx", "tx";
+                               };
+                               ssiu36: ssiu-30 {
+                                       dmas = <&audma0 0x2B>, <&audma1 0x2C>;
+                                       dma-names = "rx", "tx";
+                               };
+                               ssiu37: ssiu-31 {
+                                       dmas = <&audma0 0x2D>, <&audma1 0x2E>;
+                                       dma-names = "rx", "tx";
+                               };
+                               ssiu40: ssiu-32 {
+                                       dmas =  <&audma0 0x71>, <&audma1 0x72>;
+                                       dma-names = "rx", "tx";
+                               };
+                               ssiu41: ssiu-33 {
+                                       dmas = <&audma0 0x17>, <&audma1 0x18>;
+                                       dma-names = "rx", "tx";
+                               };
+                               ssiu42: ssiu-34 {
+                                       dmas = <&audma0 0x19>, <&audma1 0x1A>;
+                                       dma-names = "rx", "tx";
+                               };
+                               ssiu43: ssiu-35 {
+                                       dmas = <&audma0 0x1B>, <&audma1 0x1C>;
+                                       dma-names = "rx", "tx";
+                               };
+                               ssiu44: ssiu-36 {
+                                       dmas = <&audma0 0x1D>, <&audma1 0x1E>;
+                                       dma-names = "rx", "tx";
+                               };
+                               ssiu45: ssiu-37 {
+                                       dmas = <&audma0 0x1F>, <&audma1 0x20>;
+                                       dma-names = "rx", "tx";
+                               };
+                               ssiu46: ssiu-38 {
+                                       dmas = <&audma0 0x31>, <&audma1 0x32>;
+                                       dma-names = "rx", "tx";
+                               };
+                               ssiu47: ssiu-39 {
+                                       dmas = <&audma0 0x33>, <&audma1 0x34>;
+                                       dma-names = "rx", "tx";
+                               };
+                               ssiu50: ssiu-40 {
+                                       dmas = <&audma0 0x73>, <&audma1 0x74>;
+                                       dma-names = "rx", "tx";
+                               };
+                               ssiu60: ssiu-41 {
+                                       dmas = <&audma0 0x75>, <&audma1 0x76>;
+                                       dma-names = "rx", "tx";
+                               };
+                               ssiu70: ssiu-42 {
+                                       dmas = <&audma0 0x79>, <&audma1 0x7a>;
+                                       dma-names = "rx", "tx";
+                               };
+                               ssiu80: ssiu-43 {
+                                       dmas = <&audma0 0x7b>, <&audma1 0x7c>;
+                                       dma-names = "rx", "tx";
+                               };
+                               ssiu90: ssiu-44 {
+                                       dmas = <&audma0 0x7d>, <&audma1 0x7e>;
+                                       dma-names = "rx", "tx";
+                               };
+                               ssiu91: ssiu-45 {
+                                       dmas = <&audma0 0x7F>, <&audma1 0x80>;
+                                       dma-names = "rx", "tx";
+                               };
+                               ssiu92: ssiu-46 {
+                                       dmas = <&audma0 0x81>, <&audma1 0x82>;
+                                       dma-names = "rx", "tx";
+                               };
+                               ssiu93: ssiu-47 {
+                                       dmas = <&audma0 0x83>, <&audma1 0x84>;
+                                       dma-names = "rx", "tx";
+                               };
+                               ssiu94: ssiu-48 {
+                                       dmas = <&audma0 0xA3>, <&audma1 0xA4>;
+                                       dma-names = "rx", "tx";
+                               };
+                               ssiu95: ssiu-49 {
+                                       dmas = <&audma0 0xA5>, <&audma1 0xA6>;
+                                       dma-names = "rx", "tx";
+                               };
+                               ssiu96: ssiu-50 {
+                                       dmas = <&audma0 0xA7>, <&audma1 0xA8>;
+                                       dma-names = "rx", "tx";
+                               };
+                               ssiu97: ssiu-51 {
+                                       dmas = <&audma0 0xA9>, <&audma1 0xAA>;
+                                       dma-names = "rx", "tx";
+                               };
+                       };
+               };
+
+               audma0: dma-controller@ec700000 {
+                       compatible = "renesas,dmac-r8a774b1",
+                                    "renesas,rcar-dmac";
+                       reg = <0 0xec700000 0 0x10000>;
+                       interrupts = <GIC_SPI 350 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>;
+                       interrupt-names = "error",
+                                       "ch0", "ch1", "ch2", "ch3",
+                                       "ch4", "ch5", "ch6", "ch7",
+                                       "ch8", "ch9", "ch10", "ch11",
+                                       "ch12", "ch13", "ch14", "ch15";
+                       clocks = <&cpg CPG_MOD 502>;
+                       clock-names = "fck";
+                       power-domains = <&sysc R8A774B1_PD_ALWAYS_ON>;
+                       resets = <&cpg 502>;
+                       #dma-cells = <1>;
+                       dma-channels = <16>;
+               };
+
+               audma1: dma-controller@ec720000 {
+                       compatible = "renesas,dmac-r8a774b1",
+                                    "renesas,rcar-dmac";
+                       reg = <0 0xec720000 0 0x10000>;
+                       interrupts = <GIC_SPI 351 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 346 IRQ_TYPE_LEVEL_HIGH
+                                     GIC_SPI 347 IRQ_TYPE_LEVEL_HIGH
+                                     GIC_SPI 348 IRQ_TYPE_LEVEL_HIGH
+                                     GIC_SPI 349 IRQ_TYPE_LEVEL_HIGH
+                                     GIC_SPI 382 IRQ_TYPE_LEVEL_HIGH
+                                     GIC_SPI 383 IRQ_TYPE_LEVEL_HIGH>;
+                       interrupt-names = "error",
+                                       "ch0", "ch1", "ch2", "ch3",
+                                       "ch4", "ch5", "ch6", "ch7",
+                                       "ch8", "ch9", "ch10", "ch11",
+                                       "ch12", "ch13", "ch14", "ch15";
+                       clocks = <&cpg CPG_MOD 501>;
+                       clock-names = "fck";
+                       power-domains = <&sysc R8A774B1_PD_ALWAYS_ON>;
+                       resets = <&cpg 501>;
+                       #dma-cells = <1>;
+                       dma-channels = <16>;
+               };
+
+               xhci0: usb@ee000000 {
+                       compatible = "renesas,xhci-r8a774b1",
+                                    "renesas,rcar-gen3-xhci";
+                       reg = <0 0xee000000 0 0xc00>;
+                       interrupts = <GIC_SPI 102 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&cpg CPG_MOD 328>;
+                       power-domains = <&sysc R8A774B1_PD_ALWAYS_ON>;
+                       resets = <&cpg 328>;
+                       status = "disabled";
+               };
+
+               usb3_peri0: usb@ee020000 {
+                       compatible = "renesas,r8a774b1-usb3-peri",
+                                    "renesas,rcar-gen3-usb3-peri";
+                       reg = <0 0xee020000 0 0x400>;
+                       interrupts = <GIC_SPI 104 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&cpg CPG_MOD 328>;
+                       power-domains = <&sysc R8A774B1_PD_ALWAYS_ON>;
+                       resets = <&cpg 328>;
+                       status = "disabled";
+               };
+
+               ohci0: usb@ee080000 {
+                       compatible = "generic-ohci";
+                       reg = <0 0xee080000 0 0x100>;
+                       interrupts = <GIC_SPI 108 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&cpg CPG_MOD 703>, <&cpg CPG_MOD 704>;
+                       phys = <&usb2_phy0 1>;
+                       phy-names = "usb";
+                       power-domains = <&sysc R8A774B1_PD_ALWAYS_ON>;
+                       resets = <&cpg 703>, <&cpg 704>;
+                       status = "disabled";
+               };
+
+               ohci1: usb@ee0a0000 {
+                       compatible = "generic-ohci";
+                       reg = <0 0xee0a0000 0 0x100>;
+                       interrupts = <GIC_SPI 112 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&cpg CPG_MOD 702>;
+                       phys = <&usb2_phy1 1>;
+                       phy-names = "usb";
+                       power-domains = <&sysc R8A774B1_PD_ALWAYS_ON>;
+                       resets = <&cpg 702>;
+                       status = "disabled";
+               };
+
+               ehci0: usb@ee080100 {
+                       compatible = "generic-ehci";
+                       reg = <0 0xee080100 0 0x100>;
+                       interrupts = <GIC_SPI 108 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&cpg CPG_MOD 703>, <&cpg CPG_MOD 704>;
+                       phys = <&usb2_phy0 2>;
+                       phy-names = "usb";
+                       companion = <&ohci0>;
+                       power-domains = <&sysc R8A774B1_PD_ALWAYS_ON>;
+                       resets = <&cpg 703>, <&cpg 704>;
+                       status = "disabled";
+               };
+
+               ehci1: usb@ee0a0100 {
+                       compatible = "generic-ehci";
+                       reg = <0 0xee0a0100 0 0x100>;
+                       interrupts = <GIC_SPI 112 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&cpg CPG_MOD 702>;
+                       phys = <&usb2_phy1 2>;
+                       phy-names = "usb";
+                       companion = <&ohci1>;
+                       power-domains = <&sysc R8A774B1_PD_ALWAYS_ON>;
+                       resets = <&cpg 702>;
+                       status = "disabled";
+               };
+
+               usb2_phy0: usb-phy@ee080200 {
+                       compatible = "renesas,usb2-phy-r8a774b1",
+                                    "renesas,rcar-gen3-usb2-phy";
+                       reg = <0 0xee080200 0 0x700>;
+                       interrupts = <GIC_SPI 108 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&cpg CPG_MOD 703>, <&cpg CPG_MOD 704>;
+                       power-domains = <&sysc R8A774B1_PD_ALWAYS_ON>;
+                       resets = <&cpg 703>, <&cpg 704>;
+                       #phy-cells = <1>;
+                       status = "disabled";
+               };
+
+               usb2_phy1: usb-phy@ee0a0200 {
+                       compatible = "renesas,usb2-phy-r8a774b1",
+                                    "renesas,rcar-gen3-usb2-phy";
+                       reg = <0 0xee0a0200 0 0x700>;
+                       clocks = <&cpg CPG_MOD 702>;
+                       power-domains = <&sysc R8A774B1_PD_ALWAYS_ON>;
+                       resets = <&cpg 702>;
+                       #phy-cells = <1>;
+                       status = "disabled";
+               };
+
+               sdhi0: sd@ee100000 {
+                       compatible = "renesas,sdhi-r8a774b1",
+                                    "renesas,rcar-gen3-sdhi";
+                       reg = <0 0xee100000 0 0x2000>;
+                       interrupts = <GIC_SPI 165 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&cpg CPG_MOD 314>;
+                       max-frequency = <200000000>;
+                       power-domains = <&sysc R8A774B1_PD_ALWAYS_ON>;
+                       resets = <&cpg 314>;
+                       status = "disabled";
+               };
+
+               sdhi1: sd@ee120000 {
+                       compatible = "renesas,sdhi-r8a774b1",
+                                    "renesas,rcar-gen3-sdhi";
+                       reg = <0 0xee120000 0 0x2000>;
+                       interrupts = <GIC_SPI 166 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&cpg CPG_MOD 313>;
+                       max-frequency = <200000000>;
+                       power-domains = <&sysc R8A774B1_PD_ALWAYS_ON>;
+                       resets = <&cpg 313>;
+                       status = "disabled";
+               };
+
+               sdhi2: sd@ee140000 {
+                       compatible = "renesas,sdhi-r8a774b1",
+                                    "renesas,rcar-gen3-sdhi";
+                       reg = <0 0xee140000 0 0x2000>;
+                       interrupts = <GIC_SPI 167 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&cpg CPG_MOD 312>;
+                       max-frequency = <200000000>;
+                       power-domains = <&sysc R8A774B1_PD_ALWAYS_ON>;
+                       resets = <&cpg 312>;
+                       status = "disabled";
+               };
+
+               sdhi3: sd@ee160000 {
+                       compatible = "renesas,sdhi-r8a774b1",
+                                    "renesas,rcar-gen3-sdhi";
+                       reg = <0 0xee160000 0 0x2000>;
+                       interrupts = <GIC_SPI 168 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&cpg CPG_MOD 311>;
+                       max-frequency = <200000000>;
+                       power-domains = <&sysc R8A774B1_PD_ALWAYS_ON>;
+                       resets = <&cpg 311>;
+                       status = "disabled";
+               };
+
+               sata: sata@ee300000 {
+                       compatible = "renesas,sata-r8a774b1",
+                                    "renesas,rcar-gen3-sata";
+                       reg = <0 0xee300000 0 0x200000>;
+                       interrupts = <GIC_SPI 105 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&cpg CPG_MOD 815>;
+                       power-domains = <&sysc R8A774B1_PD_ALWAYS_ON>;
+                       resets = <&cpg 815>;
+                       status = "disabled";
+               };
+
+               gic: interrupt-controller@f1010000 {
+                       compatible = "arm,gic-400";
+                       #interrupt-cells = <3>;
+                       #address-cells = <0>;
+                       interrupt-controller;
+                       reg = <0x0 0xf1010000 0 0x1000>,
+                             <0x0 0xf1020000 0 0x20000>,
+                             <0x0 0xf1040000 0 0x20000>,
+                             <0x0 0xf1060000 0 0x20000>;
+                       interrupts = <GIC_PPI 9
+                                       (GIC_CPU_MASK_SIMPLE(2) | IRQ_TYPE_LEVEL_HIGH)>;
+                       clocks = <&cpg CPG_MOD 408>;
+                       clock-names = "clk";
+                       power-domains = <&sysc R8A774B1_PD_ALWAYS_ON>;
+                       resets = <&cpg 408>;
+               };
+
+               pciec0: pcie@fe000000 {
+                       compatible = "renesas,pcie-r8a774b1",
+                                    "renesas,pcie-rcar-gen3";
+                       reg = <0 0xfe000000 0 0x80000>;
+                       #address-cells = <3>;
+                       #size-cells = <2>;
+                       bus-range = <0x00 0xff>;
+                       device_type = "pci";
+                       ranges = <0x01000000 0 0x00000000 0 0xfe100000 0 0x00100000
+                                 0x02000000 0 0xfe200000 0 0xfe200000 0 0x00200000
+                                 0x02000000 0 0x30000000 0 0x30000000 0 0x08000000
+                                 0x42000000 0 0x38000000 0 0x38000000 0 0x08000000>;
+                       /* Map all possible DDR as inbound ranges */
+                       dma-ranges = <0x42000000 0 0x40000000 0 0x40000000 0 0x80000000>;
+                       interrupts = <GIC_SPI 116 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 117 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 118 IRQ_TYPE_LEVEL_HIGH>;
+                       #interrupt-cells = <1>;
+                       interrupt-map-mask = <0 0 0 0>;
+                       interrupt-map = <0 0 0 0 &gic GIC_SPI 116 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&cpg CPG_MOD 319>, <&pcie_bus_clk>;
+                       clock-names = "pcie", "pcie_bus";
+                       power-domains = <&sysc R8A774B1_PD_ALWAYS_ON>;
+                       resets = <&cpg 319>;
+                       status = "disabled";
+               };
+
+               pciec1: pcie@ee800000 {
+                       compatible = "renesas,pcie-r8a774b1",
+                                    "renesas,pcie-rcar-gen3";
+                       reg = <0 0xee800000 0 0x80000>;
+                       #address-cells = <3>;
+                       #size-cells = <2>;
+                       bus-range = <0x00 0xff>;
+                       device_type = "pci";
+                       ranges = <0x01000000 0 0x00000000 0 0xee900000 0 0x00100000
+                                 0x02000000 0 0xeea00000 0 0xeea00000 0 0x00200000
+                                 0x02000000 0 0xc0000000 0 0xc0000000 0 0x08000000
+                                 0x42000000 0 0xc8000000 0 0xc8000000 0 0x08000000>;
+                       /* Map all possible DDR as inbound ranges */
+                       dma-ranges = <0x42000000 0 0x40000000 0 0x40000000 0 0x80000000>;
+                       interrupts = <GIC_SPI 148 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 149 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 150 IRQ_TYPE_LEVEL_HIGH>;
+                       #interrupt-cells = <1>;
+                       interrupt-map-mask = <0 0 0 0>;
+                       interrupt-map = <0 0 0 0 &gic GIC_SPI 148 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&cpg CPG_MOD 318>, <&pcie_bus_clk>;
+                       clock-names = "pcie", "pcie_bus";
+                       power-domains = <&sysc R8A774B1_PD_ALWAYS_ON>;
+                       resets = <&cpg 318>;
+                       status = "disabled";
+               };
+
+               fdp1@fe940000 {
+                       compatible = "renesas,fdp1";
+                       reg = <0 0xfe940000 0 0x2400>;
+                       interrupts = <GIC_SPI 262 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&cpg CPG_MOD 119>;
+                       power-domains = <&sysc R8A774B1_PD_A3VP>;
+                       resets = <&cpg 119>;
+                       renesas,fcp = <&fcpf0>;
+               };
+
+               fcpf0: fcp@fe950000 {
+                       compatible = "renesas,fcpf";
+                       reg = <0 0xfe950000 0 0x200>;
+                       clocks = <&cpg CPG_MOD 615>;
+                       power-domains = <&sysc R8A774B1_PD_A3VP>;
+                       resets = <&cpg 615>;
+               };
+
+               vspb: vsp@fe960000 {
+                       compatible = "renesas,vsp2";
+                       reg = <0 0xfe960000 0 0x8000>;
+                       interrupts = <GIC_SPI 266 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&cpg CPG_MOD 626>;
+                       power-domains = <&sysc R8A774B1_PD_A3VP>;
+                       resets = <&cpg 626>;
+
+                       renesas,fcp = <&fcpvb0>;
+               };
+
+               vspi0: vsp@fe9a0000 {
+                       compatible = "renesas,vsp2";
+                       reg = <0 0xfe9a0000 0 0x8000>;
+                       interrupts = <GIC_SPI 444 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&cpg CPG_MOD 631>;
+                       power-domains = <&sysc R8A774B1_PD_A3VP>;
+                       resets = <&cpg 631>;
+
+                       renesas,fcp = <&fcpvi0>;
+               };
+
+               vspd0: vsp@fea20000 {
+                       compatible = "renesas,vsp2";
+                       reg = <0 0xfea20000 0 0x5000>;
+                       interrupts = <GIC_SPI 466 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&cpg CPG_MOD 623>;
+                       power-domains = <&sysc R8A774B1_PD_ALWAYS_ON>;
+                       resets = <&cpg 623>;
+
+                       renesas,fcp = <&fcpvd0>;
+               };
+
+               vspd1: vsp@fea28000 {
+                       compatible = "renesas,vsp2";
+                       reg = <0 0xfea28000 0 0x5000>;
+                       interrupts = <GIC_SPI 467 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&cpg CPG_MOD 622>;
+                       power-domains = <&sysc R8A774B1_PD_ALWAYS_ON>;
+                       resets = <&cpg 622>;
+
+                       renesas,fcp = <&fcpvd1>;
+               };
+
+               fcpvb0: fcp@fe96f000 {
+                       compatible = "renesas,fcpv";
+                       reg = <0 0xfe96f000 0 0x200>;
+                       clocks = <&cpg CPG_MOD 607>;
+                       power-domains = <&sysc R8A774B1_PD_A3VP>;
+                       resets = <&cpg 607>;
+               };
+
+               fcpvd0: fcp@fea27000 {
+                       compatible = "renesas,fcpv";
+                       reg = <0 0xfea27000 0 0x200>;
+                       clocks = <&cpg CPG_MOD 603>;
+                       power-domains = <&sysc R8A774B1_PD_ALWAYS_ON>;
+                       resets = <&cpg 603>;
+               };
+
+               fcpvd1: fcp@fea2f000 {
+                       compatible = "renesas,fcpv";
+                       reg = <0 0xfea2f000 0 0x200>;
+                       clocks = <&cpg CPG_MOD 602>;
+                       power-domains = <&sysc R8A774B1_PD_ALWAYS_ON>;
+                       resets = <&cpg 602>;
+               };
+
+               fcpvi0: fcp@fe9af000 {
+                       compatible = "renesas,fcpv";
+                       reg = <0 0xfe9af000 0 0x200>;
+                       clocks = <&cpg CPG_MOD 611>;
+                       power-domains = <&sysc R8A774B1_PD_A3VP>;
+                       resets = <&cpg 611>;
+               };
+
+               csi20: csi2@fea80000 {
+                       compatible = "renesas,r8a774b1-csi2";
+                       reg = <0 0xfea80000 0 0x10000>;
+                       interrupts = <GIC_SPI 184 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&cpg CPG_MOD 714>;
+                       power-domains = <&sysc R8A774B1_PD_ALWAYS_ON>;
+                       resets = <&cpg 714>;
+                       status = "disabled";
+
+                       ports {
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+
+                               port@1 {
+                                       #address-cells = <1>;
+                                       #size-cells = <0>;
+
+                                       reg = <1>;
+
+                                       csi20vin0: endpoint@0 {
+                                               reg = <0>;
+                                               remote-endpoint = <&vin0csi20>;
+                                       };
+                                       csi20vin1: endpoint@1 {
+                                               reg = <1>;
+                                               remote-endpoint = <&vin1csi20>;
+                                       };
+                                       csi20vin2: endpoint@2 {
+                                               reg = <2>;
+                                               remote-endpoint = <&vin2csi20>;
+                                       };
+                                       csi20vin3: endpoint@3 {
+                                               reg = <3>;
+                                               remote-endpoint = <&vin3csi20>;
+                                       };
+                                       csi20vin4: endpoint@4 {
+                                               reg = <4>;
+                                               remote-endpoint = <&vin4csi20>;
+                                       };
+                                       csi20vin5: endpoint@5 {
+                                               reg = <5>;
+                                               remote-endpoint = <&vin5csi20>;
+                                       };
+                                       csi20vin6: endpoint@6 {
+                                               reg = <6>;
+                                               remote-endpoint = <&vin6csi20>;
+                                       };
+                                       csi20vin7: endpoint@7 {
+                                               reg = <7>;
+                                               remote-endpoint = <&vin7csi20>;
+                                       };
+                               };
+                       };
+               };
+
+               csi40: csi2@feaa0000 {
+                       compatible = "renesas,r8a774b1-csi2";
+                       reg = <0 0xfeaa0000 0 0x10000>;
+                       interrupts = <GIC_SPI 246 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&cpg CPG_MOD 716>;
+                       power-domains = <&sysc R8A774B1_PD_ALWAYS_ON>;
+                       resets = <&cpg 716>;
+                       status = "disabled";
+
+                       ports {
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+
+                               port@1 {
+                                       #address-cells = <1>;
+                                       #size-cells = <0>;
+
+                                       reg = <1>;
+
+                                       csi40vin0: endpoint@0 {
+                                               reg = <0>;
+                                               remote-endpoint = <&vin0csi40>;
+                                       };
+                                       csi40vin1: endpoint@1 {
+                                               reg = <1>;
+                                               remote-endpoint = <&vin1csi40>;
+                                       };
+                                       csi40vin2: endpoint@2 {
+                                               reg = <2>;
+                                               remote-endpoint = <&vin2csi40>;
+                                       };
+                                       csi40vin3: endpoint@3 {
+                                               reg = <3>;
+                                               remote-endpoint = <&vin3csi40>;
+                                       };
+                                       csi40vin4: endpoint@4 {
+                                               reg = <4>;
+                                               remote-endpoint = <&vin4csi40>;
+                                       };
+                                       csi40vin5: endpoint@5 {
+                                               reg = <5>;
+                                               remote-endpoint = <&vin5csi40>;
+                                       };
+                                       csi40vin6: endpoint@6 {
+                                               reg = <6>;
+                                               remote-endpoint = <&vin6csi40>;
+                                       };
+                                       csi40vin7: endpoint@7 {
+                                               reg = <7>;
+                                               remote-endpoint = <&vin7csi40>;
+                                       };
+                               };
+                       };
+               };
+
+               hdmi0: hdmi@fead0000 {
+                       compatible = "renesas,r8a774b1-hdmi",
+                                    "renesas,rcar-gen3-hdmi";
+                       reg = <0 0xfead0000 0 0x10000>;
+                       interrupts = <GIC_SPI 389 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&cpg CPG_MOD 729>,
+                                <&cpg CPG_CORE R8A774B1_CLK_HDMI>;
+                       clock-names = "iahb", "isfr";
+                       power-domains = <&sysc R8A774B1_PD_ALWAYS_ON>;
+                       resets = <&cpg 729>;
+                       status = "disabled";
+
+                       ports {
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+
+                               port@0 {
+                                       reg = <0>;
+                                       dw_hdmi0_in: endpoint {
+                                               remote-endpoint = <&du_out_hdmi0>;
+                                       };
+                               };
+                               port@1 {
+                                       reg = <1>;
+                               };
+                               port@2 {
+                                       /* HDMI sound */
+                                       reg = <2>;
+                               };
+                       };
+               };
+
+               du: display@feb00000 {
+                       compatible = "renesas,du-r8a774b1";
+                       reg = <0 0xfeb00000 0 0x80000>;
+                       interrupts = <GIC_SPI 256 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 268 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 270 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&cpg CPG_MOD 724>,
+                                <&cpg CPG_MOD 723>,
+                                <&cpg CPG_MOD 721>;
+                       clock-names = "du.0", "du.1", "du.3";
+                       status = "disabled";
+
+                       vsps = <&vspd0 0>, <&vspd1 0>, <&vspd0 1>;
+
+                       ports {
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+
+                               port@0 {
+                                       reg = <0>;
+                                       du_out_rgb: endpoint {
+                                       };
+                               };
+                               port@1 {
+                                       reg = <1>;
+                                       du_out_hdmi0: endpoint {
+                                               remote-endpoint = <&dw_hdmi0_in>;
+                                       };
+                               };
+                               port@2 {
+                                       reg = <2>;
+                                       du_out_lvds0: endpoint {
+                                               remote-endpoint = <&lvds0_in>;
+                                       };
+                               };
+                       };
+               };
+
+               lvds0: lvds@feb90000 {
+                       compatible = "renesas,r8a774b1-lvds";
+                       reg = <0 0xfeb90000 0 0x14>;
+                       clocks = <&cpg CPG_MOD 727>;
+                       power-domains = <&sysc R8A774B1_PD_ALWAYS_ON>;
+                       resets = <&cpg 727>;
+                       status = "disabled";
+
+                       ports {
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+
+                               port@0 {
+                                       reg = <0>;
+                                       lvds0_in: endpoint {
+                                               remote-endpoint = <&du_out_lvds0>;
+                                       };
+                               };
+                               port@1 {
+                                       reg = <1>;
+                                       lvds0_out: endpoint {
+                                       };
+                               };
+                       };
+               };
+
+               prr: chipid@fff00044 {
+                       compatible = "renesas,prr";
+                       reg = <0 0xfff00044 0 4>;
+               };
+       };
+
+       thermal-zones {
+               sensor_thermal1: sensor-thermal1 {
+                       polling-delay-passive = <250>;
+                       polling-delay = <1000>;
+                       thermal-sensors = <&tsc 0>;
+                       sustainable-power = <2439>;
+
+                       trips {
+                               sensor1_crit: sensor1-crit {
+                                       temperature = <120000>;
+                                       hysteresis = <1000>;
+                                       type = "critical";
+                               };
+                       };
+               };
+
+               sensor_thermal2: sensor-thermal2 {
+                       polling-delay-passive = <250>;
+                       polling-delay = <1000>;
+                       thermal-sensors = <&tsc 1>;
+                       sustainable-power = <2439>;
+
+                       trips {
+                               sensor2_crit: sensor2-crit {
+                                       temperature = <120000>;
+                                       hysteresis = <1000>;
+                                       type = "critical";
+                               };
+                       };
+               };
+
+               sensor_thermal3: sensor-thermal3 {
+                       polling-delay-passive = <250>;
+                       polling-delay = <1000>;
+                       thermal-sensors = <&tsc 2>;
+                       sustainable-power = <2439>;
+
+                       cooling-maps {
+                               map0 {
+                                       trip = <&target>;
+                                       cooling-device = <&a57_0 0 2>;
+                                       contribution = <1024>;
+                               };
+                       };
+                       trips {
+                               target: trip-point1 {
+                                       temperature = <100000>;
+                                       hysteresis = <1000>;
+                                       type = "passive";
+                               };
+
+                               sensor3_crit: sensor3-crit {
+                                       temperature = <120000>;
+                                       hysteresis = <1000>;
+                                       type = "critical";
+                               };
+                       };
+               };
+       };
+
+       timer {
+               compatible = "arm,armv8-timer";
+               interrupts-extended = <&gic GIC_PPI 13 (GIC_CPU_MASK_SIMPLE(2) | IRQ_TYPE_LEVEL_LOW)>,
+                                     <&gic GIC_PPI 14 (GIC_CPU_MASK_SIMPLE(2) | IRQ_TYPE_LEVEL_LOW)>,
+                                     <&gic GIC_PPI 11 (GIC_CPU_MASK_SIMPLE(2) | IRQ_TYPE_LEVEL_LOW)>,
+                                     <&gic GIC_PPI 10 (GIC_CPU_MASK_SIMPLE(2) | IRQ_TYPE_LEVEL_LOW)>;
+       };
+
+       /* External USB clocks - can be overridden by the board */
+       usb3s0_clk: usb3s0 {
+               compatible = "fixed-clock";
+               #clock-cells = <0>;
+               clock-frequency = <0>;
+       };
+
+       usb_extal_clk: usb_extal {
+               compatible = "fixed-clock";
+               #clock-cells = <0>;
+               clock-frequency = <0>;
+       };
+};
index a1c2de9..c7bdc36 100644 (file)
                        compatible = "arm,cortex-a53";
                        reg = <0>;
                        device_type = "cpu";
+                       #cooling-cells = <2>;
                        power-domains = <&sysc R8A774C0_PD_CA53_CPU0>;
                        next-level-cache = <&L2_CA53>;
                        enable-method = "psci";
+                       dynamic-power-coefficient = <277>;
                        clocks = <&cpg CPG_CORE R8A774C0_CLK_Z2>;
                        operating-points-v2 = <&cluster1_opp>;
                };
        thermal-zones {
                cpu-thermal {
                        polling-delay-passive = <250>;
-                       polling-delay = <1000>;
-                       thermal-sensors = <&thermal>;
+                       polling-delay = <0>;
+                       thermal-sensors = <&thermal 0>;
+                       sustainable-power = <717>;
 
                        cooling-maps {
+                               map0 {
+                                       trip = <&target>;
+                                       cooling-device = <&a53_0 0 2>;
+                                       contribution = <1024>;
+                               };
                        };
 
                        trips {
-                               cpu-crit {
+                               sensor1_crit: sensor1-crit {
                                        temperature = <120000>;
                                        hysteresis = <2000>;
                                        type = "critical";
                                };
+
+                               target: trip-point1 {
+                                       temperature = <100000>;
+                                       hysteresis = <2000>;
+                                       type = "passive";
+                               };
                        };
                };
        };
index e4650ae..14d8513 100644 (file)
@@ -30,7 +30,7 @@
 };
 
 &du {
-       vsps = <&vspd0 &vspd1 &vspd2 &vspd3>;
+       vsps = <&vspd0 0>, <&vspd1 0>, <&vspd2 0>, <&vspd3 0>;
 };
 
 &fcpvb1 {
index 95deff6..fde6ec1 100644 (file)
                        power-domains = <&sysc R8A7795_PD_CA57_CPU0>;
                        next-level-cache = <&L2_CA57>;
                        enable-method = "psci";
+                       cpu-idle-states = <&CPU_SLEEP_0>;
                        dynamic-power-coefficient = <854>;
                        clocks = <&cpg CPG_CORE R8A7795_CLK_Z>;
                        operating-points-v2 = <&cluster0_opp>;
                        power-domains = <&sysc R8A7795_PD_CA57_CPU1>;
                        next-level-cache = <&L2_CA57>;
                        enable-method = "psci";
+                       cpu-idle-states = <&CPU_SLEEP_0>;
                        clocks = <&cpg CPG_CORE R8A7795_CLK_Z>;
                        operating-points-v2 = <&cluster0_opp>;
                        capacity-dmips-mhz = <1024>;
                        power-domains = <&sysc R8A7795_PD_CA57_CPU2>;
                        next-level-cache = <&L2_CA57>;
                        enable-method = "psci";
+                       cpu-idle-states = <&CPU_SLEEP_0>;
                        clocks = <&cpg CPG_CORE R8A7795_CLK_Z>;
                        operating-points-v2 = <&cluster0_opp>;
                        capacity-dmips-mhz = <1024>;
                        power-domains = <&sysc R8A7795_PD_CA57_CPU3>;
                        next-level-cache = <&L2_CA57>;
                        enable-method = "psci";
+                       cpu-idle-states = <&CPU_SLEEP_0>;
                        clocks = <&cpg CPG_CORE R8A7795_CLK_Z>;
                        operating-points-v2 = <&cluster0_opp>;
                        capacity-dmips-mhz = <1024>;
                        power-domains = <&sysc R8A7795_PD_CA53_CPU0>;
                        next-level-cache = <&L2_CA53>;
                        enable-method = "psci";
+                       cpu-idle-states = <&CPU_SLEEP_1>;
                        #cooling-cells = <2>;
                        dynamic-power-coefficient = <277>;
                        clocks = <&cpg CPG_CORE R8A7795_CLK_Z2>;
                        power-domains = <&sysc R8A7795_PD_CA53_CPU1>;
                        next-level-cache = <&L2_CA53>;
                        enable-method = "psci";
+                       cpu-idle-states = <&CPU_SLEEP_1>;
                        clocks = <&cpg CPG_CORE R8A7795_CLK_Z2>;
                        operating-points-v2 = <&cluster1_opp>;
                        capacity-dmips-mhz = <535>;
                        power-domains = <&sysc R8A7795_PD_CA53_CPU2>;
                        next-level-cache = <&L2_CA53>;
                        enable-method = "psci";
+                       cpu-idle-states = <&CPU_SLEEP_1>;
                        clocks = <&cpg CPG_CORE R8A7795_CLK_Z2>;
                        operating-points-v2 = <&cluster1_opp>;
                        capacity-dmips-mhz = <535>;
                        power-domains = <&sysc R8A7795_PD_CA53_CPU3>;
                        next-level-cache = <&L2_CA53>;
                        enable-method = "psci";
+                       cpu-idle-states = <&CPU_SLEEP_1>;
                        clocks = <&cpg CPG_CORE R8A7795_CLK_Z2>;
                        operating-points-v2 = <&cluster1_opp>;
                        capacity-dmips-mhz = <535>;
                        cache-unified;
                        cache-level = <2>;
                };
+
+               idle-states {
+                       entry-method = "psci";
+
+                       CPU_SLEEP_0: cpu-sleep-0 {
+                               compatible = "arm,idle-state";
+                               arm,psci-suspend-param = <0x0010000>;
+                               local-timer-stop;
+                               entry-latency-us = <400>;
+                               exit-latency-us = <500>;
+                               min-residency-us = <4000>;
+                       };
+
+                       CPU_SLEEP_1: cpu-sleep-1 {
+                               compatible = "arm,idle-state";
+                               arm,psci-suspend-param = <0x0010000>;
+                               local-timer-stop;
+                               entry-latency-us = <700>;
+                               exit-latency-us = <700>;
+                               min-residency-us = <5000>;
+                       };
+               };
        };
 
        extal_clk: extal {
                        max-frequency = <200000000>;
                        power-domains = <&sysc R8A7795_PD_ALWAYS_ON>;
                        resets = <&cpg 314>;
+                       iommus = <&ipmmu_ds1 32>;
                        status = "disabled";
                };
 
                        max-frequency = <200000000>;
                        power-domains = <&sysc R8A7795_PD_ALWAYS_ON>;
                        resets = <&cpg 313>;
+                       iommus = <&ipmmu_ds1 33>;
                        status = "disabled";
                };
 
                        max-frequency = <200000000>;
                        power-domains = <&sysc R8A7795_PD_ALWAYS_ON>;
                        resets = <&cpg 312>;
+                       iommus = <&ipmmu_ds1 34>;
                        status = "disabled";
                };
 
                        max-frequency = <200000000>;
                        power-domains = <&sysc R8A7795_PD_ALWAYS_ON>;
                        resets = <&cpg 311>;
+                       iommus = <&ipmmu_ds1 35>;
                        status = "disabled";
                };
 
                        iommus = <&ipmmu_vi1 10>;
                };
 
+               cmm0: cmm@fea40000 {
+                       compatible = "renesas,r8a7795-cmm",
+                                    "renesas,rcar-gen3-cmm";
+                       reg = <0 0xfea40000 0 0x1000>;
+                       power-domains = <&sysc R8A7795_PD_ALWAYS_ON>;
+                       clocks = <&cpg CPG_MOD 711>;
+                       resets = <&cpg 711>;
+               };
+
+               cmm1: cmm@fea50000 {
+                       compatible = "renesas,r8a7795-cmm",
+                                    "renesas,rcar-gen3-cmm";
+                       reg = <0 0xfea50000 0 0x1000>;
+                       power-domains = <&sysc R8A7795_PD_ALWAYS_ON>;
+                       clocks = <&cpg CPG_MOD 710>;
+                       resets = <&cpg 710>;
+               };
+
+               cmm2: cmm@fea60000 {
+                       compatible = "renesas,r8a7795-cmm",
+                                    "renesas,rcar-gen3-cmm";
+                       reg = <0 0xfea60000 0 0x1000>;
+                       power-domains = <&sysc R8A7795_PD_ALWAYS_ON>;
+                       clocks = <&cpg CPG_MOD 709>;
+                       resets = <&cpg 709>;
+               };
+
+               cmm3: cmm@fea70000 {
+                       compatible = "renesas,r8a7795-cmm",
+                                    "renesas,rcar-gen3-cmm";
+                       reg = <0 0xfea70000 0 0x1000>;
+                       power-domains = <&sysc R8A7795_PD_ALWAYS_ON>;
+                       clocks = <&cpg CPG_MOD 708>;
+                       resets = <&cpg 708>;
+               };
+
                csi20: csi2@fea80000 {
                        compatible = "renesas,r8a7795-csi2";
                        reg = <0 0xfea80000 0 0x10000>;
                                 <&cpg CPG_MOD 722>,
                                 <&cpg CPG_MOD 721>;
                        clock-names = "du.0", "du.1", "du.2", "du.3";
+
+                       renesas,cmms = <&cmm0>, <&cmm1>, <&cmm2>, <&cmm3>;
                        vsps = <&vspd0 0>, <&vspd1 0>, <&vspd2 0>, <&vspd0 1>;
+
                        status = "disabled";
 
                        ports {
index 3dc9d73..b9db882 100644 (file)
                        power-domains = <&sysc R8A7796_PD_CA57_CPU0>;
                        next-level-cache = <&L2_CA57>;
                        enable-method = "psci";
+                       cpu-idle-states = <&CPU_SLEEP_0>;
                        dynamic-power-coefficient = <854>;
                        clocks = <&cpg CPG_CORE R8A7796_CLK_Z>;
                        operating-points-v2 = <&cluster0_opp>;
                        power-domains = <&sysc R8A7796_PD_CA57_CPU1>;
                        next-level-cache = <&L2_CA57>;
                        enable-method = "psci";
+                       cpu-idle-states = <&CPU_SLEEP_0>;
                        clocks = <&cpg CPG_CORE R8A7796_CLK_Z>;
                        operating-points-v2 = <&cluster0_opp>;
                        capacity-dmips-mhz = <1024>;
                        power-domains = <&sysc R8A7796_PD_CA53_CPU0>;
                        next-level-cache = <&L2_CA53>;
                        enable-method = "psci";
+                       cpu-idle-states = <&CPU_SLEEP_1>;
                        #cooling-cells = <2>;
                        dynamic-power-coefficient = <277>;
                        clocks = <&cpg CPG_CORE R8A7796_CLK_Z2>;
                        power-domains = <&sysc R8A7796_PD_CA53_CPU1>;
                        next-level-cache = <&L2_CA53>;
                        enable-method = "psci";
+                       cpu-idle-states = <&CPU_SLEEP_1>;
                        clocks = <&cpg CPG_CORE R8A7796_CLK_Z2>;
                        operating-points-v2 = <&cluster1_opp>;
                        capacity-dmips-mhz = <535>;
                        power-domains = <&sysc R8A7796_PD_CA53_CPU2>;
                        next-level-cache = <&L2_CA53>;
                        enable-method = "psci";
+                       cpu-idle-states = <&CPU_SLEEP_1>;
                        clocks = <&cpg CPG_CORE R8A7796_CLK_Z2>;
                        operating-points-v2 = <&cluster1_opp>;
                        capacity-dmips-mhz = <535>;
                        power-domains = <&sysc R8A7796_PD_CA53_CPU3>;
                        next-level-cache = <&L2_CA53>;
                        enable-method = "psci";
+                       cpu-idle-states = <&CPU_SLEEP_1>;
                        clocks = <&cpg CPG_CORE R8A7796_CLK_Z2>;
                        operating-points-v2 = <&cluster1_opp>;
                        capacity-dmips-mhz = <535>;
                        cache-unified;
                        cache-level = <2>;
                };
+
+               idle-states {
+                       entry-method = "psci";
+
+                       CPU_SLEEP_0: cpu-sleep-0 {
+                               compatible = "arm,idle-state";
+                               arm,psci-suspend-param = <0x0010000>;
+                               local-timer-stop;
+                               entry-latency-us = <400>;
+                               exit-latency-us = <500>;
+                               min-residency-us = <4000>;
+                       };
+
+                       CPU_SLEEP_1: cpu-sleep-1 {
+                               compatible = "arm,idle-state";
+                               arm,psci-suspend-param = <0x0010000>;
+                               local-timer-stop;
+                               entry-latency-us = <700>;
+                               exit-latency-us = <700>;
+                               min-residency-us = <5000>;
+                       };
+               };
        };
 
        extal_clk: extal {
                        max-frequency = <200000000>;
                        power-domains = <&sysc R8A7796_PD_ALWAYS_ON>;
                        resets = <&cpg 314>;
+                       iommus = <&ipmmu_ds1 32>;
                        status = "disabled";
                };
 
                        max-frequency = <200000000>;
                        power-domains = <&sysc R8A7796_PD_ALWAYS_ON>;
                        resets = <&cpg 313>;
+                       iommus = <&ipmmu_ds1 33>;
                        status = "disabled";
                };
 
                        max-frequency = <200000000>;
                        power-domains = <&sysc R8A7796_PD_ALWAYS_ON>;
                        resets = <&cpg 312>;
+                       iommus = <&ipmmu_ds1 34>;
                        status = "disabled";
                };
 
                        max-frequency = <200000000>;
                        power-domains = <&sysc R8A7796_PD_ALWAYS_ON>;
                        resets = <&cpg 311>;
+                       iommus = <&ipmmu_ds1 35>;
                        status = "disabled";
                };
 
                        renesas,fcp = <&fcpvi0>;
                };
 
+               cmm0: cmm@fea40000 {
+                       compatible = "renesas,r8a7796-cmm",
+                                    "renesas,rcar-gen3-cmm";
+                       reg = <0 0xfea40000 0 0x1000>;
+                       power-domains = <&sysc R8A7796_PD_ALWAYS_ON>;
+                       clocks = <&cpg CPG_MOD 711>;
+                       resets = <&cpg 711>;
+               };
+
+               cmm1: cmm@fea50000 {
+                       compatible = "renesas,r8a7796-cmm",
+                                    "renesas,rcar-gen3-cmm";
+                       reg = <0 0xfea50000 0 0x1000>;
+                       power-domains = <&sysc R8A7796_PD_ALWAYS_ON>;
+                       clocks = <&cpg CPG_MOD 710>;
+                       resets = <&cpg 710>;
+               };
+
+               cmm2: cmm@fea60000 {
+                       compatible = "renesas,r8a7796-cmm",
+                                    "renesas,rcar-gen3-cmm";
+                       reg = <0 0xfea60000 0 0x1000>;
+                       power-domains = <&sysc R8A7796_PD_ALWAYS_ON>;
+                       clocks = <&cpg CPG_MOD 709>;
+                       resets = <&cpg 709>;
+               };
+
                csi20: csi2@fea80000 {
                        compatible = "renesas,r8a7796-csi2";
                        reg = <0 0xfea80000 0 0x10000>;
                                 <&cpg CPG_MOD 723>,
                                 <&cpg CPG_MOD 722>;
                        clock-names = "du.0", "du.1", "du.2";
-                       status = "disabled";
 
-                       vsps = <&vspd0 &vspd1 &vspd2>;
+                       renesas,cmms = <&cmm0>, <&cmm1>, <&cmm2>;
+                       vsps = <&vspd0 0>, <&vspd1 0>, <&vspd2 0>;
+
+                       status = "disabled";
 
                        ports {
                                #address-cells = <1>;
diff --git a/arch/arm64/boot/dts/renesas/r8a77961-salvator-xs.dts b/arch/arm64/boot/dts/renesas/r8a77961-salvator-xs.dts
new file mode 100644 (file)
index 0000000..4abd78a
--- /dev/null
@@ -0,0 +1,31 @@
+// SPDX-License-Identifier: GPL-2.0
+/*
+ * Device Tree Source for the Salvator-X 2nd version board with R-Car M3-W+
+ *
+ * Copyright (C) 2018 Renesas Electronics Corp.
+ */
+
+/dts-v1/;
+#include "r8a77961.dtsi"
+#include "salvator-xs.dtsi"
+
+/ {
+       model = "Renesas Salvator-X 2nd version board based on r8a77961";
+       compatible = "renesas,salvator-xs", "renesas,r8a77961";
+
+       memory@48000000 {
+               device_type = "memory";
+               /* first 128MB is reserved for secure area. */
+               reg = <0x0 0x48000000 0x0 0x78000000>;
+       };
+
+       memory@400000000 {
+               device_type = "memory";
+               reg = <0x4 0x80000000 0x0 0x80000000>;
+       };
+
+       memory@600000000 {
+               device_type = "memory";
+               reg = <0x6 0x00000000 0x1 0x00000000>;
+       };
+};
diff --git a/arch/arm64/boot/dts/renesas/r8a77961.dtsi b/arch/arm64/boot/dts/renesas/r8a77961.dtsi
new file mode 100644 (file)
index 0000000..64466c8
--- /dev/null
@@ -0,0 +1,723 @@
+// SPDX-License-Identifier: GPL-2.0
+/*
+ * Device Tree Source for the R-Car M3-W+ (R8A77961) SoC
+ *
+ * Copyright (C) 2016-2017 Renesas Electronics Corp.
+ */
+
+#include <dt-bindings/clock/r8a77961-cpg-mssr.h>
+#include <dt-bindings/interrupt-controller/arm-gic.h>
+#include <dt-bindings/power/r8a77961-sysc.h>
+
+#define CPG_AUDIO_CLK_I                R8A77961_CLK_S0D4
+
+/ {
+       compatible = "renesas,r8a77961";
+       #address-cells = <2>;
+       #size-cells = <2>;
+
+       /*
+        * The external audio clocks are configured as 0 Hz fixed frequency
+        * clocks by default.
+        * Boards that provide audio clocks should override them.
+        */
+       audio_clk_a: audio_clk_a {
+               compatible = "fixed-clock";
+               #clock-cells = <0>;
+               clock-frequency = <0>;
+       };
+
+       audio_clk_b: audio_clk_b {
+               compatible = "fixed-clock";
+               #clock-cells = <0>;
+               clock-frequency = <0>;
+       };
+
+       audio_clk_c: audio_clk_c {
+               compatible = "fixed-clock";
+               #clock-cells = <0>;
+               clock-frequency = <0>;
+       };
+
+       /* External CAN clock - to be overridden by boards that provide it */
+       can_clk: can {
+               compatible = "fixed-clock";
+               #clock-cells = <0>;
+               clock-frequency = <0>;
+       };
+
+       cluster0_opp: opp_table0 {
+               compatible = "operating-points-v2";
+               opp-shared;
+
+               opp-500000000 {
+                       opp-hz = /bits/ 64 <500000000>;
+                       opp-microvolt = <820000>;
+                       clock-latency-ns = <300000>;
+               };
+               opp-1000000000 {
+                       opp-hz = /bits/ 64 <1000000000>;
+                       opp-microvolt = <820000>;
+                       clock-latency-ns = <300000>;
+               };
+               opp-1500000000 {
+                       opp-hz = /bits/ 64 <1500000000>;
+                       opp-microvolt = <820000>;
+                       clock-latency-ns = <300000>;
+               };
+               opp-1600000000 {
+                       opp-hz = /bits/ 64 <1600000000>;
+                       opp-microvolt = <900000>;
+                       clock-latency-ns = <300000>;
+                       turbo-mode;
+               };
+               opp-1700000000 {
+                       opp-hz = /bits/ 64 <1700000000>;
+                       opp-microvolt = <900000>;
+                       clock-latency-ns = <300000>;
+                       turbo-mode;
+               };
+               opp-1800000000 {
+                       opp-hz = /bits/ 64 <1800000000>;
+                       opp-microvolt = <960000>;
+                       clock-latency-ns = <300000>;
+                       turbo-mode;
+               };
+       };
+
+       cluster1_opp: opp_table1 {
+               compatible = "operating-points-v2";
+               opp-shared;
+
+               opp-800000000 {
+                       opp-hz = /bits/ 64 <800000000>;
+                       opp-microvolt = <820000>;
+                       clock-latency-ns = <300000>;
+               };
+               opp-1000000000 {
+                       opp-hz = /bits/ 64 <1000000000>;
+                       opp-microvolt = <820000>;
+                       clock-latency-ns = <300000>;
+               };
+               opp-1200000000 {
+                       opp-hz = /bits/ 64 <1200000000>;
+                       opp-microvolt = <820000>;
+                       clock-latency-ns = <300000>;
+               };
+               opp-1300000000 {
+                       opp-hz = /bits/ 64 <1300000000>;
+                       opp-microvolt = <820000>;
+                       clock-latency-ns = <300000>;
+                       turbo-mode;
+               };
+       };
+
+       cpus {
+               #address-cells = <1>;
+               #size-cells = <0>;
+
+               cpu-map {
+                       cluster0 {
+                               core0 {
+                                       cpu = <&a57_0>;
+                               };
+                               core1 {
+                                       cpu = <&a57_1>;
+                               };
+                       };
+
+                       cluster1 {
+                               core0 {
+                                       cpu = <&a53_0>;
+                               };
+                               core1 {
+                                       cpu = <&a53_1>;
+                               };
+                               core2 {
+                                       cpu = <&a53_2>;
+                               };
+                               core3 {
+                                       cpu = <&a53_3>;
+                               };
+                       };
+               };
+
+               a57_0: cpu@0 {
+                       compatible = "arm,cortex-a57";
+                       reg = <0x0>;
+                       device_type = "cpu";
+                       power-domains = <&sysc R8A77961_PD_CA57_CPU0>;
+                       next-level-cache = <&L2_CA57>;
+                       enable-method = "psci";
+                       cpu-idle-states = <&CPU_SLEEP_0>;
+                       dynamic-power-coefficient = <854>;
+                       clocks = <&cpg CPG_CORE R8A77961_CLK_Z>;
+                       operating-points-v2 = <&cluster0_opp>;
+                       capacity-dmips-mhz = <1024>;
+                       #cooling-cells = <2>;
+               };
+
+               a57_1: cpu@1 {
+                       compatible = "arm,cortex-a57";
+                       reg = <0x1>;
+                       device_type = "cpu";
+                       power-domains = <&sysc R8A77961_PD_CA57_CPU1>;
+                       next-level-cache = <&L2_CA57>;
+                       enable-method = "psci";
+                       cpu-idle-states = <&CPU_SLEEP_0>;
+                       clocks = <&cpg CPG_CORE R8A77961_CLK_Z>;
+                       operating-points-v2 = <&cluster0_opp>;
+                       capacity-dmips-mhz = <1024>;
+                       #cooling-cells = <2>;
+               };
+
+               a53_0: cpu@100 {
+                       compatible = "arm,cortex-a53";
+                       reg = <0x100>;
+                       device_type = "cpu";
+                       power-domains = <&sysc R8A77961_PD_CA53_CPU0>;
+                       next-level-cache = <&L2_CA53>;
+                       enable-method = "psci";
+                       cpu-idle-states = <&CPU_SLEEP_1>;
+                       #cooling-cells = <2>;
+                       dynamic-power-coefficient = <277>;
+                       clocks = <&cpg CPG_CORE R8A77961_CLK_Z2>;
+                       operating-points-v2 = <&cluster1_opp>;
+                       capacity-dmips-mhz = <535>;
+               };
+
+               a53_1: cpu@101 {
+                       compatible = "arm,cortex-a53";
+                       reg = <0x101>;
+                       device_type = "cpu";
+                       power-domains = <&sysc R8A77961_PD_CA53_CPU1>;
+                       next-level-cache = <&L2_CA53>;
+                       enable-method = "psci";
+                       cpu-idle-states = <&CPU_SLEEP_1>;
+                       clocks = <&cpg CPG_CORE R8A77961_CLK_Z2>;
+                       operating-points-v2 = <&cluster1_opp>;
+                       capacity-dmips-mhz = <535>;
+               };
+
+               a53_2: cpu@102 {
+                       compatible = "arm,cortex-a53";
+                       reg = <0x102>;
+                       device_type = "cpu";
+                       power-domains = <&sysc R8A77961_PD_CA53_CPU2>;
+                       next-level-cache = <&L2_CA53>;
+                       enable-method = "psci";
+                       cpu-idle-states = <&CPU_SLEEP_1>;
+                       clocks = <&cpg CPG_CORE R8A77961_CLK_Z2>;
+                       operating-points-v2 = <&cluster1_opp>;
+                       capacity-dmips-mhz = <535>;
+               };
+
+               a53_3: cpu@103 {
+                       compatible = "arm,cortex-a53";
+                       reg = <0x103>;
+                       device_type = "cpu";
+                       power-domains = <&sysc R8A77961_PD_CA53_CPU3>;
+                       next-level-cache = <&L2_CA53>;
+                       enable-method = "psci";
+                       cpu-idle-states = <&CPU_SLEEP_1>;
+                       clocks = <&cpg CPG_CORE R8A77961_CLK_Z2>;
+                       operating-points-v2 = <&cluster1_opp>;
+                       capacity-dmips-mhz = <535>;
+               };
+
+               L2_CA57: cache-controller-0 {
+                       compatible = "cache";
+                       power-domains = <&sysc R8A77961_PD_CA57_SCU>;
+                       cache-unified;
+                       cache-level = <2>;
+               };
+
+               L2_CA53: cache-controller-1 {
+                       compatible = "cache";
+                       power-domains = <&sysc R8A77961_PD_CA53_SCU>;
+                       cache-unified;
+                       cache-level = <2>;
+               };
+
+               idle-states {
+                       entry-method = "psci";
+
+                       CPU_SLEEP_0: cpu-sleep-0 {
+                               compatible = "arm,idle-state";
+                               arm,psci-suspend-param = <0x0010000>;
+                               local-timer-stop;
+                               entry-latency-us = <400>;
+                               exit-latency-us = <500>;
+                               min-residency-us = <4000>;
+                       };
+
+                       CPU_SLEEP_1: cpu-sleep-1 {
+                               compatible = "arm,idle-state";
+                               arm,psci-suspend-param = <0x0010000>;
+                               local-timer-stop;
+                               entry-latency-us = <700>;
+                               exit-latency-us = <700>;
+                               min-residency-us = <5000>;
+                       };
+               };
+       };
+
+       extal_clk: extal {
+               compatible = "fixed-clock";
+               #clock-cells = <0>;
+               /* This value must be overridden by the board */
+               clock-frequency = <0>;
+       };
+
+       extalr_clk: extalr {
+               compatible = "fixed-clock";
+               #clock-cells = <0>;
+               /* This value must be overridden by the board */
+               clock-frequency = <0>;
+       };
+
+       /* External PCIe clock - can be overridden by the board */
+       pcie_bus_clk: pcie_bus {
+               compatible = "fixed-clock";
+               #clock-cells = <0>;
+               clock-frequency = <0>;
+       };
+
+       pmu_a53 {
+               compatible = "arm,cortex-a53-pmu";
+               interrupts-extended = <&gic GIC_SPI 84 IRQ_TYPE_LEVEL_HIGH>,
+                                     <&gic GIC_SPI 85 IRQ_TYPE_LEVEL_HIGH>,
+                                     <&gic GIC_SPI 86 IRQ_TYPE_LEVEL_HIGH>,
+                                     <&gic GIC_SPI 87 IRQ_TYPE_LEVEL_HIGH>;
+               interrupt-affinity = <&a53_0>, <&a53_1>, <&a53_2>, <&a53_3>;
+       };
+
+       pmu_a57 {
+               compatible = "arm,cortex-a57-pmu";
+               interrupts-extended = <&gic GIC_SPI 72 IRQ_TYPE_LEVEL_HIGH>,
+                                     <&gic GIC_SPI 73 IRQ_TYPE_LEVEL_HIGH>;
+               interrupt-affinity = <&a57_0>, <&a57_1>;
+       };
+
+       psci {
+               compatible = "arm,psci-1.0", "arm,psci-0.2";
+               method = "smc";
+       };
+
+       /* External SCIF clock - to be overridden by boards that provide it */
+       scif_clk: scif {
+               compatible = "fixed-clock";
+               #clock-cells = <0>;
+               clock-frequency = <0>;
+       };
+
+       soc {
+               compatible = "simple-bus";
+               interrupt-parent = <&gic>;
+               #address-cells = <2>;
+               #size-cells = <2>;
+               ranges;
+
+               rwdt: watchdog@e6020000 {
+                       reg = <0 0xe6020000 0 0x0c>;
+                       /* placeholder */
+               };
+
+               gpio2: gpio@e6052000 {
+                       reg = <0 0xe6052000 0 0x50>;
+                       #gpio-cells = <2>;
+                       gpio-controller;
+                       #interrupt-cells = <2>;
+                       interrupt-controller;
+                       /* placeholder */
+               };
+
+               gpio3: gpio@e6053000 {
+                       reg = <0 0xe6053000 0 0x50>;
+                       #gpio-cells = <2>;
+                       gpio-controller;
+                       #interrupt-cells = <2>;
+                       interrupt-controller;
+                       /* placeholder */
+               };
+
+               gpio4: gpio@e6054000 {
+                       reg = <0 0xe6054000 0 0x50>;
+                       #gpio-cells = <2>;
+                       gpio-controller;
+                       #interrupt-cells = <2>;
+                       interrupt-controller;
+                       /* placeholder */
+               };
+
+               gpio5: gpio@e6055000 {
+                       reg = <0 0xe6055000 0 0x50>;
+                       #gpio-cells = <2>;
+                       gpio-controller;
+                       #interrupt-cells = <2>;
+                       interrupt-controller;
+                       /* placeholder */
+               };
+
+               gpio6: gpio@e6055400 {
+                       reg = <0 0xe6055400 0 0x50>;
+                       #gpio-cells = <2>;
+                       gpio-controller;
+                       #interrupt-cells = <2>;
+                       interrupt-controller;
+                       /* placeholder */
+               };
+
+               pfc: pin-controller@e6060000 {
+                       compatible = "renesas,pfc-r8a77961";
+                       reg = <0 0xe6060000 0 0x50c>;
+               };
+
+               cpg: clock-controller@e6150000 {
+                       compatible = "renesas,r8a77961-cpg-mssr";
+                       reg = <0 0xe6150000 0 0x1000>;
+                       clocks = <&extal_clk>, <&extalr_clk>;
+                       clock-names = "extal", "extalr";
+                       #clock-cells = <2>;
+                       #power-domain-cells = <0>;
+                       #reset-cells = <1>;
+               };
+
+               rst: reset-controller@e6160000 {
+                       compatible = "renesas,r8a77961-rst";
+                       reg = <0 0xe6160000 0 0x0200>;
+               };
+
+               sysc: system-controller@e6180000 {
+                       compatible = "renesas,r8a77961-sysc";
+                       reg = <0 0xe6180000 0 0x0400>;
+                       #power-domain-cells = <1>;
+               };
+
+               intc_ex: interrupt-controller@e61c0000 {
+                       #interrupt-cells = <2>;
+                       interrupt-controller;
+                       reg = <0 0xe61c0000 0 0x200>;
+                       /* placeholder */
+               };
+
+               i2c2: i2c@e6510000 {
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       reg = <0 0xe6510000 0 0x40>;
+                       /* placeholder */
+               };
+
+               i2c4: i2c@e66d8000 {
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       reg = <0 0xe66d8000 0 0x40>;
+                       /* placeholder */
+               };
+
+               i2c_dvfs: i2c@e60b0000 {
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       reg = <0 0xe60b0000 0 0x425>;
+                       /* placeholder */
+               };
+
+               hscif1: serial@e6550000 {
+                       reg = <0 0xe6550000 0 0x60>;
+                       /* placeholder */
+               };
+
+               hsusb: usb@e6590000 {
+                       reg = <0 0xe6590000 0 0x200>;
+                       /* placeholder */
+               };
+
+               usb3_phy0: usb-phy@e65ee000 {
+                       reg = <0 0xe65ee000 0 0x90>;
+                       #phy-cells = <0>;
+                       /* placeholder */
+               };
+
+               avb: ethernet@e6800000 {
+                       reg = <0 0xe6800000 0 0x800>, <0 0xe6a00000 0 0x10000>;
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       /* placeholder */
+               };
+
+               pwm1: pwm@e6e31000 {
+                       reg = <0 0xe6e31000 0 8>;
+                       #pwm-cells = <2>;
+                       /* placeholder */
+               };
+
+               scif1: serial@e6e68000 {
+                       reg = <0 0xe6e68000 0 64>;
+                       /* placeholder */
+               };
+
+               scif2: serial@e6e88000 {
+                       compatible = "renesas,scif-r8a77961",
+                                    "renesas,rcar-gen3-scif", "renesas,scif";
+                       reg = <0 0xe6e88000 0 64>;
+                       interrupts = <GIC_SPI 164 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&cpg CPG_MOD 310>,
+                                <&cpg CPG_CORE R8A77961_CLK_S3D1>,
+                                <&scif_clk>;
+                       clock-names = "fck", "brg_int", "scif_clk";
+                       power-domains = <&sysc R8A77961_PD_ALWAYS_ON>;
+                       resets = <&cpg 310>;
+                       status = "disabled";
+               };
+
+               vin0: video@e6ef0000 {
+                       reg = <0 0xe6ef0000 0 0x1000>;
+                       /* placeholder */
+               };
+
+               vin1: video@e6ef1000 {
+                       reg = <0 0xe6ef1000 0 0x1000>;
+                       /* placeholder */
+               };
+
+               vin2: video@e6ef2000 {
+                       reg = <0 0xe6ef2000 0 0x1000>;
+                       /* placeholder */
+               };
+
+               vin3: video@e6ef3000 {
+                       reg = <0 0xe6ef3000 0 0x1000>;
+                       /* placeholder */
+               };
+
+               vin4: video@e6ef4000 {
+                       reg = <0 0xe6ef4000 0 0x1000>;
+                       /* placeholder */
+               };
+
+               vin5: video@e6ef5000 {
+                       reg = <0 0xe6ef5000 0 0x1000>;
+                       /* placeholder */
+               };
+
+               vin6: video@e6ef6000 {
+                       reg = <0 0xe6ef6000 0 0x1000>;
+                       /* placeholder */
+               };
+
+               vin7: video@e6ef7000 {
+                       reg = <0 0xe6ef7000 0 0x1000>;
+                       /* placeholder */
+               };
+
+               rcar_sound: sound@ec500000 {
+                       reg = <0 0xec500000 0 0x1000>, /* SCU */
+                             <0 0xec5a0000 0 0x100>,  /* ADG */
+                             <0 0xec540000 0 0x1000>, /* SSIU */
+                             <0 0xec541000 0 0x280>,  /* SSI */
+                             <0 0xec760000 0 0x200>;  /* Audio DMAC peri peri*/
+                       /* placeholder */
+                       rcar_sound,dvc {
+                               dvc0: dvc-0 { };
+                               dvc1: dvc-1 { };
+                       };
+
+                       rcar_sound,src {
+                               src0: src-0 { };
+                               src1: src-1 { };
+                       };
+
+                       rcar_sound,ssi {
+                               ssi0: ssi-0 { };
+                               ssi1: ssi-1 { };
+                       };
+               };
+
+               xhci0: usb@ee000000 {
+                       reg = <0 0xee000000 0 0xc00>;
+                       /* placeholder */
+               };
+
+               usb3_peri0: usb@ee020000 {
+                       reg = <0 0xee020000 0 0x400>;
+                       /* placeholder */
+               };
+
+               ohci0: usb@ee080000 {
+                       reg = <0 0xee080000 0 0x100>;
+                       /* placeholder */
+               };
+
+               ohci1: usb@ee0a0000 {
+                       reg = <0 0xee0a0000 0 0x100>;
+                       /* placeholder */
+               };
+
+               ehci0: usb@ee080100 {
+                       reg = <0 0xee080100 0 0x100>;
+                       /* placeholder */
+               };
+
+               ehci1: usb@ee0a0100 {
+                       reg = <0 0xee0a0100 0 0x100>;
+                       /* placeholder */
+               };
+
+               usb2_phy0: usb-phy@ee080200 {
+                       reg = <0 0xee080200 0 0x700>;
+                       /* placeholder */
+               };
+
+               usb2_phy1: usb-phy@ee0a0200 {
+                       reg = <0 0xee0a0200 0 0x700>;
+                       /* placeholder */
+               };
+
+               sdhi0: sd@ee100000 {
+                       reg = <0 0xee100000 0 0x2000>;
+                       /* placeholder */
+               };
+
+               sdhi2: sd@ee140000 {
+                       reg = <0 0xee140000 0 0x2000>;
+                       /* placeholder */
+               };
+
+               sdhi3: sd@ee160000 {
+                       reg = <0 0xee160000 0 0x2000>;
+                       /* placeholder */
+               };
+
+               gic: interrupt-controller@f1010000 {
+                       compatible = "arm,gic-400";
+                       #interrupt-cells = <3>;
+                       #address-cells = <0>;
+                       interrupt-controller;
+                       reg = <0x0 0xf1010000 0 0x1000>,
+                             <0x0 0xf1020000 0 0x20000>,
+                             <0x0 0xf1040000 0 0x20000>,
+                             <0x0 0xf1060000 0 0x20000>;
+                       interrupts = <GIC_PPI 9
+                                       (GIC_CPU_MASK_SIMPLE(6) | IRQ_TYPE_LEVEL_HIGH)>;
+                       clocks = <&cpg CPG_MOD 408>;
+                       clock-names = "clk";
+                       power-domains = <&sysc R8A77961_PD_ALWAYS_ON>;
+                       resets = <&cpg 408>;
+               };
+
+               pciec0: pcie@fe000000 {
+                       reg = <0 0xfe000000 0 0x80000>;
+                       /* placeholder */
+               };
+
+               pciec1: pcie@ee800000 {
+                       reg = <0 0xee800000 0 0x80000>;
+                       /* placeholder */
+               };
+
+               csi20: csi2@fea80000 {
+                       reg = <0 0xfea80000 0 0x10000>;
+                       /* placeholder */
+
+                       ports {
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+
+                               port@1 {
+                                       #address-cells = <1>;
+                                       #size-cells = <0>;
+                                       reg = <1>;
+                               };
+                       };
+               };
+
+               csi40: csi2@feaa0000 {
+                       reg = <0 0xfeaa0000 0 0x10000>;
+                       /* placeholder */
+
+                       ports {
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+
+                               port@1 {
+                                       #address-cells = <1>;
+                                       #size-cells = <0>;
+
+                                       reg = <1>;
+                               };
+                       };
+               };
+
+               hdmi0: hdmi@fead0000 {
+                       reg = <0 0xfead0000 0 0x10000>;
+                       /* placeholder */
+
+                       ports {
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+                               port@0 {
+                                       reg = <0>;
+                               };
+                               port@1 {
+                                       reg = <1>;
+                               };
+                               port@2 {
+                                       /* HDMI sound */
+                                       reg = <2>;
+                               };
+                       };
+               };
+
+               du: display@feb00000 {
+                       reg = <0 0xfeb00000 0 0x70000>;
+                       /* placeholder */
+
+                       ports {
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+
+                               port@0 {
+                                       reg = <0>;
+                                       du_out_rgb: endpoint {
+                                       };
+                               };
+                               port@1 {
+                                       reg = <1>;
+                                       du_out_hdmi0: endpoint {
+                                       };
+                               };
+                               port@2 {
+                                       reg = <2>;
+                                       du_out_lvds0: endpoint {
+                                       };
+                               };
+                       };
+               };
+
+               prr: chipid@fff00044 {
+                       compatible = "renesas,prr";
+                       reg = <0 0xfff00044 0 4>;
+               };
+       };
+
+       timer {
+               compatible = "arm,armv8-timer";
+               interrupts-extended = <&gic GIC_PPI 13 (GIC_CPU_MASK_SIMPLE(6) | IRQ_TYPE_LEVEL_LOW)>,
+                                     <&gic GIC_PPI 14 (GIC_CPU_MASK_SIMPLE(6) | IRQ_TYPE_LEVEL_LOW)>,
+                                     <&gic GIC_PPI 11 (GIC_CPU_MASK_SIMPLE(6) | IRQ_TYPE_LEVEL_LOW)>,
+                                     <&gic GIC_PPI 10 (GIC_CPU_MASK_SIMPLE(6) | IRQ_TYPE_LEVEL_LOW)>;
+       };
+
+       /* External USB clocks - can be overridden by the board */
+       usb3s0_clk: usb3s0 {
+               compatible = "fixed-clock";
+               #clock-cells = <0>;
+               clock-frequency = <0>;
+       };
+
+       usb_extal_clk: usb_extal {
+               compatible = "fixed-clock";
+               #clock-cells = <0>;
+               clock-frequency = <0>;
+       };
+};
index 4ae1632..bdbe197 100644 (file)
                        max-frequency = <200000000>;
                        power-domains = <&sysc R8A77965_PD_ALWAYS_ON>;
                        resets = <&cpg 314>;
+                       iommus = <&ipmmu_ds1 32>;
                        status = "disabled";
                };
 
                        max-frequency = <200000000>;
                        power-domains = <&sysc R8A77965_PD_ALWAYS_ON>;
                        resets = <&cpg 313>;
+                       iommus = <&ipmmu_ds1 33>;
                        status = "disabled";
                };
 
                        max-frequency = <200000000>;
                        power-domains = <&sysc R8A77965_PD_ALWAYS_ON>;
                        resets = <&cpg 312>;
+                       iommus = <&ipmmu_ds1 34>;
                        status = "disabled";
                };
 
                        max-frequency = <200000000>;
                        power-domains = <&sysc R8A77965_PD_ALWAYS_ON>;
                        resets = <&cpg 311>;
+                       iommus = <&ipmmu_ds1 35>;
                        status = "disabled";
                };
 
                        resets = <&cpg 611>;
                };
 
+               cmm0: cmm@fea40000 {
+                       compatible = "renesas,r8a77965-cmm",
+                                    "renesas,rcar-gen3-cmm";
+                       reg = <0 0xfea40000 0 0x1000>;
+                       power-domains = <&sysc R8A77965_PD_ALWAYS_ON>;
+                       clocks = <&cpg CPG_MOD 711>;
+                       resets = <&cpg 711>;
+               };
+
+               cmm1: cmm@fea50000 {
+                       compatible = "renesas,r8a77965-cmm",
+                                    "renesas,rcar-gen3-cmm";
+                       reg = <0 0xfea50000 0 0x1000>;
+                       power-domains = <&sysc R8A77965_PD_ALWAYS_ON>;
+                       clocks = <&cpg CPG_MOD 710>;
+                       resets = <&cpg 710>;
+               };
+
+               cmm3: cmm@fea70000 {
+                       compatible = "renesas,r8a77965-cmm",
+                                    "renesas,rcar-gen3-cmm";
+                       reg = <0 0xfea70000 0 0x1000>;
+                       power-domains = <&sysc R8A77965_PD_ALWAYS_ON>;
+                       clocks = <&cpg CPG_MOD 708>;
+                       resets = <&cpg 708>;
+               };
+
                csi20: csi2@fea80000 {
                        compatible = "renesas,r8a77965-csi2";
                        reg = <0 0xfea80000 0 0x10000>;
                                 <&cpg CPG_MOD 723>,
                                 <&cpg CPG_MOD 721>;
                        clock-names = "du.0", "du.1", "du.3";
-                       status = "disabled";
 
+                       renesas,cmms = <&cmm0>, <&cmm1>, <&cmm3>;
                        vsps = <&vspd0 0>, <&vspd1 0>, <&vspd0 1>;
 
+                       status = "disabled";
+
                        ports {
                                #address-cells = <1>;
                                #size-cells = <0>;
index 0cd3b37..0d0558e 100644 (file)
                };
 
                pwm3: pwm@e6e33000 {
-                       compatible = "renesas,pwm-r8a7790", "renesas,pwm-rcar";
+                       compatible = "renesas,pwm-r8a77970", "renesas,pwm-rcar";
                        reg = <0 0xe6e33000 0 8>;
                        #pwm-cells = <2>;
                        clocks = <&cpg CPG_MOD 523>;
                        power-domains = <&sysc R8A77970_PD_ALWAYS_ON>;
                        resets = <&cpg 314>;
                        max-frequency = <200000000>;
+                       iommus = <&ipmmu_ds1 32>;
                        status = "disabled";
                };
 
                        clock-names = "du.0";
                        power-domains = <&sysc R8A77970_PD_ALWAYS_ON>;
                        resets = <&cpg 724>;
-                       vsps = <&vspd0>;
+                       vsps = <&vspd0 0>;
                        status = "disabled";
 
                        ports {
index 461a47e..4d86669 100644 (file)
                        power-domains = <&sysc R8A77980_PD_ALWAYS_ON>;
                        resets = <&cpg 314>;
                        max-frequency = <200000000>;
+                       iommus = <&ipmmu_ds1 32>;
                        status = "disabled";
                };
 
                        clock-names = "du.0";
                        power-domains = <&sysc R8A77980_PD_ALWAYS_ON>;
                        resets = <&cpg 724>;
-                       vsps = <&vspd0>;
+                       vsps = <&vspd0 0>;
                        status = "disabled";
 
                        ports {
index 455954c..67a6824 100644 (file)
                        max-frequency = <200000000>;
                        power-domains = <&sysc R8A77990_PD_ALWAYS_ON>;
                        resets = <&cpg 314>;
+                       iommus = <&ipmmu_ds1 32>;
                        status = "disabled";
                };
 
                        max-frequency = <200000000>;
                        power-domains = <&sysc R8A77990_PD_ALWAYS_ON>;
                        resets = <&cpg 313>;
+                       iommus = <&ipmmu_ds1 33>;
                        status = "disabled";
                };
 
                        max-frequency = <200000000>;
                        power-domains = <&sysc R8A77990_PD_ALWAYS_ON>;
                        resets = <&cpg 311>;
+                       iommus = <&ipmmu_ds1 35>;
                        status = "disabled";
                };
 
                        iommus = <&ipmmu_vi0 9>;
                };
 
+               cmm0: cmm@fea40000 {
+                       compatible = "renesas,r8a77990-cmm",
+                                    "renesas,rcar-gen3-cmm";
+                       reg = <0 0xfea40000 0 0x1000>;
+                       power-domains = <&sysc R8A77990_PD_ALWAYS_ON>;
+                       clocks = <&cpg CPG_MOD 711>;
+                       resets = <&cpg 711>;
+               };
+
+               cmm1: cmm@fea50000 {
+                       compatible = "renesas,r8a77990-cmm",
+                                    "renesas,rcar-gen3-cmm";
+                       reg = <0 0xfea50000 0 0x1000>;
+                       power-domains = <&sysc R8A77990_PD_ALWAYS_ON>;
+                       clocks = <&cpg CPG_MOD 710>;
+                       resets = <&cpg 710>;
+               };
+
                csi40: csi2@feaa0000 {
                        compatible = "renesas,r8a77990-csi2";
                        reg = <0 0xfeaa0000 0 0x10000>;
                        clock-names = "du.0", "du.1";
                        resets = <&cpg 724>;
                        reset-names = "du.0";
+
+                       renesas,cmms = <&cmm0>, <&cmm1>;
                        vsps = <&vspd0 0>, <&vspd1 0>;
+
                        status = "disabled";
 
                        ports {
index 183fef8..e6ee2b7 100644 (file)
                        max-frequency = <200000000>;
                        power-domains = <&sysc R8A77995_PD_ALWAYS_ON>;
                        resets = <&cpg 312>;
+                       iommus = <&ipmmu_ds1 34>;
                        status = "disabled";
                };
 
                        iommus = <&ipmmu_vi0 9>;
                };
 
+               cmm0: cmm@fea40000 {
+                       compatible = "renesas,r8a77995-cmm",
+                                    "renesas,rcar-gen3-cmm";
+                       reg = <0 0xfea40000 0 0x1000>;
+                       power-domains = <&sysc R8A77995_PD_ALWAYS_ON>;
+                       clocks = <&cpg CPG_MOD 711>;
+                       resets = <&cpg 711>;
+               };
+
+               cmm1: cmm@fea50000 {
+                       compatible = "renesas,r8a77995-cmm",
+                                    "renesas,rcar-gen3-cmm";
+                       reg = <0 0xfea50000 0 0x1000>;
+                       power-domains = <&sysc R8A77995_PD_ALWAYS_ON>;
+                       clocks = <&cpg CPG_MOD 710>;
+                       resets = <&cpg 710>;
+               };
+
                du: display@feb00000 {
                        compatible = "renesas,du-r8a77995";
                        reg = <0 0xfeb00000 0 0x40000>;
                        clock-names = "du.0", "du.1";
                        resets = <&cpg 724>;
                        reset-names = "du.0";
+
+                       renesas,cmms = <&cmm0>, <&cmm1>;
                        vsps = <&vspd0 0>, <&vspd1 0>;
+
                        status = "disabled";
 
                        ports {
diff --git a/arch/arm64/boot/dts/renesas/rzg2-advantech-idk-1110wr-panel.dtsi b/arch/arm64/boot/dts/renesas/rzg2-advantech-idk-1110wr-panel.dtsi
new file mode 100644 (file)
index 0000000..bcc2117
--- /dev/null
@@ -0,0 +1,41 @@
+// SPDX-License-Identifier: GPL-2.0
+/*
+ * Device Tree Source for the Advantech idk-1110wr LVDS panel connected
+ * to RZ/G2 boards
+ *
+ * Copyright (C) 2019 Renesas Electronics Corp.
+ */
+
+/ {
+       panel-lvds {
+               compatible = "advantech,idk-1110wr", "panel-lvds";
+
+               width-mm = <223>;
+               height-mm = <125>;
+
+               data-mapping = "jeida-24";
+
+               panel-timing {
+                       /* 1024x600 @60Hz */
+                       clock-frequency = <51200000>;
+                       hactive = <1024>;
+                       vactive = <600>;
+                       hsync-len = <240>;
+                       hfront-porch = <40>;
+                       hback-porch = <40>;
+                       vfront-porch = <15>;
+                       vback-porch = <10>;
+                       vsync-len = <10>;
+               };
+
+               port {
+                       panel_in: endpoint {
+                               remote-endpoint = <&lvds_connector>;
+                       };
+               };
+       };
+};
+
+&lvds_connector {
+       remote-endpoint = <&panel_in>;
+};
index 1f18a93..48fb631 100644 (file)
@@ -1,5 +1,8 @@
 # SPDX-License-Identifier: GPL-2.0
 dtb-$(CONFIG_ARCH_ROCKCHIP) += px30-evb.dtb
+dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3308-evb.dtb
+dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3308-roc-cc.dtb
+dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3328-a1.dtb
 dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3328-evb.dtb
 dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3328-rock64.dtb
 dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3328-roc-cc.dtb
@@ -27,6 +30,7 @@ dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3399-nanopi-neo4.dtb
 dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3399-orangepi.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-rock-pi-4.dtb
 dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3399-rock960.dtb
 dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3399-rockpro64.dtb
index 6eb7407..936ed7d 100644 (file)
@@ -14,7 +14,7 @@
        compatible = "rockchip,px30-evb", "rockchip,px30";
 
        chosen {
-               stdout-path = "serial2:1500000n8";
+               stdout-path = "serial5:115200n8";
        };
 
        adc-keys {
        backlight: backlight {
                compatible = "pwm-backlight";
                pwms = <&pwm1 0 25000 0>;
+               power-supply = <&vcc3v3_lcd>;
+       };
+
+       emmc_pwrseq: emmc-pwrseq {
+               compatible = "mmc-pwrseq-emmc";
+               pinctrl-0 = <&emmc_reset>;
+               pinctrl-names = "default";
+               reset-gpios = <&gpio1 RK_PB3 GPIO_ACTIVE_HIGH>;
        };
 
        sdio_pwrseq: sdio-pwrseq {
                reset-gpios = <&gpio0 RK_PA2 GPIO_ACTIVE_LOW>; /* GPIO3_A4 */
        };
 
-       vcc_phy: vcc-phy-regulator {
-               compatible = "regulator-fixed";
-               regulator-name = "vcc_phy";
-               regulator-always-on;
-               regulator-boot-on;
-       };
-
        vcc5v0_sys: vccsys {
                compatible = "regulator-fixed";
                regulator-name = "vcc5v0_sys";
        };
 };
 
+&cpu0 {
+       cpu-supply = <&vdd_arm>;
+};
+
+&cpu1 {
+       cpu-supply = <&vdd_arm>;
+};
+
+&cpu2 {
+       cpu-supply = <&vdd_arm>;
+};
+
+&cpu3 {
+       cpu-supply = <&vdd_arm>;
+};
+
 &display_subsystem {
        status = "okay";
 };
        cap-mmc-highspeed;
        mmc-hs200-1_8v;
        non-removable;
+       mmc-pwrseq = <&emmc_pwrseq>;
+       vmmc-supply = <&vcc_3v0>;
+       vqmmc-supply = <&vccio_flash>;
        status = "okay";
 };
 
 &gmac {
        clock_in_out = "output";
-       phy-supply = <&vcc_phy>;
+       phy-supply = <&vcc_rmii>;
        snps,reset-gpio = <&gpio2 13 GPIO_ACTIVE_LOW>;
        snps,reset-active-low;
        snps,reset-delays-us = <0 50000 50000>;
 
 &i2c0 {
        status = "okay";
+
+       rk809: pmic@20 {
+               compatible = "rockchip,rk809";
+               reg = <0x20>;
+               interrupt-parent = <&gpio0>;
+               interrupts = <7 IRQ_TYPE_LEVEL_LOW>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&pmic_int>;
+               rockchip,system-power-controller;
+               wakeup-source;
+               #clock-cells = <0>;
+               clock-output-names = "xin32k";
+
+               vcc1-supply = <&vcc5v0_sys>;
+               vcc2-supply = <&vcc5v0_sys>;
+               vcc3-supply = <&vcc5v0_sys>;
+               vcc4-supply = <&vcc5v0_sys>;
+               vcc5-supply = <&vcc3v3_sys>;
+               vcc6-supply = <&vcc3v3_sys>;
+               vcc7-supply = <&vcc3v3_sys>;
+               vcc8-supply = <&vcc3v3_sys>;
+               vcc9-supply = <&vcc5v0_sys>;
+
+               regulators {
+                       vdd_log: DCDC_REG1 {
+                               regulator-name = "vdd_log";
+                               regulator-min-microvolt = <950000>;
+                               regulator-max-microvolt = <1350000>;
+                               regulator-ramp-delay = <6001>;
+                               regulator-always-on;
+                               regulator-boot-on;
+
+                               regulator-state-mem {
+                                       regulator-on-in-suspend;
+                                       regulator-suspend-microvolt = <950000>;
+                               };
+                       };
+
+                       vdd_arm: DCDC_REG2 {
+                               regulator-name = "vdd_arm";
+                               regulator-min-microvolt = <950000>;
+                               regulator-max-microvolt = <1350000>;
+                               regulator-ramp-delay = <6001>;
+                               regulator-always-on;
+                               regulator-boot-on;
+
+                               regulator-state-mem {
+                                       regulator-off-in-suspend;
+                                       regulator-suspend-microvolt = <950000>;
+                               };
+                       };
+
+                       vcc_ddr: DCDC_REG3 {
+                               regulator-name = "vcc_ddr";
+                               regulator-always-on;
+                               regulator-boot-on;
+
+                               regulator-state-mem {
+                                       regulator-on-in-suspend;
+                               };
+                       };
+
+                       vcc_3v0: vcc_rmii: DCDC_REG4 {
+                               regulator-name = "vcc_3v0";
+                               regulator-min-microvolt = <3000000>;
+                               regulator-max-microvolt = <3000000>;
+                               regulator-always-on;
+                               regulator-boot-on;
+
+                               regulator-state-mem {
+                                       regulator-on-in-suspend;
+                                       regulator-suspend-microvolt = <3000000>;
+                               };
+                       };
+
+                       vcc3v3_sys: DCDC_REG5 {
+                               regulator-name = "vcc3v3_sys";
+                               regulator-min-microvolt = <3300000>;
+                               regulator-max-microvolt = <3300000>;
+                               regulator-always-on;
+                               regulator-boot-on;
+
+                               regulator-state-mem {
+                                       regulator-on-in-suspend;
+                                       regulator-suspend-microvolt = <3300000>;
+                               };
+                       };
+
+                       vcc_1v0: LDO_REG1 {
+                               regulator-name = "vcc_1v0";
+                               regulator-min-microvolt = <1000000>;
+                               regulator-max-microvolt = <1000000>;
+                               regulator-always-on;
+                               regulator-boot-on;
+
+                               regulator-state-mem {
+                                       regulator-on-in-suspend;
+                                       regulator-suspend-microvolt = <1000000>;
+                               };
+                       };
+
+                       vcc_1v8: vccio_flash: vccio_sdio: LDO_REG2 {
+                               regulator-name = "vcc_1v8";
+                               regulator-min-microvolt = <1800000>;
+                               regulator-max-microvolt = <1800000>;
+                               regulator-always-on;
+                               regulator-boot-on;
+
+                               regulator-state-mem {
+                                       regulator-on-in-suspend;
+                                       regulator-suspend-microvolt = <1800000>;
+                               };
+                       };
+
+                       vdd_1v0: LDO_REG3 {
+                               regulator-name = "vdd_1v0";
+                               regulator-min-microvolt = <1000000>;
+                               regulator-max-microvolt = <1000000>;
+                               regulator-always-on;
+                               regulator-boot-on;
+
+                               regulator-state-mem {
+                                       regulator-on-in-suspend;
+                                       regulator-suspend-microvolt = <1000000>;
+                               };
+                       };
+
+                       vcc3v0_pmu: LDO_REG4 {
+                               regulator-name = "vcc3v0_pmu";
+                               regulator-min-microvolt = <3000000>;
+                               regulator-max-microvolt = <3000000>;
+                               regulator-always-on;
+                               regulator-boot-on;
+
+                               regulator-state-mem {
+                                       regulator-on-in-suspend;
+                                       regulator-suspend-microvolt = <3000000>;
+                               };
+                       };
+
+                       vccio_sd: LDO_REG5 {
+                               regulator-name = "vccio_sd";
+                               regulator-min-microvolt = <1800000>;
+                               regulator-max-microvolt = <3300000>;
+                               regulator-always-on;
+                               regulator-boot-on;
+
+                               regulator-state-mem {
+                                       regulator-on-in-suspend;
+                                       regulator-suspend-microvolt = <3300000>;
+                               };
+                       };
+
+                       vcc_sd: LDO_REG6 {
+                               regulator-name = "vcc_sd";
+                               regulator-min-microvolt = <3300000>;
+                               regulator-max-microvolt = <3300000>;
+                               regulator-boot-on;
+
+                               regulator-state-mem {
+                                       regulator-on-in-suspend;
+                                       regulator-suspend-microvolt = <3300000>;
+                               };
+                       };
+
+                       vcc2v8_dvp: LDO_REG7 {
+                               regulator-name = "vcc2v8_dvp";
+                               regulator-min-microvolt = <2800000>;
+                               regulator-max-microvolt = <2800000>;
+                               regulator-boot-on;
+
+                               regulator-state-mem {
+                                       regulator-off-in-suspend;
+                                       regulator-suspend-microvolt = <2800000>;
+                               };
+                       };
+
+                       vcc1v8_dvp: LDO_REG8 {
+                               regulator-name = "vcc1v8_dvp";
+                               regulator-min-microvolt = <1800000>;
+                               regulator-max-microvolt = <1800000>;
+                               regulator-boot-on;
+
+                               regulator-state-mem {
+                                       regulator-on-in-suspend;
+                                       regulator-suspend-microvolt = <1800000>;
+                               };
+                       };
+
+                       vcc1v5_dvp: LDO_REG9 {
+                               regulator-name = "vcc1v5_dvp";
+                               regulator-min-microvolt = <1500000>;
+                               regulator-max-microvolt = <1500000>;
+                               regulator-boot-on;
+
+                               regulator-state-mem {
+                                       regulator-off-in-suspend;
+                                       regulator-suspend-microvolt = <1500000>;
+                               };
+                       };
+
+                       vcc3v3_lcd: SWITCH_REG1 {
+                               regulator-name = "vcc3v3_lcd";
+                               regulator-boot-on;
+                       };
+
+                       vcc5v0_host: SWITCH_REG2 {
+                               regulator-name = "vcc5v0_host";
+                               regulator-always-on;
+                               regulator-boot-on;
+                       };
+               };
+       };
+};
+
+&i2c1 {
+       status = "okay";
+
+       sensor@d {
+               compatible = "asahi-kasei,ak8963";
+               reg = <0x0d>;
+               gpios = <&gpio0 RK_PB7 GPIO_ACTIVE_HIGH>;
+               vdd-supply = <&vcc3v0_pmu>;
+               mount-matrix = "1", /* x0 */
+                              "0", /* y0 */
+                              "0", /* z0 */
+                              "0", /* x1 */
+                              "1", /* y1 */
+                              "0", /* z1 */
+                              "0", /* x2 */
+                              "0", /* y2 */
+                              "1"; /* z2 */
+       };
+
+       touchscreen@14 {
+               compatible = "goodix,gt1151";
+               reg = <0x14>;
+               interrupt-parent = <&gpio0>;
+               interrupts = <RK_PA5 IRQ_TYPE_LEVEL_LOW>;
+               irq-gpios = <&gpio0 RK_PA5 GPIO_ACTIVE_LOW>;
+               reset-gpios = <&gpio0 RK_PB4 GPIO_ACTIVE_HIGH>;
+               VDDIO-supply = <&vcc3v3_lcd>;
+       };
+
+       sensor@4c {
+               compatible = "fsl,mma7660";
+               reg = <0x4c>;
+               interrupt-parent = <&gpio0>;
+               interrupts = <RK_PB7 IRQ_TYPE_LEVEL_LOW>;
+       };
 };
 
 &i2s1_2ch {
 
 &io_domains {
        status = "okay";
+
+       vccio1-supply = <&vccio_sdio>;
+       vccio2-supply = <&vccio_sd>;
+       vccio3-supply = <&vcc_3v0>;
+       vccio4-supply = <&vcc3v0_pmu>;
+       vccio5-supply = <&vcc_3v0>;
+       vccio6-supply = <&vccio_flash>;
 };
 
 &pinctrl {
                };
        };
 
+       emmc {
+               emmc_reset: emmc-reset {
+                       rockchip,pins = <1 RK_PB3 RK_FUNC_GPIO &pcfg_pull_none>;
+               };
+       };
+
        pmic {
                pmic_int: pmic_int {
                        rockchip,pins =
 
 &pmu_io_domains {
        status = "okay";
+
+       pmuio1-supply = <&vcc3v0_pmu>;
+       pmuio2-supply = <&vcc3v0_pmu>;
 };
 
 &pwm1 {
 };
 
 &saradc {
+       vref-supply = <&vcc_1v8>;
        status = "okay";
 };
 
        sd-uhs-sdr25;
        sd-uhs-sdr50;
        sd-uhs-sdr104;
+       vmmc-supply = <&vcc_sd>;
+       vqmmc-supply = <&vccio_sd>;
        status = "okay";
 };
 
        status = "okay";
 };
 
+&u2phy {
+       status = "okay";
+
+       u2phy_host: host-port {
+               status = "okay";
+       };
+
+       u2phy_otg: otg-port {
+               status = "okay";
+       };
+};
+
 &uart1 {
        pinctrl-names = "default";
        pinctrl-0 = <&uart1_xfer &uart1_cts>;
        status = "okay";
 };
 
-&uart2 {
+&uart5 {
        status = "okay";
 };
 
index eb992d6..8812b70 100644 (file)
                status = "disabled";
        };
 
-       firmware {
-               optee {
-                       compatible = "linaro,optee-tz";
-                       method = "smc";
-               };
-       };
-
        gmac_clkin: external-gmac-clock {
                compatible = "fixed-clock";
                clock-frequency = <50000000>;
                clock-output-names = "xin24m";
        };
 
-       xin32k: xin32k {
-               compatible = "fixed-clock";
-               #clock-cells = <0>;
-               clock-frequency = <32768>;
-               clock-output-names = "xin32k";
-       };
-
        pmu: power-management@ff000000 {
                compatible = "rockchip,px30-pmu", "syscon", "simple-mfd";
                reg = <0x0 0xff000000 0x0 0x1000>;
                status = "disabled";
        };
 
+       otp: nvmem@ff290000 {
+               compatible = "rockchip,px30-otp";
+               reg = <0x0 0xff290000 0x0 0x4000>;
+               clocks = <&cru SCLK_OTP_USR>, <&cru PCLK_OTP_NS>,
+                        <&cru PCLK_OTP_PHY>;
+               clock-names = "otp", "apb_pclk", "phy";
+               resets = <&cru SRST_OTP_PHY>;
+               reset-names = "phy";
+               #address-cells = <1>;
+               #size-cells = <1>;
+
+               /* Data cells */
+               cpu_id: id@7 {
+                       reg = <0x07 0x10>;
+               };
+               cpu_leakage: cpu-leakage@17 {
+                       reg = <0x17 0x1>;
+               };
+               performance: performance@1e {
+                       reg = <0x1e 0x1>;
+                       bits = <4 3>;
+               };
+       };
+
        cru: clock-controller@ff2b0000 {
                compatible = "rockchip,px30-cru";
                reg = <0x0 0xff2b0000 0x0 0x1000>;
+               clocks = <&xin24m>, <&pmucru PLL_GPLL>;
+               clock-names = "xin24m", "gpll";
                rockchip,grf = <&grf>;
                #clock-cells = <1>;
                #reset-cells = <1>;
 
-               assigned-clocks = <&cru PLL_NPLL>;
-               assigned-clock-rates = <1188000000>;
+               assigned-clocks = <&cru PLL_NPLL>,
+                       <&cru ACLK_BUS_PRE>, <&cru ACLK_PERI_PRE>,
+                       <&cru HCLK_BUS_PRE>, <&cru HCLK_PERI_PRE>,
+                       <&cru PCLK_BUS_PRE>, <&cru SCLK_GPU>;
+
+               assigned-clock-rates = <1188000000>,
+                       <200000000>, <200000000>,
+                       <150000000>, <150000000>,
+                       <100000000>, <200000000>;
        };
 
        pmucru: clock-controller@ff2bc000 {
                compatible = "rockchip,px30-pmucru";
                reg = <0x0 0xff2bc000 0x0 0x1000>;
+               clocks = <&xin24m>;
+               clock-names = "xin24m";
                rockchip,grf = <&grf>;
                #clock-cells = <1>;
                #reset-cells = <1>;
 
                assigned-clocks =
                        <&pmucru PLL_GPLL>, <&pmucru PCLK_PMU_PRE>,
-                       <&pmucru SCLK_WIFI_PMU>, <&cru ARMCLK>,
-                       <&cru ACLK_BUS_PRE>, <&cru ACLK_PERI_PRE>,
-                       <&cru HCLK_BUS_PRE>, <&cru HCLK_PERI_PRE>,
-                       <&cru PCLK_BUS_PRE>, <&cru SCLK_GPU>;
+                       <&pmucru SCLK_WIFI_PMU>;
                assigned-clock-rates =
                        <1200000000>, <100000000>,
-                       <26000000>, <600000000>,
-                       <200000000>, <200000000>,
-                       <150000000>, <150000000>,
-                       <100000000>, <200000000>;
+                       <26000000>;
+       };
+
+       usb2phy_grf: syscon@ff2c0000 {
+               compatible = "rockchip,px30-usb2phy-grf", "syscon",
+                            "simple-mfd";
+               reg = <0x0 0xff2c0000 0x0 0x10000>;
+               #address-cells = <1>;
+               #size-cells = <1>;
+
+               u2phy: usb2-phy@100 {
+                       compatible = "rockchip,px30-usb2phy";
+                       reg = <0x100 0x20>;
+                       clocks = <&pmucru SCLK_USBPHY_REF>;
+                       clock-names = "phyclk";
+                       #clock-cells = <0>;
+                       assigned-clocks = <&cru USB480M>;
+                       assigned-clock-parents = <&u2phy>;
+                       clock-output-names = "usb480m_phy";
+                       status = "disabled";
+
+                       u2phy_host: host-port {
+                               #phy-cells = <0>;
+                               interrupts = <GIC_SPI 68 IRQ_TYPE_LEVEL_HIGH>;
+                               interrupt-names = "linestate";
+                               status = "disabled";
+                       };
+
+                       u2phy_otg: otg-port {
+                               #phy-cells = <0>;
+                               interrupts = <GIC_SPI 66 IRQ_TYPE_LEVEL_HIGH>,
+                                            <GIC_SPI 65 IRQ_TYPE_LEVEL_HIGH>,
+                                            <GIC_SPI 64 IRQ_TYPE_LEVEL_HIGH>;
+                               interrupt-names = "otg-bvalid", "otg-id",
+                                                 "linestate";
+                               status = "disabled";
+                       };
+               };
        };
 
        usb20_otg: usb@ff300000 {
                g-rx-fifo-size = <280>;
                g-tx-fifo-size = <256 128 128 64 32 16>;
                g-use-dma;
+               phys = <&u2phy_otg>;
+               phy-names = "usb2-phy";
                power-domains = <&power PX30_PD_USB>;
                status = "disabled";
        };
                interrupts = <GIC_SPI 60 IRQ_TYPE_LEVEL_HIGH>;
                clocks = <&cru HCLK_HOST>;
                clock-names = "usbhost";
+               phys = <&u2phy_host>;
+               phy-names = "usb";
                power-domains = <&power PX30_PD_USB>;
                status = "disabled";
        };
                interrupts = <GIC_SPI 61 IRQ_TYPE_LEVEL_HIGH>;
                clocks = <&cru HCLK_HOST>;
                clock-names = "usbhost";
+               phys = <&u2phy_host>;
+               phy-names = "usb";
                power-domains = <&power PX30_PD_USB>;
                status = "disabled";
        };
                clock-names = "biu", "ciu", "ciu-drv", "ciu-sample";
                fifo-depth = <0x100>;
                max-frequency = <150000000>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&emmc_clk &emmc_cmd &emmc_bus8>;
                power-domains = <&power PX30_PD_MMC_NAND>;
                status = "disabled";
        };
                interrupts = <GIC_SPI 77 IRQ_TYPE_LEVEL_HIGH>;
                interrupt-names = "vopb_mmu";
                clocks = <&cru ACLK_VOPB>, <&cru HCLK_VOPB>;
-               clock-names = "aclk", "hclk";
+               clock-names = "aclk", "iface";
                power-domains = <&power PX30_PD_VO>;
                #iommu-cells = <0>;
                status = "disabled";
                interrupts = <GIC_SPI 79 IRQ_TYPE_LEVEL_HIGH>;
                interrupt-names = "vopl_mmu";
                clocks = <&cru ACLK_VOPL>, <&cru HCLK_VOPL>;
-               clock-names = "aclk", "hclk";
+               clock-names = "aclk", "iface";
                power-domains = <&power PX30_PD_VO>;
                #iommu-cells = <0>;
                status = "disabled";
                                rockchip,pins =
                                        <0 RK_PB5 1 &pcfg_pull_none>;
                        };
-
-                       uart0_rts_gpio: uart0-rts-gpio {
-                               rockchip,pins =
-                                       <0 RK_PB5 RK_FUNC_GPIO &pcfg_pull_none>;
-                       };
                };
 
                uart1 {
                                rockchip,pins =
                                        <1 RK_PC3 1 &pcfg_pull_none>;
                        };
-
-                       uart1_rts_gpio: uart1-rts-gpio {
-                               rockchip,pins =
-                                       <1 RK_PC3 RK_FUNC_GPIO &pcfg_pull_none>;
-                       };
                };
 
                uart2-m0 {
                                rockchip,pins =
                                        <0 RK_PC3 2 &pcfg_pull_none>;
                        };
-
-                       uart3m0_rts_gpio: uart3m0-rts-gpio {
-                               rockchip,pins =
-                                       <0 RK_PC3 RK_FUNC_GPIO &pcfg_pull_none>;
-                       };
                };
 
                uart3-m1 {
                                rockchip,pins =
                                        <1 RK_PB5 2 &pcfg_pull_none>;
                        };
-
-                       uart3m1_rts_gpio: uart3m1-rts-gpio {
-                               rockchip,pins =
-                                       <1 RK_PB5 RK_FUNC_GPIO &pcfg_pull_none>;
-                       };
                };
 
                uart4 {
                                        <1 RK_PD4 1 &pcfg_pull_up_8ma>,
                                        <1 RK_PD5 1 &pcfg_pull_up_8ma>;
                        };
-
-                       sdmmc_gpio: sdmmc-gpio {
-                               rockchip,pins =
-                                       <1 RK_PD2 RK_FUNC_GPIO &pcfg_pull_up_4ma>,
-                                       <1 RK_PD3 RK_FUNC_GPIO &pcfg_pull_up_4ma>,
-                                       <1 RK_PD4 RK_FUNC_GPIO &pcfg_pull_up_4ma>,
-                                       <1 RK_PD5 RK_FUNC_GPIO &pcfg_pull_up_4ma>,
-                                       <1 RK_PD6 RK_FUNC_GPIO &pcfg_pull_up_4ma>,
-                                       <1 RK_PD7 RK_FUNC_GPIO &pcfg_pull_up_4ma>;
-                       };
                };
 
                sdio {
                                        <1 RK_PD0 1 &pcfg_pull_up>,
                                        <1 RK_PD1 1 &pcfg_pull_up>;
                        };
-
-                       sdio_gpio: sdio-gpio {
-                               rockchip,pins =
-                                       <1 RK_PC6 RK_FUNC_GPIO &pcfg_pull_up>,
-                                       <1 RK_PC7 RK_FUNC_GPIO &pcfg_pull_up>,
-                                       <1 RK_PD0 RK_FUNC_GPIO &pcfg_pull_up>,
-                                       <1 RK_PD1 RK_FUNC_GPIO &pcfg_pull_up>,
-                                       <1 RK_PC4 RK_FUNC_GPIO &pcfg_pull_up>,
-                                       <1 RK_PC5 RK_FUNC_GPIO &pcfg_pull_up>;
-                       };
                };
 
                emmc {
                                        <1 RK_PB2 2 &pcfg_pull_up_8ma>;
                        };
 
-                       emmc_pwren: emmc-pwren {
-                               rockchip,pins =
-                                       <1 RK_PB0 2 &pcfg_pull_none>;
-                       };
-
                        emmc_rstnout: emmc-rstnout {
                                rockchip,pins =
                                        <1 RK_PB3 2 &pcfg_pull_none>;
diff --git a/arch/arm64/boot/dts/rockchip/rk3308-evb.dts b/arch/arm64/boot/dts/rockchip/rk3308-evb.dts
new file mode 100644 (file)
index 0000000..9b4f855
--- /dev/null
@@ -0,0 +1,230 @@
+// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
+/*
+ * Copyright (c) 2019 Fuzhou Rockchip Electronics Co., Ltd
+ *
+ */
+
+/dts-v1/;
+#include <dt-bindings/input/input.h>
+#include "rk3308.dtsi"
+
+/ {
+       model = "Rockchip RK3308 EVB";
+       compatible = "rockchip,rk3308-evb", "rockchip,rk3308";
+
+       chosen {
+               stdout-path = "serial4:1500000n8";
+       };
+
+       adc-keys0 {
+               compatible = "adc-keys";
+               io-channels = <&saradc 0>;
+               io-channel-names = "buttons";
+               poll-interval = <100>;
+               keyup-threshold-microvolt = <1800000>;
+
+               func-key {
+                       linux,code = <KEY_FN>;
+                       label = "function";
+                       press-threshold-microvolt = <18000>;
+               };
+       };
+
+       adc-keys1 {
+               compatible = "adc-keys";
+               io-channels = <&saradc 1>;
+               io-channel-names = "buttons";
+               poll-interval = <100>;
+               keyup-threshold-microvolt = <1800000>;
+
+               esc-key {
+                       linux,code = <KEY_MICMUTE>;
+                       label = "micmute";
+                       press-threshold-microvolt = <1130000>;
+               };
+
+               home-key {
+                       linux,code = <KEY_MODE>;
+                       label = "mode";
+                       press-threshold-microvolt = <901000>;
+               };
+
+               menu-key {
+                       linux,code = <KEY_PLAY>;
+                       label = "play";
+                       press-threshold-microvolt = <624000>;
+               };
+
+               vol-down-key {
+                       linux,code = <KEY_VOLUMEDOWN>;
+                       label = "volume down";
+                       press-threshold-microvolt = <300000>;
+               };
+
+               vol-up-key {
+                       linux,code = <KEY_VOLUMEUP>;
+                       label = "volume up";
+                       press-threshold-microvolt = <18000>;
+               };
+       };
+
+       gpio-keys {
+               compatible = "gpio-keys";
+               autorepeat;
+
+               pinctrl-names = "default";
+               pinctrl-0 = <&pwr_key>;
+
+               power {
+                       gpios = <&gpio0 RK_PA6 GPIO_ACTIVE_LOW>;
+                       linux,code = <KEY_POWER>;
+                       label = "GPIO Key Power";
+                       debounce-interval = <100>;
+                       wakeup-source;
+               };
+       };
+
+       vcc12v_dcin: vcc12v-dcin {
+               compatible = "regulator-fixed";
+               regulator-name = "vcc12v_dcin";
+               regulator-min-microvolt = <12000000>;
+               regulator-max-microvolt = <12000000>;
+               regulator-always-on;
+               regulator-boot-on;
+       };
+
+       vcc5v0_sys: vcc5v0-sys {
+               compatible = "regulator-fixed";
+               regulator-name = "vcc5v0_sys";
+               regulator-min-microvolt = <5000000>;
+               regulator-max-microvolt = <5000000>;
+               regulator-always-on;
+               regulator-boot-on;
+               vin-supply = <&vcc12v_dcin>;
+       };
+
+       vccio_sdio: vcc_1v8: vcc-1v8 {
+               compatible = "regulator-fixed";
+               regulator-name = "vcc_1v8";
+               regulator-min-microvolt = <1800000>;
+               regulator-max-microvolt = <1800000>;
+               regulator-always-on;
+               regulator-boot-on;
+               vin-supply = <&vcc_io>;
+       };
+
+       vcc_ddr: vcc-ddr {
+               compatible = "regulator-fixed";
+               regulator-name = "vcc_ddr";
+               regulator-min-microvolt = <1500000>;
+               regulator-max-microvolt = <1500000>;
+               regulator-always-on;
+               regulator-boot-on;
+               vin-supply = <&vcc5v0_sys>;
+       };
+
+       vcc_io: vcc-io {
+               compatible = "regulator-fixed";
+               regulator-name = "vcc_io";
+               regulator-min-microvolt = <3300000>;
+               regulator-max-microvolt = <3300000>;
+               regulator-always-on;
+               regulator-boot-on;
+               vin-supply = <&vcc5v0_sys>;
+       };
+
+       vccio_flash: vccio-flash {
+               compatible = "regulator-fixed";
+               regulator-name = "vccio_flash";
+               regulator-min-microvolt = <3300000>;
+               regulator-max-microvolt = <3300000>;
+               regulator-always-on;
+               regulator-boot-on;
+               vin-supply = <&vcc_io>;
+       };
+
+       vcc5v0_host: vcc5v0-host {
+               compatible = "regulator-fixed";
+               gpio = <&gpio0 RK_PC5 GPIO_ACTIVE_HIGH>;
+               enable-active-high;
+               pinctrl-names = "default";
+               pinctrl-0 = <&usb_drv>;
+               regulator-name = "vbus_host";
+               vin-supply = <&vcc5v0_sys>;
+       };
+
+       vdd_core: vdd-core {
+               compatible = "pwm-regulator";
+               pwms = <&pwm0 0 5000 1>;
+               regulator-name = "vdd_core";
+               regulator-min-microvolt = <827000>;
+               regulator-max-microvolt = <1340000>;
+               regulator-always-on;
+               regulator-boot-on;
+               regulator-settling-time-up-us = <250>;
+               pwm-supply = <&vcc5v0_sys>;
+       };
+
+       vdd_log: vdd-log {
+               compatible = "regulator-fixed";
+               regulator-name = "vdd_log";
+               regulator-min-microvolt = <1050000>;
+               regulator-max-microvolt = <1050000>;
+               regulator-always-on;
+               regulator-boot-on;
+               vin-supply = <&vcc5v0_sys>;
+       };
+
+       vdd_1v0: vdd-1v0 {
+               compatible = "regulator-fixed";
+               regulator-name = "vdd_1v0";
+               regulator-min-microvolt = <1000000>;
+               regulator-max-microvolt = <1000000>;
+               regulator-always-on;
+               regulator-boot-on;
+               vin-supply = <&vcc5v0_sys>;
+       };
+};
+
+&cpu0 {
+       cpu-supply = <&vdd_core>;
+};
+
+&saradc {
+       status = "okay";
+       vref-supply = <&vcc_1v8>;
+};
+
+&pinctrl {
+       pinctrl-names = "default";
+       pinctrl-0 = <&rtc_32k>;
+
+       buttons {
+               pwr_key: pwr-key {
+                       rockchip,pins = <0 RK_PA6 0 &pcfg_pull_up>;
+               };
+       };
+
+       usb {
+               usb_drv: usb-drv {
+                       rockchip,pins = <0 RK_PC5 0 &pcfg_pull_none>;
+               };
+       };
+
+       sdio-pwrseq {
+               wifi_enable_h: wifi-enable-h {
+                       rockchip,pins = <0 RK_PA2 0 &pcfg_pull_none>;
+               };
+       };
+};
+
+&pwm0 {
+       status = "okay";
+       pinctrl-0 = <&pwm0_pin_pull_down>;
+};
+
+&uart4 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&uart4_xfer>;
+       status = "okay";
+};
diff --git a/arch/arm64/boot/dts/rockchip/rk3308-roc-cc.dts b/arch/arm64/boot/dts/rockchip/rk3308-roc-cc.dts
new file mode 100644 (file)
index 0000000..aa25635
--- /dev/null
@@ -0,0 +1,188 @@
+// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
+/*
+ * Copyright (c) 2019 Fuzhou Rockchip Electronics Co., Ltd
+ */
+
+/dts-v1/;
+#include "rk3308.dtsi"
+
+/ {
+       model = "Firefly ROC-RK3308-CC board";
+       compatible = "firefly,roc-rk3308-cc", "rockchip,rk3308";
+       chosen {
+               stdout-path = "serial2:1500000n8";
+       };
+
+       ir_rx {
+               compatible = "gpio-ir-receiver";
+               gpios = <&gpio0 RK_PC0 GPIO_ACTIVE_HIGH>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&ir_recv_pin>;
+       };
+
+       ir_tx {
+               compatible = "pwm-ir-tx";
+               pwms = <&pwm5 0 25000 0>;
+       };
+
+       leds {
+               compatible = "gpio-leds";
+
+               power {
+                       label = "firefly:red:power";
+                       linux,default-trigger = "ir-power-click";
+                       default-state = "on";
+                       gpios = <&gpio0 RK_PA6 GPIO_ACTIVE_HIGH>;
+               };
+
+               user {
+                       label = "firefly:blue:user";
+                       linux,default-trigger = "ir-user-click";
+                       default-state = "off";
+                       gpios = <&gpio0 RK_PB2 GPIO_ACTIVE_HIGH>;
+               };
+       };
+
+       typec_vcc5v: typec-vcc5v {
+               compatible = "regulator-fixed";
+               regulator-name = "typec_vcc5v";
+               regulator-min-microvolt = <5000000>;
+               regulator-max-microvolt = <5000000>;
+               regulator-always-on;
+               regulator-boot-on;
+       };
+
+       vcc5v0_sys: vcc5v0-sys {
+               compatible = "regulator-fixed";
+               regulator-name = "vcc5v0_sys";
+               regulator-min-microvolt = <5000000>;
+               regulator-max-microvolt = <5000000>;
+               regulator-always-on;
+               regulator-boot-on;
+               vin-supply = <&typec_vcc5v>;
+       };
+
+       vcc_io: vcc-io {
+               compatible = "regulator-fixed";
+               regulator-name = "vcc_io";
+               regulator-min-microvolt = <3300000>;
+               regulator-max-microvolt = <3300000>;
+               regulator-always-on;
+               regulator-boot-on;
+               vin-supply = <&vcc5v0_sys>;
+       };
+
+       vcc_sdmmc: vcc-sdmmc {
+               compatible = "regulator-gpio";
+               regulator-name = "vcc_sdmmc";
+               regulator-min-microvolt = <1800000>;
+               regulator-max-microvolt = <3300000>;
+               gpios = <&gpio0 RK_PA7 GPIO_ACTIVE_HIGH>;
+               states = <1800000 0x0
+                         3300000 0x1>;
+               vin-supply = <&vcc5v0_sys>;
+       };
+
+       vcc_sd: vcc-sd {
+               compatible = "regulator-fixed";
+               gpio = <&gpio4 RK_PD6 GPIO_ACTIVE_LOW>;
+               regulator-name = "vcc_sd";
+               regulator-min-microvolt = <3300000>;
+               regulator-max-microvolt = <3300000>;
+               regulator-always-on;
+               regulator-boot-on;
+               vim-supply = <&vcc_io>;
+       };
+
+       vdd_core: vdd-core {
+               compatible = "pwm-regulator";
+               pwms = <&pwm0 0 5000 1>;
+               regulator-name = "vdd_core";
+               regulator-min-microvolt = <827000>;
+               regulator-max-microvolt = <1340000>;
+               regulator-init-microvolt = <1015000>;
+               regulator-settling-time-up-us = <250>;
+               regulator-always-on;
+               regulator-boot-on;
+               pwm-supply = <&vcc5v0_sys>;
+       };
+
+       vdd_log: vdd-log {
+               compatible = "regulator-fixed";
+               regulator-name = "vdd_log";
+               regulator-min-microvolt = <1050000>;
+               regulator-max-microvolt = <1050000>;
+               regulator-always-on;
+               regulator-boot-on;
+               vin-supply = <&vcc5v0_sys>;
+       };
+};
+
+&cpu0 {
+       cpu-supply = <&vdd_core>;
+};
+
+&emmc {
+       bus-width = <8>;
+       cap-mmc-highspeed;
+       disable-wp;
+       mmc-hs200-1_8v;
+       non-removable;
+       status = "okay";
+};
+
+&i2c1 {
+       clock-frequency = <400000>;
+       status = "okay";
+
+       rtc: rtc@51 {
+               compatible = "nxp,pcf8563";
+               reg = <0x51>;
+               #clock-cells = <0>;
+       };
+};
+
+&pwm5 {
+       status = "okay";
+       pinctrl-names = "active";
+       pinctrl-0 = <&pwm5_pin_pull_down>;
+};
+
+&pinctrl {
+       pinctrl-names = "default";
+       pinctrl-0 = <&rtc_32k>;
+
+       ir-receiver {
+               ir_recv_pin: ir-recv-pin  {
+                       rockchip,pins = <0 RK_PC0 RK_FUNC_GPIO &pcfg_pull_none>;
+               };
+       };
+
+       buttons {
+               pwr_key: pwr-key {
+                       rockchip,pins = <0 RK_PA6 RK_FUNC_GPIO &pcfg_pull_up>;
+               };
+       };
+};
+
+&pwm0 {
+       status = "okay";
+       pinctrl-0 = <&pwm0_pin_pull_down>;
+};
+
+&sdmmc {
+       bus-width = <4>;
+       cap-mmc-highspeed;
+       cap-sd-highspeed;
+       card-detect-delay = <300>;
+       sd-uhs-sdr25;
+       sd-uhs-sdr50;
+       sd-uhs-sdr104;
+       vmmc-supply = <&vcc_sd>;
+       vqmmc-supply = <&vcc_sdmmc>;
+       status = "okay";
+};
+
+&uart2 {
+       status = "okay";
+};
diff --git a/arch/arm64/boot/dts/rockchip/rk3308.dtsi b/arch/arm64/boot/dts/rockchip/rk3308.dtsi
new file mode 100644 (file)
index 0000000..8bdc66c
--- /dev/null
@@ -0,0 +1,1739 @@
+// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
+/*
+ * Copyright (c) 2019 Fuzhou Rockchip Electronics Co., Ltd
+ *
+ */
+
+#include <dt-bindings/clock/rk3308-cru.h>
+#include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/interrupt-controller/arm-gic.h>
+#include <dt-bindings/interrupt-controller/irq.h>
+#include <dt-bindings/pinctrl/rockchip.h>
+#include <dt-bindings/soc/rockchip,boot-mode.h>
+#include <dt-bindings/thermal/thermal.h>
+
+/ {
+       compatible = "rockchip,rk3308";
+
+       interrupt-parent = <&gic>;
+       #address-cells = <2>;
+       #size-cells = <2>;
+
+       aliases {
+               i2c0 = &i2c0;
+               i2c1 = &i2c1;
+               i2c2 = &i2c2;
+               i2c3 = &i2c3;
+               serial0 = &uart0;
+               serial1 = &uart1;
+               serial2 = &uart2;
+               serial3 = &uart3;
+               serial4 = &uart4;
+               spi0 = &spi0;
+               spi1 = &spi1;
+               spi2 = &spi2;
+       };
+
+       cpus {
+               #address-cells = <2>;
+               #size-cells = <0>;
+
+               cpu0: cpu@0 {
+                       device_type = "cpu";
+                       compatible = "arm,cortex-a35", "arm,armv8";
+                       reg = <0x0 0x0>;
+                       enable-method = "psci";
+                       clocks = <&cru ARMCLK>;
+                       #cooling-cells = <2>;
+                       dynamic-power-coefficient = <90>;
+                       operating-points-v2 = <&cpu0_opp_table>;
+                       cpu-idle-states = <&CPU_SLEEP>;
+                       next-level-cache = <&l2>;
+               };
+
+               cpu1: cpu@1 {
+                       device_type = "cpu";
+                       compatible = "arm,cortex-a35", "arm,armv8";
+                       reg = <0x0 0x1>;
+                       enable-method = "psci";
+                       operating-points-v2 = <&cpu0_opp_table>;
+                       cpu-idle-states = <&CPU_SLEEP>;
+                       next-level-cache = <&l2>;
+               };
+
+               cpu2: cpu@2 {
+                       device_type = "cpu";
+                       compatible = "arm,cortex-a35", "arm,armv8";
+                       reg = <0x0 0x2>;
+                       enable-method = "psci";
+                       operating-points-v2 = <&cpu0_opp_table>;
+                       cpu-idle-states = <&CPU_SLEEP>;
+                       next-level-cache = <&l2>;
+               };
+
+               cpu3: cpu@3 {
+                       device_type = "cpu";
+                       compatible = "arm,cortex-a35", "arm,armv8";
+                       reg = <0x0 0x3>;
+                       enable-method = "psci";
+                       operating-points-v2 = <&cpu0_opp_table>;
+                       cpu-idle-states = <&CPU_SLEEP>;
+                       next-level-cache = <&l2>;
+               };
+
+               idle-states {
+                       entry-method = "psci";
+
+                       CPU_SLEEP: cpu-sleep {
+                               compatible = "arm,idle-state";
+                               local-timer-stop;
+                               arm,psci-suspend-param = <0x0010000>;
+                               entry-latency-us = <120>;
+                               exit-latency-us = <250>;
+                               min-residency-us = <900>;
+                       };
+               };
+
+               l2: l2-cache {
+                       compatible = "cache";
+               };
+       };
+
+       cpu0_opp_table: cpu0-opp-table {
+               compatible = "operating-points-v2";
+               opp-shared;
+
+               opp-408000000 {
+                       opp-hz = /bits/ 64 <408000000>;
+                       opp-microvolt = <950000 950000 1340000>;
+                       clock-latency-ns = <40000>;
+                       opp-suspend;
+               };
+               opp-600000000 {
+                       opp-hz = /bits/ 64 <600000000>;
+                       opp-microvolt = <950000 950000 1340000>;
+                       clock-latency-ns = <40000>;
+               };
+               opp-816000000 {
+                       opp-hz = /bits/ 64 <816000000>;
+                       opp-microvolt = <1025000 1025000 1340000>;
+                       clock-latency-ns = <40000>;
+               };
+               opp-1008000000 {
+                       opp-hz = /bits/ 64 <1008000000>;
+                       opp-microvolt = <1125000 1125000 1340000>;
+                       clock-latency-ns = <40000>;
+               };
+       };
+
+       arm-pmu {
+               compatible = "arm,cortex-a53-pmu";
+               interrupts = <GIC_SPI 83 IRQ_TYPE_LEVEL_HIGH>,
+                            <GIC_SPI 84 IRQ_TYPE_LEVEL_HIGH>,
+                            <GIC_SPI 85 IRQ_TYPE_LEVEL_HIGH>,
+                            <GIC_SPI 86 IRQ_TYPE_LEVEL_HIGH>;
+               interrupt-affinity = <&cpu0>, <&cpu1>, <&cpu2>, <&cpu3>;
+       };
+
+       mac_clkin: external-mac-clock {
+               compatible = "fixed-clock";
+               clock-frequency = <50000000>;
+               clock-output-names = "mac_clkin";
+               #clock-cells = <0>;
+       };
+
+       psci {
+               compatible = "arm,psci-1.0";
+               method = "smc";
+       };
+
+       timer {
+               compatible = "arm,armv8-timer";
+               interrupts = <GIC_PPI 13 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_HIGH)>,
+                            <GIC_PPI 14 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_HIGH)>,
+                            <GIC_PPI 11 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_HIGH)>,
+                            <GIC_PPI 10 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_HIGH)>;
+       };
+
+       xin24m: xin24m {
+               compatible = "fixed-clock";
+               #clock-cells = <0>;
+               clock-frequency = <24000000>;
+               clock-output-names = "xin24m";
+       };
+
+       grf: grf@ff000000 {
+               compatible = "rockchip,rk3308-grf", "syscon", "simple-mfd";
+               reg = <0x0 0xff000000 0x0 0x10000>;
+
+               reboot-mode {
+                       compatible = "syscon-reboot-mode";
+                       offset = <0x500>;
+                       mode-bootloader = <BOOT_BL_DOWNLOAD>;
+                       mode-loader = <BOOT_BL_DOWNLOAD>;
+                       mode-normal = <BOOT_NORMAL>;
+                       mode-recovery = <BOOT_RECOVERY>;
+                       mode-fastboot = <BOOT_FASTBOOT>;
+               };
+       };
+
+       detect_grf: syscon@ff00b000 {
+               compatible = "rockchip,rk3308-detect-grf", "syscon", "simple-mfd";
+               reg = <0x0 0xff00b000 0x0 0x1000>;
+               #address-cells = <1>;
+               #size-cells = <1>;
+       };
+
+       core_grf: syscon@ff00c000 {
+               compatible = "rockchip,rk3308-core-grf", "syscon", "simple-mfd";
+               reg = <0x0 0xff00c000 0x0 0x1000>;
+               #address-cells = <1>;
+               #size-cells = <1>;
+       };
+
+       i2c0: i2c@ff040000 {
+               compatible = "rockchip,rk3308-i2c", "rockchip,rk3399-i2c";
+               reg = <0x0 0xff040000 0x0 0x1000>;
+               clocks = <&cru SCLK_I2C0>, <&cru PCLK_I2C0>;
+               clock-names = "i2c", "pclk";
+               interrupts = <GIC_SPI 11 IRQ_TYPE_LEVEL_HIGH>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&i2c0_xfer>;
+               #address-cells = <1>;
+               #size-cells = <0>;
+               status = "disabled";
+       };
+
+       i2c1: i2c@ff050000 {
+               compatible = "rockchip,rk3308-i2c", "rockchip,rk3399-i2c";
+               reg = <0x0 0xff050000 0x0 0x1000>;
+               clocks = <&cru SCLK_I2C1>, <&cru PCLK_I2C1>;
+               clock-names = "i2c", "pclk";
+               interrupts = <GIC_SPI 12 IRQ_TYPE_LEVEL_HIGH>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&i2c1_xfer>;
+               #address-cells = <1>;
+               #size-cells = <0>;
+               status = "disabled";
+       };
+
+       i2c2: i2c@ff060000 {
+               compatible = "rockchip,rk3308-i2c", "rockchip,rk3399-i2c";
+               reg = <0x0 0xff060000 0x0 0x1000>;
+               clocks = <&cru SCLK_I2C2>, <&cru PCLK_I2C2>;
+               clock-names = "i2c", "pclk";
+               interrupts = <GIC_SPI 13 IRQ_TYPE_LEVEL_HIGH>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&i2c2_xfer>;
+               #address-cells = <1>;
+               #size-cells = <0>;
+               status = "disabled";
+       };
+
+       i2c3: i2c@ff070000 {
+               compatible = "rockchip,rk3308-i2c", "rockchip,rk3399-i2c";
+               reg = <0x0 0xff070000 0x0 0x1000>;
+               clocks = <&cru SCLK_I2C3>, <&cru PCLK_I2C3>;
+               clock-names = "i2c", "pclk";
+               interrupts = <GIC_SPI 14 IRQ_TYPE_LEVEL_HIGH>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&i2c3m0_xfer>;
+               #address-cells = <1>;
+               #size-cells = <0>;
+               status = "disabled";
+       };
+
+       wdt: watchdog@ff080000 {
+               compatible = "snps,dw-wdt";
+               reg = <0x0 0xff080000 0x0 0x100>;
+               clocks = <&cru PCLK_WDT>;
+               interrupts = <GIC_SPI 10 IRQ_TYPE_LEVEL_HIGH>;
+               status = "disabled";
+       };
+
+       uart0: serial@ff0a0000 {
+               compatible = "rockchip,rk3308-uart", "snps,dw-apb-uart";
+               reg = <0x0 0xff0a0000 0x0 0x100>;
+               interrupts = <GIC_SPI 18 IRQ_TYPE_LEVEL_HIGH>;
+               clocks = <&cru SCLK_UART0>, <&cru PCLK_UART0>;
+               clock-names = "baudclk", "apb_pclk";
+               reg-shift = <2>;
+               reg-io-width = <4>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&uart0_xfer &uart0_cts &uart0_rts>;
+               status = "disabled";
+       };
+
+       uart1: serial@ff0b0000 {
+               compatible = "rockchip,rk3308-uart", "snps,dw-apb-uart";
+               reg = <0x0 0xff0b0000 0x0 0x100>;
+               interrupts = <GIC_SPI 19 IRQ_TYPE_LEVEL_HIGH>;
+               clocks = <&cru SCLK_UART1>, <&cru PCLK_UART1>;
+               clock-names = "baudclk", "apb_pclk";
+               reg-shift = <2>;
+               reg-io-width = <4>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&uart1_xfer &uart1_cts &uart1_rts>;
+               status = "disabled";
+       };
+
+       uart2: serial@ff0c0000 {
+               compatible = "rockchip,rk3308-uart", "snps,dw-apb-uart";
+               reg = <0x0 0xff0c0000 0x0 0x100>;
+               interrupts = <GIC_SPI 20 IRQ_TYPE_LEVEL_HIGH>;
+               clocks = <&cru SCLK_UART2>, <&cru PCLK_UART2>;
+               clock-names = "baudclk", "apb_pclk";
+               reg-shift = <2>;
+               reg-io-width = <4>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&uart2m0_xfer>;
+               status = "disabled";
+       };
+
+       uart3: serial@ff0d0000 {
+               compatible = "rockchip,rk3308-uart", "snps,dw-apb-uart";
+               reg = <0x0 0xff0d0000 0x0 0x100>;
+               interrupts = <GIC_SPI 21 IRQ_TYPE_LEVEL_HIGH>;
+               clocks = <&cru SCLK_UART3>, <&cru PCLK_UART3>;
+               clock-names = "baudclk", "apb_pclk";
+               reg-shift = <2>;
+               reg-io-width = <4>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&uart3_xfer>;
+               status = "disabled";
+       };
+
+       uart4: serial@ff0e0000 {
+               compatible = "rockchip,rk3308-uart", "snps,dw-apb-uart";
+               reg = <0x0 0xff0e0000 0x0 0x100>;
+               interrupts = <GIC_SPI 22 IRQ_TYPE_LEVEL_HIGH>;
+               clocks = <&cru SCLK_UART4>, <&cru PCLK_UART4>;
+               clock-names = "baudclk", "apb_pclk";
+               reg-shift = <2>;
+               reg-io-width = <4>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&uart4_xfer &uart4_cts &uart4_rts>;
+               status = "disabled";
+       };
+
+       spi0: spi@ff120000 {
+               compatible = "rockchip,rk3308-spi", "rockchip,rk3066-spi";
+               reg = <0x0 0xff120000 0x0 0x1000>;
+               interrupts = <GIC_SPI 15 IRQ_TYPE_LEVEL_HIGH>;
+               #address-cells = <1>;
+               #size-cells = <0>;
+               clocks = <&cru SCLK_SPI0>, <&cru PCLK_SPI0>;
+               clock-names = "spiclk", "apb_pclk";
+               dmas = <&dmac0 0>, <&dmac0 1>;
+               dma-names = "tx", "rx";
+               pinctrl-names = "default";
+               pinctrl-0 = <&spi0_clk &spi0_csn0 &spi0_miso &spi0_mosi>;
+               status = "disabled";
+       };
+
+       spi1: spi@ff130000 {
+               compatible = "rockchip,rk3308-spi", "rockchip,rk3066-spi";
+               reg = <0x0 0xff130000 0x0 0x1000>;
+               interrupts = <GIC_SPI 16 IRQ_TYPE_LEVEL_HIGH>;
+               #address-cells = <1>;
+               #size-cells = <0>;
+               clocks = <&cru SCLK_SPI1>, <&cru PCLK_SPI1>;
+               clock-names = "spiclk", "apb_pclk";
+               dmas = <&dmac0 2>, <&dmac0 3>;
+               dma-names = "tx", "rx";
+               pinctrl-names = "default";
+               pinctrl-0 = <&spi1_clk &spi1_csn0 &spi1_miso &spi1_mosi>;
+               status = "disabled";
+       };
+
+       spi2: spi@ff140000 {
+               compatible = "rockchip,rk3308-spi", "rockchip,rk3066-spi";
+               reg = <0x0 0xff140000 0x0 0x1000>;
+               interrupts = <GIC_SPI 17 IRQ_TYPE_LEVEL_HIGH>;
+               #address-cells = <1>;
+               #size-cells = <0>;
+               clocks = <&cru SCLK_SPI2>, <&cru PCLK_SPI2>;
+               clock-names = "spiclk", "apb_pclk";
+               dmas = <&dmac1 16>, <&dmac1 17>;
+               dma-names = "tx", "rx";
+               pinctrl-names = "default";
+               pinctrl-0 = <&spi2_clk &spi2_csn0 &spi2_miso &spi2_mosi>;
+               status = "disabled";
+       };
+
+       pwm8: pwm@ff160000 {
+               compatible = "rockchip,rk3308-pwm", "rockchip,rk3328-pwm";
+               reg = <0x0 0xff160000 0x0 0x10>;
+               clocks = <&cru SCLK_PWM2>, <&cru PCLK_PWM2>;
+               clock-names = "pwm", "pclk";
+               pinctrl-names = "default";
+               pinctrl-0 = <&pwm8_pin>;
+               #pwm-cells = <3>;
+               status = "disabled";
+       };
+
+       pwm9: pwm@ff160010 {
+               compatible = "rockchip,rk3308-pwm", "rockchip,rk3328-pwm";
+               reg = <0x0 0xff160010 0x0 0x10>;
+               clocks = <&cru SCLK_PWM2>, <&cru PCLK_PWM2>;
+               clock-names = "pwm", "pclk";
+               pinctrl-names = "default";
+               pinctrl-0 = <&pwm9_pin>;
+               #pwm-cells = <3>;
+               status = "disabled";
+       };
+
+       pwm10: pwm@ff160020 {
+               compatible = "rockchip,rk3308-pwm", "rockchip,rk3328-pwm";
+               reg = <0x0 0xff160020 0x0 0x10>;
+               clocks = <&cru SCLK_PWM2>, <&cru PCLK_PWM2>;
+               clock-names = "pwm", "pclk";
+               pinctrl-names = "default";
+               pinctrl-0 = <&pwm10_pin>;
+               #pwm-cells = <3>;
+               status = "disabled";
+       };
+
+       pwm11: pwm@ff160030 {
+               compatible = "rockchip,rk3308-pwm", "rockchip,rk3328-pwm";
+               reg = <0x0 0xff160030 0x0 0x10>;
+               clocks = <&cru SCLK_PWM2>, <&cru PCLK_PWM2>;
+               clock-names = "pwm", "pclk";
+               pinctrl-names = "default";
+               pinctrl-0 = <&pwm11_pin>;
+               #pwm-cells = <3>;
+               status = "disabled";
+       };
+
+       pwm4: pwm@ff170000 {
+               compatible = "rockchip,rk3308-pwm", "rockchip,rk3328-pwm";
+               reg = <0x0 0xff170000 0x0 0x10>;
+               clocks = <&cru SCLK_PWM1>, <&cru PCLK_PWM1>;
+               clock-names = "pwm", "pclk";
+               pinctrl-names = "default";
+               pinctrl-0 = <&pwm4_pin>;
+               #pwm-cells = <3>;
+               status = "disabled";
+       };
+
+       pwm5: pwm@ff170010 {
+               compatible = "rockchip,rk3308-pwm", "rockchip,rk3328-pwm";
+               reg = <0x0 0xff170010 0x0 0x10>;
+               clocks = <&cru SCLK_PWM1>, <&cru PCLK_PWM1>;
+               clock-names = "pwm", "pclk";
+               pinctrl-names = "default";
+               pinctrl-0 = <&pwm5_pin>;
+               #pwm-cells = <3>;
+               status = "disabled";
+       };
+
+       pwm6: pwm@ff170020 {
+               compatible = "rockchip,rk3308-pwm", "rockchip,rk3328-pwm";
+               reg = <0x0 0xff170020 0x0 0x10>;
+               clocks = <&cru SCLK_PWM1>, <&cru PCLK_PWM1>;
+               clock-names = "pwm", "pclk";
+               pinctrl-names = "default";
+               pinctrl-0 = <&pwm6_pin>;
+               #pwm-cells = <3>;
+               status = "disabled";
+       };
+
+       pwm7: pwm@ff170030 {
+               compatible = "rockchip,rk3308-pwm", "rockchip,rk3328-pwm";
+               reg = <0x0 0xff170030 0x0 0x10>;
+               clocks = <&cru SCLK_PWM1>, <&cru PCLK_PWM1>;
+               clock-names = "pwm", "pclk";
+               pinctrl-names = "default";
+               pinctrl-0 = <&pwm7_pin>;
+               #pwm-cells = <3>;
+               status = "disabled";
+       };
+
+       pwm0: pwm@ff180000 {
+               compatible = "rockchip,rk3308-pwm", "rockchip,rk3328-pwm";
+               reg = <0x0 0xff180000 0x0 0x10>;
+               clocks = <&cru SCLK_PWM0>, <&cru PCLK_PWM0>;
+               clock-names = "pwm", "pclk";
+               pinctrl-names = "default";
+               pinctrl-0 = <&pwm0_pin>;
+               #pwm-cells = <3>;
+               status = "disabled";
+       };
+
+       pwm1: pwm@ff180010 {
+               compatible = "rockchip,rk3308-pwm", "rockchip,rk3328-pwm";
+               reg = <0x0 0xff180010 0x0 0x10>;
+               clocks = <&cru SCLK_PWM0>, <&cru PCLK_PWM0>;
+               clock-names = "pwm", "pclk";
+               pinctrl-names = "default";
+               pinctrl-0 = <&pwm1_pin>;
+               #pwm-cells = <3>;
+               status = "disabled";
+       };
+
+       pwm2: pwm@ff180020 {
+               compatible = "rockchip,rk3308-pwm", "rockchip,rk3328-pwm";
+               reg = <0x0 0xff180020 0x0 0x10>;
+               clocks = <&cru SCLK_PWM0>, <&cru PCLK_PWM0>;
+               clock-names = "pwm", "pclk";
+               pinctrl-names = "default";
+               pinctrl-0 = <&pwm2_pin>;
+               #pwm-cells = <3>;
+               status = "disabled";
+       };
+
+       pwm3: pwm@ff180030 {
+               compatible = "rockchip,rk3308-pwm", "rockchip,rk3328-pwm";
+               reg = <0x0 0xff180030 0x0 0x10>;
+               clocks = <&cru SCLK_PWM0>, <&cru PCLK_PWM0>;
+               clock-names = "pwm", "pclk";
+               pinctrl-names = "default";
+               pinctrl-0 = <&pwm3_pin>;
+               #pwm-cells = <3>;
+               status = "disabled";
+       };
+
+       rktimer: rktimer@ff1a0000 {
+               compatible = "rockchip,rk3288-timer";
+               reg = <0x0 0xff1a0000 0x0 0x20>;
+               interrupts = <GIC_SPI 25 IRQ_TYPE_LEVEL_HIGH>;
+               clocks = <&cru PCLK_TIMER>, <&cru SCLK_TIMER0>;
+               clock-names = "pclk", "timer";
+       };
+
+       saradc: saradc@ff1e0000 {
+               compatible = "rockchip,rk3308-saradc", "rockchip,rk3399-saradc";
+               reg = <0x0 0xff1e0000 0x0 0x100>;
+               interrupts = <GIC_SPI 37 IRQ_TYPE_LEVEL_HIGH>;
+               clocks = <&cru SCLK_SARADC>, <&cru PCLK_SARADC>;
+               clock-names = "saradc", "apb_pclk";
+               #io-channel-cells = <1>;
+               resets = <&cru SRST_SARADC_P>;
+               reset-names = "saradc-apb";
+               status = "disabled";
+       };
+
+       amba {
+               compatible = "simple-bus";
+               #address-cells = <2>;
+               #size-cells = <2>;
+               ranges;
+
+               dmac0: dma-controller@ff2c0000 {
+                       compatible = "arm,pl330", "arm,primecell";
+                       reg = <0x0 0xff2c0000 0x0 0x4000>;
+                       interrupts = <GIC_SPI 0 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 1 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&cru ACLK_DMAC0>;
+                       clock-names = "apb_pclk";
+                       #dma-cells = <1>;
+               };
+
+               dmac1: dma-controller@ff2d0000 {
+                       compatible = "arm,pl330", "arm,primecell";
+                       reg = <0x0 0xff2d0000 0x0 0x4000>;
+                       interrupts = <GIC_SPI 2 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 3 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&cru ACLK_DMAC1>;
+                       clock-names = "apb_pclk";
+                       #dma-cells = <1>;
+               };
+       };
+
+       i2s_2ch_0: i2s@ff350000 {
+               compatible = "rockchip,rk3308-i2s", "rockchip,rk3066-i2s";
+               reg = <0x0 0xff350000 0x0 0x1000>;
+               interrupts = <GIC_SPI 52 IRQ_TYPE_LEVEL_HIGH>;
+               clocks = <&cru SCLK_I2S0_2CH>, <&cru HCLK_I2S0_2CH>;
+               clock-names = "i2s_clk", "i2s_hclk";
+               dmas = <&dmac1 8>, <&dmac1 9>;
+               dma-names = "tx", "rx";
+               resets = <&cru SRST_I2S0_2CH_M>, <&cru SRST_I2S0_2CH_H>;
+               reset-names = "reset-m", "reset-h";
+               pinctrl-names = "default";
+               pinctrl-0 = <&i2s_2ch_0_sclk
+                            &i2s_2ch_0_lrck
+                            &i2s_2ch_0_sdi
+                            &i2s_2ch_0_sdo>;
+               status = "disabled";
+       };
+
+       i2s_2ch_1: i2s@ff360000 {
+               compatible = "rockchip,rk3308-i2s", "rockchip,rk3066-i2s";
+               reg = <0x0 0xff360000 0x0 0x1000>;
+               interrupts = <GIC_SPI 53 IRQ_TYPE_LEVEL_HIGH>;
+               clocks = <&cru SCLK_I2S1_2CH>, <&cru HCLK_I2S1_2CH>;
+               clock-names = "i2s_clk", "i2s_hclk";
+               dmas = <&dmac1 11>;
+               dma-names = "rx";
+               resets = <&cru SRST_I2S1_2CH_M>, <&cru SRST_I2S1_2CH_H>;
+               reset-names = "reset-m", "reset-h";
+               status = "disabled";
+       };
+
+       spdif_tx: spdif-tx@ff3a0000 {
+               compatible = "rockchip,rk3308-spdif", "rockchip,rk3328-spdif";
+               reg = <0x0 0xff3a0000 0x0 0x1000>;
+               interrupts = <GIC_SPI 55 IRQ_TYPE_LEVEL_HIGH>;
+               clocks = <&cru SCLK_SPDIF_TX>, <&cru HCLK_SPDIFTX>;
+               clock-names = "mclk", "hclk";
+               dmas = <&dmac1 13>;
+               dma-names = "tx";
+               pinctrl-names = "default";
+               pinctrl-0 = <&spdif_out>;
+               status = "disabled";
+       };
+
+       sdmmc: dwmmc@ff480000 {
+               compatible = "rockchip,rk3308-dw-mshc", "rockchip,rk3288-dw-mshc";
+               reg = <0x0 0xff480000 0x0 0x4000>;
+               interrupts = <GIC_SPI 76 IRQ_TYPE_LEVEL_HIGH>;
+               bus-width = <4>;
+               clocks = <&cru HCLK_SDMMC>, <&cru SCLK_SDMMC>,
+                        <&cru SCLK_SDMMC_DRV>, <&cru SCLK_SDMMC_SAMPLE>;
+               clock-names = "biu", "ciu", "ciu-drv", "ciu-sample";
+               fifo-depth = <0x100>;
+               max-frequency = <150000000>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&sdmmc_clk &sdmmc_cmd &sdmmc_det &sdmmc_bus4>;
+               status = "disabled";
+       };
+
+       emmc: dwmmc@ff490000 {
+               compatible = "rockchip,rk3308-dw-mshc", "rockchip,rk3288-dw-mshc";
+               reg = <0x0 0xff490000 0x0 0x4000>;
+               interrupts = <GIC_SPI 77 IRQ_TYPE_LEVEL_HIGH>;
+               bus-width = <8>;
+               clocks = <&cru HCLK_EMMC>, <&cru SCLK_EMMC>,
+                        <&cru SCLK_EMMC_DRV>, <&cru SCLK_EMMC_SAMPLE>;
+               clock-names = "biu", "ciu", "ciu-drv", "ciu-sample";
+               fifo-depth = <0x100>;
+               max-frequency = <150000000>;
+               status = "disabled";
+       };
+
+       sdio: dwmmc@ff4a0000 {
+               compatible = "rockchip,rk3308-dw-mshc", "rockchip,rk3288-dw-mshc";
+               reg = <0x0 0xff4a0000 0x0 0x4000>;
+               interrupts = <GIC_SPI 78 IRQ_TYPE_LEVEL_HIGH>;
+               bus-width = <4>;
+               clocks = <&cru HCLK_SDIO>, <&cru SCLK_SDIO>,
+                        <&cru SCLK_SDIO_DRV>, <&cru SCLK_SDIO_SAMPLE>;
+               clock-names = "biu", "ciu", "ciu-drv", "ciu-sample";
+               fifo-depth = <0x100>;
+               max-frequency = <150000000>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&sdio_bus4 &sdio_cmd &sdio_clk>;
+               status = "disabled";
+       };
+
+       cru: clock-controller@ff500000 {
+               compatible = "rockchip,rk3308-cru";
+               reg = <0x0 0xff500000 0x0 0x1000>;
+               #clock-cells = <1>;
+               #reset-cells = <1>;
+               rockchip,grf = <&grf>;
+
+               assigned-clocks = <&cru SCLK_RTC32K>;
+               assigned-clock-rates = <32768>;
+       };
+
+       gic: interrupt-controller@ff580000 {
+               compatible = "arm,gic-400";
+               reg = <0x0 0xff581000 0x0 0x1000>,
+                     <0x0 0xff582000 0x0 0x2000>,
+                     <0x0 0xff584000 0x0 0x2000>,
+                     <0x0 0xff586000 0x0 0x2000>;
+               interrupts = <GIC_PPI 9 IRQ_TYPE_LEVEL_HIGH>;
+               #interrupt-cells = <3>;
+               interrupt-controller;
+               #address-cells = <0>;
+       };
+
+       sram: sram@fff80000 {
+               compatible = "mmio-sram";
+               reg = <0x0 0xfff80000 0x0 0x40000>;
+               ranges = <0 0x0 0xfff80000 0x40000>;
+               #address-cells = <1>;
+               #size-cells = <1>;
+
+               /* reserved for ddr dvfs and system suspend/resume */
+               ddr-sram@0 {
+                       reg = <0x0 0x8000>;
+               };
+
+               /* reserved for vad audio buffer */
+               vad_sram: vad-sram@8000 {
+                       reg = <0x8000 0x38000>;
+               };
+       };
+
+       pinctrl: pinctrl {
+               compatible = "rockchip,rk3308-pinctrl";
+               rockchip,grf = <&grf>;
+               #address-cells = <2>;
+               #size-cells = <2>;
+               ranges;
+
+               gpio0: gpio0@ff220000 {
+                       compatible = "rockchip,gpio-bank";
+                       reg = <0x0 0xff220000 0x0 0x100>;
+                       interrupts = <GIC_SPI 40 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&cru PCLK_GPIO0>;
+                       gpio-controller;
+                       #gpio-cells = <2>;
+                       interrupt-controller;
+                       #interrupt-cells = <2>;
+               };
+
+               gpio1: gpio1@ff230000 {
+                       compatible = "rockchip,gpio-bank";
+                       reg = <0x0 0xff230000 0x0 0x100>;
+                       interrupts = <GIC_SPI 41 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&cru PCLK_GPIO1>;
+                       gpio-controller;
+                       #gpio-cells = <2>;
+                       interrupt-controller;
+                       #interrupt-cells = <2>;
+               };
+
+               gpio2: gpio2@ff240000 {
+                       compatible = "rockchip,gpio-bank";
+                       reg = <0x0 0xff240000 0x0 0x100>;
+                       interrupts = <GIC_SPI 42 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&cru PCLK_GPIO2>;
+                       gpio-controller;
+                       #gpio-cells = <2>;
+                       interrupt-controller;
+                       #interrupt-cells = <2>;
+               };
+
+               gpio3: gpio3@ff250000 {
+                       compatible = "rockchip,gpio-bank";
+                       reg = <0x0 0xff250000 0x0 0x100>;
+                       interrupts = <GIC_SPI 43 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&cru PCLK_GPIO3>;
+                       gpio-controller;
+                       #gpio-cells = <2>;
+                       interrupt-controller;
+                       #interrupt-cells = <2>;
+               };
+
+               gpio4: gpio4@ff260000 {
+                       compatible = "rockchip,gpio-bank";
+                       reg = <0x0 0xff260000 0x0 0x100>;
+                       interrupts = <GIC_SPI 44 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&cru PCLK_GPIO4>;
+                       gpio-controller;
+                       #gpio-cells = <2>;
+                       interrupt-controller;
+                       #interrupt-cells = <2>;
+               };
+
+               pcfg_pull_up: pcfg-pull-up {
+                       bias-pull-up;
+               };
+
+               pcfg_pull_down: pcfg-pull-down {
+                       bias-pull-down;
+               };
+
+               pcfg_pull_none: pcfg-pull-none {
+                       bias-disable;
+               };
+
+               pcfg_pull_none_2ma: pcfg-pull-none-2ma {
+                       bias-disable;
+                       drive-strength = <2>;
+               };
+
+               pcfg_pull_up_2ma: pcfg-pull-up-2ma {
+                       bias-pull-up;
+                       drive-strength = <2>;
+               };
+
+               pcfg_pull_up_4ma: pcfg-pull-up-4ma {
+                       bias-pull-up;
+                       drive-strength = <4>;
+               };
+
+               pcfg_pull_none_4ma: pcfg-pull-none-4ma {
+                       bias-disable;
+                       drive-strength = <4>;
+               };
+
+               pcfg_pull_down_4ma: pcfg-pull-down-4ma {
+                       bias-pull-down;
+                       drive-strength = <4>;
+               };
+
+               pcfg_pull_none_8ma: pcfg-pull-none-8ma {
+                       bias-disable;
+                       drive-strength = <8>;
+               };
+
+               pcfg_pull_up_8ma: pcfg-pull-up-8ma {
+                       bias-pull-up;
+                       drive-strength = <8>;
+               };
+
+               pcfg_pull_none_12ma: pcfg-pull-none-12ma {
+                       bias-disable;
+                       drive-strength = <12>;
+               };
+
+               pcfg_pull_up_12ma: pcfg-pull-up-12ma {
+                       bias-pull-up;
+                       drive-strength = <12>;
+               };
+
+               pcfg_pull_none_smt: pcfg-pull-none-smt {
+                       bias-disable;
+                       input-schmitt-enable;
+               };
+
+               pcfg_output_high: pcfg-output-high {
+                       output-high;
+               };
+
+               pcfg_output_low: pcfg-output-low {
+                       output-low;
+               };
+
+               pcfg_input_high: pcfg-input-high {
+                       bias-pull-up;
+                       input-enable;
+               };
+
+               pcfg_input: pcfg-input {
+                       input-enable;
+               };
+
+               emmc {
+                       emmc_clk: emmc-clk {
+                               rockchip,pins =
+                                       <3 RK_PB1 2 &pcfg_pull_none_8ma>;
+                       };
+
+                       emmc_cmd: emmc-cmd {
+                               rockchip,pins =
+                                       <3 RK_PB0 2 &pcfg_pull_up_8ma>;
+                       };
+
+                       emmc_pwren: emmc-pwren {
+                               rockchip,pins =
+                                       <3 RK_PB3 2 &pcfg_pull_none>;
+                       };
+
+                       emmc_rstn: emmc-rstn {
+                               rockchip,pins =
+                                       <3 RK_PB2 2 &pcfg_pull_none>;
+                       };
+
+                       emmc_bus1: emmc-bus1 {
+                               rockchip,pins =
+                                       <3 RK_PA0 2 &pcfg_pull_up_8ma>;
+                       };
+
+                       emmc_bus4: emmc-bus4 {
+                               rockchip,pins =
+                                       <3 RK_PA0 2 &pcfg_pull_up_8ma>,
+                                       <3 RK_PA1 2 &pcfg_pull_up_8ma>,
+                                       <3 RK_PA2 2 &pcfg_pull_up_8ma>,
+                                       <3 RK_PA3 2 &pcfg_pull_up_8ma>;
+                       };
+
+                       emmc_bus8: emmc-bus8 {
+                               rockchip,pins =
+                                       <3 RK_PA0 2 &pcfg_pull_up_8ma>,
+                                       <3 RK_PA1 2 &pcfg_pull_up_8ma>,
+                                       <3 RK_PA2 2 &pcfg_pull_up_8ma>,
+                                       <3 RK_PA3 2 &pcfg_pull_up_8ma>,
+                                       <3 RK_PA4 2 &pcfg_pull_up_8ma>,
+                                       <3 RK_PA5 2 &pcfg_pull_up_8ma>,
+                                       <3 RK_PA6 2 &pcfg_pull_up_8ma>,
+                                       <3 RK_PA7 2 &pcfg_pull_up_8ma>;
+                       };
+               };
+
+               flash {
+                       flash_csn0: flash-csn0 {
+                               rockchip,pins =
+                                       <3 RK_PB5 1 &pcfg_pull_none>;
+                       };
+
+                       flash_rdy: flash-rdy {
+                               rockchip,pins =
+                                       <3 RK_PB4 1 &pcfg_pull_none>;
+                       };
+
+                       flash_ale: flash-ale {
+                               rockchip,pins =
+                                       <3 RK_PB3 1 &pcfg_pull_none>;
+                       };
+
+                       flash_cle: flash-cle {
+                               rockchip,pins =
+                                       <3 RK_PB1 1 &pcfg_pull_none>;
+                       };
+
+                       flash_wrn: flash-wrn {
+                               rockchip,pins =
+                                       <3 RK_PB0 1 &pcfg_pull_none>;
+                       };
+
+                       flash_rdn: flash-rdn {
+                               rockchip,pins =
+                                       <3 RK_PB2 1 &pcfg_pull_none>;
+                       };
+
+                       flash_bus8: flash-bus8 {
+                               rockchip,pins =
+                                       <3 RK_PA0 1 &pcfg_pull_up_12ma>,
+                                       <3 RK_PA1 1 &pcfg_pull_up_12ma>,
+                                       <3 RK_PA2 1 &pcfg_pull_up_12ma>,
+                                       <3 RK_PA3 1 &pcfg_pull_up_12ma>,
+                                       <3 RK_PA4 1 &pcfg_pull_up_12ma>,
+                                       <3 RK_PA5 1 &pcfg_pull_up_12ma>,
+                                       <3 RK_PA6 1 &pcfg_pull_up_12ma>,
+                                       <3 RK_PA7 1 &pcfg_pull_up_12ma>;
+                       };
+               };
+
+               gmac {
+                       rmii_pins: rmii-pins {
+                               rockchip,pins =
+                                       /* mac_txen */
+                                       <1 RK_PC1 3 &pcfg_pull_none_12ma>,
+                                       /* mac_txd1 */
+                                       <1 RK_PC3 3 &pcfg_pull_none_12ma>,
+                                       /* mac_txd0 */
+                                       <1 RK_PC2 3 &pcfg_pull_none_12ma>,
+                                       /* mac_rxd0 */
+                                       <1 RK_PC4 3 &pcfg_pull_none>,
+                                       /* mac_rxd1 */
+                                       <1 RK_PC5 3 &pcfg_pull_none>,
+                                       /* mac_rxer */
+                                       <1 RK_PB7 3 &pcfg_pull_none>,
+                                       /* mac_rxdv */
+                                       <1 RK_PC0 3 &pcfg_pull_none>,
+                                       /* mac_mdio */
+                                       <1 RK_PB6 3 &pcfg_pull_none>,
+                                       /* mac_mdc */
+                                       <1 RK_PB5 3 &pcfg_pull_none>;
+                       };
+
+                       mac_refclk_12ma: mac-refclk-12ma {
+                               rockchip,pins =
+                                       <1 RK_PB4 3 &pcfg_pull_none_12ma>;
+                       };
+
+                       mac_refclk: mac-refclk {
+                               rockchip,pins =
+                                       <1 RK_PB4 3 &pcfg_pull_none>;
+                       };
+               };
+
+               gmac-m1 {
+                       rmiim1_pins: rmiim1-pins {
+                               rockchip,pins =
+                                       /* mac_txen */
+                                       <4 RK_PB7 2 &pcfg_pull_none_12ma>,
+                                       /* mac_txd1 */
+                                       <4 RK_PA5 2 &pcfg_pull_none_12ma>,
+                                       /* mac_txd0 */
+                                       <4 RK_PA4 2 &pcfg_pull_none_12ma>,
+                                       /* mac_rxd0 */
+                                       <4 RK_PA2 2 &pcfg_pull_none>,
+                                       /* mac_rxd1 */
+                                       <4 RK_PA3 2 &pcfg_pull_none>,
+                                       /* mac_rxer */
+                                       <4 RK_PA0 2 &pcfg_pull_none>,
+                                       /* mac_rxdv */
+                                       <4 RK_PA1 2 &pcfg_pull_none>,
+                                       /* mac_mdio */
+                                       <4 RK_PB6 2 &pcfg_pull_none>,
+                                       /* mac_mdc */
+                                       <4 RK_PB5 2 &pcfg_pull_none>;
+                       };
+
+                       macm1_refclk_12ma: macm1-refclk-12ma {
+                               rockchip,pins =
+                                       <4 RK_PB4 2 &pcfg_pull_none_12ma>;
+                       };
+
+                       macm1_refclk: macm1-refclk {
+                               rockchip,pins =
+                                       <4 RK_PB4 2 &pcfg_pull_none>;
+                       };
+               };
+
+               i2c0 {
+                       i2c0_xfer: i2c0-xfer {
+                               rockchip,pins =
+                                       <1 RK_PD0 2 &pcfg_pull_none_smt>,
+                                       <1 RK_PD1 2 &pcfg_pull_none_smt>;
+                       };
+               };
+
+               i2c1 {
+                       i2c1_xfer: i2c1-xfer {
+                               rockchip,pins =
+                                       <0 RK_PB3 1 &pcfg_pull_none_smt>,
+                                       <0 RK_PB4 1 &pcfg_pull_none_smt>;
+                       };
+               };
+
+               i2c2 {
+                       i2c2_xfer: i2c2-xfer {
+                               rockchip,pins =
+                                       <2 RK_PA2 3 &pcfg_pull_none_smt>,
+                                       <2 RK_PA3 3 &pcfg_pull_none_smt>;
+                       };
+               };
+
+               i2c3-m0 {
+                       i2c3m0_xfer: i2c3m0-xfer {
+                               rockchip,pins =
+                                       <0 RK_PB7 2 &pcfg_pull_none_smt>,
+                                       <0 RK_PC0 2 &pcfg_pull_none_smt>;
+                       };
+               };
+
+               i2c3-m1 {
+                       i2c3m1_xfer: i2c3m1-xfer {
+                               rockchip,pins =
+                                       <3 RK_PB4 2 &pcfg_pull_none_smt>,
+                                       <3 RK_PB5 2 &pcfg_pull_none_smt>;
+                       };
+               };
+
+               i2c3-m2 {
+                       i2c3m2_xfer: i2c3m2-xfer {
+                               rockchip,pins =
+                                       <2 RK_PA1 3 &pcfg_pull_none_smt>,
+                                       <2 RK_PA0 3 &pcfg_pull_none_smt>;
+                       };
+               };
+
+               i2s_2ch_0 {
+                       i2s_2ch_0_mclk: i2s-2ch-0-mclk {
+                               rockchip,pins =
+                                       <4 RK_PB4 1 &pcfg_pull_none>;
+                       };
+
+                       i2s_2ch_0_sclk: i2s-2ch-0-sclk {
+                               rockchip,pins =
+                                       <4 RK_PB5 1 &pcfg_pull_none>;
+                       };
+
+                       i2s_2ch_0_lrck: i2s-2ch-0-lrck {
+                               rockchip,pins =
+                                       <4 RK_PB6 1 &pcfg_pull_none>;
+                       };
+
+                       i2s_2ch_0_sdo: i2s-2ch-0-sdo {
+                               rockchip,pins =
+                                       <4 RK_PB7 1 &pcfg_pull_none>;
+                       };
+
+                       i2s_2ch_0_sdi: i2s-2ch-0-sdi {
+                               rockchip,pins =
+                                       <4 RK_PC0 1 &pcfg_pull_none>;
+                       };
+               };
+
+               i2s_8ch_0 {
+                       i2s_8ch_0_mclk: i2s-8ch-0-mclk {
+                               rockchip,pins =
+                                       <2 RK_PA4 1 &pcfg_pull_none>;
+                       };
+
+                       i2s_8ch_0_sclktx: i2s-8ch-0-sclktx {
+                               rockchip,pins =
+                                       <2 RK_PA5 1 &pcfg_pull_none>;
+                       };
+
+                       i2s_8ch_0_sclkrx: i2s-8ch-0-sclkrx {
+                               rockchip,pins =
+                                       <2 RK_PA6 1 &pcfg_pull_none>;
+                       };
+
+                       i2s_8ch_0_lrcktx: i2s-8ch-0-lrcktx {
+                               rockchip,pins =
+                                       <2 RK_PA7 1 &pcfg_pull_none>;
+                       };
+
+                       i2s_8ch_0_lrckrx: i2s-8ch-0-lrckrx {
+                               rockchip,pins =
+                                       <2 RK_PB0 1 &pcfg_pull_none>;
+                       };
+
+                       i2s_8ch_0_sdo0: i2s-8ch-0-sdo0 {
+                               rockchip,pins =
+                                       <2 RK_PB1 1 &pcfg_pull_none>;
+                       };
+
+                       i2s_8ch_0_sdo1: i2s-8ch-0-sdo1 {
+                               rockchip,pins =
+                                       <2 RK_PB2 1 &pcfg_pull_none>;
+                       };
+
+                       i2s_8ch_0_sdo2: i2s-8ch-0-sdo2 {
+                               rockchip,pins =
+                                       <2 RK_PB3 1 &pcfg_pull_none>;
+                       };
+
+                       i2s_8ch_0_sdo3: i2s-8ch-0-sdo3 {
+                               rockchip,pins =
+                                       <2 RK_PB4 1 &pcfg_pull_none>;
+                       };
+
+                       i2s_8ch_0_sdi0: i2s-8ch-0-sdi0 {
+                               rockchip,pins =
+                                       <2 RK_PB5 1 &pcfg_pull_none>;
+                       };
+
+                       i2s_8ch_0_sdi1: i2s-8ch-0-sdi1 {
+                               rockchip,pins =
+                                       <2 RK_PB6 1 &pcfg_pull_none>;
+                       };
+
+                       i2s_8ch_0_sdi2: i2s-8ch-0-sdi2 {
+                               rockchip,pins =
+                                       <2 RK_PB7 1 &pcfg_pull_none>;
+                       };
+
+                       i2s_8ch_0_sdi3: i2s-8ch-0-sdi3 {
+                               rockchip,pins =
+                                       <2 RK_PC0 1 &pcfg_pull_none>;
+                       };
+               };
+
+               i2s_8ch_1_m0 {
+                       i2s_8ch_1_m0_mclk: i2s-8ch-1-m0-mclk {
+                               rockchip,pins =
+                                       <1 RK_PA2 2 &pcfg_pull_none>;
+                       };
+
+                       i2s_8ch_1_m0_sclktx: i2s-8ch-1-m0-sclktx {
+                               rockchip,pins =
+                                       <1 RK_PA3 2 &pcfg_pull_none>;
+                       };
+
+                       i2s_8ch_1_m0_sclkrx: i2s-8ch-1-m0-sclkrx {
+                               rockchip,pins =
+                                       <1 RK_PA4 2 &pcfg_pull_none>;
+                       };
+
+                       i2s_8ch_1_m0_lrcktx: i2s-8ch-1-m0-lrcktx {
+                               rockchip,pins =
+                                       <1 RK_PA5 2 &pcfg_pull_none>;
+                       };
+
+                       i2s_8ch_1_m0_lrckrx: i2s-8ch-1-m0-lrckrx {
+                               rockchip,pins =
+                                       <1 RK_PA6 2 &pcfg_pull_none>;
+                       };
+
+                       i2s_8ch_1_m0_sdo0: i2s-8ch-1-m0-sdo0 {
+                               rockchip,pins =
+                                       <1 RK_PA7 2 &pcfg_pull_none>;
+                       };
+
+                       i2s_8ch_1_m0_sdo1_sdi3: i2s-8ch-1-m0-sdo1-sdi3 {
+                               rockchip,pins =
+                                       <1 RK_PB0 2 &pcfg_pull_none>;
+                       };
+
+                       i2s_8ch_1_m0_sdo2_sdi2: i2s-8ch-1-m0-sdo2-sdi2 {
+                               rockchip,pins =
+                                       <1 RK_PB1 2 &pcfg_pull_none>;
+                       };
+
+                       i2s_8ch_1_m0_sdo3_sdi1: i2s-8ch-1-m0-sdo3_sdi1 {
+                               rockchip,pins =
+                                       <1 RK_PB2 2 &pcfg_pull_none>;
+                       };
+
+                       i2s_8ch_1_m0_sdi0: i2s-8ch-1-m0-sdi0 {
+                               rockchip,pins =
+                                       <1 RK_PB3 2 &pcfg_pull_none>;
+                       };
+               };
+
+               i2s_8ch_1_m1 {
+                       i2s_8ch_1_m1_mclk: i2s-8ch-1-m1-mclk {
+                               rockchip,pins =
+                                       <1 RK_PB4 2 &pcfg_pull_none>;
+                       };
+
+                       i2s_8ch_1_m1_sclktx: i2s-8ch-1-m1-sclktx {
+                               rockchip,pins =
+                                       <1 RK_PB5 2 &pcfg_pull_none>;
+                       };
+
+                       i2s_8ch_1_m1_sclkrx: i2s-8ch-1-m1-sclkrx {
+                               rockchip,pins =
+                                       <1 RK_PB6 2 &pcfg_pull_none>;
+                       };
+
+                       i2s_8ch_1_m1_lrcktx: i2s-8ch-1-m1-lrcktx {
+                               rockchip,pins =
+                                       <1 RK_PB7 2 &pcfg_pull_none>;
+                       };
+
+                       i2s_8ch_1_m1_lrckrx: i2s-8ch-1-m1-lrckrx {
+                               rockchip,pins =
+                                       <1 RK_PC0 2 &pcfg_pull_none>;
+                       };
+
+                       i2s_8ch_1_m1_sdo0: i2s-8ch-1-m1-sdo0 {
+                               rockchip,pins =
+                                       <1 RK_PC1 2 &pcfg_pull_none>;
+                       };
+
+                       i2s_8ch_1_m1_sdo1_sdi3: i2s-8ch-1-m1-sdo1-sdi3 {
+                               rockchip,pins =
+                                       <1 RK_PC2 2 &pcfg_pull_none>;
+                       };
+
+                       i2s_8ch_1_m1_sdo2_sdi2: i2s-8ch-1-m1-sdo2-sdi2 {
+                               rockchip,pins =
+                                       <1 RK_PC3 2 &pcfg_pull_none>;
+                       };
+
+                       i2s_8ch_1_m1_sdo3_sdi1: i2s-8ch-1-m1-sdo3_sdi1 {
+                               rockchip,pins =
+                                       <1 RK_PC4 2 &pcfg_pull_none>;
+                       };
+
+                       i2s_8ch_1_m1_sdi0: i2s-8ch-1-m1-sdi0 {
+                               rockchip,pins =
+                                       <1 RK_PC5 2 &pcfg_pull_none>;
+                       };
+               };
+
+               pdm_m0 {
+                       pdm_m0_clk: pdm-m0-clk {
+                               rockchip,pins =
+                                       <1 RK_PA4 3 &pcfg_pull_none>;
+                       };
+
+                       pdm_m0_sdi0: pdm-m0-sdi0 {
+                               rockchip,pins =
+                                       <1 RK_PB3 3 &pcfg_pull_none>;
+                       };
+
+                       pdm_m0_sdi1: pdm-m0-sdi1 {
+                               rockchip,pins =
+                                       <1 RK_PB2 3 &pcfg_pull_none>;
+                       };
+
+                       pdm_m0_sdi2: pdm-m0-sdi2 {
+                               rockchip,pins =
+                                       <1 RK_PB1 3 &pcfg_pull_none>;
+                       };
+
+                       pdm_m0_sdi3: pdm-m0-sdi3 {
+                               rockchip,pins =
+                                       <1 RK_PB0 3 &pcfg_pull_none>;
+                       };
+               };
+
+               pdm_m1 {
+                       pdm_m1_clk: pdm-m1-clk {
+                               rockchip,pins =
+                                       <1 RK_PB6 4 &pcfg_pull_none>;
+                       };
+
+                       pdm_m1_sdi0: pdm-m1-sdi0 {
+                               rockchip,pins =
+                                       <1 RK_PC5 4 &pcfg_pull_none>;
+                       };
+
+                       pdm_m1_sdi1: pdm-m1-sdi1 {
+                               rockchip,pins =
+                                       <1 RK_PC4 4 &pcfg_pull_none>;
+                       };
+
+                       pdm_m1_sdi2: pdm-m1-sdi2 {
+                               rockchip,pins =
+                                       <1 RK_PC3 4 &pcfg_pull_none>;
+                       };
+
+                       pdm_m1_sdi3: pdm-m1-sdi3 {
+                               rockchip,pins =
+                                       <1 RK_PC2 4 &pcfg_pull_none>;
+                       };
+               };
+
+               pdm_m2 {
+                       pdm_m2_clkm: pdm-m2-clkm {
+                               rockchip,pins =
+                                       <2 RK_PA4 3 &pcfg_pull_none>;
+                       };
+
+                       pdm_m2_clk: pdm-m2-clk {
+                               rockchip,pins =
+                                       <2 RK_PA6 2 &pcfg_pull_none>;
+                       };
+
+                       pdm_m2_sdi0: pdm-m2-sdi0 {
+                               rockchip,pins =
+                                       <2 RK_PB5 2 &pcfg_pull_none>;
+                       };
+
+                       pdm_m2_sdi1: pdm-m2-sdi1 {
+                               rockchip,pins =
+                                       <2 RK_PB6 2 &pcfg_pull_none>;
+                       };
+
+                       pdm_m2_sdi2: pdm-m2-sdi2 {
+                               rockchip,pins =
+                                       <2 RK_PB7 2 &pcfg_pull_none>;
+                       };
+
+                       pdm_m2_sdi3: pdm-m2-sdi3 {
+                               rockchip,pins =
+                                       <2 RK_PC0 2 &pcfg_pull_none>;
+                       };
+               };
+
+               pwm0 {
+                       pwm0_pin: pwm0-pin {
+                               rockchip,pins =
+                                       <0 RK_PB5 1 &pcfg_pull_none>;
+                       };
+
+                       pwm0_pin_pull_down: pwm0-pin-pull-down {
+                               rockchip,pins =
+                                       <0 RK_PB5 1 &pcfg_pull_down>;
+                       };
+               };
+
+               pwm1 {
+                       pwm1_pin: pwm1-pin {
+                               rockchip,pins =
+                                       <0 RK_PB6 1 &pcfg_pull_none>;
+                       };
+
+                       pwm1_pin_pull_down: pwm1-pin-pull-down {
+                               rockchip,pins =
+                                       <0 RK_PB6 1 &pcfg_pull_down>;
+                       };
+               };
+
+               pwm2 {
+                       pwm2_pin: pwm2-pin {
+                               rockchip,pins =
+                                       <0 RK_PB7 1 &pcfg_pull_none>;
+                       };
+
+                       pwm2_pin_pull_down: pwm2-pin-pull-down {
+                               rockchip,pins =
+                                       <0 RK_PB7 1 &pcfg_pull_down>;
+                       };
+               };
+
+               pwm3 {
+                       pwm3_pin: pwm3-pin {
+                               rockchip,pins =
+                                       <0 RK_PC0 1 &pcfg_pull_none>;
+                       };
+
+                       pwm3_pin_pull_down: pwm3-pin-pull-down {
+                               rockchip,pins =
+                                       <0 RK_PC0 1 &pcfg_pull_down>;
+                       };
+               };
+
+               pwm4 {
+                       pwm4_pin: pwm4-pin {
+                               rockchip,pins =
+                                       <0 RK_PA1 2 &pcfg_pull_none>;
+                       };
+
+                       pwm4_pin_pull_down: pwm4-pin-pull-down {
+                               rockchip,pins =
+                                       <0 RK_PA1 2 &pcfg_pull_down>;
+                       };
+               };
+
+               pwm5 {
+                       pwm5_pin: pwm5-pin {
+                               rockchip,pins =
+                                       <0 RK_PC1 2 &pcfg_pull_none>;
+                       };
+
+                       pwm5_pin_pull_down: pwm5-pin-pull-down {
+                               rockchip,pins =
+                                       <0 RK_PC1 2 &pcfg_pull_down>;
+                       };
+               };
+
+               pwm6 {
+                       pwm6_pin: pwm6-pin {
+                               rockchip,pins =
+                                       <0 RK_PC2 2 &pcfg_pull_none>;
+                       };
+
+                       pwm6_pin_pull_down: pwm6-pin-pull-down {
+                               rockchip,pins =
+                                       <0 RK_PC2 2 &pcfg_pull_down>;
+                       };
+               };
+
+               pwm7 {
+                       pwm7_pin: pwm7-pin {
+                               rockchip,pins =
+                                       <2 RK_PB0 2 &pcfg_pull_none>;
+                       };
+
+                       pwm7_pin_pull_down: pwm7-pin-pull-down {
+                               rockchip,pins =
+                                       <2 RK_PB0 2 &pcfg_pull_down>;
+                       };
+               };
+
+               pwm8 {
+                       pwm8_pin: pwm8-pin {
+                               rockchip,pins =
+                                       <2 RK_PB2 2 &pcfg_pull_none>;
+                       };
+
+                       pwm8_pin_pull_down: pwm8-pin-pull-down {
+                               rockchip,pins =
+                                       <2 RK_PB2 2 &pcfg_pull_down>;
+                       };
+               };
+
+               pwm9 {
+                       pwm9_pin: pwm9-pin {
+                               rockchip,pins =
+                                       <2 RK_PB3 2 &pcfg_pull_none>;
+                       };
+
+                       pwm9_pin_pull_down: pwm9-pin-pull-down {
+                               rockchip,pins =
+                                       <2 RK_PB3 2 &pcfg_pull_down>;
+                       };
+               };
+
+               pwm10 {
+                       pwm10_pin: pwm10-pin {
+                               rockchip,pins =
+                                       <2 RK_PB4 2 &pcfg_pull_none>;
+                       };
+
+                       pwm10_pin_pull_down: pwm10-pin-pull-down {
+                               rockchip,pins =
+                                       <2 RK_PB4 2 &pcfg_pull_down>;
+                       };
+               };
+
+               pwm11 {
+                       pwm11_pin: pwm11-pin {
+                               rockchip,pins =
+                                       <2 RK_PC0 4 &pcfg_pull_none>;
+                       };
+
+                       pwm11_pin_pull_down: pwm11-pin-pull-down {
+                               rockchip,pins =
+                                       <2 RK_PC0 4 &pcfg_pull_down>;
+                       };
+               };
+
+               rtc {
+                       rtc_32k: rtc-32k {
+                               rockchip,pins =
+                                       <0 RK_PC3 1 &pcfg_pull_none>;
+                       };
+               };
+
+               sdmmc {
+                       sdmmc_clk: sdmmc-clk {
+                               rockchip,pins =
+                                       <4 RK_PD5 1 &pcfg_pull_none_4ma>;
+                       };
+
+                       sdmmc_cmd: sdmmc-cmd {
+                               rockchip,pins =
+                                       <4 RK_PD4 1 &pcfg_pull_up_4ma>;
+                       };
+
+                       sdmmc_det: sdmmc-det {
+                               rockchip,pins =
+                                       <0 RK_PA3 1 &pcfg_pull_up_4ma>;
+                       };
+
+                       sdmmc_pwren: sdmmc-pwren {
+                               rockchip,pins =
+                                       <4 RK_PD6 1 &pcfg_pull_none_4ma>;
+                       };
+
+                       sdmmc_bus1: sdmmc-bus1 {
+                               rockchip,pins =
+                                       <4 RK_PD0 1 &pcfg_pull_up_4ma>;
+                       };
+
+                       sdmmc_bus4: sdmmc-bus4 {
+                               rockchip,pins =
+                                       <4 RK_PD0 1 &pcfg_pull_up_4ma>,
+                                       <4 RK_PD1 1 &pcfg_pull_up_4ma>,
+                                       <4 RK_PD2 1 &pcfg_pull_up_4ma>,
+                                       <4 RK_PD3 1 &pcfg_pull_up_4ma>;
+                       };
+               };
+
+               sdio {
+                       sdio_clk: sdio-clk {
+                               rockchip,pins =
+                                       <4 RK_PA5 1 &pcfg_pull_none_8ma>;
+                       };
+
+                       sdio_cmd: sdio-cmd {
+                               rockchip,pins =
+                                       <4 RK_PA4 1 &pcfg_pull_up_8ma>;
+                       };
+
+                       sdio_pwren: sdio-pwren {
+                               rockchip,pins =
+                                       <0 RK_PA2 1 &pcfg_pull_none_8ma>;
+                       };
+
+                       sdio_wrpt: sdio-wrpt {
+                               rockchip,pins =
+                                       <0 RK_PA1 1 &pcfg_pull_none_8ma>;
+                       };
+
+                       sdio_intn: sdio-intn {
+                               rockchip,pins =
+                                       <0 RK_PA0 1 &pcfg_pull_none_8ma>;
+                       };
+
+                       sdio_bus1: sdio-bus1 {
+                               rockchip,pins =
+                                       <4 RK_PA0 1 &pcfg_pull_up_8ma>;
+                       };
+
+                       sdio_bus4: sdio-bus4 {
+                               rockchip,pins =
+                                       <4 RK_PA0 1 &pcfg_pull_up_8ma>,
+                                       <4 RK_PA1 1 &pcfg_pull_up_8ma>,
+                                       <4 RK_PA2 1 &pcfg_pull_up_8ma>,
+                                       <4 RK_PA3 1 &pcfg_pull_up_8ma>;
+                       };
+               };
+
+               spdif_in {
+                       spdif_in: spdif-in {
+                               rockchip,pins =
+                                       <0 RK_PC2 1 &pcfg_pull_none>;
+                       };
+               };
+
+               spdif_out {
+                       spdif_out: spdif-out {
+                               rockchip,pins =
+                                       <0 RK_PC1 1 &pcfg_pull_none>;
+                       };
+               };
+
+               spi0 {
+                       spi0_clk: spi0-clk {
+                               rockchip,pins =
+                                       <2 RK_PA2 2 &pcfg_pull_up_4ma>;
+                       };
+
+                       spi0_csn0: spi0-csn0 {
+                               rockchip,pins =
+                                       <2 RK_PA3 2 &pcfg_pull_up_4ma>;
+                       };
+
+                       spi0_miso: spi0-miso {
+                               rockchip,pins =
+                                       <2 RK_PA0 2 &pcfg_pull_up_4ma>;
+                       };
+
+                       spi0_mosi: spi0-mosi {
+                               rockchip,pins =
+                                       <2 RK_PA1 2 &pcfg_pull_up_4ma>;
+                       };
+               };
+
+               spi1 {
+                       spi1_clk: spi1-clk {
+                               rockchip,pins =
+                                       <3 RK_PB3 3 &pcfg_pull_up_4ma>;
+                       };
+
+                       spi1_csn0: spi1-csn0 {
+                               rockchip,pins =
+                                       <3 RK_PB5 3 &pcfg_pull_up_4ma>;
+                       };
+
+                       spi1_miso: spi1-miso {
+                               rockchip,pins =
+                                       <3 RK_PB2 3 &pcfg_pull_up_4ma>;
+                       };
+
+                       spi1_mosi: spi1-mosi {
+                               rockchip,pins =
+                                       <3 RK_PB4 3 &pcfg_pull_up_4ma>;
+                       };
+               };
+
+               spi1-m1 {
+                       spi1m1_miso: spi1m1-miso {
+                               rockchip,pins =
+                                       <2 RK_PA4 2 &pcfg_pull_up_4ma>;
+                       };
+
+                       spi1m1_mosi: spi1m1-mosi {
+                               rockchip,pins =
+                                       <2 RK_PA5 2 &pcfg_pull_up_4ma>;
+                       };
+
+                       spi1m1_clk: spi1m1-clk {
+                               rockchip,pins =
+                                       <2 RK_PA7 2 &pcfg_pull_up_4ma>;
+                       };
+
+                       spi1m1_csn0: spi1m1-csn0 {
+                               rockchip,pins =
+                                       <2 RK_PB1 2 &pcfg_pull_up_4ma>;
+                       };
+               };
+
+               spi2 {
+                       spi2_clk: spi2-clk {
+                               rockchip,pins =
+                                       <1 RK_PD0 3 &pcfg_pull_up_4ma>;
+                       };
+
+                       spi2_csn0: spi2-csn0 {
+                               rockchip,pins =
+                                       <1 RK_PD1 3 &pcfg_pull_up_4ma>;
+                       };
+
+                       spi2_miso: spi2-miso {
+                               rockchip,pins =
+                                       <1 RK_PC6 3 &pcfg_pull_up_4ma>;
+                       };
+
+                       spi2_mosi: spi2-mosi {
+                               rockchip,pins =
+                                       <1 RK_PC7 3 &pcfg_pull_up_4ma>;
+                       };
+               };
+
+               tsadc {
+                       tsadc_otp_gpio: tsadc-otp-gpio {
+                               rockchip,pins =
+                                       <0 RK_PB2 0 &pcfg_pull_none>;
+                       };
+
+                       tsadc_otp_out: tsadc-otp-out {
+                               rockchip,pins =
+                                       <0 RK_PB2 1 &pcfg_pull_none>;
+                       };
+               };
+
+               uart0 {
+                       uart0_xfer: uart0-xfer {
+                               rockchip,pins =
+                                       <2 RK_PA1 1 &pcfg_pull_up>,
+                                       <2 RK_PA0 1 &pcfg_pull_up>;
+                       };
+
+                       uart0_cts: uart0-cts {
+                               rockchip,pins =
+                                       <2 RK_PA2 1 &pcfg_pull_none>;
+                       };
+
+                       uart0_rts: uart0-rts {
+                               rockchip,pins =
+                                       <2 RK_PA3 1 &pcfg_pull_none>;
+                       };
+
+                       uart0_rts_gpio: uart0-rts-gpio {
+                               rockchip,pins =
+                                       <2 RK_PA3 0 &pcfg_pull_none>;
+                       };
+               };
+
+               uart1 {
+                       uart1_xfer: uart1-xfer {
+                               rockchip,pins =
+                                       <1 RK_PD1 1 &pcfg_pull_up>,
+                                       <1 RK_PD0 1 &pcfg_pull_up>;
+                       };
+
+                       uart1_cts: uart1-cts {
+                               rockchip,pins =
+                                       <1 RK_PC6 1 &pcfg_pull_none>;
+                       };
+
+                       uart1_rts: uart1-rts {
+                               rockchip,pins =
+                                       <1 RK_PC7 1 &pcfg_pull_none>;
+                       };
+               };
+
+               uart2-m0 {
+                       uart2m0_xfer: uart2m0-xfer {
+                               rockchip,pins =
+                                       <1 RK_PC7 2 &pcfg_pull_up>,
+                                       <1 RK_PC6 2 &pcfg_pull_up>;
+                       };
+               };
+
+               uart2-m1 {
+                       uart2m1_xfer: uart2m1-xfer {
+                               rockchip,pins =
+                                       <4 RK_PD3 2 &pcfg_pull_up>,
+                                       <4 RK_PD2 2 &pcfg_pull_up>;
+                       };
+               };
+
+               uart3 {
+                       uart3_xfer: uart3-xfer {
+                               rockchip,pins =
+                                       <3 RK_PB5 4 &pcfg_pull_up>,
+                                       <3 RK_PB4 4 &pcfg_pull_up>;
+                       };
+               };
+
+               uart3-m1 {
+                       uart3m1_xfer: uart3m1-xfer {
+                               rockchip,pins =
+                                       <0 RK_PC2 3 &pcfg_pull_up>,
+                                       <0 RK_PC1 3 &pcfg_pull_up>;
+                       };
+               };
+
+               uart4 {
+                       uart4_xfer: uart4-xfer {
+                               rockchip,pins =
+                                       <4 RK_PB1 1 &pcfg_pull_up>,
+                                       <4 RK_PB0 1 &pcfg_pull_up>;
+                       };
+
+                       uart4_cts: uart4-cts {
+                               rockchip,pins =
+                                       <4 RK_PA6 1 &pcfg_pull_none>;
+                       };
+
+                       uart4_rts: uart4-rts {
+                               rockchip,pins =
+                                       <4 RK_PA7 1 &pcfg_pull_none>;
+                       };
+
+                       uart4_rts_gpio: uart4-rts-gpio {
+                               rockchip,pins =
+                                       <4 RK_PA7 0 &pcfg_pull_none>;
+                       };
+               };
+       };
+};
diff --git a/arch/arm64/boot/dts/rockchip/rk3328-a1.dts b/arch/arm64/boot/dts/rockchip/rk3328-a1.dts
new file mode 100644 (file)
index 0000000..76b49f5
--- /dev/null
@@ -0,0 +1,359 @@
+// SPDX-License-Identifier: (GPL-2.0-only OR MIT)
+// Copyright (c) 2017-2019 Arm Ltd.
+
+/dts-v1/;
+#include "rk3328.dtsi"
+
+/ {
+       model = "Beelink A1";
+       compatible = "azw,beelink-a1", "rockchip,rk3328";
+
+       /*
+        * UART pins, as viewed with bottom of case removed:
+        *
+        *           Front
+        *        /-------
+        *  L    / o <- Gnd
+        *  e   / o <-- Rx
+        *  f  / o <--- Tx
+        *  t / o <---- +3.3v
+        *    |
+        */
+       chosen {
+               stdout-path = "serial2:1500000n8";
+       };
+
+       gmac_clkin: external-gmac-clock {
+               compatible = "fixed-clock";
+               clock-frequency = <125000000>;
+               clock-output-names = "gmac_clkin";
+               #clock-cells = <0>;
+       };
+
+       vcc_host_5v: usb3-current-switch {
+               compatible = "regulator-fixed";
+               enable-active-high;
+               gpio = <&gpio0 RK_PA0 GPIO_ACTIVE_HIGH>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&usb30_host_drv>;
+               regulator-name = "vcc_host_5v";
+               vin-supply = <&vcc_sys>;
+       };
+
+       vcc_sys: vcc-sys {
+               compatible = "regulator-fixed";
+               regulator-name = "vcc_sys";
+               regulator-min-microvolt = <5000000>;
+               regulator-max-microvolt = <5000000>;
+       };
+
+       ir-receiver {
+               compatible = "gpio-ir-receiver";
+               gpios = <&gpio2 RK_PA2 GPIO_ACTIVE_HIGH>;
+       };
+};
+
+&analog_sound {
+       simple-audio-card,name = "Analog A/V";
+       status = "okay";
+};
+
+&codec {
+       status = "okay";
+};
+
+&cpu0 {
+       cpu-supply = <&vdd_arm>;
+};
+
+&cpu1 {
+       cpu-supply = <&vdd_arm>;
+};
+
+&cpu2 {
+       cpu-supply = <&vdd_arm>;
+};
+
+&cpu3 {
+       cpu-supply = <&vdd_arm>;
+};
+
+&emmc {
+       bus-width = <8>;
+       cap-mmc-highspeed;
+       mmc-ddr-1_8v;
+       mmc-hs200-1_8v;
+       no-sd;
+       no-sdio;
+       non-removable;
+       pinctrl-names = "default";
+       pinctrl-0 = <&emmc_clk &emmc_cmd &emmc_bus8>;
+       vmmc-supply = <&vcc_io>;
+       vqmmc-supply = <&vcc18_emmc>;
+       status = "okay";
+};
+
+&gmac2io {
+       assigned-clocks = <&cru SCLK_MAC2IO>, <&cru SCLK_MAC2IO_EXT>;
+       assigned-clock-parents = <&gmac_clkin>, <&gmac_clkin>;
+       clock_in_out = "input";
+       phy-handle = <&rtl8211f>;
+       phy-mode = "rgmii";
+       phy-supply = <&vcc_io>;
+       pinctrl-names = "default";
+       pinctrl-0 = <&rgmiim1_pins>;
+       snps,aal;
+       snps,pbl = <0x4>;
+       tx_delay = <0x26>;
+       rx_delay = <0x11>;
+       status = "okay";
+
+       mdio {
+               compatible = "snps,dwmac-mdio";
+               #address-cells = <1>;
+               #size-cells = <0>;
+
+               rtl8211f: phy@0 {
+                       reg = <0>;
+                       reset-assert-us = <10000>;
+                       reset-deassert-us = <30000>;
+                       reset-gpios = <&gpio2 RK_PC1 GPIO_ACTIVE_LOW>;
+               };
+       };
+};
+
+&gpu {
+       mali-supply = <&vdd_logic>;
+};
+
+&hdmi {
+       status = "okay";
+};
+
+&hdmiphy {
+       status = "okay";
+};
+
+&hdmi_sound {
+       status = "okay";
+};
+
+&i2c1 {
+       clock-frequency = <1000000>;
+       i2c-scl-falling-time-ns = <5>;
+       i2c-scl-rising-time-ns = <83>;
+       status = "okay";
+
+       pmic@18 {
+               compatible = "rockchip,rk805";
+               reg = <0x18>;
+               interrupt-parent = <&gpio2>;
+               interrupts = <RK_PA6 IRQ_TYPE_LEVEL_LOW>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&pmic_int_l>;
+               rockchip,system-power-controller;
+               wakeup-source;
+
+               vcc1-supply = <&vcc_sys>;
+               vcc2-supply = <&vcc_sys>;
+               vcc3-supply = <&vcc_sys>;
+               vcc4-supply = <&vcc_sys>;
+               vcc5-supply = <&vcc_io>;
+               vcc6-supply = <&vcc_io>;
+
+               regulators {
+                       vdd_logic: DCDC_REG1 {
+                               regulator-name = "vdd_logic";
+                               regulator-min-microvolt = <700000>;
+                               regulator-max-microvolt = <1350000>;
+                               regulator-always-on;
+                               regulator-boot-on;
+                               regulator-state-mem {
+                                       regulator-on-in-suspend;
+                                       regulator-suspend-microvolt = <1000000>;
+                               };
+                       };
+
+                       vdd_arm: DCDC_REG2 {
+                               regulator-name = "vdd_arm";
+                               regulator-min-microvolt = <700000>;
+                               regulator-max-microvolt = <1350000>;
+                               regulator-always-on;
+                               regulator-boot-on;
+                               regulator-state-mem {
+                                       regulator-on-in-suspend;
+                                       regulator-suspend-microvolt = <950000>;
+                               };
+                       };
+
+                       vcc_ddr: DCDC_REG3 {
+                               regulator-name = "vcc_ddr";
+                               regulator-always-on;
+                               regulator-boot-on;
+                               regulator-state-mem {
+                                       regulator-on-in-suspend;
+                               };
+                       };
+
+                       vcc_io: DCDC_REG4 {
+                               regulator-name = "vcc_io";
+                               regulator-min-microvolt = <3300000>;
+                               regulator-max-microvolt = <3300000>;
+                               regulator-always-on;
+                               regulator-boot-on;
+                               regulator-state-mem {
+                                       regulator-on-in-suspend;
+                                       regulator-suspend-microvolt = <3300000>;
+                               };
+                       };
+
+                       vdd_18: LDO_REG1 {
+                               regulator-name = "vdd_18";
+                               regulator-min-microvolt = <1800000>;
+                               regulator-max-microvolt = <1800000>;
+                               regulator-always-on;
+                               regulator-boot-on;
+                               regulator-state-mem {
+                                       regulator-on-in-suspend;
+                                       regulator-suspend-microvolt = <1800000>;
+                               };
+                       };
+
+                       vcc18_emmc: LDO_REG2 {
+                               regulator-name = "vcc_18emmc";
+                               regulator-min-microvolt = <1800000>;
+                               regulator-max-microvolt = <1800000>;
+                               regulator-always-on;
+                               regulator-boot-on;
+                               regulator-state-mem {
+                                       regulator-on-in-suspend;
+                                       regulator-suspend-microvolt = <1800000>;
+                               };
+                       };
+
+                       vdd_11: LDO_REG3 {
+                               regulator-name = "vdd_11";
+                               regulator-min-microvolt = <1100000>;
+                               regulator-max-microvolt = <1100000>;
+                               regulator-always-on;
+                               regulator-boot-on;
+                               regulator-state-mem {
+                                       regulator-on-in-suspend;
+                                       regulator-suspend-microvolt = <1100000>;
+                               };
+                       };
+               };
+       };
+};
+
+&i2s0 {
+       status = "okay";
+};
+
+&i2s1 {
+       status = "okay";
+};
+
+&io_domains {
+       vccio1-supply = <&vcc_io>;
+       vccio2-supply = <&vcc18_emmc>;
+       vccio3-supply = <&vcc_io>;
+       vccio4-supply = <&vdd_18>;
+       vccio5-supply = <&vcc_io>;
+       vccio6-supply = <&vdd_18>;
+       pmuio-supply = <&vcc_io>;
+       status = "okay";
+};
+
+&pinctrl {
+       pmic {
+               pmic_int_l: pmic-int-l {
+                       rockchip,pins = <2 RK_PA6 RK_FUNC_GPIO &pcfg_pull_up>;
+               };
+       };
+
+       usb3 {
+               usb30_host_drv: usb30-host-drv {
+                       rockchip,pins = <0 RK_PA0 RK_FUNC_GPIO &pcfg_pull_none>;
+               };
+       };
+
+       wifi {
+               bt_dis: bt-dis {
+                       rockchip,pins = <2 RK_PC5 RK_FUNC_GPIO &pcfg_output_low>;
+               };
+
+               bt_wake_host: bt-wake-host {
+                       rockchip,pins = <2 RK_PC0 RK_FUNC_GPIO &pcfg_pull_up>;
+               };
+
+               chip_en: chip-en {
+                       rockchip,pins = <2 RK_PC3 RK_FUNC_GPIO &pcfg_output_low>;
+               };
+
+               host_wake_bt: host-wake-bt {
+                       rockchip,pins = <2 RK_PB7 RK_FUNC_GPIO &pcfg_output_high>;
+               };
+
+               wl_dis: wl-dis {
+                       rockchip,pins = <3 RK_PB0 RK_FUNC_GPIO &pcfg_output_low>;
+               };
+
+               wl_wake_host: wl-wake-host {
+                       rockchip,pins = <3 RK_PA1 RK_FUNC_GPIO &pcfg_pull_up>;
+               };
+       };
+};
+
+&sdmmc {
+       bus-width = <4>;
+       cap-mmc-highspeed;
+       cap-sd-highspeed;
+       disable-wp;
+       pinctrl-names = "default";
+       pinctrl-0 = <&sdmmc0_clk &sdmmc0_cmd &sdmmc0_dectn &sdmmc0_bus4>;
+       vmmc-supply = <&vcc_io>;
+       vqmmc-supply = <&vcc_io>;
+       status = "okay";
+};
+
+&tsadc {
+       rockchip,hw-tshut-mode = <0>;
+       rockchip,hw-tshut-polarity = <0>;
+       status = "okay";
+};
+
+&uart2 {
+       status = "okay";
+};
+
+&u2phy {
+       status = "okay";
+};
+
+&u2phy_host {
+       status = "okay";
+};
+
+&u2phy_otg {
+       status = "okay";
+};
+
+&usb20_otg {
+       dr_mode = "host";
+       status = "okay";
+};
+
+&usb_host0_ehci {
+       pinctrl-names = "default";
+       pinctrl-0 = <&bt_dis &bt_wake_host &chip_en &host_wake_bt &wl_dis &wl_wake_host>;
+       status = "okay";
+};
+
+&vop {
+       status = "okay";
+};
+
+&vop_mmu {
+       status = "okay";
+};
index bb40c16..8d553c9 100644 (file)
@@ -35,6 +35,7 @@
                gpio = <&gpio0 RK_PD6 GPIO_ACTIVE_LOW>;
                pinctrl-names = "default";
                pinctrl-0 = <&sdmmc0m1_gpio>;
+               regulator-boot-on;
                regulator-name = "vcc_sd";
                regulator-min-microvolt = <3300000>;
                regulator-max-microvolt = <3300000>;
index 31cc154..91306eb 100644 (file)
                };
        };
 
+       analog_sound: analog-sound {
+               compatible = "simple-audio-card";
+               simple-audio-card,format = "i2s";
+               simple-audio-card,mclk-fs = <256>;
+               simple-audio-card,name = "Analog";
+               status = "disabled";
+
+               simple-audio-card,cpu {
+                       sound-dai = <&i2s1>;
+               };
+
+               simple-audio-card,codec {
+                       sound-dai = <&codec>;
+               };
+       };
+
        arm-pmu {
                compatible = "arm,cortex-a53-pmu";
                interrupts = <GIC_SPI 100 IRQ_TYPE_LEVEL_HIGH>,
                ports = <&vop_out>;
        };
 
+       hdmi_sound: hdmi-sound {
+               compatible = "simple-audio-card";
+               simple-audio-card,format = "i2s";
+               simple-audio-card,mclk-fs = <128>;
+               simple-audio-card,name = "HDMI";
+               status = "disabled";
+
+               simple-audio-card,cpu {
+                       sound-dai = <&i2s0>;
+               };
+
+               simple-audio-card,codec {
+                       sound-dai = <&hdmi>;
+               };
+       };
+
        psci {
                compatible = "arm,psci-1.0", "arm,psci-0.2";
                method = "smc";
index a9f4d6d..9dd3b17 100644 (file)
 
 &spi0 {
        status = "okay";
+
+       cr50@0 {
+               compatible = "google,cr50";
+               reg = <0>;
+               interrupt-parent = <&gpio0>;
+               interrupts = <5 IRQ_TYPE_EDGE_RISING>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&h1_int_od_l>;
+               spi-max-frequency = <800000>;
+       };
 };
 
 &pinctrl {
index 50dfab5..4373ed7 100644 (file)
@@ -436,6 +436,16 @@ camera: &i2c7 {
 
 &spi2 {
        status = "okay";
+
+       cr50@0 {
+               compatible = "google,cr50";
+               reg = <0>;
+               interrupt-parent = <&gpio1>;
+               interrupts = <17 IRQ_TYPE_EDGE_RISING>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&h1_int_od_l>;
+               spi-max-frequency = <800000>;
+       };
 };
 
 &usb_host0_ohci {
index dd16c80..b788ae4 100644 (file)
        phy-handle = <&rtl8211e>;
        phy-mode = "rgmii";
        phy-supply = <&vcc3v3_s3>;
-       snps,reset-active-low;
-       snps,reset-delays-us = <0 10000 30000>;
-       snps,reset-gpio = <&gpio3 RK_PB7 GPIO_ACTIVE_LOW>;
        tx_delay = <0x28>;
        rx_delay = <0x11>;
        status = "okay";
                        reg = <1>;
                        interrupt-parent = <&gpio3>;
                        interrupts = <RK_PB2 IRQ_TYPE_LEVEL_LOW>;
+                       reset-assert-us = <10000>;
+                       reset-deassert-us = <30000>;
+                       reset-gpios = <&gpio3 RK_PB7 GPIO_ACTIVE_LOW>;
                };
        };
 };
        status = "okay";
 };
 
+&hdmi_sound {
+       status = "okay";
+};
+
 &i2c0 {
        clock-frequency = <400000>;
        i2c-scl-rising-time-ns = <160>;
        status = "okay";
 };
 
+&i2s2 {
+       status = "okay";
+};
+
 &io_domains {
        bt656-supply = <&vcc_1v8>;
        audio-supply = <&vcca1v8_codec>;
index 62ea288..c1edca3 100644 (file)
        status = "okay";
 };
 
+&gpu {
+       mali-supply = <&vdd_gpu>;
+       status = "okay";
+};
+
 &i2c0 {
        status = "okay";
        i2c-scl-rising-time-ns = <168>;
diff --git a/arch/arm64/boot/dts/rockchip/rk3399-roc-pc-mezzanine.dts b/arch/arm64/boot/dts/rockchip/rk3399-roc-pc-mezzanine.dts
new file mode 100644 (file)
index 0000000..d6b3042
--- /dev/null
@@ -0,0 +1,72 @@
+// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
+/*
+ * Copyright (c) 2017 T-Chip Intelligent Technology Co., Ltd
+ * Copyright (c) 2019 Markus Reichl <m.reichl@fivetechno.de>
+ */
+
+/dts-v1/;
+#include "rk3399-roc-pc.dtsi"
+
+/ {
+       model = "Firefly ROC-RK3399-PC Mezzanine Board";
+       compatible = "firefly,roc-rk3399-pc-mezzanine", "rockchip,rk3399";
+
+       vcc3v3_ngff: vcc3v3-ngff {
+               compatible = "regulator-fixed";
+               regulator-name = "vcc3v3_ngff";
+               enable-active-high;
+               gpio = <&gpio4 RK_PD3 GPIO_ACTIVE_HIGH>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&vcc3v3_ngff_en>;
+               regulator-always-on;
+               regulator-boot-on;
+               regulator-min-microvolt = <3300000>;
+               regulator-max-microvolt = <3300000>;
+               vin-supply = <&dc_12v>;
+       };
+
+       vcc3v3_pcie: vcc3v3-pcie {
+               compatible = "regulator-fixed";
+               regulator-name = "vcc3v3_pcie";
+               enable-active-high;
+               gpio = <&gpio1 RK_PC1 GPIO_ACTIVE_HIGH>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&vcc3v3_pcie_en>;
+               regulator-always-on;
+               regulator-boot-on;
+               regulator-min-microvolt = <3300000>;
+               regulator-max-microvolt = <3300000>;
+               vin-supply = <&dc_12v>;
+       };
+};
+
+&pcie_phy {
+       status = "okay";
+};
+
+&pcie0 {
+       ep-gpios = <&gpio4 RK_PD1 GPIO_ACTIVE_HIGH>;
+       num-lanes = <4>;
+       pinctrl-names = "default";
+       pinctrl-0 = <&pcie_perst>;
+       vpcie3v3-supply = <&vcc3v3_pcie>;
+       status = "okay";
+};
+
+&pinctrl {
+       ngff {
+               vcc3v3_ngff_en: vcc3v3-ngff-en {
+                       rockchip,pins = <4 RK_PD3 RK_FUNC_GPIO &pcfg_pull_none>;
+               };
+       };
+
+       pcie {
+               vcc3v3_pcie_en: vcc3v3-pcie-en {
+                       rockchip,pins = <1 RK_PC1 RK_FUNC_GPIO &pcfg_pull_none>;
+               };
+
+               pcie_perst: pcie-perst {
+                       rockchip,pins = <4 RK_PD1 RK_FUNC_GPIO &pcfg_pull_none>;
+               };
+       };
+};
index 19f7732..cd41954 100644 (file)
@@ -4,677 +4,9 @@
  */
 
 /dts-v1/;
-#include <dt-bindings/pwm/pwm.h>
-#include "rk3399.dtsi"
-#include "rk3399-opp.dtsi"
+#include "rk3399-roc-pc.dtsi"
 
 / {
        model = "Firefly ROC-RK3399-PC Board";
        compatible = "firefly,roc-rk3399-pc", "rockchip,rk3399";
-
-       chosen {
-               stdout-path = "serial2:1500000n8";
-       };
-
-       backlight: backlight {
-               compatible = "pwm-backlight";
-               pwms = <&pwm0 0 25000 0>;
-       };
-
-       clkin_gmac: external-gmac-clock {
-               compatible = "fixed-clock";
-               clock-frequency = <125000000>;
-               clock-output-names = "clkin_gmac";
-               #clock-cells = <0>;
-       };
-
-       sdio_pwrseq: sdio-pwrseq {
-               compatible = "mmc-pwrseq-simple";
-               clocks = <&rk808 1>;
-               clock-names = "ext_clock";
-               pinctrl-names = "default";
-               pinctrl-0 = <&wifi_enable_h>;
-
-               /*
-                * On the module itself this is one of these (depending
-                * on the actual card populated):
-                * - SDIO_RESET_L_WL_REG_ON
-                * - PDN (power down when low)
-                */
-               reset-gpios = <&gpio0 RK_PB2 GPIO_ACTIVE_LOW>;
-       };
-
-       vcc_vbus_typec0: vcc-vbus-typec0 {
-               compatible = "regulator-fixed";
-               regulator-name = "vcc_vbus_typec0";
-               regulator-always-on;
-               regulator-boot-on;
-               regulator-min-microvolt = <5000000>;
-               regulator-max-microvolt = <5000000>;
-       };
-
-       /*
-        * should be placed inside mp8859, but not until mp8859 has
-        * its own dt-binding.
-        */
-       vcc12v_sys: mp8859-dcdc1 {
-               compatible = "regulator-fixed";
-               regulator-name = "vcc12v_sys";
-               regulator-always-on;
-               regulator-boot-on;
-               regulator-min-microvolt = <12000000>;
-               regulator-max-microvolt = <12000000>;
-               vin-supply = <&vcc_vbus_typec0>;
-       };
-
-       /* switched by pmic_sleep */
-       vcc1v8_s3: vcca1v8_s3: vcc1v8-s3 {
-               compatible = "regulator-fixed";
-               regulator-name = "vcc1v8_s3";
-               regulator-always-on;
-               regulator-boot-on;
-               regulator-min-microvolt = <1800000>;
-               regulator-max-microvolt = <1800000>;
-               vin-supply = <&vcc_1v8>;
-       };
-
-       vcc3v3_sys: vcc3v3-sys {
-               compatible = "regulator-fixed";
-               regulator-name = "vcc3v3_sys";
-               regulator-always-on;
-               regulator-boot-on;
-               regulator-min-microvolt = <3300000>;
-               regulator-max-microvolt = <3300000>;
-               vin-supply = <&vcc12v_sys>;
-       };
-
-       /* Actually 3 regulators (host0, 1, 2) controlled by the same gpio */
-       vcc5v0_host: vcc5v0-host-regulator {
-               compatible = "regulator-fixed";
-               enable-active-high;
-               gpio = <&gpio1 RK_PA0 GPIO_ACTIVE_HIGH>;
-               pinctrl-names = "default";
-               pinctrl-0 = <&vcc5v0_host_en &hub_rst>;
-               regulator-name = "vcc5v0_host";
-               regulator-always-on;
-               vin-supply = <&vcc_sys>;
-       };
-
-       vcc_vbus_typec1: vcc-vbus-typec1 {
-               compatible = "regulator-fixed";
-               enable-active-high;
-               gpio = <&gpio1 RK_PB5 GPIO_ACTIVE_HIGH>;
-               pinctrl-names = "default";
-               pinctrl-0 = <&vcc_vbus_typec1_en>;
-               regulator-name = "vcc_vbus_typec1";
-               regulator-always-on;
-               vin-supply = <&vcc_sys>;
-       };
-
-       vcc_sys: vcc-sys {
-               compatible = "regulator-fixed";
-               regulator-name = "vcc_sys";
-               regulator-always-on;
-               regulator-boot-on;
-               regulator-min-microvolt = <5000000>;
-               regulator-max-microvolt = <5000000>;
-               vin-supply = <&vcc12v_sys>;
-       };
-
-       vdd_log: vdd-log {
-               compatible = "pwm-regulator";
-               pwms = <&pwm2 0 25000 1>;
-               regulator-name = "vdd_log";
-               regulator-always-on;
-               regulator-boot-on;
-               regulator-min-microvolt = <800000>;
-               regulator-max-microvolt = <1400000>;
-               vin-supply = <&vcc3v3_sys>;
-       };
-};
-
-&cpu_l0 {
-       cpu-supply = <&vdd_cpu_l>;
-};
-
-&cpu_l1 {
-       cpu-supply = <&vdd_cpu_l>;
-};
-
-&cpu_l2 {
-       cpu-supply = <&vdd_cpu_l>;
-};
-
-&cpu_l3 {
-       cpu-supply = <&vdd_cpu_l>;
-};
-
-&cpu_b0 {
-       cpu-supply = <&vdd_cpu_b>;
-};
-
-&cpu_b1 {
-       cpu-supply = <&vdd_cpu_b>;
-};
-
-&emmc_phy {
-       status = "okay";
-};
-
-&gmac {
-       assigned-clocks = <&cru SCLK_RMII_SRC>;
-       assigned-clock-parents = <&clkin_gmac>;
-       clock_in_out = "input";
-       phy-supply = <&vcc_lan>;
-       phy-mode = "rgmii";
-       pinctrl-names = "default";
-       pinctrl-0 = <&rgmii_pins>;
-       snps,reset-gpio = <&gpio3 RK_PB7 GPIO_ACTIVE_LOW>;
-       snps,reset-active-low;
-       snps,reset-delays-us = <0 10000 50000>;
-       tx_delay = <0x28>;
-       rx_delay = <0x11>;
-       status = "okay";
-};
-
-&hdmi {
-       ddc-i2c-bus = <&i2c3>;
-       pinctrl-names = "default";
-       pinctrl-0 = <&hdmi_cec>;
-       status = "okay";
-};
-
-&i2c0 {
-       clock-frequency = <400000>;
-       i2c-scl-rising-time-ns = <168>;
-       i2c-scl-falling-time-ns = <4>;
-       status = "okay";
-
-       rk808: pmic@1b {
-               compatible = "rockchip,rk808";
-               reg = <0x1b>;
-               interrupt-parent = <&gpio1>;
-               interrupts = <21 IRQ_TYPE_LEVEL_LOW>;
-               #clock-cells = <1>;
-               clock-output-names = "xin32k", "rk808-clkout2";
-               pinctrl-names = "default";
-               pinctrl-0 = <&pmic_int_l>;
-               rockchip,system-power-controller;
-               wakeup-source;
-
-               vcc1-supply = <&vcc3v3_sys>;
-               vcc2-supply = <&vcc3v3_sys>;
-               vcc3-supply = <&vcc3v3_sys>;
-               vcc4-supply = <&vcc3v3_sys>;
-               vcc6-supply = <&vcc3v3_sys>;
-               vcc7-supply = <&vcc3v3_sys>;
-               vcc8-supply = <&vcc3v3_sys>;
-               vcc9-supply = <&vcc3v3_sys>;
-               vcc10-supply = <&vcc3v3_sys>;
-               vcc11-supply = <&vcc3v3_sys>;
-               vcc12-supply = <&vcc3v3_sys>;
-               vddio-supply = <&vcc1v8_pmu>;
-
-               regulators {
-                       vdd_center: DCDC_REG1 {
-                               regulator-name = "vdd_center";
-                               regulator-always-on;
-                               regulator-boot-on;
-                               regulator-min-microvolt = <750000>;
-                               regulator-max-microvolt = <1350000>;
-                               regulator-ramp-delay = <6001>;
-                               regulator-state-mem {
-                                       regulator-off-in-suspend;
-                               };
-                       };
-
-                       vdd_cpu_l: DCDC_REG2 {
-                               regulator-name = "vdd_cpu_l";
-                               regulator-always-on;
-                               regulator-boot-on;
-                               regulator-min-microvolt = <750000>;
-                               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-state-mem {
-                                       regulator-on-in-suspend;
-                               };
-                       };
-
-                       vcc_1v8: DCDC_REG4 {
-                               regulator-name = "vcc_1v8";
-                               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_codec: LDO_REG1 {
-                               regulator-name = "vcca1v8_codec";
-                               regulator-always-on;
-                               regulator-boot-on;
-                               regulator-min-microvolt = <1800000>;
-                               regulator-max-microvolt = <1800000>;
-                               regulator-state-mem {
-                                       regulator-off-in-suspend;
-                               };
-                       };
-
-                       vcc1v8_hdmi: LDO_REG2 {
-                               regulator-name = "vcc1v8_hdmi";
-                               regulator-always-on;
-                               regulator-boot-on;
-                               regulator-min-microvolt = <1800000>;
-                               regulator-max-microvolt = <1800000>;
-                               regulator-state-mem {
-                                       regulator-off-in-suspend;
-                               };
-                       };
-
-                       vcc1v8_pmu: LDO_REG3 {
-                               regulator-name = "vcc1v8_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>;
-                               };
-                       };
-
-                       vcc_sdio: LDO_REG4 {
-                               regulator-name = "vcc_sdio";
-                               regulator-always-on;
-                               regulator-boot-on;
-                               regulator-min-microvolt = <1800000>;
-                               regulator-max-microvolt = <3000000>;
-                               regulator-state-mem {
-                                       regulator-on-in-suspend;
-                                       regulator-suspend-microvolt = <3000000>;
-                               };
-                       };
-
-                       vcca3v0_codec: LDO_REG5 {
-                               regulator-name = "vcca3v0_codec";
-                               regulator-always-on;
-                               regulator-boot-on;
-                               regulator-min-microvolt = <3000000>;
-                               regulator-max-microvolt = <3000000>;
-                               regulator-state-mem {
-                                       regulator-off-in-suspend;
-                               };
-                       };
-
-                       vcc_1v5: LDO_REG6 {
-                               regulator-name = "vcc_1v5";
-                               regulator-always-on;
-                               regulator-boot-on;
-                               regulator-min-microvolt = <1500000>;
-                               regulator-max-microvolt = <1500000>;
-                               regulator-state-mem {
-                                       regulator-on-in-suspend;
-                                       regulator-suspend-microvolt = <1500000>;
-                               };
-                       };
-
-                       vcca0v9_hdmi: LDO_REG7 {
-                               regulator-name = "vcca0v9_hdmi";
-                               regulator-always-on;
-                               regulator-boot-on;
-                               regulator-min-microvolt = <900000>;
-                               regulator-max-microvolt = <900000>;
-                               regulator-state-mem {
-                                       regulator-off-in-suspend;
-                               };
-                       };
-
-                       vcc_3v0: LDO_REG8 {
-                               regulator-name = "vcc_3v0";
-                               regulator-always-on;
-                               regulator-boot-on;
-                               regulator-min-microvolt = <3000000>;
-                               regulator-max-microvolt = <3000000>;
-                               regulator-state-mem {
-                                       regulator-on-in-suspend;
-                                       regulator-suspend-microvolt = <3000000>;
-                               };
-                       };
-
-                       vcc3v3_s3: vcc_lan: SWITCH_REG1 {
-                               regulator-name = "vcc3v3_s3";
-                               regulator-always-on;
-                               regulator-boot-on;
-                               regulator-state-mem {
-                                       regulator-off-in-suspend;
-                               };
-                       };
-
-                       vcc3v3_s0: SWITCH_REG2 {
-                               regulator-name = "vcc3v3_s0";
-                               regulator-always-on;
-                               regulator-boot-on;
-                               regulator-state-mem {
-                                       regulator-off-in-suspend;
-                               };
-                       };
-               };
-       };
-
-       vdd_cpu_b: regulator@40 {
-               compatible = "silergy,syr827";
-               reg = <0x40>;
-               fcs,suspend-voltage-selector = <1>;
-               pinctrl-names = "default";
-               pinctrl-0 = <&vsel1_gpio>;
-               regulator-name = "vdd_cpu_b";
-               regulator-min-microvolt = <712500>;
-               regulator-max-microvolt = <1500000>;
-               regulator-ramp-delay = <1000>;
-               regulator-always-on;
-               regulator-boot-on;
-               vin-supply = <&vcc3v3_sys>;
-
-               regulator-state-mem {
-                       regulator-off-in-suspend;
-               };
-       };
-
-       vdd_gpu: regulator@41 {
-               compatible = "silergy,syr828";
-               reg = <0x41>;
-               fcs,suspend-voltage-selector = <1>;
-               pinctrl-names = "default";
-               pinctrl-0 = <&vsel2_gpio>;
-               regulator-name = "vdd_gpu";
-               regulator-min-microvolt = <712500>;
-               regulator-max-microvolt = <1500000>;
-               regulator-ramp-delay = <1000>;
-               regulator-always-on;
-               regulator-boot-on;
-               vin-supply = <&vcc3v3_sys>;
-
-               regulator-state-mem {
-                       regulator-off-in-suspend;
-               };
-       };
-};
-
-&i2c1 {
-       i2c-scl-rising-time-ns = <300>;
-       i2c-scl-falling-time-ns = <15>;
-       status = "okay";
-};
-
-&i2c3 {
-       i2c-scl-rising-time-ns = <450>;
-       i2c-scl-falling-time-ns = <15>;
-       status = "okay";
-};
-
-&i2c4 {
-       i2c-scl-rising-time-ns = <600>;
-       i2c-scl-falling-time-ns = <20>;
-       status = "okay";
-
-       fusb1: usb-typec@22 {
-               compatible = "fcs,fusb302";
-               reg = <0x22>;
-               interrupt-parent = <&gpio1>;
-               interrupts = <1 IRQ_TYPE_LEVEL_LOW>;
-               pinctrl-names = "default";
-               pinctrl-0 = <&fusb1_int>;
-               vbus-supply = <&vcc_vbus_typec1>;
-               status = "okay";
-       };
-};
-
-&i2c7 {
-       i2c-scl-rising-time-ns = <600>;
-       i2c-scl-falling-time-ns = <20>;
-       status = "okay";
-
-       fusb0: usb-typec@22 {
-               compatible = "fcs,fusb302";
-               reg = <0x22>;
-               interrupt-parent = <&gpio1>;
-               interrupts = <2 IRQ_TYPE_LEVEL_LOW>;
-               pinctrl-names = "default";
-               pinctrl-0 = <&fusb0_int>;
-               vbus-supply = <&vcc_vbus_typec0>;
-               status = "okay";
-       };
-};
-
-&i2s0 {
-       rockchip,playback-channels = <8>;
-       rockchip,capture-channels = <8>;
-       status = "okay";
-};
-
-&i2s1 {
-       rockchip,playback-channels = <2>;
-       rockchip,capture-channels = <2>;
-       status = "okay";
-};
-
-&i2s2 {
-       status = "okay";
-};
-
-&io_domains {
-       audio-supply = <&vcca1v8_codec>;
-       bt656-supply = <&vcc_3v0>;
-       gpio1830-supply = <&vcc_3v0>;
-       sdmmc-supply = <&vcc_sdio>;
-       status = "okay";
-};
-
-&pmu_io_domains {
-       pmu1830-supply = <&vcc_3v0>;
-       status = "okay";
-};
-
-&pinctrl {
-       lcd-panel {
-               lcd_panel_reset: lcd-panel-reset {
-                       rockchip,pins = <4 RK_PD6 RK_FUNC_GPIO &pcfg_pull_up>;
-               };
-       };
-
-       pmic {
-               vsel1_gpio: vsel1-gpio {
-                       rockchip,pins = <1 RK_PC2 RK_FUNC_GPIO &pcfg_pull_down>;
-               };
-
-               vsel2_gpio: vsel2-gpio {
-                       rockchip,pins = <1 RK_PB6 RK_FUNC_GPIO &pcfg_pull_down>;
-               };
-       };
-
-       sdio-pwrseq {
-               wifi_enable_h: wifi-enable-h {
-                       rockchip,pins = <0 RK_PB2 RK_FUNC_GPIO &pcfg_pull_none>;
-               };
-       };
-
-       pmic {
-               pmic_int_l: pmic-int-l {
-                       rockchip,pins = <1 RK_PC5 RK_FUNC_GPIO &pcfg_pull_up>;
-               };
-       };
-
-       usb2 {
-               vcc5v0_host_en: vcc5v0-host-en {
-                       rockchip,pins = <1 RK_PA0 RK_FUNC_GPIO &pcfg_pull_none>;
-               };
-
-               hub_rst: hub-rst {
-                       rockchip,pins = <2 RK_PA4 RK_FUNC_GPIO &pcfg_output_high>;
-               };
-       };
-
-       usb-typec {
-               vcc_vbus_typec1_en: vcc-vbus-typec1-en {
-                       rockchip,pins = <1 RK_PB5 RK_FUNC_GPIO &pcfg_pull_none>;
-               };
-       };
-
-       fusb30x {
-               fusb0_int: fusb0-int {
-                       rockchip,pins = <1 RK_PA2 RK_FUNC_GPIO &pcfg_pull_up>;
-               };
-
-               fusb1_int: fusb1-int {
-                       rockchip,pins = <1 RK_PA1 RK_FUNC_GPIO &pcfg_pull_up>;
-               };
-       };
-};
-
-&pwm0 {
-       status = "okay";
-};
-
-&pwm2 {
-       status = "okay";
-};
-
-&saradc {
-       vref-supply = <&vcca1v8_s3>;
-       status = "okay";
-};
-
-&sdmmc {
-       bus-width = <4>;
-       cap-mmc-highspeed;
-       cap-sd-highspeed;
-       cd-gpios = <&gpio0 RK_PA7 GPIO_ACTIVE_LOW>;
-       disable-wp;
-       max-frequency = <150000000>;
-       pinctrl-names = "default";
-       pinctrl-0 = <&sdmmc_clk &sdmmc_cmd &sdmmc_bus4>;
-       status = "okay";
-};
-
-&sdhci {
-       bus-width = <8>;
-       mmc-hs400-1_8v;
-       mmc-hs400-enhanced-strobe;
-       non-removable;
-       status = "okay";
-};
-
-&tcphy0 {
-       status = "okay";
-};
-
-&tcphy1 {
-       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";
-};
-
-&u2phy0 {
-       status = "okay";
-
-       u2phy0_otg: otg-port {
-               phy-supply = <&vcc_vbus_typec0>;
-               status = "okay";
-       };
-
-       u2phy0_host: host-port {
-               phy-supply = <&vcc5v0_host>;
-               status = "okay";
-       };
-};
-
-&u2phy1 {
-       status = "okay";
-
-       u2phy1_otg: otg-port {
-               phy-supply = <&vcc_vbus_typec1>;
-               status = "okay";
-       };
-
-       u2phy1_host: host-port {
-               phy-supply = <&vcc5v0_host>;
-               status = "okay";
-       };
-};
-
-&uart0 {
-       pinctrl-names = "default";
-       pinctrl-0 = <&uart0_xfer &uart0_cts>;
-       status = "okay";
-};
-
-&uart2 {
-       status = "okay";
-};
-
-&usb_host0_ehci {
-       status = "okay";
-};
-
-&usb_host0_ohci {
-       status = "okay";
-};
-
-&usb_host1_ehci {
-       status = "okay";
-};
-
-&usb_host1_ohci {
-       status = "okay";
-};
-
-&usbdrd3_0 {
-       status = "okay";
-};
-
-&usbdrd_dwc3_0 {
-       status = "okay";
-};
-
-&usbdrd3_1 {
-       status = "okay";
-};
-
-&usbdrd_dwc3_1 {
-       status = "okay";
-       dr_mode = "host";
-};
-
-&vopb {
-       status = "okay";
-};
-
-&vopb_mmu {
-       status = "okay";
-};
-
-&vopl {
-       status = "okay";
-};
-
-&vopl_mmu {
-       status = "okay";
 };
diff --git a/arch/arm64/boot/dts/rockchip/rk3399-roc-pc.dtsi b/arch/arm64/boot/dts/rockchip/rk3399-roc-pc.dtsi
new file mode 100644 (file)
index 0000000..7e07dae
--- /dev/null
@@ -0,0 +1,767 @@
+// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
+/*
+ * Copyright (c) 2017 T-Chip Intelligent Technology Co., Ltd
+ */
+
+/dts-v1/;
+#include <dt-bindings/input/linux-event-codes.h>
+#include <dt-bindings/pwm/pwm.h>
+#include "rk3399.dtsi"
+#include "rk3399-opp.dtsi"
+
+/ {
+       model = "Firefly ROC-RK3399-PC Board";
+       compatible = "firefly,roc-rk3399-pc", "rockchip,rk3399";
+
+       chosen {
+               stdout-path = "serial2:1500000n8";
+       };
+
+       backlight: backlight {
+               compatible = "pwm-backlight";
+               pwms = <&pwm0 0 25000 0>;
+       };
+
+       clkin_gmac: external-gmac-clock {
+               compatible = "fixed-clock";
+               clock-frequency = <125000000>;
+               clock-output-names = "clkin_gmac";
+               #clock-cells = <0>;
+       };
+
+       adc-keys {
+               compatible = "adc-keys";
+               io-channels = <&saradc 1>;
+               io-channel-names = "buttons";
+               keyup-threshold-microvolt = <1500000>;
+               poll-interval = <100>;
+
+               recovery {
+                       label = "Recovery";
+                       linux,code = <KEY_VENDOR>;
+                       press-threshold-microvolt = <18000>;
+               };
+       };
+
+       gpio-keys {
+               compatible = "gpio-keys";
+               autorepeat;
+               pinctrl-names = "default";
+               pinctrl-0 = <&pwr_key_l>;
+
+               power {
+                       debounce-interval = <100>;
+                       gpios = <&gpio0 RK_PA5 GPIO_ACTIVE_LOW>;
+                       label = "GPIO Key Power";
+                       linux,code = <KEY_POWER>;
+                       wakeup-source;
+               };
+       };
+
+       leds {
+               compatible = "gpio-leds";
+               pinctrl-names = "default";
+               pinctrl-0 = <&work_led_gpio>, <&diy_led_gpio>, <&yellow_led_gpio>;
+
+               work-led {
+                       label = "green:work";
+                       gpios = <&gpio2 RK_PD3 GPIO_ACTIVE_HIGH>;
+                       default-state = "on";
+                       linux,default-trigger = "heartbeat";
+               };
+
+               diy-led {
+                       label = "red:diy";
+                       gpios = <&gpio0 RK_PB5 GPIO_ACTIVE_HIGH>;
+                       default-state = "off";
+                       linux,default-trigger = "mmc1";
+               };
+
+               yellow-led {
+                       label = "yellow:yellow-led";
+                       gpios = <&gpio0 RK_PA2 GPIO_ACTIVE_HIGH>;
+                       default-state = "off";
+                       linux,default-trigger = "mmc0";
+               };
+       };
+
+       sdio_pwrseq: sdio-pwrseq {
+               compatible = "mmc-pwrseq-simple";
+               clocks = <&rk808 1>;
+               clock-names = "ext_clock";
+               pinctrl-names = "default";
+               pinctrl-0 = <&wifi_enable_h>;
+
+               /*
+                * On the module itself this is one of these (depending
+                * on the actual card populated):
+                * - SDIO_RESET_L_WL_REG_ON
+                * - PDN (power down when low)
+                */
+               reset-gpios = <&gpio0 RK_PB2 GPIO_ACTIVE_LOW>;
+       };
+
+       vcc_vbus_typec0: vcc-vbus-typec0 {
+               compatible = "regulator-fixed";
+               regulator-name = "vcc_vbus_typec0";
+               regulator-always-on;
+               regulator-boot-on;
+               regulator-min-microvolt = <5000000>;
+               regulator-max-microvolt = <5000000>;
+       };
+
+       /*
+        * should be placed inside mp8859, but not until mp8859 has
+        * its own dt-binding.
+        */
+       dc_12v: mp8859-dcdc1 {
+               compatible = "regulator-fixed";
+               regulator-name = "dc_12v";
+               regulator-always-on;
+               regulator-boot-on;
+               regulator-min-microvolt = <12000000>;
+               regulator-max-microvolt = <12000000>;
+               vin-supply = <&vcc_vbus_typec0>;
+       };
+
+       /* switched by pmic_sleep */
+       vcc1v8_s3: vcca1v8_s3: vcc1v8-s3 {
+               compatible = "regulator-fixed";
+               regulator-name = "vcc1v8_s3";
+               regulator-always-on;
+               regulator-boot-on;
+               regulator-min-microvolt = <1800000>;
+               regulator-max-microvolt = <1800000>;
+               vin-supply = <&vcc_1v8>;
+       };
+
+       vcc3v3_sys: vcc3v3-sys {
+               compatible = "regulator-fixed";
+               regulator-name = "vcc3v3_sys";
+               regulator-always-on;
+               regulator-boot-on;
+               regulator-min-microvolt = <3300000>;
+               regulator-max-microvolt = <3300000>;
+               vin-supply = <&dc_12v>;
+       };
+
+       /* Actually 3 regulators (host0, 1, 2) controlled by the same gpio */
+       vcc5v0_host: vcc5v0-host-regulator {
+               compatible = "regulator-fixed";
+               enable-active-high;
+               gpio = <&gpio1 RK_PA0 GPIO_ACTIVE_HIGH>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&vcc5v0_host_en &hub_rst>;
+               regulator-name = "vcc5v0_host";
+               regulator-always-on;
+               vin-supply = <&vcc_sys>;
+       };
+
+       vcc_vbus_typec1: vcc-vbus-typec1 {
+               compatible = "regulator-fixed";
+               enable-active-high;
+               gpio = <&gpio1 RK_PB5 GPIO_ACTIVE_HIGH>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&vcc_vbus_typec1_en>;
+               regulator-name = "vcc_vbus_typec1";
+               regulator-always-on;
+               vin-supply = <&vcc_sys>;
+       };
+
+       vcc_sys: vcc-sys {
+               compatible = "regulator-fixed";
+               enable-active-high;
+               gpio = <&gpio2 RK_PA6 GPIO_ACTIVE_HIGH>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&vcc_sys_en>;
+               regulator-name = "vcc_sys";
+               regulator-always-on;
+               regulator-boot-on;
+               regulator-min-microvolt = <5000000>;
+               regulator-max-microvolt = <5000000>;
+               vin-supply = <&dc_12v>;
+       };
+
+       vdd_log: vdd-log {
+               compatible = "pwm-regulator";
+               pwms = <&pwm2 0 25000 1>;
+               regulator-name = "vdd_log";
+               regulator-always-on;
+               regulator-boot-on;
+               regulator-min-microvolt = <800000>;
+               regulator-max-microvolt = <1400000>;
+               vin-supply = <&vcc3v3_sys>;
+       };
+};
+
+&cpu_l0 {
+       cpu-supply = <&vdd_cpu_l>;
+};
+
+&cpu_l1 {
+       cpu-supply = <&vdd_cpu_l>;
+};
+
+&cpu_l2 {
+       cpu-supply = <&vdd_cpu_l>;
+};
+
+&cpu_l3 {
+       cpu-supply = <&vdd_cpu_l>;
+};
+
+&cpu_b0 {
+       cpu-supply = <&vdd_cpu_b>;
+};
+
+&cpu_b1 {
+       cpu-supply = <&vdd_cpu_b>;
+};
+
+&emmc_phy {
+       status = "okay";
+};
+
+&gmac {
+       assigned-clocks = <&cru SCLK_RMII_SRC>;
+       assigned-clock-parents = <&clkin_gmac>;
+       clock_in_out = "input";
+       phy-supply = <&vcc_lan>;
+       phy-mode = "rgmii";
+       pinctrl-names = "default";
+       pinctrl-0 = <&rgmii_pins>;
+       snps,reset-gpio = <&gpio3 RK_PB7 GPIO_ACTIVE_LOW>;
+       snps,reset-active-low;
+       snps,reset-delays-us = <0 10000 50000>;
+       tx_delay = <0x28>;
+       rx_delay = <0x11>;
+       status = "okay";
+};
+
+&hdmi {
+       ddc-i2c-bus = <&i2c3>;
+       pinctrl-names = "default";
+       pinctrl-0 = <&hdmi_cec>;
+       status = "okay";
+};
+
+&i2c0 {
+       clock-frequency = <400000>;
+       i2c-scl-rising-time-ns = <168>;
+       i2c-scl-falling-time-ns = <4>;
+       status = "okay";
+
+       rk808: pmic@1b {
+               compatible = "rockchip,rk808";
+               reg = <0x1b>;
+               interrupt-parent = <&gpio1>;
+               interrupts = <21 IRQ_TYPE_LEVEL_LOW>;
+               #clock-cells = <1>;
+               clock-output-names = "xin32k", "rk808-clkout2";
+               pinctrl-names = "default";
+               pinctrl-0 = <&pmic_int_l>;
+               rockchip,system-power-controller;
+               wakeup-source;
+
+               vcc1-supply = <&vcc3v3_sys>;
+               vcc2-supply = <&vcc3v3_sys>;
+               vcc3-supply = <&vcc3v3_sys>;
+               vcc4-supply = <&vcc3v3_sys>;
+               vcc6-supply = <&vcc3v3_sys>;
+               vcc7-supply = <&vcc3v3_sys>;
+               vcc8-supply = <&vcc3v3_sys>;
+               vcc9-supply = <&vcc3v3_sys>;
+               vcc10-supply = <&vcc3v3_sys>;
+               vcc11-supply = <&vcc3v3_sys>;
+               vcc12-supply = <&vcc3v3_sys>;
+               vcc13-supply = <&vcc3v3_sys>;
+               vcc14-supply = <&vcc3v3_sys>;
+               vddio-supply = <&vcc_3v0>;
+
+               regulators {
+                       vdd_center: DCDC_REG1 {
+                               regulator-name = "vdd_center";
+                               regulator-always-on;
+                               regulator-boot-on;
+                               regulator-min-microvolt = <750000>;
+                               regulator-max-microvolt = <1350000>;
+                               regulator-ramp-delay = <6001>;
+                               regulator-state-mem {
+                                       regulator-off-in-suspend;
+                               };
+                       };
+
+                       vdd_cpu_l: DCDC_REG2 {
+                               regulator-name = "vdd_cpu_l";
+                               regulator-always-on;
+                               regulator-boot-on;
+                               regulator-min-microvolt = <750000>;
+                               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-state-mem {
+                                       regulator-on-in-suspend;
+                               };
+                       };
+
+                       vcc_1v8: DCDC_REG4 {
+                               regulator-name = "vcc_1v8";
+                               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_codec: LDO_REG1 {
+                               regulator-name = "vcca1v8_codec";
+                               regulator-always-on;
+                               regulator-boot-on;
+                               regulator-min-microvolt = <1800000>;
+                               regulator-max-microvolt = <1800000>;
+                               regulator-state-mem {
+                                       regulator-off-in-suspend;
+                               };
+                       };
+
+                       vcc1v8_hdmi: LDO_REG2 {
+                               regulator-name = "vcc1v8_hdmi";
+                               regulator-always-on;
+                               regulator-boot-on;
+                               regulator-min-microvolt = <1800000>;
+                               regulator-max-microvolt = <1800000>;
+                               regulator-state-mem {
+                                       regulator-off-in-suspend;
+                               };
+                       };
+
+                       vcc1v8_pmu: LDO_REG3 {
+                               regulator-name = "vcc1v8_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>;
+                               };
+                       };
+
+                       vcc_sdio: LDO_REG4 {
+                               regulator-name = "vcc_sdio";
+                               regulator-always-on;
+                               regulator-boot-on;
+                               regulator-min-microvolt = <1800000>;
+                               regulator-max-microvolt = <3000000>;
+                               regulator-state-mem {
+                                       regulator-on-in-suspend;
+                                       regulator-suspend-microvolt = <3000000>;
+                               };
+                       };
+
+                       vcca3v0_codec: LDO_REG5 {
+                               regulator-name = "vcca3v0_codec";
+                               regulator-always-on;
+                               regulator-boot-on;
+                               regulator-min-microvolt = <3000000>;
+                               regulator-max-microvolt = <3000000>;
+                               regulator-state-mem {
+                                       regulator-off-in-suspend;
+                               };
+                       };
+
+                       vcc_1v5: LDO_REG6 {
+                               regulator-name = "vcc_1v5";
+                               regulator-always-on;
+                               regulator-boot-on;
+                               regulator-min-microvolt = <1500000>;
+                               regulator-max-microvolt = <1500000>;
+                               regulator-state-mem {
+                                       regulator-on-in-suspend;
+                                       regulator-suspend-microvolt = <1500000>;
+                               };
+                       };
+
+                       vcca0v9_hdmi: LDO_REG7 {
+                               regulator-name = "vcca0v9_hdmi";
+                               regulator-always-on;
+                               regulator-boot-on;
+                               regulator-min-microvolt = <900000>;
+                               regulator-max-microvolt = <900000>;
+                               regulator-state-mem {
+                                       regulator-off-in-suspend;
+                               };
+                       };
+
+                       vcc_3v0: LDO_REG8 {
+                               regulator-name = "vcc_3v0";
+                               regulator-always-on;
+                               regulator-boot-on;
+                               regulator-min-microvolt = <3000000>;
+                               regulator-max-microvolt = <3000000>;
+                               regulator-state-mem {
+                                       regulator-on-in-suspend;
+                                       regulator-suspend-microvolt = <3000000>;
+                               };
+                       };
+
+                       vcc3v3_s3: vcc_lan: SWITCH_REG1 {
+                               regulator-name = "vcc3v3_s3";
+                               regulator-always-on;
+                               regulator-boot-on;
+                               regulator-state-mem {
+                                       regulator-off-in-suspend;
+                               };
+                       };
+
+                       vcc3v3_s0: SWITCH_REG2 {
+                               regulator-name = "vcc3v3_s0";
+                               regulator-always-on;
+                               regulator-boot-on;
+                               regulator-state-mem {
+                                       regulator-off-in-suspend;
+                               };
+                       };
+               };
+       };
+
+       vdd_cpu_b: regulator@40 {
+               compatible = "silergy,syr827";
+               reg = <0x40>;
+               fcs,suspend-voltage-selector = <1>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&vsel1_gpio>;
+               regulator-name = "vdd_cpu_b";
+               regulator-min-microvolt = <712500>;
+               regulator-max-microvolt = <1500000>;
+               regulator-ramp-delay = <1000>;
+               regulator-always-on;
+               regulator-boot-on;
+               vin-supply = <&vcc3v3_sys>;
+
+               regulator-state-mem {
+                       regulator-off-in-suspend;
+               };
+       };
+
+       vdd_gpu: regulator@41 {
+               compatible = "silergy,syr828";
+               reg = <0x41>;
+               fcs,suspend-voltage-selector = <1>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&vsel2_gpio>;
+               regulator-name = "vdd_gpu";
+               regulator-min-microvolt = <712500>;
+               regulator-max-microvolt = <1500000>;
+               regulator-ramp-delay = <1000>;
+               regulator-always-on;
+               regulator-boot-on;
+               vin-supply = <&vcc3v3_sys>;
+
+               regulator-state-mem {
+                       regulator-off-in-suspend;
+               };
+       };
+};
+
+&i2c1 {
+       i2c-scl-rising-time-ns = <300>;
+       i2c-scl-falling-time-ns = <15>;
+       status = "okay";
+};
+
+&i2c3 {
+       i2c-scl-rising-time-ns = <450>;
+       i2c-scl-falling-time-ns = <15>;
+       status = "okay";
+};
+
+&i2c4 {
+       i2c-scl-rising-time-ns = <600>;
+       i2c-scl-falling-time-ns = <20>;
+       status = "okay";
+
+       fusb1: usb-typec@22 {
+               compatible = "fcs,fusb302";
+               reg = <0x22>;
+               interrupt-parent = <&gpio1>;
+               interrupts = <1 IRQ_TYPE_LEVEL_LOW>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&fusb1_int>;
+               vbus-supply = <&vcc_vbus_typec1>;
+               status = "okay";
+       };
+};
+
+&i2c7 {
+       i2c-scl-rising-time-ns = <600>;
+       i2c-scl-falling-time-ns = <20>;
+       status = "okay";
+
+       fusb0: usb-typec@22 {
+               compatible = "fcs,fusb302";
+               reg = <0x22>;
+               interrupt-parent = <&gpio1>;
+               interrupts = <2 IRQ_TYPE_LEVEL_LOW>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&fusb0_int>;
+               vbus-supply = <&vcc_vbus_typec0>;
+               status = "okay";
+       };
+};
+
+&i2s0 {
+       rockchip,playback-channels = <8>;
+       rockchip,capture-channels = <8>;
+       status = "okay";
+};
+
+&i2s1 {
+       rockchip,playback-channels = <2>;
+       rockchip,capture-channels = <2>;
+       status = "okay";
+};
+
+&i2s2 {
+       status = "okay";
+};
+
+&io_domains {
+       audio-supply = <&vcca1v8_codec>;
+       bt656-supply = <&vcc_3v0>;
+       gpio1830-supply = <&vcc_3v0>;
+       sdmmc-supply = <&vcc_sdio>;
+       status = "okay";
+};
+
+&pmu_io_domains {
+       pmu1830-supply = <&vcc_3v0>;
+       status = "okay";
+};
+
+&pinctrl {
+       buttons {
+               pwr_key_l: pwr-key-l {
+                       rockchip,pins = <0 RK_PA5 RK_FUNC_GPIO &pcfg_pull_up>;
+               };
+       };
+
+       lcd-panel {
+               lcd_panel_reset: lcd-panel-reset {
+                       rockchip,pins = <4 RK_PD6 RK_FUNC_GPIO &pcfg_pull_up>;
+               };
+       };
+
+       leds {
+               diy_led_gpio: diy_led-gpio {
+                       rockchip,pins = <0 RK_PB5 RK_FUNC_GPIO &pcfg_pull_none>;
+               };
+
+               work_led_gpio: work_led-gpio {
+                       rockchip,pins = <2 RK_PD3 RK_FUNC_GPIO &pcfg_pull_none>;
+               };
+
+               yellow_led_gpio: yellow_led-gpio {
+                       rockchip,pins = <0 RK_PA2 RK_FUNC_GPIO &pcfg_pull_none>;
+               };
+       };
+
+       pmic {
+               vsel1_gpio: vsel1-gpio {
+                       rockchip,pins = <1 RK_PC2 RK_FUNC_GPIO &pcfg_pull_down>;
+               };
+
+               vsel2_gpio: vsel2-gpio {
+                       rockchip,pins = <1 RK_PB6 RK_FUNC_GPIO &pcfg_pull_down>;
+               };
+       };
+
+       sdio-pwrseq {
+               wifi_enable_h: wifi-enable-h {
+                       rockchip,pins = <0 RK_PB2 RK_FUNC_GPIO &pcfg_pull_none>;
+               };
+       };
+
+       pmic {
+               pmic_int_l: pmic-int-l {
+                       rockchip,pins = <1 RK_PC5 RK_FUNC_GPIO &pcfg_pull_up>;
+               };
+       };
+
+       usb2 {
+               vcc5v0_host_en: vcc5v0-host-en {
+                       rockchip,pins = <1 RK_PA0 RK_FUNC_GPIO &pcfg_pull_none>;
+               };
+
+               vcc_sys_en: vcc-sys-en {
+                       rockchip,pins = <2 RK_PA6 RK_FUNC_GPIO &pcfg_pull_none>;
+               };
+
+               hub_rst: hub-rst {
+                       rockchip,pins = <2 RK_PA4 RK_FUNC_GPIO &pcfg_output_high>;
+               };
+       };
+
+       usb-typec {
+               vcc_vbus_typec1_en: vcc-vbus-typec1-en {
+                       rockchip,pins = <1 RK_PB5 RK_FUNC_GPIO &pcfg_pull_none>;
+               };
+       };
+
+       fusb30x {
+               fusb0_int: fusb0-int {
+                       rockchip,pins = <1 RK_PA2 RK_FUNC_GPIO &pcfg_pull_up>;
+               };
+
+               fusb1_int: fusb1-int {
+                       rockchip,pins = <1 RK_PA1 RK_FUNC_GPIO &pcfg_pull_up>;
+               };
+       };
+};
+
+&pwm0 {
+       status = "okay";
+};
+
+&pwm2 {
+       status = "okay";
+};
+
+&saradc {
+       vref-supply = <&vcca1v8_s3>;
+       status = "okay";
+};
+
+&sdmmc {
+       bus-width = <4>;
+       cap-mmc-highspeed;
+       cap-sd-highspeed;
+       cd-gpios = <&gpio0 RK_PA7 GPIO_ACTIVE_LOW>;
+       disable-wp;
+       max-frequency = <150000000>;
+       pinctrl-names = "default";
+       pinctrl-0 = <&sdmmc_clk &sdmmc_cmd &sdmmc_bus4>;
+       status = "okay";
+};
+
+&sdhci {
+       bus-width = <8>;
+       mmc-hs400-1_8v;
+       mmc-hs400-enhanced-strobe;
+       non-removable;
+       status = "okay";
+};
+
+&tcphy0 {
+       status = "okay";
+};
+
+&tcphy1 {
+       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";
+};
+
+&u2phy0 {
+       status = "okay";
+
+       u2phy0_otg: otg-port {
+               phy-supply = <&vcc_vbus_typec0>;
+               status = "okay";
+       };
+
+       u2phy0_host: host-port {
+               phy-supply = <&vcc5v0_host>;
+               status = "okay";
+       };
+};
+
+&u2phy1 {
+       status = "okay";
+
+       u2phy1_otg: otg-port {
+               phy-supply = <&vcc_vbus_typec1>;
+               status = "okay";
+       };
+
+       u2phy1_host: host-port {
+               phy-supply = <&vcc5v0_host>;
+               status = "okay";
+       };
+};
+
+&uart0 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&uart0_xfer &uart0_cts>;
+       status = "okay";
+};
+
+&uart2 {
+       status = "okay";
+};
+
+&usb_host0_ehci {
+       status = "okay";
+};
+
+&usb_host0_ohci {
+       status = "okay";
+};
+
+&usb_host1_ehci {
+       status = "okay";
+};
+
+&usb_host1_ohci {
+       status = "okay";
+};
+
+&usbdrd3_0 {
+       status = "okay";
+};
+
+&usbdrd_dwc3_0 {
+       status = "okay";
+};
+
+&usbdrd3_1 {
+       status = "okay";
+};
+
+&usbdrd_dwc3_1 {
+       status = "okay";
+       dr_mode = "host";
+};
+
+&vopb {
+       status = "okay";
+};
+
+&vopb_mmu {
+       status = "okay";
+};
+
+&vopl {
+       status = "okay";
+};
+
+&vopl_mmu {
+       status = "okay";
+};
index 1ae1ebd..188d9df 100644 (file)
 
        sdio0 {
                sdio0_bus4: sdio0-bus4 {
-                       rockchip,pins =
-                               <2 20 RK_FUNC_1 &pcfg_pull_up_20ma>,
-                               <2 21 RK_FUNC_1 &pcfg_pull_up_20ma>,
-                               <2 22 RK_FUNC_1 &pcfg_pull_up_20ma>,
-                               <2 23 RK_FUNC_1 &pcfg_pull_up_20ma>;
+                       rockchip,pins = <2 RK_PC4 1 &pcfg_pull_up_20ma>,
+                                       <2 RK_PC5 1 &pcfg_pull_up_20ma>,
+                                       <2 RK_PC6 1 &pcfg_pull_up_20ma>,
+                                       <2 RK_PC7 1 &pcfg_pull_up_20ma>;
                };
 
                sdio0_cmd: sdio0-cmd {
-                       rockchip,pins =
-                               <2 24 RK_FUNC_1 &pcfg_pull_up_20ma>;
+                       rockchip,pins = <2 RK_PD0 1 &pcfg_pull_up_20ma>;
                };
 
                sdio0_clk: sdio0-clk {
-                       rockchip,pins =
-                               <2 25 RK_FUNC_1 &pcfg_pull_none_20ma>;
+                       rockchip,pins = <2 RK_PD1 1 &pcfg_pull_none_20ma>;
                };
        };
 
 
        wifi {
                wifi_enable_h: wifi-enable-h {
-                       rockchip,pins =
-                               <0 RK_PB2 RK_FUNC_GPIO &pcfg_pull_none>;
+                       rockchip,pins = <0 RK_PB2 RK_FUNC_GPIO &pcfg_pull_none>;
                };
 
                wifi_host_wake_l: wifi-host-wake-l {
index e544deb..7f4b2eb 100644 (file)
                reset-gpios = <&gpio0 RK_PB2 GPIO_ACTIVE_LOW>;
        };
 
+       sound {
+               compatible = "audio-graph-card";
+               label = "rockchip,rk3399";
+               dais = <&i2s1_p0>;
+       };
+
        vcc12v_dcin: vcc12v-dcin {
                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 = <&i2s1_p0_0>;
+                       };
+               };
+       };
 };
 
 &i2c3 {
        rockchip,playback-channels = <2>;
        rockchip,capture-channels = <2>;
        status = "okay";
+
+       i2s1_p0: port {
+               i2s1_p0_0: endpoint {
+                       dai-format = "i2s";
+                       mclk-fs = <256>;
+                       remote-endpoint = <&es8316_p0_0>;
+               };
+       };
 };
 
 &i2s2 {
index cede1ad..e62ea0e 100644 (file)
                its: interrupt-controller@fee20000 {
                        compatible = "arm,gic-v3-its";
                        msi-controller;
+                       #msi-cells = <1>;
                        reg = <0x0 0xfee20000 0x0 0x20000>;
                };
 
index 799c75f..efb2457 100644 (file)
                        reg = <0x00 0x30e00000 0x00 0x1000>;
                        #hwlock-cells = <1>;
                };
+
+               mailbox0_cluster0: mailbox@31f80000 {
+                       compatible = "ti,am654-mailbox";
+                       reg = <0x00 0x31f80000 0x00 0x200>;
+                       #mbox-cells = <1>;
+                       ti,mbox-num-users = <4>;
+                       ti,mbox-num-fifos = <16>;
+                       interrupt-parent = <&intr_main_navss>;
+               };
+
+               mailbox0_cluster1: mailbox@31f81000 {
+                       compatible = "ti,am654-mailbox";
+                       reg = <0x00 0x31f81000 0x00 0x200>;
+                       #mbox-cells = <1>;
+                       ti,mbox-num-users = <4>;
+                       ti,mbox-num-fifos = <16>;
+                       interrupt-parent = <&intr_main_navss>;
+               };
+
+               mailbox0_cluster2: mailbox@31f82000 {
+                       compatible = "ti,am654-mailbox";
+                       reg = <0x00 0x31f82000 0x00 0x200>;
+                       #mbox-cells = <1>;
+                       ti,mbox-num-users = <4>;
+                       ti,mbox-num-fifos = <16>;
+                       interrupt-parent = <&intr_main_navss>;
+               };
+
+               mailbox0_cluster3: mailbox@31f83000 {
+                       compatible = "ti,am654-mailbox";
+                       reg = <0x00 0x31f83000 0x00 0x200>;
+                       #mbox-cells = <1>;
+                       ti,mbox-num-users = <4>;
+                       ti,mbox-num-fifos = <16>;
+                       interrupt-parent = <&intr_main_navss>;
+               };
+
+               mailbox0_cluster4: mailbox@31f84000 {
+                       compatible = "ti,am654-mailbox";
+                       reg = <0x00 0x31f84000 0x00 0x200>;
+                       #mbox-cells = <1>;
+                       ti,mbox-num-users = <4>;
+                       ti,mbox-num-fifos = <16>;
+                       interrupt-parent = <&intr_main_navss>;
+               };
+
+               mailbox0_cluster5: mailbox@31f85000 {
+                       compatible = "ti,am654-mailbox";
+                       reg = <0x00 0x31f85000 0x00 0x200>;
+                       #mbox-cells = <1>;
+                       ti,mbox-num-users = <4>;
+                       ti,mbox-num-fifos = <16>;
+                       interrupt-parent = <&intr_main_navss>;
+               };
+
+               mailbox0_cluster6: mailbox@31f86000 {
+                       compatible = "ti,am654-mailbox";
+                       reg = <0x00 0x31f86000 0x00 0x200>;
+                       #mbox-cells = <1>;
+                       ti,mbox-num-users = <4>;
+                       ti,mbox-num-fifos = <16>;
+                       interrupt-parent = <&intr_main_navss>;
+               };
+
+               mailbox0_cluster7: mailbox@31f87000 {
+                       compatible = "ti,am654-mailbox";
+                       reg = <0x00 0x31f87000 0x00 0x200>;
+                       #mbox-cells = <1>;
+                       ti,mbox-num-users = <4>;
+                       ti,mbox-num-fifos = <16>;
+                       interrupt-parent = <&intr_main_navss>;
+               };
+
+               mailbox0_cluster8: mailbox@31f88000 {
+                       compatible = "ti,am654-mailbox";
+                       reg = <0x00 0x31f88000 0x00 0x200>;
+                       #mbox-cells = <1>;
+                       ti,mbox-num-users = <4>;
+                       ti,mbox-num-fifos = <16>;
+                       interrupt-parent = <&intr_main_navss>;
+               };
+
+               mailbox0_cluster9: mailbox@31f89000 {
+                       compatible = "ti,am654-mailbox";
+                       reg = <0x00 0x31f89000 0x00 0x200>;
+                       #mbox-cells = <1>;
+                       ti,mbox-num-users = <4>;
+                       ti,mbox-num-fifos = <16>;
+                       interrupt-parent = <&intr_main_navss>;
+               };
+
+               mailbox0_cluster10: mailbox@31f8a000 {
+                       compatible = "ti,am654-mailbox";
+                       reg = <0x00 0x31f8a000 0x00 0x200>;
+                       #mbox-cells = <1>;
+                       ti,mbox-num-users = <4>;
+                       ti,mbox-num-fifos = <16>;
+                       interrupt-parent = <&intr_main_navss>;
+               };
+
+               mailbox0_cluster11: mailbox@31f8b000 {
+                       compatible = "ti,am654-mailbox";
+                       reg = <0x00 0x31f8b000 0x00 0x200>;
+                       #mbox-cells = <1>;
+                       ti,mbox-num-users = <4>;
+                       ti,mbox-num-fifos = <16>;
+                       interrupt-parent = <&intr_main_navss>;
+               };
        };
 
        main_gpio0:  main_gpio0@600000 {
index 1102b84..8a85b48 100644 (file)
        bus-width = <8>;
        non-removable;
        ti,driver-strength-ohm = <50>;
+       disable-wp;
 };
 
 &dwc3_1 {
 &pcie1_ep {
        status = "disabled";
 };
+
+&mailbox0_cluster0 {
+       interrupts = <164 0>;
+
+       mbox_mcu_r5fss0_core0: mbox-mcu-r5fss0-core0 {
+               ti,mbox-tx = <1 0 0>;
+               ti,mbox-rx = <0 0 0>;
+       };
+};
+
+&mailbox0_cluster1 {
+       interrupts = <165 0>;
+
+       mbox_mcu_r5fss0_core1: mbox-mcu-r5fss0-core1 {
+               ti,mbox-tx = <1 0 0>;
+               ti,mbox-rx = <0 0 0>;
+       };
+};
+
+&mailbox0_cluster2 {
+       status = "disabled";
+};
+
+&mailbox0_cluster3 {
+       status = "disabled";
+};
+
+&mailbox0_cluster4 {
+       status = "disabled";
+};
+
+&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";
+};
index d2894d5..2a3cd61 100644 (file)
                        J721E_IOPAD(0x0, PIN_INPUT, 7) /* (AC18) EXTINTn.GPIO0_0 */
                >;
        };
+
+       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 */
+                       J721E_IOPAD(0x25c, PIN_INPUT, 0) /* (R28) MMC1_SDWP */
+               >;
+       };
+
+       main_usbss0_pins_default: main_usbss0_pins_default {
+               pinctrl-single,pins = <
+                       J721E_IOPAD(0x290, PIN_OUTPUT, 0) /* (U6) USB0_DRVVBUS */
+               >;
+       };
+
+       main_usbss1_pins_default: main_usbss1_pins_default {
+               pinctrl-single,pins = <
+                       J721E_IOPAD(0x214, PIN_OUTPUT, 4) /* (V4) MCAN1_TX.USB1_DRVVBUS */
+               >;
+       };
 };
 
 &wkup_pmx0 {
 &wkup_gpio1 {
        status = "disabled";
 };
+
+&mailbox0_cluster0 {
+       interrupts = <214 0>;
+
+       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 = <215 0>;
+
+       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 = <216 0>;
+
+       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 = <217 0>;
+
+       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 = <218 0>;
+
+       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";
+};
+
+&main_sdhci0 {
+       /* eMMC */
+       non-removable;
+       ti,driver-strength-ohm = <50>;
+       disable-wp;
+};
+
+&main_sdhci1 {
+       /* SD/MMC */
+       pinctrl-names = "default";
+       pinctrl-0 = <&main_mmc1_pins_default>;
+       ti,driver-strength-ohm = <50>;
+       disable-wp;
+};
+
+&main_sdhci2 {
+       /* Unused */
+       status = "disabled";
+};
+
+&usbss0 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&main_usbss0_pins_default>;
+       ti,usb2-only;
+       ti,vbus-divider;
+};
+
+&usb0 {
+       dr_mode = "otg";
+       maximum-speed = "high-speed";
+};
+
+&usbss1 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&main_usbss1_pins_default>;
+       ti,usb2-only;
+};
+
+&usb1 {
+       dr_mode = "host";
+       maximum-speed = "high-speed";
+};
index 698ef9a..1e4c2b7 100644 (file)
                        reg = <0x00 0x30e00000 0x00 0x1000>;
                        #hwlock-cells = <1>;
                };
+
+               mailbox0_cluster0: mailbox@31f80000 {
+                       compatible = "ti,am654-mailbox";
+                       reg = <0x00 0x31f80000 0x00 0x200>;
+                       #mbox-cells = <1>;
+                       ti,mbox-num-users = <4>;
+                       ti,mbox-num-fifos = <16>;
+                       interrupt-parent = <&main_navss_intr>;
+               };
+
+               mailbox0_cluster1: mailbox@31f81000 {
+                       compatible = "ti,am654-mailbox";
+                       reg = <0x00 0x31f81000 0x00 0x200>;
+                       #mbox-cells = <1>;
+                       ti,mbox-num-users = <4>;
+                       ti,mbox-num-fifos = <16>;
+                       interrupt-parent = <&main_navss_intr>;
+               };
+
+               mailbox0_cluster2: mailbox@31f82000 {
+                       compatible = "ti,am654-mailbox";
+                       reg = <0x00 0x31f82000 0x00 0x200>;
+                       #mbox-cells = <1>;
+                       ti,mbox-num-users = <4>;
+                       ti,mbox-num-fifos = <16>;
+                       interrupt-parent = <&main_navss_intr>;
+               };
+
+               mailbox0_cluster3: mailbox@31f83000 {
+                       compatible = "ti,am654-mailbox";
+                       reg = <0x00 0x31f83000 0x00 0x200>;
+                       #mbox-cells = <1>;
+                       ti,mbox-num-users = <4>;
+                       ti,mbox-num-fifos = <16>;
+                       interrupt-parent = <&main_navss_intr>;
+               };
+
+               mailbox0_cluster4: mailbox@31f84000 {
+                       compatible = "ti,am654-mailbox";
+                       reg = <0x00 0x31f84000 0x00 0x200>;
+                       #mbox-cells = <1>;
+                       ti,mbox-num-users = <4>;
+                       ti,mbox-num-fifos = <16>;
+                       interrupt-parent = <&main_navss_intr>;
+               };
+
+               mailbox0_cluster5: mailbox@31f85000 {
+                       compatible = "ti,am654-mailbox";
+                       reg = <0x00 0x31f85000 0x00 0x200>;
+                       #mbox-cells = <1>;
+                       ti,mbox-num-users = <4>;
+                       ti,mbox-num-fifos = <16>;
+                       interrupt-parent = <&main_navss_intr>;
+               };
+
+               mailbox0_cluster6: mailbox@31f86000 {
+                       compatible = "ti,am654-mailbox";
+                       reg = <0x00 0x31f86000 0x00 0x200>;
+                       #mbox-cells = <1>;
+                       ti,mbox-num-users = <4>;
+                       ti,mbox-num-fifos = <16>;
+                       interrupt-parent = <&main_navss_intr>;
+               };
+
+               mailbox0_cluster7: mailbox@31f87000 {
+                       compatible = "ti,am654-mailbox";
+                       reg = <0x00 0x31f87000 0x00 0x200>;
+                       #mbox-cells = <1>;
+                       ti,mbox-num-users = <4>;
+                       ti,mbox-num-fifos = <16>;
+                       interrupt-parent = <&main_navss_intr>;
+               };
+
+               mailbox0_cluster8: mailbox@31f88000 {
+                       compatible = "ti,am654-mailbox";
+                       reg = <0x00 0x31f88000 0x00 0x200>;
+                       #mbox-cells = <1>;
+                       ti,mbox-num-users = <4>;
+                       ti,mbox-num-fifos = <16>;
+                       interrupt-parent = <&main_navss_intr>;
+               };
+
+               mailbox0_cluster9: mailbox@31f89000 {
+                       compatible = "ti,am654-mailbox";
+                       reg = <0x00 0x31f89000 0x00 0x200>;
+                       #mbox-cells = <1>;
+                       ti,mbox-num-users = <4>;
+                       ti,mbox-num-fifos = <16>;
+                       interrupt-parent = <&main_navss_intr>;
+               };
+
+               mailbox0_cluster10: mailbox@31f8a000 {
+                       compatible = "ti,am654-mailbox";
+                       reg = <0x00 0x31f8a000 0x00 0x200>;
+                       #mbox-cells = <1>;
+                       ti,mbox-num-users = <4>;
+                       ti,mbox-num-fifos = <16>;
+                       interrupt-parent = <&main_navss_intr>;
+               };
+
+               mailbox0_cluster11: mailbox@31f8b000 {
+                       compatible = "ti,am654-mailbox";
+                       reg = <0x00 0x31f8b000 0x00 0x200>;
+                       #mbox-cells = <1>;
+                       ti,mbox-num-users = <4>;
+                       ti,mbox-num-fifos = <16>;
+                       interrupt-parent = <&main_navss_intr>;
+               };
        };
 
        secure_proxy_main: mailbox@32c00000 {
                clocks = <&k3_clks 112 0>;
                clock-names = "gpio";
        };
+
+       main_sdhci0: sdhci@4f80000 {
+               compatible = "ti,j721e-sdhci-8bit";
+               reg = <0x0 0x4f80000 0x0 0x1000>, <0x0 0x4f88000 0x0 0x400>;
+               interrupts = <GIC_SPI 3 IRQ_TYPE_LEVEL_HIGH>;
+               power-domains = <&k3_pds 91 TI_SCI_PD_EXCLUSIVE>;
+               clock-names = "clk_xin", "clk_ahb";
+               clocks = <&k3_clks 91 1>, <&k3_clks 91 0>;
+               assigned-clocks = <&k3_clks 91 1>;
+               assigned-clock-parents = <&k3_clks 91 2>;
+               bus-width = <8>;
+               mmc-hs400-1_8v;
+               mmc-ddr-1_8v;
+               ti,otap-del-sel = <0x2>;
+               ti,trm-icp = <0x8>;
+               ti,strobe-sel = <0x77>;
+               dma-coherent;
+       };
+
+       main_sdhci1: sdhci@4fb0000 {
+               compatible = "ti,j721e-sdhci-4bit";
+               reg = <0x0 0x04fb0000 0x0 0x1000>, <0x0 0x4fb8000 0x0 0x400>;
+               interrupts = <GIC_SPI 4 IRQ_TYPE_LEVEL_HIGH>;
+               power-domains = <&k3_pds 92 TI_SCI_PD_EXCLUSIVE>;
+               clock-names = "clk_xin", "clk_ahb";
+               clocks = <&k3_clks 92 0>, <&k3_clks 92 5>;
+               assigned-clocks = <&k3_clks 92 0>;
+               assigned-clock-parents = <&k3_clks 92 1>;
+               ti,otap-del-sel = <0x2>;
+               ti,trm-icp = <0x8>;
+               ti,clkbuf-sel = <0x7>;
+               dma-coherent;
+               no-1-8-v;
+       };
+
+       main_sdhci2: sdhci@4f98000 {
+               compatible = "ti,j721e-sdhci-4bit";
+               reg = <0x0 0x4f98000 0x0 0x1000>, <0x0 0x4f90000 0x0 0x400>;
+               interrupts = <GIC_SPI 5 IRQ_TYPE_LEVEL_HIGH>;
+               power-domains = <&k3_pds 93 TI_SCI_PD_EXCLUSIVE>;
+               clock-names = "clk_xin", "clk_ahb";
+               clocks = <&k3_clks 93 0>, <&k3_clks 93 5>;
+               assigned-clocks = <&k3_clks 93 0>;
+               assigned-clock-parents = <&k3_clks 93 1>;
+               ti,otap-del-sel = <0x2>;
+               ti,trm-icp = <0x8>;
+               ti,clkbuf-sel = <0x7>;
+               dma-coherent;
+               no-1-8-v;
+       };
+
+       usbss0: cdns_usb@4104000 {
+               compatible = "ti,j721e-usb";
+               reg = <0x00 0x4104000 0x00 0x100>;
+               dma-coherent;
+               power-domains = <&k3_pds 288 TI_SCI_PD_EXCLUSIVE>;
+               clocks = <&k3_clks 288 15>, <&k3_clks 288 3>;
+               clock-names = "ref", "lpm";
+               assigned-clocks = <&k3_clks 288 15>;    /* USB2_REFCLK */
+               assigned-clock-parents = <&k3_clks 288 16>; /* HFOSC0 */
+               #address-cells = <2>;
+               #size-cells = <2>;
+               ranges;
+
+               usb0: usb@6000000 {
+                       compatible = "cdns,usb3";
+                       reg = <0x00 0x6000000 0x00 0x10000>,
+                             <0x00 0x6010000 0x00 0x10000>,
+                             <0x00 0x6020000 0x00 0x10000>;
+                       reg-names = "otg", "xhci", "dev";
+                       interrupts = <GIC_SPI 96 IRQ_TYPE_LEVEL_HIGH>,  /* irq.0 */
+                                    <GIC_SPI 102 IRQ_TYPE_LEVEL_HIGH>, /* irq.6 */
+                                    <GIC_SPI 120 IRQ_TYPE_LEVEL_HIGH>; /* otgirq.0 */
+                       interrupt-names = "host",
+                                         "peripheral",
+                                         "otg";
+                       maximum-speed = "super-speed";
+                       dr_mode = "otg";
+               };
+       };
+
+       usbss1: cdns_usb@4114000 {
+               compatible = "ti,j721e-usb";
+               reg = <0x00 0x4114000 0x00 0x100>;
+               dma-coherent;
+               power-domains = <&k3_pds 289 TI_SCI_PD_EXCLUSIVE>;
+               clocks = <&k3_clks 289 15>, <&k3_clks 289 3>;
+               clock-names = "ref", "lpm";
+               assigned-clocks = <&k3_clks 289 15>;    /* USB2_REFCLK */
+               assigned-clock-parents = <&k3_clks 289 16>; /* HFOSC0 */
+               #address-cells = <2>;
+               #size-cells = <2>;
+               ranges;
+
+               usb1: usb@6400000 {
+                       compatible = "cdns,usb3";
+                       reg = <0x00 0x6400000 0x00 0x10000>,
+                             <0x00 0x6410000 0x00 0x10000>,
+                             <0x00 0x6420000 0x00 0x10000>;
+                       reg-names = "otg", "xhci", "dev";
+                       interrupts = <GIC_SPI 104 IRQ_TYPE_LEVEL_HIGH>, /* irq.0 */
+                                    <GIC_SPI 110 IRQ_TYPE_LEVEL_HIGH>, /* irq.6 */
+                                    <GIC_SPI 121 IRQ_TYPE_LEVEL_HIGH>; /* otgirq.0 */
+                       interrupt-names = "host",
+                                         "peripheral",
+                                         "otg";
+                       maximum-speed = "super-speed";
+                       dr_mode = "otg";
+               };
+       };
 };
index 43ea1ba..ee5470e 100644 (file)
                         <0x00 0x00600000 0x00 0x00600000 0x00 0x00031100>, /* GPIO */
                         <0x00 0x00900000 0x00 0x00900000 0x00 0x00012000>, /* serdes */
                         <0x00 0x00A40000 0x00 0x00A40000 0x00 0x00000800>, /* timesync router */
+                        <0x00 0x06000000 0x00 0x06000000 0x00 0x00400000>, /* USBSS0 */
+                        <0x00 0x06400000 0x00 0x06400000 0x00 0x00400000>, /* USBSS1 */
                         <0x00 0x01000000 0x00 0x01000000 0x00 0x0af02400>, /* Most peripherals */
                         <0x00 0x30800000 0x00 0x30800000 0x00 0x0bc00000>, /* MAIN NAVSS */
                         <0x00 0x0d000000 0x00 0x0d000000 0x00 0x01000000>, /* PCIe Core*/
index 9aa6734..3c731e7 100644 (file)
                method = "smc";
        };
 
+       firmware {
+               zynqmp_firmware: zynqmp-firmware {
+                       compatible = "xlnx,zynqmp-firmware";
+                       method = "smc";
+
+                       nvmem_firmware {
+                               compatible = "xlnx,zynqmp-nvmem-fw";
+                               #address-cells = <1>;
+                               #size-cells = <1>;
+
+                               soc_revision: soc_revision@0 {
+                                       reg = <0x0 0x4>;
+                               };
+                       };
+
+                       zynqmp_pcap: pcap {
+                               compatible = "xlnx,zynqmp-pcap-fpga";
+                       };
+               };
+       };
+
        timer {
                compatible = "arm,armv8-timer";
                interrupt-parent = <&gic>;
                             <1 10 0xf08>;
        };
 
+       fpga_full: fpga-full {
+               compatible = "fpga-region";
+               fpga-mgr = <&zynqmp_pcap>;
+               #address-cells = <2>;
+               #size-cells = <2>;
+               ranges;
+       };
+
        amba_apu: amba-apu@0 {
                compatible = "simple-bus";
                #address-cells = <2>;
index 33a27e6..006ac40 100644 (file)
@@ -44,7 +44,7 @@
 
 #define QMP_NUM_COOLING_RESOURCES      2
 
-static bool qmp_cdev_init_state = 1;
+static bool qmp_cdev_max_state = 1;
 
 struct qmp_cooling_device {
        struct thermal_cooling_device *cdev;
@@ -402,7 +402,7 @@ static void qmp_pd_remove(struct qmp *qmp)
 static int qmp_cdev_get_max_state(struct thermal_cooling_device *cdev,
                                  unsigned long *state)
 {
-       *state = qmp_cdev_init_state;
+       *state = qmp_cdev_max_state;
        return 0;
 }
 
@@ -432,7 +432,7 @@ static int qmp_cdev_set_cur_state(struct thermal_cooling_device *cdev,
        snprintf(buf, sizeof(buf),
                 "{class: volt_flr, event:zero_temp, res:%s, value:%s}",
                        qmp_cdev->name,
-                       cdev_state ? "off" : "on");
+                       cdev_state ? "on" : "off");
 
        ret = qmp_send(qmp_cdev->qmp, buf, sizeof(buf));
 
@@ -455,7 +455,7 @@ static int qmp_cooling_device_add(struct qmp *qmp,
        char *cdev_name = (char *)node->name;
 
        qmp_cdev->qmp = qmp;
-       qmp_cdev->state = qmp_cdev_init_state;
+       qmp_cdev->state = !qmp_cdev_max_state;
        qmp_cdev->name = cdev_name;
        qmp_cdev->cdev = devm_thermal_of_cooling_device_register
                                (qmp->dev, node,
index dc5c1c7..6d6bac1 100644 (file)
@@ -50,9 +50,9 @@
 #define RK_PD7         31
 
 #define RK_FUNC_GPIO   0
-#define RK_FUNC_1      1
-#define RK_FUNC_2      2
-#define RK_FUNC_3      3
-#define RK_FUNC_4      4
+#define RK_FUNC_1      1 /* deprecated */
+#define RK_FUNC_2      2 /* deprecated */
+#define RK_FUNC_3      3 /* deprecated */
+#define RK_FUNC_4      4 /* deprecated */
 
 #endif
diff --git a/include/dt-bindings/reset/realtek,rtd1295.h b/include/dt-bindings/reset/realtek,rtd1295.h
new file mode 100644 (file)
index 0000000..2c0cb6a
--- /dev/null
@@ -0,0 +1,111 @@
+/* SPDX-License-Identifier: (GPL-2.0-or-later OR BSD-2-Clause) */
+/*
+ * Realtek RTD1295 reset controllers
+ *
+ * Copyright (c) 2017 Andreas Färber
+ */
+#ifndef DT_BINDINGS_RESET_RTD1295_H
+#define DT_BINDINGS_RESET_RTD1295_H
+
+/* soft reset 1 */
+#define RTD1295_RSTN_MISC              0
+#define RTD1295_RSTN_NAT               1
+#define RTD1295_RSTN_USB3_PHY0_POW     2
+#define RTD1295_RSTN_GSPI              3
+#define RTD1295_RSTN_USB3_P0_MDIO      4
+#define RTD1295_RSTN_SATA_0            5
+#define RTD1295_RSTN_USB               6
+#define RTD1295_RSTN_SATA_PHY_0                7
+#define RTD1295_RSTN_USB_PHY0          8
+#define RTD1295_RSTN_USB_PHY1          9
+#define RTD1295_RSTN_SATA_PHY_POW_0    10
+#define RTD1295_RSTN_SATA_FUNC_EXIST_0 11
+#define RTD1295_RSTN_HDMI              12
+#define RTD1295_RSTN_VE1               13
+#define RTD1295_RSTN_VE2               14
+#define RTD1295_RSTN_VE3               15
+#define RTD1295_RSTN_ETN               16
+#define RTD1295_RSTN_AIO               17
+#define RTD1295_RSTN_GPU               18
+#define RTD1295_RSTN_TVE               19
+#define RTD1295_RSTN_VO                        20
+#define RTD1295_RSTN_LVDS              21
+#define RTD1295_RSTN_SE                        22
+#define RTD1295_RSTN_DCU               23
+#define RTD1295_RSTN_DC_PHY            24
+#define RTD1295_RSTN_CP                        25
+#define RTD1295_RSTN_MD                        26
+#define RTD1295_RSTN_TP                        27
+#define RTD1295_RSTN_AE                        28
+#define RTD1295_RSTN_NF                        29
+#define RTD1295_RSTN_MIPI              30
+#define RTD1295_RSTN_RSA               31
+
+/* soft reset 2 */
+#define RTD1295_RSTN_ACPU              0
+#define RTD1295_RSTN_JPEG              1
+#define RTD1295_RSTN_USB_PHY3          2
+#define RTD1295_RSTN_USB_PHY2          3
+#define RTD1295_RSTN_USB3_PHY1_POW     4
+#define RTD1295_RSTN_USB3_P1_MDIO      5
+#define RTD1295_RSTN_PCIE0_STITCH      6
+#define RTD1295_RSTN_PCIE0_PHY         7
+#define RTD1295_RSTN_PCIE0             8
+#define RTD1295_RSTN_PCR_CNT           9
+#define RTD1295_RSTN_CR                        10
+#define RTD1295_RSTN_EMMC              11
+#define RTD1295_RSTN_SDIO              12
+#define RTD1295_RSTN_PCIE0_CORE                13
+#define RTD1295_RSTN_PCIE0_POWER       14
+#define RTD1295_RSTN_PCIE0_NONSTICH    15
+#define RTD1295_RSTN_PCIE1_PHY         16
+#define RTD1295_RSTN_PCIE1             17
+#define RTD1295_RSTN_I2C_5             18
+#define RTD1295_RSTN_PCIE1_STITCH      19
+#define RTD1295_RSTN_PCIE1_CORE                20
+#define RTD1295_RSTN_PCIE1_POWER       21
+#define RTD1295_RSTN_PCIE1_NONSTICH    22
+#define RTD1295_RSTN_I2C_4             23
+#define RTD1295_RSTN_I2C_3             24
+#define RTD1295_RSTN_I2C_2             25
+#define RTD1295_RSTN_I2C_1             26
+#define RTD1295_RSTN_UR2               27
+#define RTD1295_RSTN_UR1               28
+#define RTD1295_RSTN_MISC_SC           29
+#define RTD1295_RSTN_CBUS_TX           30
+#define RTD1295_RSTN_SDS_PHY           31
+
+/* soft reset 4 */
+#define RTD1295_RSTN_DCPHY_CRT         0
+#define RTD1295_RSTN_DCPHY_ALERT_RX    1
+#define RTD1295_RSTN_DCPHY_PTR         2
+#define RTD1295_RSTN_DCPHY_LDO         3
+#define RTD1295_RSTN_DCPHY_SSC_DIG     4
+#define RTD1295_RSTN_HDMIRX            5
+#define RTD1295_RSTN_CBUSRX            6
+#define RTD1295_RSTN_SATA_PHY_POW_1    7
+#define RTD1295_RSTN_SATA_FUNC_EXIST_1 8
+#define RTD1295_RSTN_SATA_PHY_1                9
+#define RTD1295_RSTN_SATA_1            10
+#define RTD1295_RSTN_FAN               11
+#define RTD1295_RSTN_HDMIRX_WRAP       12
+#define RTD1295_RSTN_PCIE0_PHY_MDIO    13
+#define RTD1295_RSTN_PCIE1_PHY_MDIO    14
+#define RTD1295_RSTN_DISP              15
+
+/* iso reset */
+#define RTD1295_ISO_RSTN_IR            1
+#define RTD1295_ISO_RSTN_CEC0          2
+#define RTD1295_ISO_RSTN_CEC1          3
+#define RTD1295_ISO_RSTN_DP            4
+#define RTD1295_ISO_RSTN_CBUSTX                5
+#define RTD1295_ISO_RSTN_CBUSRX                6
+#define RTD1295_ISO_RSTN_EFUSE         7
+#define RTD1295_ISO_RSTN_UR0           8
+#define RTD1295_ISO_RSTN_GMAC          9
+#define RTD1295_ISO_RSTN_GPHY          10
+#define RTD1295_ISO_RSTN_I2C_0         11
+#define RTD1295_ISO_RSTN_I2C_1         12
+#define RTD1295_ISO_RSTN_CBUS          13
+
+#endif